리눅스가 왜 모 놀리 식 커널이라고 불리는가?


208

나는 리눅스가 모 놀리 식 커널이라는 것을 읽었다. 모 놀리 식 커널은 완전한 커널 코드를 컴파일하여 실행 파일로 연결하는 것을 의미합니까?

리눅스가 모듈을 지원할 수 있다면 왜 모든 서브 시스템을 모듈로 나누고 필요할 때로드합니까? 이 경우 커널은 모든 모듈을 처음에로드 할 필요가 없으며 모듈의 함수 색인을 유지하고 필요할 때로드 할 수 있습니다.

답변:


290

모 놀리 식 커널은 모든 서비스 (파일 시스템, 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 마이크로 커널을 언급하고 있습니다. 다른 사람들의 최근 연구를 버리려는 의도는 아닙니다.


5
흥미롭게도 Linus Torvalds는 Linux를 만들 때 Andew Tanenbaum의 MINIX에 크게 영향을 받았습니다. 그러나 MINIX는 마이크로 커널 디자인을 기반으로하는 반면 Linux는 단일 커널을 사용합니다.
Martin Liversage

2
@ Martin Liversage : 영향을받은 것보다 더 좌절했습니다 :) 나는 그것을 반영하기 위해 내 대답을 편집했습니다.
Tim Post

25
@DigitalRoss : 답장을받은 후받은 편지함을 볼 수 있습니다. Linus는 Minix 및 Mach 애호가와 비교할 때 길 들이지 않습니다.
Tim Post


3
@p_l 마이크로, 모 놀리 식 및 하이브리드의 차이점에 대해 이야기해야 할 시점과 거의 비슷하다고 생각합니다. 꽤 좋은 질문이 될 수 있습니다 :)
Tim Post

15

모 놀리 식 커널은 전체 운영 체제가 커널 모드에서 실행됨을 의미합니다 (즉, 하드웨어에서 높은 권한을 가짐). 즉, OS의 어떤 부분도 사용자 모드 (더 낮은 권한)로 실행되지 않습니다. OS 위에있는 응용 프로그램 만 사용자 모드에서 실행됩니다.

Windows와 같은 비모 놀리 식 커널 운영 체제에서 OS 자체의 대부분은 사용자 모드에서 실행됩니다.

두 경우 모두 OS는 모듈 식일 수 있습니다.


9
Windows는 가장 확실하게 모 놀리 식 커널입니다.
Adam Rosenfield

7
@Adam : 동의하지 않습니다. 오래된 스타일의 16 비트 Windows 이었다 등 윈도우 95이고로, 모 놀리 식 커널. 그러나 모든 서버 버전과 Vista 및 7을 포함한 NT 기반 Windows 에디션은 사용하는 "마이크로 커널"의 정의에 따라 마이크로 커널이거나 하이브리드 일 수 있습니다.
CesarGon

8
프린터 드라이버가 ring0에서 실행되지 않는다고해서 마이크로 커널이되지는 않습니다 :)
caf

7
@caf : en.wikipedia.org/wiki/Windows_NT_kernelen.wikipedia.org/wiki/Comparison_of_operating_system_kernels를 살펴보십시오 . Windows NT 및 Vista, 7 및 서버를 포함한 후속 장치는 "하이브리드 커널"로 설명되어 있습니다. OS의 두 개의 큰 하위 시스템은 프린터 드라이버뿐만 아니라 사용자 모드에서 완전히 실행됩니다. :-)
CesarGon

7
내 의견은 뺨에 약간 혀가있다. "하이브리드"라는 명칭은 쓸모없는 정보가없는 것 같다.
caf

10

; tl-dr-아니요, Linux는 항상 단일체입니다.

Linux 모듈 은 어떤 의미에서 모듈 식 을 의미 할 수 있습니다 . 다른 사람들이 지적했듯이 모 놀리 식은 일반적으로 마이크로 커널모 놀리 식 커널을 나타냅니다 . 전통적인 마이크로 커널 에는 이러한 기능 만 있습니다.

  1. 스케줄링
  2. 메모리 관리
  3. 프로세스 간 통신

메인 커널 에는 하드웨어 드라이버 , 프로토콜 스택 , 파일 시스템 , 일시 중지 / 재개 , 클럭 관리 등이 없습니다. 이러한 작업은 모든 사용자 작업 과 동일 하지만 MMU / 스케줄러를 통해 다른 권한을 가질 수 있습니다.


타넨 바움의 예측

  1. 마이크로 커널은 미래입니다
  2. x86은 죽고 RISC 아키텍처는 시장을 지배 할 것입니다
  3. (5 년 후) 모든 사람이 무료 GNU OS를 실행합니다

PC와 서버 프로그래머들은 웃을지도 모르지만 2 ~ 3 명은 확실히 존재하는 대다수의 휴대 전화에 해당된다. BlackBerry QNX가 성공했다면 모든 계정에서 Tanenbaum이 적합 할 것입니다.

또한, 많은 L1-하이퍼 바이저는마이크로 커널 아래를. 하이퍼 바이저는 일반적으로 컨텍스트 전환 외에도 많은 기능을 수행하지 않기 때문 입니다.

분명히 세 가지는 Linux의 성공을 예측합니다. ;-)


