Friday, February 11, 2011

 

[Under-writing] 마이크로커널 구조 - On Microkernel Architecture


1. Whey Micro-kernel architecture?

-> The problem of old monolithic kernel -> Millions of lines of code. Hard to manage.

-> Hard to debug, Hard to obtain reliability.

1. Micro-kernel Architecture의 등장 배경
기존 Monolithic Kernel의 문제점 언급 -> 수백만줄, 복잡함, 관리하기 어려움 -> 신뢰성 확보의 어려움.

2. The principle of Micro-kernel architecture.

-> Divide the Monolithic Kernel into two parts. The core is called micro-kernel which is light and operates in kernel mode. The other part runs in User-mode as (mostly) threads.

-> The micro-kernel provides only a few set of core services such as Scheduling, Memory Management, etc. (The user mode OS part can utilize thise services to implement their own Scheduling and Memory Managment policies.)

2. Micro-kernel Architecture의 원리
기존 Monolithic Kernel에서 핵심적인 부분을 떼어내어 Micro-kernel로 분리한다. 이 Micro-kernel은 kernel mode에서
동작한다. OS의 나머지 부분들은 User mode service로 동작한다 (thread의 형태로). 이 때, user mode에서 동작하는
부분은 micro-kernel의 API를 통해 메모리 할당이나, scheduling과 같은 작업을 수행한다. 즉, OS가 Micro-kernel과
Micro-kernel에 기반한 user mode OS service 부분으로 나누어지는 것이다.


Brief Layout of Micro-kernel Architecture.


App1 | App2 | App3|
-----------------------------------------------------
OS1 services | OS2 services | OS 3 services |
-----------------------------------------------------
Resource Manager (kernel mode)
-----------------------------------------------------
Micro Kernel (kernel mode)
-----------------------------------------------------
Hardware Abstraction Layer ( HAL )
-----------------------------------------------------
Hardware
-----------------------------------------------------

3. List of services provided by Micro-kernel.

-> The most critical functions of OS are gathered here.
For example, L4 Micro-kernel provides only three services.

1) Address Space (Memory Management).
2) Thread and Scheduling (Process/Thread management)
3) Communication (Inter-Process Communication)

3. Micro-kernel이 제공하는 기능들.
OS에서 가장 핵심적인 기능만을 제공한다.
예를 들면, L4 Micro-kernel은 다음의 세 가지 기능만을 제공한다.

1) Address Space (Memory Management).

2) Thread and Scheduling (Process/Thread management)
3) Communication (Inter-Process Communication)

4. Strengths of Mircokernel architecture.

1. Small kernel -> less prone to errors.

2. Even if the user mode OS services goes down, the system does not crash.

(It can safely re-configure the system).

3. You can run different kinds of OS on the same Micro-kernel.

So, you can still use the legacy OS system.

(e.g. Mach OS (base for MacOSX) run BSD, DOS, and so on..)

4. 장점.
1. Kernel 모드에서 수행되는 코드의 크기가 아주 작아진다 -> 버그 수 감소
2. User Mode OS service들이 오동작을 일으켜도 시스템 자체가 다운되는 것을
방지할 수 있다. OS service들을 다시 수행하면 된다. 물론, 관련된 Application들이
죽는 것까지 방지할 수는 없다.
3. Micro-kernel을 기반으로 다양한 OS를 동시에 운영할 수 있다.
Mach의 경우, Micro-kernel 위에 BSD, DOS 등 여러 가지 OS를 올려서 수행했다.
(왜? 기존의 legacy code들을 이용하기 위해서)

5. Weaknesses.

1. Every kernel service involves "messaging" to the micro-kernel.

-> It can degrade the performance.

2. You can use various Operating Systems but you should re-write some part of

5. 단점
1. Message passing 문제로 인해 performance 저하가 있다.
2. 다양한 OS를 동시에 올릴 수는 있으나, Source code를 수정해야 한다. (물론 일부만 수정한다)
3.


6. 결론


OS에 무엇이 중요한가? "성능보다 안정성이 우선!" <- CPU 속도 향상으로 성능 문제는 이차적인 것이 됨. 바이러스, 해커의 침입, 내부 버그 등에 의한 시스템 다운이 큰 문제 -> 안정성/신뢰성 향상 필요.


Micro-kernel approach가 이러한 문제를 상당부분 해결해 줄 수 있을 것이다.


Example>

L4 : Fiasco, Iguana
Mach
Minix (limited)
Windows NT (MS insists)

1. Microkernel 방법론이 왜 나왔는가? (배경)

