모놀리식 커널

운영 체제에서 모놀리식 커널(Monolithic kernel)은 커널의 구조 및 설계 사상을 가리킨다. 단일형 커널이라고도 한다. 입출력 기능, 네트워크 기능, 장치 지원 등 운영 체제의 일반적인 기능을 커널과 동일한 메모리 공간에 적재, 실행하는 기법을 말한다.

대표적인 모놀리식 커널 OS로서는, 고전적인 유닉스 계열 운영 체제들을 들 수 있다.

마이크로 커널과의 관계 
운영 체제의 구성요소를 단일의 메모리 공간에서 실행하는 모놀리식 커널에 대해, OS를 구성하는 몇 개의 요소, 기능을 커널 공간으로부터 떼어내어 외부 모듈화하는 등으로 추가하는 기법을 마이크로 커널이라고 부른다. 모놀리식 커널의 설계 사상 및 개념 그 자체는 예전부터 존재했지만 모놀리식 커널이라고 하는 용어가 성립된 것은 마이크로 커널이라는 개념이 등장하면서 그 반대 개념으로서 명명되었다.

커널 구현 방식 
모놀리식 커널 방식은 보다 근대적인 설계 방법으로 여겨지는 마이크로 커널 방식의 OS에 비해 운영 체제의 기능의 거의 모든 것이 단일 메모리 공간에서 행해지고, 동일한 프로세스를 처리할 때 사용되는 문맥 교환이나 프로세스 간 통신 등에 의한 과부하는 상대적으로 적어서 실질적인 성능 면에서 유리하다는 주장이 있다. 실제로 프로세서의 동작 클럭이 수MHz에서 수십MHz 정도이던 시절에 문맥교환이 남발되는 등으로 인해 발생하는 실행 비용 문제가 심각했다.

1980년대에 데뷔한 상용 유닉스는 그 대부분이 모놀리식 커널 방식을 채용하고 있다.

그러나 프로세서의 동작 클럭은 20세기 말에서 21세기 초에 이르기까지 장족의 진보를 이루어 처리 능력이 몇 배 향상했다. 이렇게 실행 환경이 진보하면서 L4 프로젝트에서 프로세스 간 통신의 튜닝 등을 통한 마이크로 커널 구현 시의 고속화 기법이 진전되고, 또 필요에 따라서 마이크로 커널적인 구조를 기반으로 하면서 일부 성능이 요구되는 하부조직만 커널 공간에 추가한다든지, 모놀리식 커널을 기반으로 하면서도 유연성이나 신뢰성이 요구되는 부분에 마이크로 커널적인 설계 방법을 도입하는 등, 보다 현실적인 하이브리드 커널로 부를 수 있는 설계 방법도 등장하였다. 이로써 모놀리식 커널의 성능의 원리 상의 우위성, 양자의 엄밀한 구별은 모호해졌다.

2005년 기준으로 순수한 모놀리식 커널 방식으로 개발하는 경우 이점이 적다는 의견이 있다. 그러나 동일한 기능을 포함했을 경우 그 원리 상, 실행 시의 (컴퓨터 메모리 상의) OS 커널 추적 비중을 상대적으로 줄이는 비선점형(non-preemptive) 제약을 부가하면 서비스를 추가할 때에 고려해야 할 일이 줄어들어 개발이 용이해지는 것 등을 이점으로 들 수 있다.

한편, 모놀리식 커널에 여러 기능을 중도에 추가하여 덩치가 커지게 되면 운영 체제의 기능을 동적으로 바꾸거나 갱신하거나 하는 것이(마이크로 커널과 비교했을 경우에) 어렵게 되는 문제가 발생할 가능성이 높다.

연구 개발의 세계에서는 커널의 기능을 최소한으로 하는 마이크로 커널이 주류가 된 1990년대 당초, 모놀리식 커널을 시대착오라고 생각되기도 했다. 그러나 구현 수준의 차이가 작동 상의 치명적인 설계 문제는 아니며, 현재는 필요한 기능을 필요한 성능 수준으로만 제공할 수 있으면 문제가 없다고 결론되었다.

윈도 NT는 처음부터 마이크로 커널 방식으로 구현을 모색하고 있었지만, 과부하를 줄이기 위해서 NT 4.0에서 윈도 하부 조직과 그래픽스 장치 드라이버가 커널 공간에서 직접 보이는 것처럼 수정되었다. 윈도 2000 이후부터는 하드웨어 관리 기능 중 일부를 마이크로 커널 직할 모듈인 외부 모듈에서 커널 제어부 본체에 의한 제어 방식으로 전환하여, 순수 마이크로 커널로부터 벗어난 상황이다. NT 4.0에서는 800킬로바이트 미만이었던 NTOSKRNL(윈도우 NT 계열의 커널 시스템)은 윈도 XP에서 2메가바이트에 이르기까지 비대해졌다(단, 윈도 비스타는 동작의 안정성이나 시스템 전체의 견고함을 고려하여 일부 특성은 그대로 유지되었다). 마이크로 커널의 구조적 특성은 여전히 남아 있으므로 마이크로 커널과 모놀리식 커널을 절충한 하이브리드 커널이 구현되어 있다.

또, 마하에서 파생된 OS X도 BSD 하부 조직이나 파일 시스템, 네트워크 등을 커널 공간에 통합하고 있어, 순수 마이크로 커널에서는 멀어진 상황이다. 윈도와 같이, 마이크로 커널과 모놀리식 커널 양쪽 모두의 이점을 살린 설계이다.

유명한 논쟁 

모놀리식 커널과 마이크로 커널에 대해서는, 리눅스의 저자 리누스 투르발스와 미닉스의 저자 앤드루 타넨바움의 1992년 논쟁이 유명하다.

모놀리식 커널 사례 
 리눅스 커널
 맥 OS(8.6까지, 이후는 나노 커널)
 MS-DOS
 OpenVMS
 유닉스 커널
 윈도우 9x 계열 (윈도우 95 / 98 / Me)

외부 링크 
  리눅스는 낡았다
  토론: 리눅스는 시대착오다
  토론: 앤드루 타넨바움과 리누스 투르발스의 논의

운영체제 기술