150625 마이크로커널 운영체제 김지은

15
Micro Kernel Operating System 김지은 [email protected]

Upload: jieun-kim

Post on 07-Aug-2015

119 views

Category:

Technology


2 download

TRANSCRIPT

Micro Kernel Operating System

김지은

[email protected]

마이크로커널 운영체제란?

• 운영체제의 수행모드

kernel mode <-> user mode

- kernel mode : 모든 시스템의 자원을 직접 관리할 수 있는 모드- user mode : 프로세스가 실행하는 사용자 모드

멀티 프로세스를 지원하기 위한 개념

• 작업방식에 따른 운영체제의 종류

Monolithic Kernel Operating System

Micro Kernel Operating System

Hybrid Kernel Operating System

모드 가상 어드레스 공간, 프로세스

kernel mode 커널 공간, 커널 프로세스

user mode 사용자 공간, 사용자 프로세스

마이크로커널 운영체제란?

• 작업방식에 따른 운영체제의 종류

Monolithic kernel Operating System

Micro kernel Operating System

- 모놀리틱 커널 운영체제

: OS의 모든 기능이 마이크로 프로세서의 kernel mode에서 수행되는 방식

- 마이크로 커널 운영체제

: 운영체제의 최소기능만 OS의 kernel mode에서 수행되고, 나머지 대부분의 기능이 user mode에서 수행되는 방식

wiki

마이크로커널 운영체제란?

• 작업방식에 따른 운영체제의 종류 (more)

모놀리틱 커널 운영체제

- OS의 모든 기능이 마이크로 프로세서의 kernel mode에서 수행되는 방식

- 시스템 콜로 호출

- 신뢰도를 높이면, 고성능을 보장

- 확장이 용이하도록 커널 공간의 코드량을 최소한 시킴

- OS/360, Unix, VMS, MS-DOS, Linux, AGNIX, …

마이크로 커널 운영체제

- 운영체제의 최소기능만 OS의 kernel mode에서 수행되고,나머지 대부분의 기능이 user mode에서 수행되는 방식

- 서버를 프로그램처럼 간단히 조작할 수 있음

- 모놀리틱 커널 방식에 비하여 주소공간 계산 등으로 나타나는 오버헤드를 줄일 수 있음

- Mach, Chorus OS, QNX, RadiOS, Spring Operating System, L4, Minix, …

하이브리드 커널 운영체제

- 마이크로 커널의 모델을 기본으로 사용자 레벨에서 수행될 때 느린 코드를kernel mode에서 수행하도록 하여 마이크로 커널이 갖는 성능상의 한계를 극복하고자 함

- XNU(Mac OSX) kernel (마이크로커널 Mach(kernel) 2.5~3.0 based + BSD 커널의 일부)

- ReactOS, BeOS, Netware, …

마이크로커널 운영체제란?

• Mechanism과 Policy의 분리

: 마이크로커널운영체제는 Mechanism과 Policy를 분리하여 동작

• Mechanism : 마이크로커널(kernel mode)

a. Thread Manager - 스레드 생성/종료b. IPC Manager(inter-process communication) -여러 스레드, 프로세스 간 메시지 전달c. address space Manager - 주소공간을 생성 및 페이지 할당 등d. interrupt Manager - device는 policy를 사용하므로 micro kernel에 있지않고 user mode 쪽으로 존재

이 드라이브를 micro kernel에 등록/호출

• Policy : 서버프로그램들(user mode)

a. pager – 페이지폴트 예외처리

b. device driver

사용자스레드 사용자스레드 사용자스레드

페이저 디바이스 드라이버 파일시스템 네트워크서버

프로세서 메모리 디바이스

스레드, IPC, 주소공간, 인터럽트

… 사용자프로그램

… 서버프로그램(policy)

마이크로커널 (mechanism)

… 하드웨어

사용자모드

커널모드

마이크로커널 운영체제란?

• Micro kernel OS의 역사

1세대 - CMU에서 Mach OS 개발

개념이 너무 좋아서 많은 사람들이 굉장하다고 하였으나, 성능이 좋지 않아 실망함(마이크로 커널 운영체제에 대한 사람들의 인식은? 개념은 좋지만 성능은 별로)

2세대 - GMD의 Liedtke가 효율적인 IPC 구현 기술을 개발1세대 마이크로 커널 운영체제보다 수십배가 빠른 마이크로 커널 운영체제를 만듬한두가지가 아닌 굉장한 많은 복합적인 컴퓨터과학의 방법들을 적용하여 Optimization 시킴=> 성능향상

3세대 - 수학 logic과 프로그래밍언어의 semantics를 사용하여 formal verification 기술을 개발단순 테스트가아닌 "증명"을 수행하여 신뢰할 수 있는 마이크로 커널을 만들게 됨=> 고 신뢰성을 보장. security, availability, reliability ...

