IT story

모 놀리 식 커널과 마이크로 커널의 차이점은 무엇입니까?

hot-time 2020. 8. 3. 17:36
반응형

모 놀리 식 커널과 마이크로 커널의 차이점은 무엇입니까?


모 놀리 식 커널과 마이크로 커널의 차이점을 예제로 설명해 주시겠습니까? 커널의 다른 분류?


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

마이크로 커널에서 커널은 서버라고하는 별도의 프로세스로 분류됩니다. 일부 서버는 커널 공간에서 실행되고 일부 서버는 사용자 공간에서 실행됩니다. 모든 서버는 서로 다른 주소 공간에서 분리되어 실행됩니다. 서버는 IPC (Interprocess Communication)를 통해 메시지를 보내 서로 "서비스"를 호출합니다. 이러한 분리는 한 서버가 고장 나더라도 다른 서버가 여전히 효율적으로 작동 할 수 있다는 이점이 있습니다. 마이크로 커널 기반 OS의 예 : Mac OS X 및 Windows NT.


  1. 모 놀리 식 커널 디자인은 1980 년대 말에 나타난 마이크로 커널 아이디어보다 훨씬 오래되었습니다.

  2. 유닉스 및 리눅스 커널은 모 놀리 식이며 QNX, L4 및 Hurd는 마이크로 커널입니다. Mach는 처음에는 마이크로 커널 (Mac OS X 아님) 이었지만 나중에 하이브리드 커널로 변환되었습니다. Minix (버전 3 이전)는 장치 드라이버가 커널의 일부로 컴파일 되었기 때문에 순수한 마이크로 커널이 아니 었습니다.

  3. 모 놀리 식 커널은 일반적으로 마이크로 커널보다 빠릅니다. 첫 번째 마이크로 커널 Mach는 대부분의 모 놀리 식 커널보다 50 % 느리고, L4와 같은 것들은 모 놀리 식 디자인보다 단지 2 % 또는 4 % 느 렸습니다.

  4. 단일 커널은 크기가 크지 만 마이크로 커널은 크기가 작습니다. 일반적으로 프로세서의 L1 캐시 (1 세대 마이크로 커널)에 맞습니다.

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

  6. 모 놀리 식 커널의 장치 드라이버는 커널 공간에 상주하므로 모 놀리 식 커널은 마이크로 커널보다 안전하지 않으며 드라이버의 오류 (예외)로 인해 충돌이 발생할 수 있습니다 (Windows에서 BSOD로 표시됨). 마이크로 커널은 모 놀리 식 커널보다 안전하므로 군사 장치에서 더 자주 사용됩니다.

  7. 모 놀리 식 커널은 신호와 소켓을 사용하여 프로세스 간 통신 (IPC)을 구현하고, 마이크로 커널은 메시지 큐를 사용합니다. 1 세대 마이크로 커널은 IPC를 제대로 구현하지 못했고 컨텍스트 스위치가 느려 성능이 저하되었습니다.

  8. 모 놀리 식 시스템에 새로운 기능을 추가한다는 것은 전체 커널 또는 해당 커널 모듈 (모듈 식 모 놀리 식 커널의 경우)을 다시 컴파일하는 것을 의미하는 반면, 마이크로 커널을 사용하면 다시 컴파일하지 않고도 새로운 기능이나 패치를 추가 할 수 있습니다.


모 놀리 식 커널

스케줄러, 파일 시스템, 메모리 관리, 네트워킹 스택, 장치 드라이버 등과 같은 커널의 모든 부분은 모 놀리 식 커널 의 커널 내에서 하나의 단위로 유지됩니다

장점

• 빠른 처리

단점

• 크래시 불안 • 포팅 비 유연성 • 커널 크기 폭발

• MS-DOS, Unix, Linux

마이크로 커널

IPC (Inter process Communication), 기본 스케줄러, 기본 메모리 처리, 기본 I / O 프리미티브 등과 같은 매우 중요한 부분 만 커널에 배치됩니다. 메시지 전달을 통해 통신이 이루어집니다. 다른 것은 사용자 공간에서 서버 프로세스로 유지됩니다.

장점

• 충돌 방지, 휴대 가능, 소형

단점

• 추가 메시지 전달로 인한 느린 처리

• Windows NT


1. 모 놀리 식 커널 (Pure Monolithic) :all

  • 단일 구성 요소의 모든 커널 서비스

    (-) 추가 / 제거 불가능, 적은 / 제로 유연성

    (+) 컴포넌트 간 통신이 더 좋습니다

예 :- 전통적인 유닉스

2. 마이크로 커널 :few

  • 코어 커널의 서비스 (메모리 관리, CPU 관리, IPC 등) 및 레이어 / 컴포넌트 별 기타 서비스 (파일 관리, I / O 관리 등)

  • 접근 방식 [일부 서비스는 특권 (커널) 모드에 있고 일부는 일반 (사용자) 모드에 있습니다.]

    (+) 변경 / 업그레이드에 유연

    (-) 통신 오버 헤드

예 : QNX

3. 모듈 커널 (Modular Monolithic) :most

  • 마이크로 커널과 모 놀리 식 커널의 조합

  • 모듈 모음-모듈 수-> 정적 + 동적

  • 드라이버는 모듈 형태로 제공됩니다

예 : 리눅스 현대 OS


커널 디자인의 스펙트럼에서 두 가지 극단적 인 점은 모 놀리 식 커널과 마이크로 커널입니다.

The (classical) Linux kernel for instance is a monolithic kernel (and so is every commercial OS to date as well - though they might claim otherwise);

In that its code is a single C file giving rise to a single process that implements all of the above services.
To exemplify the encapsulation of the Linux kernel we remark that the Linux kernel does not even have access to any of the standard C libraries. Indeed the Linux kernel cannot use rudimentary C library functions such as printf. Instead it implements its own printing function (called prints).

This seclusion of the Linux kernel and self-containment provide Linux kernel with its main advantage: the kernel resides in a single address space1 enabling all features to communicate in the fastest way possible without resorting to any type of message passing. In particular, a monolithic kernel implements all of the device drivers of the system.

This however is the main drawback of a monolithic kernel: introduction of any new unsupported hardware requires a rewrite of the kernel (in the relevant parts), recompilation of it, and re-installing the entire OS.
More importantly, if any device driver crashes the entire kernel suffers as a result. This un-modular approach to hardware additions and hardware crashes is the main argument for supporting the other extreme design approach for kernels. A microkernel is in a sense a minimalistic kernel that houses only the very basic of OS services (like process management and file system management). In a microkernel the device drivers lie outside of the kernel allowing for addition and removal of device drivers while the OS is running and require no alternations of the kernel.


Monolithic kernel has all kernel services along with kernel core part, thus are heavy and has negative impact on speed and performance. On the other hand micro kernel is lightweight causing increase in performance and speed.
I answered same question at wordpress site. For the difference between monolithic, microkernel and exokernel in tabular form, you can visit here

참고URL : https://stackoverflow.com/questions/4537850/what-is-difference-between-monolithic-and-micro-kernel

반응형