CS/OS

[운영체제] 2-1. 커널 구조

F12:) 2023. 9. 11. 10:31

운영체제의 커널 구조에는 2가지가 있다. Monolithic kernel과 micro kernel. 오늘은 이 두 가지에 대해서 간략하게 설명한다.

앞서, 커널에 대해서 자세히 설명하지 않은 것으로 기억하는데 커널이란 운영 체제 내에서 중요한 역할을 수행하는 함수들의 집합체라고 생각하면 된다. 운영체제 시간에서는 커널과 OS가 같은 의미로 이해해도 무방하다고 말한다.

 

 

Monolithic Kernel

mono에서 알 수 있듯이 단일체 커널을 의미한다. 앞서 커널은 여러개의 함수들의 집합체라고 설명한 바 있다. 이러한 많은 함수들이 커널 내에서 존재하는 형태를 의미한다. 이는, 커널의 구조가 커지므로 무겁다는 단점이 있지만, 모두가 커널 내에 있으므로 서로간의 상호작용이 원할하여 속도가 빠르다는 장점이 있다.

 

ex. LINUX

 

Monolithic Kernel

 

Micro Kernel

아주 기본적인 커널 내에서 꼭 실행되어야하는 함수들(하드웨어를 직접 건드려야하는 함수들, ex. Address spaces, IPC 등)만 커널 내에 존재하고, 그외의 함수 집합들은 커널 외부에 존재하는 형태를 말한다. 이 커널 구조는 커널이 가볍다는 장점이 있지만, 커널 외부에 존재하는 함수들이 서로 통신하기 위해서는 커널을 거쳐서 움직여야하므로 속도가 Monolithic Kernel에 대비해서 느리다는 단점이 있다.

 

micro kernel은 flexibility(원하는 기능들을 추가하기 간편함), reliability(작은 커널이므로 테스트가 엄격하게 됨) 등의 장점이 추가적으로 존재한다.

-> monolithic kernel에 대해서 추가로 설명해보자. monolithic은 커널 내에 있는 어떤 기능을 추가하거나 변경하려고 한다면 그 기능을 구현한 후, 테스트하기 위해서는 많은 시간이 소요되고 많은 것을 검증해야하므로 리팩토링이 너무 무거워진다.

 

 

또한 앞서 말했던, 서로 통신한다라는 부분에 대해서 조금 더 기수랗ㄴ다. micro kernel은 다른 커널 함수를 호출할 수 있다. 충분히. 그러기 위해서 커널 외부에서 바로 호출하는 것이 아닌, 커널에게 요청해서 커널이 해당 함수를 호출하고 받아온 결과를 다시 전달해주는 번거로운 작업을 하므로, 속도가 느리다고 한다.

 

ex. Windows