Linux 커널은 마이크로 커널 아키텍처와 어떻게 비교됩니까?


38

마이크로 커널 아키텍처의 장점 중 하나는 전체 시스템을 다시 시작할 필요없이 네트워킹 및 파일 시스템과 같은 필수 서비스를 중지 / 시작할 수 있다는 것입니다. 그러나 오늘날 리눅스 커널 (항상 그랬던가?)이 동일한 효과를 달성하기 위해 모듈을 사용하는 옵션을 제공한다는 점을 고려할 때 마이크로 커널의 (남은) 장점은 무엇입니까?



1
MicroKernel과 Monolithic 커널에 대한 토론을 읽을 수 있습니다. oreilly.com/openbook/opensources/book/appa.html 이 백서에서 Andrew Tanenbaum은 Microkernel을 지원하고 Linus Torvalds는 단일 커널을 지원합니다.
부완

답변:


35

마이크로 커널모 놀리 식 커널 보다 가장 신뢰할 수있는 가장 내부 모드에서 실행되는 코드가 더 적습니다 . 여기에는 다음과 같은 많은 측면이 있습니다.

  • 마이크로 커널을 사용하면 기본이 아닌 기능 (예 : 연결되지 않았거나 사용하지 않는 하드웨어 용 드라이버)을 마음대로로드 및 언로드 할 수 있습니다. 이것은 대부분 모듈을 통해 Linux에서 달성 할 수 있습니다.
  • 마이크로 커널은보다 강력합니다. 비 커널 구성 요소가 충돌해도 전체 시스템을 사용하지는 않습니다. 버그가있는 파일 시스템 또는 장치 드라이버가 Linux 시스템과 충돌 할 수 있습니다. 리눅스는 코딩 관행 및 테스트 이외의 문제를 완화 할 수있는 방법이 없습니다.
  • 마이크로 커널에는 더 작은 신뢰할 수있는 컴퓨팅 기반이 있습니다. 따라서 악의적 인 장치 드라이버 나 파일 시스템조차도 전체 시스템을 제어 할 수 없습니다 (예 : 최신 USB 가제트의 모호한 드라이버는 하드 디스크를 읽을 수 없음).
  • 이전 시점의 결과로 일반 사용자는 모 놀리 식 커널의 커널 구성 요소 인 자체 구성 요소를로드 할 수 있습니다.

유닉스 GUI는 사용자 윈도우 코드 인 X 윈도우를 통해 제공됩니다 (비디오 장치 드라이버를 제외하고). 현대의 많은 유니 세들은 일반 사용자들이 FUSE를 통해 파일 시스템 드라이버를로드 할 수 있도록 합니다. 일부 Linux 네트워크 패킷 필터링은 사용자 영역에서 수행 할 수 있습니다. 그러나 장치 드라이버, 스케줄러, 메모리 관리자 및 대부분의 네트워킹 프로토콜은 여전히 ​​커널 전용입니다.

Linux 및 마이크로 커널에 대한 고전적인 (날짜가있는) 기사Tanenbaum-Torvalds 토론 입니다. 20 년 후, 리눅스가 마이크로 커널 구조로 매우 느리게 움직이고 있다고 말할 수 있지만 (로드 가능한 모듈은 초기에 나타 났으며, FUSE가 더 최신입니다) 여전히 갈 길이 멀다.

변경된 또 다른 사항은 데스크톱 및 고급 임베디드 컴퓨터 에서 가상화의 관련성이 증가한다는 것입니다 . 일부 목적의 경우 커널과 사용자 영역이 아니라 하이퍼 바이저 와 게스트 OS 사이의 관련 차이점이 있습니다.



1
그것은 모두 아주 좋은 이론입니다. 장치가 어떻게 든 연결되면 시스템이 토스트 된 것입니다. 작업 중 드라이버가 반쯤 충돌하면 드라이버를 다시 시작하지 않아도 시스템이 기능 상태로 복원됩니다. 성능을 원한다면 드라이버를 멀티 스레딩해야합니다. "일정 스케줄러"의 이점이 완전히 사라집니다. 성능을 원한다면, 메모리 사본과 컨텍스트 스위치를 피해야합니다 ( "비용"). 일부 마이크로 커널의 크기를 살펴보면 드라이버가 포함 된 모 놀리 식 커널 크기와 복잡성이 비슷하다는 것을 알 수 있습니다 .
vonbrand

