커널 (Kernel)
<General UNIX Architecture, Traditional UNIX kernel>
커널의 역할
보안 - 컴퓨터 하드웨어와 프로세스의 보안을 책임진다.
프로세서 관리 - 처리 속도를 향상시키기 위해 여러 프로세서를 병렬로 연결하여 사용한다. 시스템에서 동작하는 프로세스도 커널에서 관리해야할 자원이고, 운영체제의 처리 요구에 맞춰 동작할 수 있도록 각 프로세스에 필요한 프로세서를 효율적으로 할당하고 수행하도록 관리한다.
프로세스 관리 - 여러 프로세스가 동작할 수 있도록 각 프로세스를 생성하고 제거하며, 외부환경과 프로세스를 연결하고 관리한다. (스케줄링)
메모리 관리 - 각각의 프로세스가 독립적인 공간에서 수행할 수 있도록 가상 주소 공간을 제공한다.
이외에도 파일 시스템 관리, 디바이스 제어, 네트워크 관리가 있다.
모놀리식 커널(Monolithic Kernel,단일형 커널)과 마이크로커널(Micro Kernel)
- 입출력 기능, 네트워크 기능, 장치 지원 등 운영체제의 일반적인 기능을 커널과 동일한 메모리 공간에 적재, 실행하는 기법.
- 속도가 빠르고 디자인도 편리하지만, 잠재적 안정성 문제와 커널의 크기도 무지막지하게 커진다.
- Monolitic Kernel 방식을 따르는 운영체제 : 리눅스, 보통의 UNIX, 맥OS, MS-DOS
- 낮은 수준의 주소 공간 관리, 스레드 관리, 프로세스 간 통신(IPC)를 포함하고, 시스템 콜 같은 서비스, 디바이스 관리 등을 제외하여 안정성을 높이고, 커널 크기도 줄인 방식.
- 안정성이 높고 보안도 높아지지만, 전반적인 퍼포먼스는 저하된다.
- 이 방식을 따르는 운영체제 : AmigaOS, Minix, Mach, GNU hurd