마이크로 커널에 대한 논쟁 은 모든 모 놀리 식 서브 시스템이 한 번에 여러 값을 동기화해야한다는 것입니다. 이를 위해서는 잠금 장치를 사용해야 하며 병렬 아키텍처로 확장 될 때 암달의 법칙으로 인해 어려움을 겪게됩니다 . 카운터는 마이크로 커널 로 인해 많은 IPC 메시지 가 발생한다는 것입니다.

주요 개발은 모 놀리 식 커널에서 경합을 피하기 위해 잠금없는 프로그래밍을 사용하는 것입니다 . 이것은 모 놀리 식 커널에서의 잠금을 피하면서 IPC 오버 헤드를 줄입니다. 최근에 모든 CPU는 잠금없는 알고리즘을 위한 더 나은 프리미티브를 포함하도록 ISA를 확장하고 있습니다. 따라서 리눅스는 아마도 한동안 모 놀리 식 커널로 남아있을 것입니다.


1
예, Tanenbaum이 Hurd를 의미한다는 것을 알고 있습니다. 그러나 GNU는 리눅스로 바꾸어 표현이 재미있었습니다.
artless noise

모바일 장치에 x86을 사용하지 않는 이유는 무엇입니까? 다른 아키텍처가 유리한 이유는 무엇입니까?
Abdul


그렇습니다. x86 SOC (system-on-chip)를 만드는 것은 어렵습니다. SOC 공급 업체 (Broadcom, Freescale 등)가 구입할 수있는 x86을 만드는 표준 HDL 코드는 없습니다.
artless noise

9

에서 위키 백과 :

모 놀리 식 커널은 전체 운영 체제가 커널 공간에서 단독으로 감독자 모드로 작동하는 커널 아키텍처입니다. 다른 아키텍처와 달리 모 놀리 식 커널은 프로세스 관리, 동시성 및 메모리 관리 자체 및 하나 이상의 모든 운영 체제 서비스를 구현하기위한 기본 또는 시스템 호출 세트와 함께 컴퓨터 하드웨어에 대한 고급 가상 인터페이스 만 정의합니다. 모듈로서의 장치 드라이버.

반면에 최신 버전의 Windows는 하이브리드 커널을 사용합니다 .

하이브리드 커널은 컴퓨터 운영 체제에서 사용되는 마이크로 커널과 모 놀리 식 커널 아키텍처의 측면을 결합한 커널 아키텍처입니다. 이 범주는 모 놀리 식 커널과 유사하기 때문에 논쟁의 여지가 있습니다. 이 용어는 일부 사람들이 단순한 마케팅으로 기각했습니다. 전통적인 커널 범주는 모 놀리 식 커널과 마이크로 커널 (나노 커널과 엑소 커널이 더 극단적 인 마이크로 커널 버전으로 표시됨)입니다.


7
커널 공간에서 무언가를하면, "hybric kerkel"을 어딘가에 사용해야한다는 것을 기억해야합니다. SCNR ;-)
Jürgen A. Erhard

1
Windows NT는 항상 하이브리드 시스템이었습니다. 커널은 정확히 하이브리드가 아닐 수 있지만, 커널의 일부로 계산할 대상이 무엇인지에 대해 의문을 제기합니다 (예 : winapi는 사용자 공간 서비스로 구현 됨)
p_l

5

이 맥락에서 'Monolithic'은 하나의 큰 실행 파일이 있다는 것을 의미하지 않으며, Linux는 런타임에 커널 모듈의 동적 로딩을 지원합니다. 커널에 대해 말할 때 '모노 리식 (monolithic)'은 최소 운영 체제 인 '마이크로 커널'과 같은 커널 유형을 사용하는 다른 유형의 운영 체제와 달리 전체 운영 체제가 '권한'또는 '관리자'모드에서 실행됨을 의미합니다. 기능 세트는 권한 모드로 실행되며 대부분의 운영 체제는 사용자 공간에서 실행됩니다.

마이크로 커널의 지지자들은 코드가 작을수록 버그가 적기 때문에 더 좋다고 말하며, 수퍼바이저 모드에서 실행되는 버그는 사용자 공간 코드보다 훨씬 더 큰 문제를 야기 할 수 있습니다 (예 : 보안 취약성 또는 전체 시스템 충돌의 형태로 '커널 패닉'). 일부 마이크로 커널은 '공식적으로 검증'될 수있을 정도로 충분히 작습니다. 즉, 사양에 따라 커널이 '올바르게'임을 수학적으로 증명할 수 있습니다. L4 가 이에 대한 좋은 예입니다.


출처를 확인하십시오. wikipage가 인용되었습니다. www2.cs.uh.edu/~rzheng/course/COSC6397sp2008/…
monksy

2

모 놀리 식 커널은 단일 주소 공간에서 완전히 실행되는 단일 대형 프로세스입니다. 단일 정적 이진 파일입니다. 모든 커널 서비스는 존재하며 커널 주소 공간에서 실행됩니다. 커널은 함수를 직접 호출 할 수 있습니다. 모 놀리 식 커널 기반 OS의 예는 Linux, Unix입니다.

나는이 글이 그 개념을 더 이해하는데 도움이 될 것이라고 생각합니다.

http://learnlinuxconcepts.blogspot.in/2014/03/what-are-monolithic-and-micro-kernels.html


이 링크가 질문에 대답 할 수 있지만 여기에 답변의 필수 부분을 포함시키고 참조 할 수있는 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않을 수 있습니다.
Scott
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.