마이크로커널 아키텍처의 장점 중 하나는 전체 시스템을 다시 시작하지 않고도 네트워킹 및 파일 시스템과 같은 기본 서비스를 중지/시작할 수 있다는 것입니다. 그러나 현재 Linux 커널(항상 그랬습니까?)이 동일한 효과를 얻기 위해 모듈을 사용할 수 있는 옵션을 제공한다면 마이크로커널의 (나머지) 이점은 무엇입니까?
답변1
마이크로커널가장 내부적이고 가장 신뢰할 수 있는 모드에서 실행하려면 다음보다 적은 코드가 필요합니다.전체 커널. 여기에는 다음과 같은 여러 측면이 있습니다.
- 마이크로커널을 사용하면 필수적이지 않은 기능(예: 연결되지 않거나 사용하지 않는 하드웨어용 드라이버)을 마음대로 로드하고 언로드할 수 있습니다. 이는 주로 Linux의 모듈을 통해 달성할 수 있습니다.
- 마이크로커널은 더욱 강력합니다. 커널이 아닌 구성 요소가 충돌하더라도 전체 시스템에 영향을 주지 않습니다. 결함이 있는 파일 시스템이나 장치 드라이버로 인해 Linux 시스템이 중단될 수 있습니다. 코딩 연습과 테스트 외에 이러한 문제를 완화하기 위해 Linux가 할 수 있는 일은 없습니다.
- 마이크로커널은 더 작습니다.신뢰할 수 있는 컴퓨팅 재단. 따라서 악성 장치 드라이버나 파일 시스템이라도 전체 시스템을 제어할 수는 없습니다. 예를 들어 최신 USB 가젯의 출처가 의심스러운 드라이버는 하드 드라이브를 읽을 수 없습니다.
- 이전 요점의 결과는 일반 사용자가 모놀리식 커널 내의 커널 구성 요소가 될 자신의 구성 요소를 로드할 수 있다는 것입니다.
Unix GUI는 사용자 공간 코드인 X 창을 통해 제공됩니다((일부) 비디오 장치 드라이버 제외). 많은 최신 유니스는 일반 사용자가 다음을 통해 파일 시스템 드라이버를 로드할 수 있도록 허용합니다.퓨즈. 일부 Linux 네트워크 패킷 필터링은 사용자 모드에서 수행될 수 있습니다. 그러나 장치 드라이버, 스케줄러, 메모리 관리자 및 대부분의 네트워크 프로토콜은 여전히 커널로 제한됩니다.
Linux 및 마이크로커널에 대한 고전적인(오래된 경우) 읽기는 다음과 같습니다.타넨바움-토발즈 논쟁. 20년이 지난 지금, Linux는 마이크로커널 구조를 향해 아주 아주 천천히 움직이고 있다고 말할 수 있습니다(로드 가능한 모듈은 매우 일찍 나타났고 FUSE는 더 나중에 나타났습니다). 하지만 아직 갈 길이 멉니다.
또 달라진 점은 상관관계의 증가이다.가상화데스크톱 및 고급 임베디드 컴퓨터: 어떤 목적에 따라 관련 구별은 커널과 사용자 모드의 차이가 아니라 커널 모드와 사용자 모드의 차이입니다.관리 프로그램및 게스트 운영 체제.
답변2
마이크로커널은 시스템이 커널 모드(사용자 공간과 반대)에 있는 시간을 가능한 최소값으로 제한합니다.
커널 모드에서 충돌이 발생하면 전체 커널이 충돌하며 이는 전체 시스템이 충돌함을 의미합니다. 사용자 모드에서 충돌이 발생하면 프로세스가 중지됩니다. Linux는 이 점에서 강력하지만 모든 커널 하위 시스템이 의도적으로 또는 의도하지 않게 다른 커널 하위 시스템의 메모리에 쓰는 것이 여전히 가능합니다.
마이크로커널 개념은 전통적으로 많은 커널 모드 항목(예: 네트워킹 및 장치 드라이버)을 사용자 공간에 배치합니다. 마이크로커널은 실제로 많은 일을 담당하지 않기 때문에 더 간단하고 더 안정적일 수 있음을 의미합니다. 핵심을 간결하고 의미 있게 유지하면서 간단하고 어리석은 방식으로 복잡성을 가장자리까지 밀어넣음으로써 IP 프로토콜이 실제로 어떻게 강력한 네트워크를 구현하는지 생각해 보십시오.
답변3
답변4
x86 아키텍처를 살펴보세요. 모놀리식 코어는반지0과 3. 정말 낭비입니다. 그러나 컨텍스트 전환이 적기 때문에 더 빠를 수 있습니다.