기존의 OS는 Memory Management, Scheduler, File system, IPC, Device Drivers 등의 수많은 기능을 포함하는 하나의 큰 프로그램으로 작성되었다. 이를 Monolithic Kernel 이라고 부른다. Unix(BSD, Linux), DOS, 초기 버전의 Windows 등이 Monolithic Kernel의 대표적인 예이다.

초창기 OS들은 Monolithic Kernel로 작성해도 관리가 가능했다. 덩치가 별로 크지 않았기 때문이다 (수십만 줄 정도). 하지만 H/W 기술이 발전하면서 OS에도 다양한 기술들이 도입되었다. Monolithic kernel에 이런 저런 기능을 추가하는 과정에서 OS는 수백만 줄 이상의 코드로 이루어진 거대한 프로그램으로 진화했다.

OS의 덩치가 커지면서 많은 문제가 발생했다. 가장 큰 문제는 OS의 신뢰성 확보 문제였다. 아무리 뛰어난 프로그래머들이 모여서 일을
한다고 해도 수백만 줄의 코드로 구성된 프로그램에서 버그를 완전히 없앤다는 것은 불가능하다. 좋은 예가 Windows 98이다. 내노라
하는 OS 프로그래머들이 모여서 작성한 OS이지만, 우리는 "Blue Screen"의 공포에 시달려야 했다(Blue Screen이 발생하는 경우,
Rebooting외에는 방법이 없었다). 뿐만 아니라 현재 사용중인 Windows XP에서도 "치명적인 오류로 인해 해당 프로그램을 종료합니다"라는
창을 수시로 접할 수 있다. MS의 차기 윈도우인 Vista는 많은 새로운 기능들을 포기했음에도 불구하고 계속 출시를 연기하고 있다.

OS는 컴퓨터를 직접 관리한다. 따라서 OS가 오동작을 일으키면 OS상에서 동작하는 모든 Application이 영향을 받게 된다.

1980년대에 이미 이러한 현상을 예측(관찰)하고 해결하려는 노력이 있었다. Mach OS로 대표되는 Micro-kernel Architecture 이다.

"왜 OS의 모든 부분들을 Kernel 모드에서 동작시켜야 하는가? 꼭 필요한 부분만 Kernel Mode 에서 동작시키고, 나머지는 User Mode에서 수행시키면 좀 더 안정한 OS가 될 것 아닌가?".


이 방법은 처음 카네기 멜론 대학에서 수행한 Mach Project에서 시작되었다. Mach는 Message Passing에 기반한 Microkernel 운영체제이다. Mach 개발자들은

Microkernel 을 작성하고, 그 위에 다양한 OS를 User Application으로 수행시키는 방법을 실험하였다. (BSD Unix, DOS 등). 현재 Apple Tiger OS는 Mach 3.0 운영체제에 기반하고 있다


(쉬어가 기 역사: Steve Jobs가 NextStep을 설립할 때 카네기 멜론 대학에서 Mach OS를 개발하던 Avie Tavarian을 데려왔죠. 이 사람은 Mach OS에 기반한 NextStep OS를 개발했습니다. 그리고 NextStep이 Apple에 흡수되면 자연스럽게 Apple Mac OS로 발전하게 되었죠. Avie Tavarian은 Apple OS Division을 책임지면서 Apple내 No.2의 위치에까지 올랐으나, 2005년도인가 Apple을 떠나 Tellme Networks라는 회사에 합류하게 됩니다.)

2. Microkernel은 어떤 기능을 제공하는가?

앞 서, Microkernel은 기존의 Monolithic OS에서 가장 중요한 기능만을 분리한 것이라고 했다. 이것들은 Address space (Memory Management), Thread & Scheduler, 그리고 Communication(IPC) 이다. 이 세가지 기능이 Microkernel 수준에서 구현되고, kernel 모드에서 동작한다. Minix 같은 경우는 Device Driver도 Microkernel 수준에서 동작시킨다. 그 이유는 INTEL CPU의 독특한 구조 때문이다.


(INTEL CPU의 구조는 관련 자료를 참조)


3. 현재 Microkernel 구조를 채용한 OS는 어떠한 것들이 있는가?

Linux : Monolithic
Minix : Microkernel
Mach : Microkernel
Windows NT : Microkernel

4. Microkernel을 어떻게 이해해야 하는가?

기존의 Kernel을 2개의 부분으로 나눈것. User Level Operating System을 작성하기 위한 핵심 서비스를 제공하는 Kernel System.


Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?