모놀리식 커널: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
편집 요약 없음
편집 요약 없음
1번째 줄:
[[파일:Kernel-monolithic.svg|thumb|250 px|모놀리식 커널의 개념도]]
[[운영체제운영 체제]]에서 '''모놀리식 커널'''(Monolithic kernel)은 커널의 구조 및 설계 사상을 가리킨다. '''단일형 커널'''이라고도 한다. [[입출력]] 기능, [[컴퓨터 네트워크|네트워크]] 기능, [[장치]] 지원 등 운영체제의운영 체제의 일반적인 기능을 커널과 동일한 메모리 공간에 실장, 실행하는 기법을 말한다.
 
대표적인 모놀리식 커널 OS로서는, 고전적인 [[UNIX유닉스 계열]]와 그 파생운영 OS를체제들을 들 수 있다.
 
== 모놀리식 커널과 마이크로 커널 ==
운영체제의운영 체제의 구성요소를 단일의 메모리 공간에서 실행하는 모놀리식 커널에 대해, OS를 구성하는 몇 개의 요소, 기능을 커널 공간으로부터 떼어내어, 외부 모듈화하는 등으로 실장하는 기법을 [[마이크로 커널]]이라고 부른다.
모놀리식 커널의 설계 사상 및 개념 그 자체는 예전부터 존재했지만, 모놀리식 커널이라고 하는 용어가 성립된 것은, 이 마이크로 커널이라고 하는 개념이 등장하면서 그 반대 개념으로서 명명되었다.
 
== 커널 실장 방식과 그 논의에 대해 ==
모놀리식 커널 방식은 보다 근대적인 설계 방법으로 여겨지는 [[마이크로 커널]]방식의 OS에 비해, [[운영체제운영 체제]]의 기능의 거의 모든 것이 단일 [[메모리]]공간에서 행해지는 고 , 동일한 처리를 실시할 때에 소비되는 [[문맥 교환]]이나 [[프로세스간프로세스 간 통신]] 등에 의한 과부하는 상대적으로 적은 것이 되어, 실효 성능에 대해 유리하다는 주장이 있다. 실제로 프로세서의 동작 클럭이 수MHz 수십 MHz 정도이던 시대에는, 남발되는 문맥교환 등의 실행 비용 문제는 심각한 것이었다.
 
[[1980년대]]에 데뷔한 상용 [[UNIX유닉스]]는, 그 대부분이 모놀리식 커널 방식을 채용하고 있다.
 
그러나, 프로세서의 동작 클럭은 20세기말에서 21세기 초두에 걸쳐 장족의 진보를 이루어 처리 능력에 이르러 한층 더 그 몇배에도 향상하고 있는 것은 이제 와서 말할 필요도 없다. 이러한 실행 환경측의 진보에 가세해 [[L4]] 프로젝트에 있어서 프로세스간 통신의 튜닝 등, 마이크로 커널 측의 실장에 있어서의 고속화 기법의 진전, 또 필요에 따라서 마이크로 커널적인 구조를 기조로 하면서 일부 퍼포먼스가 요구되는 하부조직만 커널 공간에 수중에 넣는 실장이나, 모놀리식 커널을 기조로 하면서도 유연성이나 견뢰성이 요구되는 부분에 마이크로 커널적인 설계 방법을 도입하는, 보다 현실적인 하이브리드 커널라고도 불러야 할 설계 방법도 등장하여, 모놀리식 커널의 퍼포먼스에 있어서의 원리상의 우위성이나, 양자의 엄밀한 구별에 대해서는, 반드시 절대적인 것이라고는 할 수 없게 되었다.
 
2005년 현재는기준으로, 순수한 모놀리식 커널 방식으로 개발하는 이점은 적다고 하는 견해가 있다. 그러나, 동등의 기능을 실장했을 경우에 그 원리상 실행시의(컴퓨터 메모리상의) OS커널의 발자국을 비교적 작은 것에 두어, [[비선점형]](non-preemptive) 제약을 부가하면, 서비스 실장을 실시할 때에 고려해야 할 일이 줄어 들어, 개발이 편해지는 것 등을 이점으로서 들 수 있다.
 