마이크로커널 운영체제의 특징

• 기본특징

flexibility, safety, modularity

Flexibility: mechanism과 policy를 분리하여 유연한 운영체제를 구현.- 모놀리틱커널OS 보다는 훨씬 쉽게 구현이 가능- 하나의 마이크로 커널 상에서 다수의 운영체제를 동시에 수행시킬 수 있음 (ex. linux OS + windows OS)- 하나의 마이크로 커널 상에서 다수의 정책을 쉽게 구현이 가능. 하나의 프로세스에 다수의 policy를 구현이 가능

(ex. 일반 paging, 멀티미디어용 paging을 동시에 적용 할 수 있음)- 어떤 file system 위에 다른 file system을 쉽게 구현 할 수 있음 (ex. stacked file system)

Safety : 마이크로커널과 server program이 분리되면서 마이크로커널의 모듈크기가 굉장히 줄어들게 됨.- 커널 자체가 가지는 안전성이 굉장히 높아짐- 대부분의 프로그램들이 server program에서 user mode로 수행이 되므로, OS의 한 부분에 문제가 생겨도 kernel이나다른 서버에 문제가 생길 소지가 적어지게 됨( fault isolation)

Modularity: 전체 OS가 작은 마이크로커널 + 다수의 서버프로그램으로 모듈화 됨- os를 개발할 때, 하나의 모듈을 개발 할 때 개발비용이 적어짐- 모노리틱 커널에 비해 테스트가 용이함- 유지비수 비용이 낮아짐- 운영체제 재부팅을 하지않고 file system과 같은 크리티컬한 프로그램도 쉽게 업데이트할 수 있음

마이크로커널 운영체제의 내부구조

• 마이크로커널 부분 (1/2)

인터럽트관리자

주소공간관리자

IPC관리자

스레드관리자

마이크로커널 (mechanism)

커널모드

Thread manager- thread_create, thread_exit- thread scheduler : priority 기반의 round robin(scheduler는 policy가 있으므로 서버프로그램으로 구현하여야 하지만 성능의 문제로 아직은 마이크로 커널 내부에 구현)- data structure : TCB(Thread Control Block), thread_id, thread_state, thread_quota, address_space(memory),

kernel_stack(system call이 아예없지는 않기 떄문인 듯)

IPC(inter-process communication) Manager: 시스템호출만 제공하여 두 스레드사이에 데이터를 주고받음

- synchronous IPC : ipc_send, ip_resceive- asynchronous notification : 데이터를 전달하는 개념보다는 어떤 이벤트가 발생했을 때, asynchronous하게 이벤트를 알려줌

ipc_notify, ipc_getnotify, ipc_event 필요

* synchronous IPC + asynchronous notification : 현재 microkernel에서는 synchronous IPC를 사용: why? microkernel 운영체제는 IPC 성능이 매우 중요synchronous IPC를 제공하면서 많은 optimization을 적용할 수 있게됨(synchronous IPC는 이미 많은 기술들이 발전했으므로 적용가능한 optimization 기법이 많아짐)

* asynchronous notification을 병행하는 이유? 마이크로커널의 성능을 높이기 위함: thread프로그래밍을 할 때, synchronous만 있는 경우는 너무 불편하므로 섞음

마이크로커널 운영체제의 내부구조

• 마이크로커널 부분 (2/2)

Address space manager: 메모리 주소공간을 관리

- 모노리티커널의 메모리 관리자와는 완전 다름-최소한의 메커니즘만 제공

as_create(address space create) : address space 생성as_map : 하나의 page 할당as_unmap : 할당받은 page 반환

