Linux2010. 9. 21. 00:19
애플 빠돌이인 후배에게 MacosX가 좋아?
라는 질문에 문득 맥은 어떤 커널구조인가 호기심 발동.

일단 Mac의 커널은 NeXTstep의 영향으로 micro kernel을 받아들이고 있고,
퍼포먼스 측면의 문제로, 일부는 모노리딕 커널의 형태를 지닌, 결과론적으로 '하이브리드 커널' 형태를 지니고 있다.


모노리딕 커널은 현재 Linux 에서 채용하고 있는 커널의 구조이며,
모든 OS의 기능을 커널 영역(kernel space <-> user spcae)에서 관리자 모드(supervisor mode)로 구동한다.
 A monolithic kernel is a kernel architecture where the entire operating system is working in the kernel space and alone as supervisor mode.

이에 반해, 마하 커널은
최소한의 기능만을 커널 영역에서 관리자 모드로 실행하며, 나머지 기능들을 유저 모드에서 실행을 한다.
다르게 말하면, 사용자별로 분리되어 작동하므로 커널을 침범하지 않아 보안의 문제가 줄어들며
개별유저가 시스템 전체를 망가트릴 정도로 문제가 확대되지 않는 구조적인 장점을 갖는다.

하지만, 이는 프로세스 간의 통신(IPC)에 부하가 많아지므로 전체성능이 오히려 떨어질 수 있는 우려가 있다.
 The microkernel approach consists of defining a simple abstraction over the hardware, with a set of primitives or system calls to implement minimal OS services such as memory management, multitasking, and inter-process communication. Other services, including those normally provided by the kernel, such as networking, are implemented in user-space programs, referred to as servers. Microkernels are easier to maintain than monolithic kernels, but the large number of system calls and context switches might slow down the system because they typically generate more overhead than plain function calls.


간단하게 예를 들자면, 리눅스의 경우 Xwindow와 같은 그래픽 계열은
전부 User spcae에서 돌리는데 이로 인해 초기의 Xwindow는 MS Windows에 비하면 상당히 반응속도도 느렸는데
이는 리눅스는 monolithic kernel + user space Xwindow application 조합이었고
윈도우즈는 커널과 그래픽 부분이 결합되었기 때문에 통신에 대한 부하가 적었기 때문이다.
하지만, 이러한 구조적 차이로 리눅스는 가벼운 커널을 유지한 반면, MS Windows는 무거운 커널을 지니게 되었다.

머.. 현재의 시스템은 충분히 빨라졌고 알고리즘의 향상으로
Xwindow나 MS windows나 아주 큰 속도의 차이는 나지 않는것 같기 때문에 굳이 구분할 이유가 있나 싶기도 하다.
아무튼, 결국에는 하이브리드로 수렴하지 않을까 싶다.

[링크 : http://bugtruck.tistory.com/196]
[링크 : http://en.wikipedia.org/wiki/Kernel_%28computing%29]
    [링크 : http://en.wikipedia.org/wiki/Monolithic_kernel]
    [링크 : http://en.wikipedia.org/wiki/Hybrid_kernel]
    [링크 : http://en.wikipedia.org/wiki/Mach_kernel]
[링크 : http://en.wikipedia.org/wiki/Mac_OS_X]

'Linux' 카테고리의 다른 글

WOL on Linux - ether-wake  (0) 2010.10.05
POSIX - Portable Operating System Interface [for Unix]  (6) 2010.09.21
bash - 이전 디렉토리로 이동하기 move to previoud directory  (2) 2010.09.19
mkinitramfs  (0) 2010.09.19
top (1) - load average ?  (4) 2010.09.12
Posted by 구차니