마이크로 커널 아키텍처의 장점 중 하나는 전체 시스템을 다시 시작할 필요없이 네트워킹 및 파일 시스템과 같은 필수 서비스를 중지 / 시작할 수 있다는 것입니다. 그러나 오늘날 리눅스 커널 (항상 그랬던가?)이 동일한 효과를 달성하기 위해 모듈을 사용하는 옵션을 제공한다는 점을 고려할 때 마이크로 커널의 (남은) 장점은 무엇입니까?
마이크로 커널 아키텍처의 장점 중 하나는 전체 시스템을 다시 시작할 필요없이 네트워킹 및 파일 시스템과 같은 필수 서비스를 중지 / 시작할 수 있다는 것입니다. 그러나 오늘날 리눅스 커널 (항상 그랬던가?)이 동일한 효과를 달성하기 위해 모듈을 사용하는 옵션을 제공한다는 점을 고려할 때 마이크로 커널의 (남은) 장점은 무엇입니까?
답변:
마이크로 커널 은 모 놀리 식 커널 보다 가장 신뢰할 수있는 가장 내부 모드에서 실행되는 코드가 더 적습니다 . 여기에는 다음과 같은 많은 측면이 있습니다.
유닉스 GUI는 사용자 윈도우 코드 인 X 윈도우를 통해 제공됩니다 (비디오 장치 드라이버를 제외하고). 현대의 많은 유니 세들은 일반 사용자들이 FUSE를 통해 파일 시스템 드라이버를로드 할 수 있도록 합니다. 일부 Linux 네트워크 패킷 필터링은 사용자 영역에서 수행 할 수 있습니다. 그러나 장치 드라이버, 스케줄러, 메모리 관리자 및 대부분의 네트워킹 프로토콜은 여전히 커널 전용입니다.
Linux 및 마이크로 커널에 대한 고전적인 (날짜가있는) 기사 는 Tanenbaum-Torvalds 토론 입니다. 20 년 후, 리눅스가 마이크로 커널 구조로 매우 느리게 움직이고 있다고 말할 수 있지만 (로드 가능한 모듈은 초기에 나타 났으며, FUSE가 더 최신입니다) 여전히 갈 길이 멀다.
변경된 또 다른 사항은 데스크톱 및 고급 임베디드 컴퓨터 에서 가상화의 관련성이 증가한다는 것입니다 . 일부 목적의 경우 커널과 사용자 영역이 아니라 하이퍼 바이저 와 게스트 OS 사이의 관련 차이점이 있습니다.
마이크로 커널은 시스템이 사용자 공간과 반대로 커널 모드에있는 시간을 가능한 최소로 제한합니다.
커널 모드에서 충돌이 발생하면 전체 커널이 다운되고 전체 시스템이 다운되었음을 의미합니다. 사용자 모드에서 충돌이 발생하면 해당 프로세스 만 중단됩니다. Linux는 이와 관련하여 강력하지만 모든 커널 하위 시스템이 다른 커널 하위 시스템의 메모리를 의도적으로 또는 실수로 덮어 쓸 수 있습니다.
마이크로 커널 개념은 네트워킹 및 장치 드라이버와 같은 커널 모드 인 많은 것들을 사용자 공간에 넣습니다. 마이크로 커널은 실제로 많은 일을 담당하지 않기 때문에 더 단순하고 안정적 일 수 있습니다. IP 프로토콜이 단순하고 어리석은 방식으로 생각하면 복잡성을 가장자리로 밀고 코어를 간결하고 평균을 유지함으로써 강력한 네트워크로 연결됩니다.
모 놀리 식 커널은 마이크로 커널보다 훨씬 오래되었습니다 . 마이크로 커널에 대한 아이디어는 1980 년대 말에 나타 났으며 유닉스에서 사용되었다 .
모 놀리 식 커널을 갖는 OS의 예는 UNIX, LINUX 이고, 마이크로 커널을 가진 OS는 QNX, L4, HURD 및 초기에 Mach (MacOS X 아님)이며 나중에 하이브리드 커널로 변환됩니다. MINIX 조차도 장치 드라이버가 커널의 일부로 컴파일되기 때문에 순수한 마이크로 커널이 아닙니다.
모 놀리 식 커널은 마이크로 커널보다 빠릅니다 . 첫 번째 마하 마이크로 커널은 모 놀리 식 커널보다 50 % 느립니다. L4와 같은 최신 버전 은 단일 커널보다 2 % 또는 4 % 느립니다 .
모 놀리 식 커널은 일반적으로 부피가 크지 만 순수한 마이크로 커널은 크기 가 작아야 하며 프로세서의 1 차 캐시 (1 세대 마이크로 커널)에도 적합해야합니다.
모 놀리 식 커널에서 장치 드라이버는 커널 공간 에 있고 마이크로 커널 장치 드라이버는 사용자 공간에 있습니다.
장치 드라이버는 커널 공간에 상주하므로 모 놀리 식 커널 은 마이크로 커널 보다 안전 하지 않습니다 (드라이버의 실패로 인해 충돌이 발생할 수 있음). 마이크로 커널은 단일 커널 보다 안전 하므로 많은 군사 장치에 사용됩니다.
단일 커널은 신호와 소켓 을 사용하여 IPC를 보장하는 반면 마이크로 커널 방식은 메시지 대기열을 사용 합니다 . 1 일 그들은 컨텍스트 스위치에 느린했다 있도록 마이크로 커널의 세대는 제대로 IPC를 구현했습니다.
모 놀리 식 시스템에 새로운 기능을 추가한다는 것은 전체 커널 을 다시 컴파일하는 것을 의미하지만 다시 컴파일 하지 않고도 새로운 기능이나 패치 를 추가 할 수 있습니다
리눅스 커널은 단일체와 마이크로 커널의 하이브리드이다. 순수 모 놀리 식 구현에서는 런타임에로드하는 모듈이 없습니다.
용어 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 kernels
대 multi context kernels
.
microkernel
어쨌든 이 용어 는 일반적으로 호출해야하는 것에 사용되기 때문에 잘못되었습니다 multi context kernel
.