ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 모놀리식(Monolithic) kernel과 마이크로(Micro) 커널
    개발/컴퓨터사이언스 2016. 10. 8. 17:12


    커널은 크게 커널 내에 넣는 feature의 양에 따라 모놀리식(Monolithic) 커널과 마이크로(Micro) 커널로 나눌 수 있다.



    위 구조를 이해 할 때 통념을 좀 깨야 할 필요가 있었다. 

    나는 너무도 당연히 kernel이 device driver나 File system을 관리 한다고 생각했는데 꼭 그런 것 만은 아니었다.


    모놀리식 커널은 리눅스로 OS를 배운 학부생에게 가장 익숙한 OS이다. Application을 제외한 모든 system 관련 기능들(VFS, IPC, Filesystem 등등)을 커널이 관리하며 각 영역들은 단계적으로 나뉘어 있다. 생각해보면 리눅스 프로세스 하나를 만들 때 VFS에서 제공하는 fopen 라이브러리를 이용해 다른 파일 시스템에 쉽게 접근이 가능했고, IPC를 이용해 다른 프로세스에게 메시지를 전달 하는 것도 척척 해낼 수 있었는데 위 모든것은 커널의 system call을 이용해 했던 방식 들이었다. 커널이 모든 시스템 서비스들을 관리 했기 때문에 개발자는 커널이 제공하는 함수만 사용해서 쉽게 할 수 있었다. * 대표적인 예로는 Unix, Linux가 있다.


    하지만 마이크로 커널은 마이크로라는 접두어에서도 의미하듯 핵심적인 기능(스케줄링, 메모리 관리 등등)만 커널에 담고 나머지는 제외해 가볍게 만든 커널이다. 기존에 모놀리식 커널이 갖고 있던 시스템 기능들(VFS, IPC, Device driver)은 커널위의 서버의 형태로 존재한다(위 개념을 받아들이는게 좀 충격이었다). 이러한 방식이 장점의 장점은 하나의 서비스가 죽더라도 커널 전체가 panic되지는 않다는 점이다. 예를들어 Device Driver 하나가 죽더라도 전체 커널이 죽는 일은 없다. 리얼 타임성이 중요한 임베디드 시스템에서 주로 사용된다. * 대표적으로 MacOS X, Windows NT가 있다.


    (마이크로에서 특이한 점은 File system이나 Driver가 유저 스페이스에 들어간다는 점!)



    각 구조마다 장 단점이 있다.


    모놀리식 커널

    • 장점 : 각 Component간의 커뮤니케이션이 효율적이다.
    • 단점 : 디바이스 드라이버를 추가/삭제 하려면 커널을 재빌드 해야 한다. 또한 하나가 죽으면 전체 시스템이 죽는다.
    마이크로 커널
    • 장점 : 서버를 추가하는 방식이기 때문에 기능을 추가하기 쉽고, 시스템이 견고하며 리얼타임성이 높다
    • 단점 : 시스템 기능들이 서버의 형태로 존재하기 때문에 커뮤니케이션 오버헤드가 있다.

    위 두가지를 짬뽕한 구조가 모듈형 커널이라 한다. 쉽게 모듈의 형태로 쉽게 시스템 기능을 추가 할 수 있는 방식인데 윈도우가 가장 대표적이다. 다음에는 모듈형 커널에 대해서 공부해봐야겠다.

    댓글

Designed by Tistory.