문제

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

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

도움이 되었습니까?

해결책

모 놀리 식 커널은 모든 서비스 (파일 시스템, VFS, 장치 드라이버 등)뿐만 아니라 핵심 기능 (스케줄링, 메모리 할당 등)이 동일한 공간을 공유하는 타이트한 니트 그룹 인 커널입니다. 이것은 바로 반대 a입니다 마이크로 넬.

마이크로 커널은 핵심 기능이 시스템 서비스 및 장치 드라이버 (기본적으로 시스템 서비스)에서 분리되는 접근 방식을 선호합니다. 예를 들어, VFS (가상 파일 시스템) 및 블록 장치 파일 시스템 (예 : MINIXFS)은 IPC를 사용하여 커널, 기타 서비스 및 사용자 프로세스와 통신하기 위해 커널 공간 밖에서 실행되는 별도의 프로세스입니다. 요컨대, 그것이 a 기준 치수 리눅스에서는 a입니다 서비스 고립 된 프로세스를 나타냅니다.

용어를 혼동하지 마십시오 모듈 식 커널은 단일체를 제외하고는 아무것도 아닙니다. 일부 모 놀리 식 커널은 모듈 식 (예 : Linux)으로 컴파일 될 수 있으며, 중요한 것은 모듈이 핵심 기능 (커널 공간)을 처리하는 동일한 공간에 삽입되고 실행된다는 것입니다.

마이크로 커널의 장점은 실패한 서비스를 쉽게 다시 시작할 수 있다는 것입니다. 예를 들어 루트 파일 시스템이 중단되는 경우 커널 중단이 없다는 것입니다. 그러나 이것은 또한 꽤 중요한 버그를 숨길 수 있기 때문에 불리한 점으로 볼 수 있습니다 (문제가 지속적으로 고정되는 것처럼 보이기 때문에 비판적으로 보이게 만들 수 있습니다). 배치 된 후에는 편리하게 문제를 해결할 수없는 시나리오에서 큰 장점으로 여겨집니다.

마이크로 넬의 단점은 비동기 IPC 메시징이 디버깅하기가 매우 어려워 질 수 있다는 것입니다. 피 브릴 구현됩니다. 또한 FS/쓰기 문제를 추적하면 사용자 공간 프로세스, 블록 장치 서비스, VFS 서비스, 파일 시스템 서비스 및 PCI 서비스를 검사하는 것을 의미합니다. 그것에 대해 공백이 있으면 IPC 서비스를 볼 시간입니다. 이것은 종종 모 놀리 식 커널에서 더 쉽습니다. GNU 허드 이러한 디버깅 문제로 고통받습니다 (참조). 복잡한 메시지 대기열을 다룰 때 심지어 검사 점에 들어 가지 않을 것입니다. 마이크로 넬은 희미한 마음을위한 것이 아닙니다.

작동하고 안정적인 커널의 가장 짧은 경로는 모 놀리 식 접근법입니다. 어느 접근법도 POSIX 인터페이스를 제공 할 수 있으며, 여기서 커널의 디자인은 단순히 주어진 디자인에서 실행되도록 코드를 작성하려는 누군가에게 관심이 거의 없습니다.

나는 프로덕션에서 Linux (Monolithic)를 사용합니다. 그러나 커널 개발에 대한 대부분의 학습, 해킹 또는 땜질의 대부분은 마이크로 넬, 특히 헬레 노스.

편집하다

당신이 나의 매우 긴 씨족 대답을 통해 이것을 멀리했다면, 당신은 아마도 재미있는 것을 읽을 것입니다.커널 디자인에 대한 Great Torvalds-Tanenbaum 토론'. 2013 년에 발사 된 지 20 년이 지난 후에도 읽는 것도 더 재미 있습니다. 가장 재미있는 부분은 마지막 메시지 중 하나에서 Linus의 서명이었습니다.

Linus "my first, and hopefully last flamefest" Torvalds

분명히, 그것은 X86이 곧 쓸모 없게 될 것이라는 Tanenbaum의 예측보다 더 이상 실현되지 않았습니다.

NB :

내가 "minix"라고 말할 때, 나는 Minix 3을 암시하지 않습니다. 또한 Hurd를 언급 할 때, 나는 Mach Microkernel을 참조하고 있습니다 (대부분). 다른 사람들의 최근 일을 비난하는 것은 나의 의도가 아닙니다.

