운영체제란 무엇일까?
운영체제(Operating System)는 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임이다. 운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다.커널이란 무엇일까?
컴퓨터와 전원을 켜면 운영체제는 이와 동시에 수행된다. 한편 소프트웨어가 컴퓨터 시스템에서 수행되기 위해서는 메모리에 그 프로그램이 올라가 있어야 한다. 마찬가지로 운영체제 자체도 소프트웨어로서 전원이 켜짐과 동시에 메모리에 올라가야 한다. 하지만, 운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라간다면 한정된 메모리 공간의 낭비가 심할것이다. 따라서 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리에 올려서 사용하게 된다. 이 때 메모리에 상주하는 운영체제의 부분을 커널이라 한다. 또 이것을 좁은 의미의 운영체제라고도 한다. 즉 커널은 메모리에 상주하는 부분으로써 운영체제의 핵심적인 부분을 뜻한다.
이에 반에 넓은 의미의 운영체제는 커널뿐 아니라 각종 시스템을 위한 유틸리티들을 광범위하게 포함하는 개념이다. 다만 이러한 커널은 항상 컴퓨터 자원들을 바라만 보고 있기에 사용자와의 상호작용은 지원하지 않는다.
따라서 사용자와의 직접전인 상호작용을 위해 프로그램을 제공하게 되는데, 대표적으로 쉘(Shell)이라는 명령 프롬프트 등이 있다.
☝요약하자면
사용자 → 시스템 프로그램(Shell 등을 사용) → 커널 → 컴퓨터 자원 접근
사용자 → 시스템 프로그램(Shell 등을 사용) → 커널 → 컴퓨터 자원 접근
그렇다면 Jupyter에서 커널이란 무엇일까?
주피터 커널은 프로그래밍 언어가 실행되는 환경을 말한다. 주피터는 Python 외에도 R이나 기타 프로그래밍 언어도 지원하는데 이런 프로그래밍 언어가 돌아갈 수 있게끔 하는 환경이다. 주피터에서는 다중 커널을 통해 여러 독립된 환경에서 프로그래밍을 할 수 있도록 지원한다. 주피터는 다른 가상환경이더라도 같은 커널을 공유하면 결국 같은 환경을 공유하기 때문에 다른 커널을 생성함으로써 각각의 공간에서 다른 프로젝트를 진행할 수 있게 해야한다. 즉, 콘다에서 가상환경을 만들어서 이를 주피터 커널로 등록한다면 독립된 여러 환경을 사용할 수 있다.
위의 아키텍처 그림과 같이 가상환경 A는 ipykernel 패키지 설치 후 주피터 커널을 생성하였으므로 주피터에서 이용 가능하다. 하지만 가상환경 B는 ipykernel을 만들지 않았기에 주피터에서 이용이 불가하다.
아래와 같은 명령어를 통해서 주피터에 생성한 가상환경을 커널로 등록할 수 있다.
□ 가상환경 추가하기
1 2 | pip install ipykernel python -m ipykernel install --user --name (가상환경명) --display-name (커널출력명) | cs |
□ 가상환경 삭제하기
1 | jupyter kernelspec unistall (가상환경명) | cs |
참고호 kernelspec -help를 입력하면 list, remove 등 사용 가능한 명령어를 확인 할 수 있다.
가상환경을 추가를 명령하면 아래 그림과 같이 vscode 상 커널명을 확인 할 수 있다. 필요에 따라 커널을 변경하여 진행하면 된다. ( * 본 그림에서는 기본 커널을 표시하고 있다)



댓글
댓글 쓰기