- 사용하는 자료구조 : AS, Address Space 구조제. AS구조체 내에 as_id와 page_table(물리주소) 필드를 사용(* 실제 페이지를 바꾸는 처리나 page fault exception의 처리는 마이크로커널이 수행하지 않음. ("페이저“가 처리)

interrupt manager - system call: device가 user mode에서 실행되는 서버프로그램이므로 인터럽트가 들어오면 어느 프로그램인지 알기위해 정보를 관리

intr_register - 새로운 디바이스 드라이버 등록intr_unregister - 등록된 디바이스 드라이버 해제

- kernel interrupt handler: 인터럽트가 발생하면 실제 처리는 하지 않지만, 기본적으로 kernel로 올라오므로 등록된 디바이스 드라이버를 IPC로 호출

- 사용하는 자료구조 : IH, interrupt Handler 구조체. kernel_thread_id, device_driver_thread_id 등등: Interrupt manager는 실제 처리는 안하고 인터럽트 종류와 처리할 프로세스간의 매핑 정보만 저장ex) 인터럽트 5번은 인터럽트 스레드 50번에서 처리해(-> Interrupt manager는 각 interrupt의 semantics를 알 지 못함, policy를 알지 않는다는 뜻)

마이크로커널 운영체제의 내부구조

• 서버프로그램 부분 (1/2)

Pager: page fault exception을 처리

- user_thread()에서 page fault가 발생하면,ipc_send(pager, faddr) 시스템콜로 마이크로커널을 통해 pager_thread()에게 전달만 하게함

- pager_thread()에서 ip_receive(user, faddr)로 정보를 전달받음- pager_thread()에서 kernel에게 as_map(faddr)시스템 콜을 통해 커널이 페이지매핑 요청만 하게함- 다시 ipc_send(user, _)와 ipc_receive(pager, _)를 사용하여 마무리

사용자스레드 사용자스레드 사용자스레드

페이저 디바이스 드라이버 파일시스템 네트워크서버

… 사용자프로그램

… 서버프로그램(policy)

사용자모드

마이크로커널 운영체제의 내부구조

• 서버프로그램 부분 (2/2)

Device driver

- 인터럽이 발생하면 policy를 갖지않는 커널의 인터럽트 핸들러가 호출되어 인터럽트 처리는 하지 않고, irq 커널스레드를 통해서 처리해주는 thread와 맵핑. 실제 ipc 번호를 식별하여 인터럽트 처리 프로그램이 동작하게 됨

성능향상

• 마이크로커널 운영체제에서 IPC

위에서 보았을 때, 마이크로커널 운영체제에서는 모노리틱커널 운영체제보다 ipc가 훨씬 많이 사용하게 됨

- 모노리틱커널 운영체제 : function call

- 마이크로커널 운영체제 : IPC(IPC는 마이크로커널 운영체제에서 성능과 가장 많은 연관성을 가지고 있음)

1세대의 microkernel은 IPC 성능을 향상시키지 못해 성능이 떨어짐

2세대의 microkernel은 IPC성능을 향상시키기 위해 다양한 방법이 적용됨

현재의 microkernel은 모노리틱커널과 거의 유사한 성능을 낼 수 있음

• IPC 성능향상 기술 (1/2)

Message Direct Transfer

- thread A에서 thread B로 IPC를 전달할 때, 주소공간이 다르므로 중간에 커널주소공간을 거쳐서 message가 복사됨 (2 copies)

- 이를 IPC와 temporary mapping을 사용하여 1 copy로 전환(커널은 메시지 복사 전에 thread A의 주소공간 중 메시지가 있는 page를 thread B의 주소 공간에 임시매핑)

a. thread A의 message를 복사할 때,

thread A의 message가 있는 page를 Thread B의 특별한 부분에 잠시 임시로 맵핑.

b. 커널이 그 사이 message를 copy

c. 임시 매핑 해제

성능향상

• IPC 성능향상 기술 (2/2)

Short Message

: short message를 사용 (메시지 사이즈 줄임)- 발생하는 수많은 IPC 중 50%-80%가 8bytes 이하의 짧은 메시지임

- message를 메모리가 아닌 어느 위치에서도 접근이 가능한 register를 사용하여,zero message 기법으로 메시지 전달을 수행

Direct Process Switching

: thread A에서 thread B로 message전달 시, kernel의 스레드 스케줄러라는 또 다른 thread C가 수행되어 thread를 전환한 후 thread B가 수행됨

(thread A -> thread C(kernel의 스레드 스케줄러) -> thread B)

=> 메시지 send/receive에서 성능저하가 나타남

- thread A에서 메시지 복사 후 스케줄러를 수행하지 않고(스케줄러를 무시하기), thread A의 남은 "time slice" 동안 IPC가 thread B로 컨트롤을 넘겨 thread B를 수행 후 다시 thread B가 thread A에게 메시지를 전달

(thread A -> thread B -> thread A)

Last Page

• 마무리

최근 보안의 중요성으로 고신뢰성을 가지는 시스템구현이 어느 때보다 절실하며, 마이크로 운영체제는 최적화 되어있다.

모듈성을 특장점으로 꼽을 수 있으며, 이식성이 좋다.

many many core(core가 1000~2000개) 시대가 도래할 것이며, 이런 환경에서는 마이크로커널 운영체제가 급 부상할 가능성이 크다.

• To be Continue..

Distributed Microkernel

Broker Architecture Pattern

Reflection Architecture Pattern

Layers Architecture Pattern

Concurrency, parallelism, Actor Pattern

* 이 문서는 마이크로커널_운영체제_소개.pdf (2015.01, 상명대학교 신동하교수님)를 보고 작성하였습니다.

끝.

개인적으로 공부하는 목적으로 정리한 내용입니다. 잘못된 부분이나 추가적인 내용을 언제든지 공유해주시길 부탁드립니다.감사합니다.