15

마이크로 커널은 시스템이 사용자 공간과 반대로 커널 모드에있는 시간을 가능한 최소로 제한합니다.

커널 모드에서 충돌이 발생하면 전체 커널이 다운되고 전체 시스템이 다운되었음을 의미합니다. 사용자 모드에서 충돌이 발생하면 해당 프로세스 만 중단됩니다. Linux는 이와 관련하여 강력하지만 모든 커널 하위 시스템이 다른 커널 하위 시스템의 메모리를 의도적으로 또는 실수로 덮어 쓸 수 있습니다.

마이크로 커널 개념은 네트워킹 및 장치 드라이버와 같은 커널 모드 인 많은 것들을 사용자 공간에 넣습니다. 마이크로 커널은 실제로 많은 일을 담당하지 않기 때문에 더 단순하고 안정적 ​​일 수 있습니다. IP 프로토콜이 단순하고 어리석은 방식으로 생각하면 복잡성을 가장자리로 밀고 코어를 간결하고 평균을 유지함으로써 강력한 네트워크로 연결됩니다.


5

읽기 자료에 대한 링크를 게시 해 주셔서 감사합니다! 브렌트 W의 요점은 건전하며 마이크로 커널 동기화 메커니즘의 과도한 복잡성에 대한 Christoph L의 관심에 어느 정도 공감합니다. 그러나 후자의 논문은 메시지 기반 이벤트 루프를 간과하고 있다고 생각합니다. 이벤트 루프는 서로 메모리를 공유하지 않기 때문에 잠금이 필요하지 않으며 (IMO) 선언적 코딩 스타일에 적합하므로 일관된 알고리즘을 명시 적으로 정의 할 수 있습니다 (람다 미적분의 포인트). 나는 보통 앱을 코딩하지만,이 Q는 즐거운 학습 경험이되었습니다
인류의 안드로이드

1

x86 아키텍처를 살펴보십시오. 모 놀리 식 커널은 0과 3 만 사용합니다 . 실제로 낭비입니다. 그러나 컨텍스트 전환이 적기 때문에 더 빠를 수 있습니다.

x86 반지


x86 링 구조는 과도하게 엔지니어링되었습니다. 실용화되지 않음 (가상 머신은 제외하지만 점점 더 많이 사용됨)
vonbrand

1
  1. 모 놀리 식 커널은 마이크로 커널보다 훨씬 오래되었습니다 . 마이크로 커널에 대한 아이디어는 1980 년대 말에 나타 났으며 유닉스에서 사용되었다 .

  2. 모 놀리 식 커널을 갖는 OS의 예는 UNIX, LINUX 이고, 마이크로 커널을 가진 OS는 QNX, L4, HURD 및 초기에 Mach (MacOS X 아님)이며 나중에 하이브리드 커널로 변환됩니다. MINIX 조차도 장치 드라이버가 커널의 일부로 컴파일되기 때문에 순수한 마이크로 커널이 아닙니다.

  3. 모 놀리 식 커널은 마이크로 커널보다 빠릅니다 . 첫 번째 마하 마이크로 커널은 모 놀리 식 커널보다 50 % 느립니다. L4와 같은 최신 버전 은 단일 커널보다 2 % 또는 4 % 느립니다 .

  4. 모 놀리 식 커널은 일반적으로 부피가 크지 만 순수한 마이크로 커널은 크기작아야 하며 프로세서의 1 차 캐시 (1 세대 마이크로 커널)에도 적합해야합니다.

  5. 모 놀리 식 커널에서 장치 드라이버는 커널 공간 에 있고 마이크로 커널 장치 드라이버는 사용자 공간에 있습니다.

  6. 장치 드라이버는 커널 공간에 상주하므로 모 놀리 식 커널 은 마이크로 커널 보다 안전 하지 않습니다 (드라이버의 실패로 인해 충돌이 발생할 수 있음). 마이크로 커널은 단일 커널 보다 안전 하므로 많은 군사 장치에 사용됩니다.

  7. 단일 커널은 신호와 소켓 을 사용하여 IPC를 보장하는 반면 마이크로 커널 방식은 메시지 대기열을 사용 합니다 . 1 그들은 컨텍스트 스위치에 느린했다 있도록 마이크로 커널의 세대는 제대로 IPC를 구현했습니다.

  8. 모 놀리 식 시스템에 새로운 기능을 추가한다는 것은 전체 커널다시 컴파일하는 것을 의미하지만 다시 컴파일 하지 않고도 새로운 기능이나 패치 추가 할 수 있습니다


