답변:
모 놀리 식 커널은 모든 서비스 (파일 시스템, VFS, 장치 드라이버 등)와 핵심 기능 (스케줄링, 메모리 할당 등)이 동일한 공간을 공유하는 긴밀한 그룹 인 커널입니다. 이것은 마이크로 커널과 직접적으로 반대된다 .
마이크로 커널은 핵심 기능이 시스템 서비스 및 장치 드라이버 (기본적으로 시스템 서비스 일뿐)와 분리되는 접근 방식을 선호합니다. 예를 들어 VFS (가상 파일 시스템)와 블록 장치 파일 시스템 (예 : minixfs)은 IPC를 사용하여 커널, 다른 서비스 및 사용자 프로세스와 통신하기 위해 커널 공간 외부에서 실행되는 별도의 프로세스입니다. 즉, Linux 의 모듈 인 경우 격리 된 프로세스를 나타내는 마이크로 커널 의 서비스 입니다.
모듈 식 커널 이라는 용어를 모 놀리 식 이외의 것으로 혼동하지 마십시오 . 일부 모 놀리 식 커널은 모듈 형 (예 : Linux)으로 컴파일 될 수 있습니다. 중요한 것은 모듈이 핵심 기능 (커널 공간)을 처리하는 동일한 공간에 삽입되고 실행되는 것입니다.
마이크로 커널의 장점은 실패한 서비스를 쉽게 다시 시작할 수 있다는 것입니다. 예를 들어 루트 파일 시스템이 중단되면 커널이 중지되지 않습니다. 그러나 이것은 매우 중요한 버그를 숨길 수 있기 때문에 단점으로 보일 수도 있습니다 (또는 문제가 지속적으로 해결되는 것처럼 보임). 배포 된 후에는 무언가를 편리하게 수정할 수없는 시나리오에서 큰 이점으로 여겨집니다.
마이크로 커널의 단점은 비동기 IPC 메시징이 특히 fibrils 가 구현 된 경우 디버깅하기가 매우 어려워 질 수 있다는 것 입니다. 또한 FS / 쓰기 문제를 추적한다는 것은 사용자 공간 프로세스, 블록 장치 서비스, VFS 서비스, 파일 시스템 서비스 및 PCI 서비스 (아마도)를 검사하는 것을 의미합니다. 당신이 그것에 빈 내용이 있으면, IPC 서비스를 볼 때입니다. 이것은 모 놀리 식 커널에서 종종 더 쉽습니다. GNU Hurd 는 이러한 디버깅 문제 ( reference )로 어려움을 겪고 있습니다 . 복잡한 메시지 대기열을 처리 할 때 검사 점에 들어 가지 않을 것입니다. 마이크로 커널은 희미한 마음을위한 것이 아닙니다.
작동하고 안정적인 커널의 최단 경로는 모 놀리 식 접근법입니다. 두 가지 방법 모두 POSIX 인터페이스를 제공 할 수 있습니다. 여기서 커널 디자인은 특정 디자인에서 실행할 코드를 작성하려는 사람에게는 거의 관심이되지 않습니다.
프로덕션에서는 Linux (단일)를 사용합니다. 그러나 커널 개발에 대한 대부분의 학습, 해킹 또는 땜질은 마이크로 커널, 특히 HelenOS에 들어갑니다 .
편집하다
매우 긴 대답을 통해 이것을 얻었을 경우 아마도 ' 커널 디자인에 관한 위대한 Torvalds-Tanenbaum 토론 '을 읽는 것이 재미있을 것입니다 . 2013 년에 책을 읽은 후 20 년이 넘는 책을 읽는 것이 더 재미있었습니다. 가장 재미있는 부분은 마지막 메시지 중 하나에서 Linus의 서명이었습니다.
Linus "my first, and hopefully last flamefest" Torvalds
분명히 x86이 곧 폐기 될 것이라는 Tanenbaum의 예측보다 더 이상 실현되지 않았습니다.
NB :
"Minix"라고 말하면 Minix 3을 암시하지 않습니다. 또한 HURD를 언급 할 때 (대부분) Mach 마이크로 커널을 언급하고 있습니다. 다른 사람들의 최근 연구를 버리려는 의도는 아닙니다.
모 놀리 식 커널은 전체 운영 체제가 커널 모드에서 실행됨을 의미합니다 (즉, 하드웨어에서 높은 권한을 가짐). 즉, OS의 어떤 부분도 사용자 모드 (더 낮은 권한)로 실행되지 않습니다. OS 위에있는 응용 프로그램 만 사용자 모드에서 실행됩니다.
Windows와 같은 비모 놀리 식 커널 운영 체제에서 OS 자체의 대부분은 사용자 모드에서 실행됩니다.
두 경우 모두 OS는 모듈 식일 수 있습니다.
; tl-dr-아니요, Linux는 항상 단일체입니다.
Linux 모듈 은 어떤 의미에서 모듈 식 을 의미 할 수 있습니다 . 다른 사람들이 지적했듯이 모 놀리 식은 일반적으로 마이크로 커널 대 모 놀리 식 커널을 나타냅니다 . 전통적인 마이크로 커널 에는 이러한 기능 만 있습니다.
메인 커널 에는 하드웨어 드라이버 , 프로토콜 스택 , 파일 시스템 , 일시 중지 / 재개 , 클럭 관리 등이 없습니다. 이러한 작업은 모든 사용자 작업 과 동일 하지만 MMU / 스케줄러를 통해 다른 권한을 가질 수 있습니다.
PC와 서버 프로그래머들은 웃을지도 모르지만 2 ~ 3 명은 확실히 존재하는 대다수의 휴대 전화에 해당된다. BlackBerry QNX가 성공했다면 모든 계정에서 Tanenbaum이 적합 할 것입니다.
또한, 많은 L1-하이퍼 바이저는 이 마이크로 커널 아래를. 하이퍼 바이저는 일반적으로 컨텍스트 전환 외에도 많은 기능을 수행하지 않기 때문 입니다.
분명히 세 가지는 Linux의 성공을 예측합니다. ;-)
마이크로 커널에 대한 논쟁 은 모든 모 놀리 식 서브 시스템이 한 번에 여러 값을 동기화해야한다는 것입니다. 이를 위해서는 잠금 장치를 사용해야 하며 병렬 아키텍처로 확장 될 때 암달의 법칙으로 인해 어려움을 겪게됩니다 . 카운터는 마이크로 커널 로 인해 많은 IPC 메시지 가 발생한다는 것입니다.
주요 개발은 모 놀리 식 커널에서 경합을 피하기 위해 잠금없는 프로그래밍을 사용하는 것입니다 . 이것은 모 놀리 식 커널에서의 잠금을 피하면서 IPC 오버 헤드를 줄입니다. 최근에 모든 CPU는 잠금없는 알고리즘을 위한 더 나은 프리미티브를 포함하도록 ISA를 확장하고 있습니다. 따라서 리눅스는 아마도 한동안 모 놀리 식 커널로 남아있을 것입니다.
에서 위키 백과 :
모 놀리 식 커널은 전체 운영 체제가 커널 공간에서 단독으로 감독자 모드로 작동하는 커널 아키텍처입니다. 다른 아키텍처와 달리 모 놀리 식 커널은 프로세스 관리, 동시성 및 메모리 관리 자체 및 하나 이상의 모든 운영 체제 서비스를 구현하기위한 기본 또는 시스템 호출 세트와 함께 컴퓨터 하드웨어에 대한 고급 가상 인터페이스 만 정의합니다. 모듈로서의 장치 드라이버.
반면에 최신 버전의 Windows는 하이브리드 커널을 사용합니다 .
하이브리드 커널은 컴퓨터 운영 체제에서 사용되는 마이크로 커널과 모 놀리 식 커널 아키텍처의 측면을 결합한 커널 아키텍처입니다. 이 범주는 모 놀리 식 커널과 유사하기 때문에 논쟁의 여지가 있습니다. 이 용어는 일부 사람들이 단순한 마케팅으로 기각했습니다. 전통적인 커널 범주는 모 놀리 식 커널과 마이크로 커널 (나노 커널과 엑소 커널이 더 극단적 인 마이크로 커널 버전으로 표시됨)입니다.
이 맥락에서 'Monolithic'은 하나의 큰 실행 파일이 있다는 것을 의미하지 않으며, Linux는 런타임에 커널 모듈의 동적 로딩을 지원합니다. 커널에 대해 말할 때 '모노 리식 (monolithic)'은 최소 운영 체제 인 '마이크로 커널'과 같은 커널 유형을 사용하는 다른 유형의 운영 체제와 달리 전체 운영 체제가 '권한'또는 '관리자'모드에서 실행됨을 의미합니다. 기능 세트는 권한 모드로 실행되며 대부분의 운영 체제는 사용자 공간에서 실행됩니다.
마이크로 커널의 지지자들은 코드가 작을수록 버그가 적기 때문에 더 좋다고 말하며, 수퍼바이저 모드에서 실행되는 버그는 사용자 공간 코드보다 훨씬 더 큰 문제를 야기 할 수 있습니다 (예 : 보안 취약성 또는 전체 시스템 충돌의 형태로 '커널 패닉'). 일부 마이크로 커널은 '공식적으로 검증'될 수있을 정도로 충분히 작습니다. 즉, 사양에 따라 커널이 '올바르게'임을 수학적으로 증명할 수 있습니다. L4 가 이에 대한 좋은 예입니다.
모 놀리 식 커널은 단일 주소 공간에서 완전히 실행되는 단일 대형 프로세스입니다. 단일 정적 이진 파일입니다. 모든 커널 서비스는 존재하며 커널 주소 공간에서 실행됩니다. 커널은 함수를 직접 호출 할 수 있습니다. 모 놀리 식 커널 기반 OS의 예는 Linux, Unix입니다.
나는이 글이 그 개념을 더 이해하는데 도움이 될 것이라고 생각합니다.
http://learnlinuxconcepts.blogspot.in/2014/03/what-are-monolithic-and-micro-kernels.html