커널이란?
: 컴퓨터의 운영 체제의 핵심이 되는 컴퓨터 프로그램의 하나. 운영체제 중 항상 필요한 부분이 메모리에 상주하게 되는데, 이 것이 커널이다.
- 보호(보안): 결함이나 악의적인 행동으로부터 하드웨어를 보호해준다.
- 프로세스 협동(자원관리): 프로세스간 협력을 위해 IPC(Inter process communication)를 제공한다.
- 이진 세마포어 locking: 비효율적일 수 있고 안전하지 않을 수 있다..
- Message Passing: 유연하게 사용된다.
- RPC call, 공유 메모리 등등이 이것에 속한다.
- I/O device 관리: IPC와는 다르게 External Process Communication 이라고 불린다.
- 물리 메모리와 비슷하다. 하드웨어와 프로세스 사이에서 중재자 역할을 수행한다.
- 키보드, 모니터, 프린터 등 장치 드라이버. 커널은 유저모드에서 요청을 받고 커널모드로 전환 후 이러한 장치 드라이버를 통해 받은 것을 유저에게 전달해준다.
운영체제란?
: 여러 시스템의 자원을 효율적으로 관리하고 사용될 수 있도록 환경을 제공하는 여러 프로그램의 모임.
OS 내에서 커널의 위치
- 하드웨어: 시스템의 토대가 되는 물리적 머신, 메모리(RAM)와 프로세서 또는 중앙 처리 장치(CPU) 그리고 입출력(I/O) 장치(e.g. 스토리지, 네트워크 및 그래픽)로 구성된다. CPU는 계산을 수행하고 메모리를 읽고 쓴다.
- Linux 커널: OS의 핵심. 메모리에 상주하며 CPU에 명령을 내리는 소프트웨어.
- 사용자 프로세스: 실행 중인 프로그램으로, 커널이 관리한다. 사용자 프로세스가 모여 사용자 공간을 구성한다. 일반적으로 프로세스라고 하면 사용자 프로세스를 의미하기도 한다. 커널은 이러한 프로세스 및 서버가 서로 통신(IPC)하도록 한다.
Reference)
https://www.redhat.com/ko/topics/linux/what-is-the-linux-kernel
https://ko.wikipedia.org/wiki/%EC%BB%A4%EB%84%90_(%EC%BB%B4%ED%93%A8%ED%8C%85)
https://en.wikipedia.org/wiki/Kernel_(operating_system)