(4)에서는 사과와 수박을 비교하고 있습니다. 마이크로 커널 자체 (설계 상)에는 최소한의 기능 만 포함되어 있으며 모 놀리 식 커널에는 훨씬 많은 기능이 포함되어 있습니다. (6)는 훌륭한 이론이며, 조각이 얼마나 유능하게 개발되고 실제 IPC 메커니즘이 유출되는지에 달려 있습니다 (성능을 위해서는 실제 "메시지 전달"이 될 수 없음). 참고 (7) 은 "메시지 큐"의 매우 복잡한 처리를 의미 하므로 대부분의 장점을 무시합니다. (8)의 경우, 예를 들어 Linux의 경우 커널과 독립적으로 모듈을 컴파일 할 수 있습니다. 이것은 실제로 드라이버 개발을 위해 일상적으로 수행됩니다.
vonbrand 2016 년

0

Windows NT (현재 Windows 시스템의 기본 커널)는 바닐라 마이크로 커널 디자인으로 시작되었습니다. 성능 문제로 인해 점점 더 많은 "userland"코드가 "micokernel"로 마이그레이션되었습니다. 오늘날 마이크로 커널 구조는 흔적입니다.


-1

리눅스 커널은 단일체와 마이크로 커널의 하이브리드이다. 순수 모 놀리 식 구현에서는 런타임에로드하는 모듈이 없습니다.


9
그렇지 않습니다. 모듈이 동적으로로드된다는 사실은 사실을 변경하지 않으며 전체 커널 권한으로 실행되며 모 놀리 식 커널의 일부로 실행됩니다.
vartec

3
하이브리드 디자인의 경우 일부 드라이버 (USB, 스캐너, 프린터 및 그래픽 용)가 커널이 아닌 사용자 공간에서 구현되는 것이 더 중요합니다. 구별은 명확하지 않으며 libsb, sane, cups 및 mesa가 있으므로 Linux를 하이브리드 커널로 표시 할 수 있습니다. insmod 및 rmmod가 없기 때문입니다.
Maciej Piechotka

-1

용어 monolithic kernel와는 microkernel그들이 커널 디자인의 다양한 측면 (구조 대 크기) 기술로 심각하게 비교할 수 없습니다.

일반적인 모 놀리 식 커널은 SunOS-4.x 커널이고 Linux는 기본 커널의 내용을 수동으로 구성하므로 여전히 유사합니다.

모든 드라이버가 필요할 때 자동으로로드되고 초기 부팅 중에 작은 부분 만로드되므로 Solaris 커널 (1992에서 2.1로 시작)을 더 이상 모 놀리식이라고 부를 수 없습니다.

SunOS-4.x 및 Solaris (SunOS-5.x) 및 Linux는 모두 단일 컨텍스트 구현입니다. 그들의 전체 코드는 단일 MMU 컨텍스트에서 실행됩니다.

Mac OS X은 Mach를 기반으로하며 여러 프로세스를 MMU 컨텍스트로 구분하여 다중 컨텍스트 구현으로 실행합니다. 이 개념에서 드라이버는 별도의 프로세스와 별도의 MMU 컨텍스트에 있습니다.

많은 사람들이 Mac OS X을 "마이크로 커널 시스템"이라고 부르지 만 기본 커널이 Solaris의 기본 커널보다 작지 않을 수 있습니다.

그래서 이야기에 더 나을 것 같다 single context kernelsmulti context kernels.


1
MacOS는 마이크로 커널을 통해 (필수적으로 독점적 인) BSD shim을 실행합니다. 실제 마이크로 커널 설계가 아니라 별도의 프로세스로 분리 할 필요가 없습니다 .
vonbrand

1
따라서 두 개 이상의 소위 커널 프로세스를 사용하는 디자인을 인정합니다. microkernel어쨌든 이 용어 는 일반적으로 호출해야하는 것에 사용되기 때문에 잘못되었습니다 multi context kernel.
schily
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.