마이크로커널(microkernel)의 정의
커널, 즉 모듈의 기능과 OS의 확장을 위한 기반은 core로만 남아야 한다는 설계 철학
마이크로커널의 특징
•
마이크로 커널 아키텍처의 핵심은 (주소 공간 관리, 스래드 관리, IPC 등의) 가장 핵심적인 OS 기능만을 (커널 모드에서 동작하는) core에 담고 그 외 나머지는 사용자 모드로 넘긴다.
•
서비스라던가 덜 중요한 OS의 기능(device driver, file system, virtual memory manager, windowing system, security service 등)은 서버 프로세스로 구현하되, 이들간 통신은 core를 매개로 하는 메시지 전달(message passing)을 통해 peer 기반에서 이룬다.
•
(monolithic 커널과 같은) 기존의 계층적 방식(layered approach)은 수직적 바 방식(vertical bar approach)으로 변경되는데, 이는 계층적 방식이 모듈화를 이루고 있음에도 불구하고 한 계층의 변경이 인접한 타 계층의 변경을 야기하기 때문이다.
•
core에 어떤 기능이 포함되어야 한다는 정해진 규칙은 없다. 일반적으로 저수준 메모리 관리, IPC, I/O와 인터럽트 관리 기능이 core에 포함된다.
monolithic kernel과 microkernel의 구조적 비교
•
좌측은 monolithic kernel, 우측은 microkernel
•
monolithic kernel에서는 시스템 콜을 통해 OS의 기능에 접근하는 반면 microkernel에서는 peer 기반 하의 IPC를 통해 이루어지며 user mode에서 동작하는 service간 통신 역시 IPC를 통해 이루어진다.
마이크로커널의 장점
•
단일 인터페이스(Uniform Interface) : 커널 수준과 사용자 수준의 서비스를 구분하지 않으며, 모든 서비스는 메시지 전달을 통해 이룬다.
•
확장성(Extensiblity): 새로운 서비스 추가를 가능하게 한다.
•
유연성(Flexiblity): 새로운 기능 추가 및 기존 기능의 제거가 용이하다.
•
이식용이성(Protability): 새로운 프로세서로의 시스템 이주에서 필요한 변경은 오직 코어에서만 일어난다
•
신뢰성(Reliability): 모듈적 설계 및 작은 코어커널은 더 엄격하게 테스트될 가능성이 있다.
•
분산 시스템 지원: target machine에 대한 구체적 정보 없이도 메시지 전달이 가능하다.
•
개체지향 OS: 각 콤포넌트는 명확히 정의되고 상호 연결 가능한 인터페이스를 가진 개체(object)이다.
References
•
Operating Systems: Internals and Design Principles, 5/E by William Stallings