다른 팁

모 놀리 식 커널은 전체 운영 체제가 커널 모드로 실행된다는 것을 의미합니다 (즉, 하드웨어에 의해 매우 특권이 높음). 즉, OS의 일부는 사용자 모드 (더 낮은 권한)에서 실행되지 않습니다. OS 상단의 응용 프로그램 만 사용자 모드에서 실행됩니다.

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

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

에서 위키 백과:

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

반면에 최근의 Windows 버전은 하이브리드 커널.

하이브리드 커널은 컴퓨터 운영 체제에 사용되는 마이크로 넬 및 모 놀리 식 커널 아키텍처의 측면을 결합한 커널 아키텍처입니다. 이 범주는 모 놀리 식 커널과 유사하기 때문에 논란의 여지가 있습니다. 이 용어는 일부는 간단한 마케팅으로 기각되었습니다. 전통적인 커널 카테고리는 모 놀리 식 커널과 마이크로 넬 (보다 극단적 인 마이크로 커널 버전으로 보이는 나노 세공기 및 exokernel 포함)입니다.

; TL -DR -NO, Linux는 항상 모 놀리 식입니다.

리눅스 모듈 의미 할 수 있습니다 모듈 식 어떤 의미에서. 다른 사람들이 언급 한 바와 같이, 모 놀리식이 일반적으로 a를 대표하고 있습니다 마이크로 넬 ~ 대 단단히 짜여 하나로 되어 있는 핵심. 전통 마이크로 넬 이러한 기능 만 가지고 있으며

  1. 일정
  2. 메모리 관리
  3. 프로세스 간 통신

아니요 하드웨어 드라이버, 프로토콜 스택, 파일 시스템, 일시 중단/이력서, 시계 관리, 메인 커널에 등. 이런 것들이 있습니다 동일한 모든 사용자 작업 (MMU/스케줄러를 통해 다른 권한이있을 수 있지만).


Tanenbaum의 예측

  1. 마이크로 커널이 미래입니다
  2. x86은 죽을 것이고 RISC 아키텍처는 시장을 지배 할 것입니다.
  3. (그때부터 5 년) 모두가 무료 GNU OS를 운영 할 것입니다.

PC 및 서버 프로그래머는 웃을 수 있지만, 존재하는 대부분의 휴대 전화에는 2와 3이 확실합니다. BlackBerry QNX가 성공했다면 Tanenbaum은 모든 계정에 적합합니다.

또한 많은 L1- 하이퍼 바이저 가지고있다 마이크로 커널 아래에. 하이퍼 바이저는 보통 옆에 많이하지 않기 때문입니다. 문맥 스위치.

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


논쟁 마이크로 넬 모든 모 놀리 식 하위 시스템은 한 번에 여러 값을 동기화해야한다는 것입니다. 이를 위해서는 자물쇠를 사용해야하며 암델의 법칙 병렬 아키텍처로 확장 된 경우. 카운터는 그 것입니다 마이크로 넬 많은 IPC 메시지가 발생합니다.

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

이 맥락에서 'monolithic'은 단일 대형 실행 파일이 있음을 나타내지 않으며, 당신이 말했듯이, Linux는 런타임에 커널 모듈의 동적로드를 지원합니다. 커널에 대해 이야기 할 때 '모 놀리 식' 기능 세트는 권한 모드에서 실행되며 대부분의 운영 체제는 사용자 공간에서 실행됩니다.

마이크로 커널의 지지자들은 작은 코드가 버그가 적고 감독자 모드에서 실행되는 버그는 사용자 공간 코드보다 훨씬 큰 문제를 일으킬 수 있기 때문에 이것이 더 좋다고 말합니다 (예 : 보안 취약성 또는 총 시스템 충돌 가능성이 더 큰 문제는 '커널 공황'). 일부 마이크로 커널은 '공식적으로 검증'될 수있을 정도로 최소화되므로 사양에 따라 커널이 '올바른'임을 수학적으로 증명할 수 있습니다. L4 이것의 좋은 예입니다.

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

이 게시물이 개념을 이해하는 데 더 도움이 될 것이라고 생각합니다.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top