모 놀리 식과 마이크로 커널의 차이점을 예로 들어 설명해 주시겠습니까? 또한 커널의 다른 분류?
답변
모 놀리 식 커널은 단일 주소 공간에서 완전히 실행되는 단일 대형 프로세스입니다. 단일 정적 바이너리 파일입니다. 모든 커널 서비스는 커널 주소 공간에서 존재하고 실행됩니다. 커널은 함수를 직접 호출 할 수 있습니다. 모 놀리 식 커널 기반 OS의 예 : Unix, Linux.
마이크로 커널에서 커널은 서버라고하는 별도의 프로세스로 나뉩니다. 일부 서버는 커널 공간에서 실행되고 일부는 사용자 공간에서 실행됩니다. 모든 서버는 별도로 유지되며 다른 주소 공간에서 실행됩니다. 서버는 IPC (Interprocess Communication)를 통해 메시지를 보내 서로 “서비스”를 호출합니다. 이러한 분리는 한 서버가 실패하더라도 다른 서버가 여전히 효율적으로 작동 할 수 있다는 장점이 있습니다. 마이크로 커널 기반 OS의 예 : Mac OS X 및 Windows NT.
답변
-
모 놀리 식 커널 디자인은 1980 년대 말에 등장한 마이크로 커널 아이디어보다 훨씬 오래되었습니다.
-
Unix 및 Linux 커널은 모 놀리 식이고 QNX, L4 및 Hurd는 마이크로 커널입니다. Mach는 처음에는 마이크로 커널 (Mac OS X가 아님) 이었지만 나중에 하이브리드 커널로 변환되었습니다. Minix (버전 3 이전)는 장치 드라이버가 커널의 일부로 컴파일 되었기 때문에 순수한 마이크로 커널이 아닙니다.
-
모 놀리 식 커널은 일반적으로 마이크로 커널보다 빠릅니다. 첫 번째 마이크로 커널 Mach는 대부분의 모 놀리 식 커널보다 50 % 더 느 렸고, L4와 같은 후기의 마이크로 커널은 모 놀리 식 디자인보다 2 % 또는 4 % 더 느 렸습니다.
-
모 놀리 식 커널은 크기가 크지 만 마이크로 커널은 크기가 작습니다. 일반적으로 프로세서의 L1 캐시 (1 세대 마이크로 커널)에 맞습니다.
-
모 놀리 식 커널에서 장치 드라이버는 커널 공간에 상주하고 마이크로 커널에서는 장치 드라이버가 사용자 공간에 있습니다.
-
모 놀리 식 커널의 장치 드라이버가 커널 공간에 상주하므로 모 놀리 식 커널은 마이크로 커널보다 덜 안전하며 드라이버의 오류 (예외)로 인해 충돌이 발생할 수 있습니다 (Windows에서 BSOD로 표시됨). 마이크로 커널은 모 놀리 식 커널보다 더 안전하므로 군용 장치에 더 자주 사용됩니다.
-
모 놀리 식 커널은 신호와 소켓을 사용하여 프로세스 간 통신 (IPC)을 구현하고 마이크로 커널은 메시지 큐를 사용합니다. 1 세대 마이크로 커널은 IPC를 제대로 구현하지 못했고 컨텍스트 스위치에서 느 렸습니다. 이것이 성능 저하의 원인이되었습니다.
-
모 놀리 식 시스템에 새로운 기능을 추가한다는 것은 전체 커널 또는 해당 커널 모듈 (모듈 형 모 놀리 식 커널의 경우)을 다시 컴파일하는 것을 의미하지만 마이크로 커널을 사용하면 다시 컴파일하지 않고도 새로운 기능이나 패치를 추가 할 수 있습니다.
답변
모 놀리 식 커널
스케줄러, 파일 시스템, 메모리 관리, 네트워킹 스택, 장치 드라이버 등과 같은 커널의 모든 부분은 모 놀리 식 커널 의 커널 내에서 하나의 단위로 유지됩니다.
장점
• 빠른 처리
단점
• 충돌 불안정 • 포팅 유연성 • 커널 크기 폭발
예
• MS-DOS, Unix, Linux
마이크로 커널
IPC (Inter process Communication), 기본 스케줄러, 기본 메모리 처리, 기본 I / O 프리미티브 등과 같은 매우 중요한 부분 만 커널에 넣습니다. 통신은 메시지 전달을 통해 발생합니다. 기타는 사용자 공간에서 서버 프로세스로 유지됩니다.
장점
• 충돌 방지, 휴대 가능, 소형
단점
• 추가 메시지 전달로 인한 처리 속도 저하
예
• Windows NT
답변
1. 모 놀리 식 커널 (퓨어 모 놀리 식) :all
-
단일 구성 요소의 모든 커널 서비스
(-) 추가 / 제거 불가, 덜 / 유연
(+) 구성 요소 간 통신이 더 좋습니다.
예 :- 전통적인 유닉스
2. 마이크로 커널 :few
-
코어 커널의 일부 서비스 (메모리 관리, CPU 관리, IPC 등), 다른 계층 / 구성 요소의 기타 서비스 (파일 관리, I / O 관리 등)
-
Split Approach [일부 서비스는 권한 (커널) 모드이고 일부는 일반 (사용자) 모드입니다.]
(+) 변경 / 업그레이드를위한 유연성
(-) 통신 오버 헤드
예 : -QNX 등
3. 모듈러 커널 (Modular Monolithic) :most
-
마이크로 커널과 모 놀리 식 커널의 조합
-
모듈 모음-모듈은-> 정적 + 동적 일 수 있습니다.
-
드라이버는 모듈 형태로 제공됩니다.
예 : -Linux Modern OS
답변
커널 설계의 스펙트럼에서 두 가지 극단 점은 모 놀리 식 커널과 마이크로 커널입니다.
예를 들어 (고전적인) 리눅스 커널은 모 놀리 식 커널입니다 (그리고 지금까지 모든 상용 OS도 마찬가지입니다.
코드는 위의 모든 서비스를 구현하는 단일 프로세스를 생성하는 단일 C 파일이라는 점에서.
Linux 커널의 캡슐화를 예시하기 위해 Linux 커널에는 표준 C 라이브러리에 대한 액세스 권한조차 없습니다. 실제로 Linux 커널은 printf와 같은 기초적인 C 라이브러리 함수를 사용할 수 없습니다. 대신 자체 인쇄 기능 (인쇄라고 함)을 구현합니다.
Linux 커널과 자체 포함의 이러한 격리는 Linux 커널의 주요 이점을 제공합니다. 커널은 단일 주소 공간 1에 상주하므로 모든 기능이 메시지 전달 유형에 의존하지 않고 가능한 가장 빠른 방법으로 통신 할 수 있습니다. 특히, 모 놀리 식 커널은 시스템의 모든 장치 드라이버를 구현합니다.
그러나 이것이 모 놀리 식 커널의 주요 단점입니다. 지원되지 않는 새로운 하드웨어를 도입하려면 커널을 다시 작성하고 (관련 부분에서) 다시 컴파일하고 전체 OS를 다시 설치해야합니다.
더 중요한 것은 장치 드라이버가 충돌하면 그 결과 전체 커널에 문제가 발생한다는 것입니다. 하드웨어 추가 및 하드웨어 충돌에 대한 이러한 비 모듈 식 접근 방식은 커널에 대한 다른 극단적 인 설계 접근 방식을 지원하기위한 주요 주장입니다. 마이크로 커널은 어떤 의미에서 매우 기본적인 OS 서비스 (예 : 프로세스 관리 및 파일 시스템 관리) 만 수용하는 최소한의 커널입니다. 마이크로 커널에서 장치 드라이버는 커널 외부에있어 OS가 실행되는 동안 장치 드라이버를 추가 및 제거 할 수 있으며 커널을 변경할 필요가 없습니다.