한편, 모놀리식인 커널에 여러가지 기능을 수중에 넣는 것으로 거대화 하는 것에 의한 결점으로서는, OS의 기능을 동적으로 바꾸거나 갱신하거나 하는 것이(마이크로 커널과 비교했을 경우에) 곤란한 것이 되기 쉬운 일등을 들 수 있다.
21번째 줄:
연구 개발의 세계에서는, 커널의 기능을 최소한으로 세우는 [[마이크로 커널]]이 주류가 된 [[1990년대]] 당초, 모놀리식 커널을 시대착오라고 생각되기도 했다. 그러나, 실장 레벨로의 차이가 작동상의 치명적인 설계 문제일리도 없고, 현재는 필요한 기능을 필요한 성능 레벨로 제공할 수 있으면 문제 없다고 하는 형태로의 논의가 귀결되고 있다.
 
Windows윈도 NT는, 당초보다 마이크로 커널 방식으로의 실장을 모색하고 있었지만, 과부하를 줄이기 위해서 NT4.0으로 Windows윈도 하부조직과 그래픽스 장치 드라이버가 커널 공간으로부터 직접 보이는 것처럼 수정되었다. Windows2000윈도 2000 이후에서는, 하드웨어 관리 기능의 일부를 마이크로 커널 직할 모듈로서의 외부 모듈로부터 커널 제어부 본체에 의한 제어 방식으로 전환하여, 순수한 마이크로 커널로부터 벗어난 실장이 되었다. NT4.0에서는 800킬로바이트 미만이었던 NTOSKRNL([[Windows윈도 NT계NT]] 계열의 커널 시스템)은, Windows윈도 XP에서 2메가바이트에 이르기까지 비대해졌다(단, Windows윈도 Vista는비스타는 동작의 안정성이나 시스템 전체의 견고함을 고려하여 일부 '격세유전'되었다). 마이크로 커널로서의 구조는 여전히 남아 있기 위해, 마이크로 커널과 모놀리식 커널의 절충을 취한 [[하이브리드 커널]]라고도 불러야 할 실장이 되어 있다.
마이크로 커널로서의 구조는 여전히 남아 있기 위해, 마이크로 커널과 모놀리식 커널의 절충을 취한 [[하이브리드 커널]]라고도 불러야 할 실장이 되어 있다.
 
또 [[Mach마하]]에서 파생된 [[맥 OS X]]도, BSD 하부조직이나 파일 시스템, 네트워크 등을 커널 공간에 통합하고 있어, 순수한 마이크로 커널로부터 멀어진 실장이 되었다. Windows와윈도와 같이, 마이크로 커널과 모놀리식 커널 양쪽 모두의 이점을 살린 설계이다.
 
==유명한 논쟁==
{{Main본문|앤드루 타넨바움과 리누스 토르발스의 논의}}
 
모놀리식 커널과 마이크로 커널에 대해서는, Linux의 저자 [[리누스 토르발스]]와 [[Minix]](미닉스)의 저자 [[앤드루 타넨바움]]의 [[1992년]] [[앤드루 타넨바움과 리누스 토르발스의 논의|논쟁]]이 유명하다.
 
== 모놀리식 커널 사례 ==
* [[Linux리눅스]] 커널
* [[Mac OS]](8.6까지, 이후는 나노 커널)
* [[MS-DOS]]
* [[OpenVMS]]
* [[UNIX유닉스 계열|유닉스]] 커널
* [[Windows윈도 9x계열9x]] 계열 ([[Microsoft Windows윈도 95]] / [[Microsoft Windows윈도 98|98]] / [[Microsoft Windows Millennium윈도 EditionMe|Me]])
 
== 주석 ==