SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
Micro Kernel Operating System
김지은
yeswldms@gmail.com
마이크로커널 운영체제란?
• 운영체제의 수행모드
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, 상명대학교 신동하교수님)를 보고 작성하였습니다.
끝.
개인적으로 공부하는 목적으로 정리한 내용입니다. 잘못된 부분이나 추가적인 내용을 언제든지 공유해주시길 부탁드립니
다.
감사합니다. 

Mais conteúdo relacionado

Mais procurados

[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기Ji-Woong Choi
 
Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Tae Young Lee
 
Openstack live migration
Openstack live migrationOpenstack live migration
Openstack live migrationymtech
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
Openstack Instance Resize
Openstack Instance ResizeOpenstack Instance Resize
Openstack Instance Resizeymtech
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1Ji-Woong Choi
 
도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집Daegwon Kim
 
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기KTH, 케이티하이텔
 
Introduce Docker
Introduce DockerIntroduce Docker
Introduce DockerYongbok Kim
 
[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용NAVER D2
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Ji-Woong Choi
 
[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinux[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinuxOpen Source Consulting
 
Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리Keon Ahn
 
[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7Ji-Woong Choi
 
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOSConfd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS충섭 김
 
도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편Sam Kim
 
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성NAVER D2
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick GuideJi-Woong Choi
 
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
[125]웹 성능 최적화에 필요한 브라우저의 모든 것[125]웹 성능 최적화에 필요한 브라우저의 모든 것
[125]웹 성능 최적화에 필요한 브라우저의 모든 것NAVER D2
 

Mais procurados (20)

[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기
 
Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용
 
Openstack live migration
Openstack live migrationOpenstack live migration
Openstack live migration
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
Openstack Instance Resize
Openstack Instance ResizeOpenstack Instance Resize
Openstack Instance Resize
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집
 
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
 
Introduce Docker
Introduce DockerIntroduce Docker
Introduce Docker
 
[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드
 
주키퍼
주키퍼주키퍼
주키퍼
 
[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinux[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinux
 
Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리
 
[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7
 
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOSConfd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
 
도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편
 
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
 
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
[125]웹 성능 최적화에 필요한 브라우저의 모든 것[125]웹 성능 최적화에 필요한 브라우저의 모든 것
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
 

Destaque

KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603
KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603 KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603
KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603 jieun kim
 
Ch22 운영체제
Ch22 운영체제Ch22 운영체제
Ch22 운영체제Kyungryul KIM
 
루트(root)에 대해
루트(root)에 대해루트(root)에 대해
루트(root)에 대해licubeclub
 
운영 체제 Sig
운영 체제 Sig운영 체제 Sig
운영 체제 SigYoungGun Na
 
리눅스 드라이버 실습 #1
리눅스 드라이버 실습 #1리눅스 드라이버 실습 #1
리눅스 드라이버 실습 #1Sangho Park
 
운영체제 Chapter1
운영체제 Chapter1운영체제 Chapter1
운영체제 Chapter1YoungGun Na
 
[Imr]week03
[Imr]week03[Imr]week03
[Imr]week03JY LEE
 
프로세스
프로세스프로세스
프로세스xxbdxx
 
시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203doo rip choi
 
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은jieun kim
 
OpenStack Tokyo Talk Application Data Protection Service
OpenStack Tokyo Talk Application Data Protection ServiceOpenStack Tokyo Talk Application Data Protection Service
OpenStack Tokyo Talk Application Data Protection ServiceEran Gampel
 
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은jieun kim
 
Dragon flow neutron lightning talk
Dragon flow neutron lightning talkDragon flow neutron lightning talk
Dragon flow neutron lightning talkEran Gampel
 
OpenStack Dragonflow shenzhen and Hangzhou meetups
OpenStack Dragonflow shenzhen and Hangzhou  meetupsOpenStack Dragonflow shenzhen and Hangzhou  meetups
OpenStack Dragonflow shenzhen and Hangzhou meetupsEran Gampel
 
Dragonflow 01 2016 TLV meetup
Dragonflow 01 2016 TLV meetup  Dragonflow 01 2016 TLV meetup
Dragonflow 01 2016 TLV meetup Eran Gampel
 
150416 OpenStack Networking with Neutron Jieun, Kim
150416 OpenStack Networking with Neutron Jieun, Kim150416 OpenStack Networking with Neutron Jieun, Kim
150416 OpenStack Networking with Neutron Jieun, Kimjieun kim
 
Build the OpenStack Cloud with Neutron Networing, IceHouse
Build the OpenStack Cloud with Neutron Networing, IceHouseBuild the OpenStack Cloud with Neutron Networing, IceHouse
Build the OpenStack Cloud with Neutron Networing, IceHousejieun kim
 
Dragonflow Austin Summit Talk
Dragonflow Austin Summit Talk Dragonflow Austin Summit Talk
Dragonflow Austin Summit Talk Eran Gampel
 
집단지성프로그래밍 05. 최적화(optimization) 김지은_20150522
집단지성프로그래밍 05. 최적화(optimization) 김지은_20150522집단지성프로그래밍 05. 최적화(optimization) 김지은_20150522
집단지성프로그래밍 05. 최적화(optimization) 김지은_20150522jieun kim
 

Destaque (20)

KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603
KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603 KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603
KrDAG 오픈소스를 활용하여 웹블로그 만들기_김지은_201603
 
Ch7
Ch7Ch7
Ch7
 
Ch22 운영체제
Ch22 운영체제Ch22 운영체제
Ch22 운영체제
 
루트(root)에 대해
루트(root)에 대해루트(root)에 대해
루트(root)에 대해
 
운영 체제 Sig
운영 체제 Sig운영 체제 Sig
운영 체제 Sig
 
리눅스 드라이버 실습 #1
리눅스 드라이버 실습 #1리눅스 드라이버 실습 #1
리눅스 드라이버 실습 #1
 
운영체제 Chapter1
운영체제 Chapter1운영체제 Chapter1
운영체제 Chapter1
 
[Imr]week03
[Imr]week03[Imr]week03
[Imr]week03
 
프로세스
프로세스프로세스
프로세스
 
시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203
 
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
 
OpenStack Tokyo Talk Application Data Protection Service
OpenStack Tokyo Talk Application Data Protection ServiceOpenStack Tokyo Talk Application Data Protection Service
OpenStack Tokyo Talk Application Data Protection Service
 
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
20150525 open flow1.3_ryu_sdn_link aggregation 1_김지은
 
Dragon flow neutron lightning talk
Dragon flow neutron lightning talkDragon flow neutron lightning talk
Dragon flow neutron lightning talk
 
OpenStack Dragonflow shenzhen and Hangzhou meetups
OpenStack Dragonflow shenzhen and Hangzhou  meetupsOpenStack Dragonflow shenzhen and Hangzhou  meetups
OpenStack Dragonflow shenzhen and Hangzhou meetups
 
Dragonflow 01 2016 TLV meetup
Dragonflow 01 2016 TLV meetup  Dragonflow 01 2016 TLV meetup
Dragonflow 01 2016 TLV meetup
 
150416 OpenStack Networking with Neutron Jieun, Kim
150416 OpenStack Networking with Neutron Jieun, Kim150416 OpenStack Networking with Neutron Jieun, Kim
150416 OpenStack Networking with Neutron Jieun, Kim
 
Build the OpenStack Cloud with Neutron Networing, IceHouse
Build the OpenStack Cloud with Neutron Networing, IceHouseBuild the OpenStack Cloud with Neutron Networing, IceHouse
Build the OpenStack Cloud with Neutron Networing, IceHouse
 
Dragonflow Austin Summit Talk
Dragonflow Austin Summit Talk Dragonflow Austin Summit Talk
Dragonflow Austin Summit Talk
 
집단지성프로그래밍 05. 최적화(optimization) 김지은_20150522
집단지성프로그래밍 05. 최적화(optimization) 김지은_20150522집단지성프로그래밍 05. 최적화(optimization) 김지은_20150522
집단지성프로그래밍 05. 최적화(optimization) 김지은_20150522
 

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

노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)Ubuntu Korea Community
 
운영체제 Sig2
운영체제 Sig2운영체제 Sig2
운영체제 Sig2YoungGun Na
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10hungrok
 
Operating system #1
Operating system #1Operating system #1
Operating system #1Taewoo Kim
 
윈도우 커널 익스플로잇
윈도우 커널 익스플로잇윈도우 커널 익스플로잇
윈도우 커널 익스플로잇Seungyong Lee
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)Ubuntu Korea Community
 
System Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsSystem Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsJuseok Kim
 
caanoo Device driver
caanoo Device drivercaanoo Device driver
caanoo Device driverjumiss
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드KwangSeob Jeong
 
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?NAVER Engineering
 
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명Peter YoungSik Yun
 
2. windows system과 file format
2. windows system과 file format2. windows system과 file format
2. windows system과 file formatYoungjun Chang
 
파이썬 병렬프로그래밍
파이썬 병렬프로그래밍파이썬 병렬프로그래밍
파이썬 병렬프로그래밍Yong Joon Moon
 
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스Seunghwa Song
 
Going asynchronous with netty - SOSCON 2015
Going asynchronous with netty - SOSCON 2015Going asynchronous with netty - SOSCON 2015
Going asynchronous with netty - SOSCON 2015Kris Jeong
 
3. windows system과 rootkit
3. windows system과 rootkit3. windows system과 rootkit
3. windows system과 rootkitYoungjun Chang
 
Spark 2 프로그래밍 3 장 클러스터 환경
Spark 2 프로그래밍   3 장 클러스터 환경Spark 2 프로그래밍   3 장 클러스터 환경
Spark 2 프로그래밍 3 장 클러스터 환경hojung kang
 
Multithread pattern 소개
Multithread pattern 소개Multithread pattern 소개
Multithread pattern 소개Sunghyouk Bae
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...Cloud-Barista Community
 
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arcNAVER D2
 

Semelhante a 150625 마이크로커널 운영체제 김지은 (20)

노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
 
운영체제 Sig2
운영체제 Sig2운영체제 Sig2
운영체제 Sig2
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10
 
Operating system #1
Operating system #1Operating system #1
Operating system #1
 
윈도우 커널 익스플로잇
윈도우 커널 익스플로잇윈도우 커널 익스플로잇
윈도우 커널 익스플로잇
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
 
System Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsSystem Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOps
 
caanoo Device driver
caanoo Device drivercaanoo Device driver
caanoo Device driver
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드
 
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
[21]변화의 시대 : 안드로이드 앱 어떻게 개발할 것인가?
 
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명
 
2. windows system과 file format
2. windows system과 file format2. windows system과 file format
2. windows system과 file format
 
파이썬 병렬프로그래밍
파이썬 병렬프로그래밍파이썬 병렬프로그래밍
파이썬 병렬프로그래밍
 
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
 
Going asynchronous with netty - SOSCON 2015
Going asynchronous with netty - SOSCON 2015Going asynchronous with netty - SOSCON 2015
Going asynchronous with netty - SOSCON 2015
 
3. windows system과 rootkit
3. windows system과 rootkit3. windows system과 rootkit
3. windows system과 rootkit
 
Spark 2 프로그래밍 3 장 클러스터 환경
Spark 2 프로그래밍   3 장 클러스터 환경Spark 2 프로그래밍   3 장 클러스터 환경
Spark 2 프로그래밍 3 장 클러스터 환경
 
Multithread pattern 소개
Multithread pattern 소개Multithread pattern 소개
Multithread pattern 소개
 
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
Cloud-Barista 제3차 오픈 컨퍼런스 : CB-Dragonfly - 멀티 클라우드 통합 모니터링 프레임워크(Multi-Cloud ...
 
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
 

Mais de jieun kim

OpenStack Korea 2015 상반기스터디(devops) 스크립트로 오픈스택 설치하기 20150728
OpenStack Korea 2015 상반기스터디(devops) 스크립트로 오픈스택 설치하기 20150728OpenStack Korea 2015 상반기스터디(devops) 스크립트로 오픈스택 설치하기 20150728
OpenStack Korea 2015 상반기스터디(devops) 스크립트로 오픈스택 설치하기 20150728jieun kim
 
150326 openstack, glance 김지은
150326 openstack, glance 김지은150326 openstack, glance 김지은
150326 openstack, glance 김지은jieun kim
 
집단지성프로그래밍 05. 최적화(kayak.ipynb) 김지은_20150522
집단지성프로그래밍 05. 최적화(kayak.ipynb) 김지은_20150522집단지성프로그래밍 05. 최적화(kayak.ipynb) 김지은_20150522
집단지성프로그래밍 05. 최적화(kayak.ipynb) 김지은_20150522jieun kim
 
집단지성프로그래밍 05. 최적화(optimization.ipynb) 김지은_20150522
집단지성프로그래밍 05. 최적화(optimization.ipynb) 김지은_20150522집단지성프로그래밍 05. 최적화(optimization.ipynb) 김지은_20150522
집단지성프로그래밍 05. 최적화(optimization.ipynb) 김지은_20150522jieun kim
 
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은jieun kim
 
Ryu with OpenFlow 1.3, REST API
Ryu with OpenFlow 1.3, REST APIRyu with OpenFlow 1.3, REST API
Ryu with OpenFlow 1.3, REST APIjieun kim
 
Ryu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic MonitorRyu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic Monitorjieun kim
 

Mais de jieun kim (7)

OpenStack Korea 2015 상반기스터디(devops) 스크립트로 오픈스택 설치하기 20150728
OpenStack Korea 2015 상반기스터디(devops) 스크립트로 오픈스택 설치하기 20150728OpenStack Korea 2015 상반기스터디(devops) 스크립트로 오픈스택 설치하기 20150728
OpenStack Korea 2015 상반기스터디(devops) 스크립트로 오픈스택 설치하기 20150728
 
150326 openstack, glance 김지은
150326 openstack, glance 김지은150326 openstack, glance 김지은
150326 openstack, glance 김지은
 
집단지성프로그래밍 05. 최적화(kayak.ipynb) 김지은_20150522
집단지성프로그래밍 05. 최적화(kayak.ipynb) 김지은_20150522집단지성프로그래밍 05. 최적화(kayak.ipynb) 김지은_20150522
집단지성프로그래밍 05. 최적화(kayak.ipynb) 김지은_20150522
 
집단지성프로그래밍 05. 최적화(optimization.ipynb) 김지은_20150522
집단지성프로그래밍 05. 최적화(optimization.ipynb) 김지은_20150522집단지성프로그래밍 05. 최적화(optimization.ipynb) 김지은_20150522
집단지성프로그래밍 05. 최적화(optimization.ipynb) 김지은_20150522
 
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
 
Ryu with OpenFlow 1.3, REST API
Ryu with OpenFlow 1.3, REST APIRyu with OpenFlow 1.3, REST API
Ryu with OpenFlow 1.3, REST API
 
Ryu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic MonitorRyu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic Monitor
 

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

  • 1. Micro Kernel Operating System 김지은 yeswldms@gmail.com
  • 2. 마이크로커널 운영체제란? • 운영체제의 수행모드 kernel mode <-> user mode - kernel mode : 모든 시스템의 자원을 직접 관리할 수 있는 모드 - user mode : 프로세스가 실행하는 사용자 모드  멀티 프로세스를 지원하기 위한 개념 • 작업방식에 따른 운영체제의 종류 Monolithic Kernel Operating System Micro Kernel Operating System Hybrid Kernel Operating System 모드 가상 어드레스 공간, 프로세스 kernel mode 커널 공간, 커널 프로세스 user mode 사용자 공간, 사용자 프로세스
  • 3. 마이크로커널 운영체제란? • 작업방식에 따른 운영체제의 종류 Monolithic kernel Operating System Micro kernel Operating System - 모놀리틱 커널 운영체제 : OS의 모든 기능이 마이크로 프로세서의 kernel mode에서 수행되는 방식 - 마이크로 커널 운영체제 : 운영체제의 최소기능만 OS의 kernel mode에서 수행되고, 나머지 대부분의 기능이 user mode에서 수행되는 방식 wiki
  • 4. 마이크로커널 운영체제란? • 작업방식에 따른 운영체제의 종류 (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, …
  • 5. 마이크로커널 운영체제란? • 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) … 하드웨어 사용자모드 커널모드
  • 6. 마이크로커널 운영체제란? • Micro kernel OS의 역사 1세대 - CMU에서 Mach OS 개발 개념이 너무 좋아서 많은 사람들이 굉장하다고 하였으나, 성능이 좋지 않아 실망함 (마이크로 커널 운영체제에 대한 사람들의 인식은? 개념은 좋지만 성능은 별로) 2세대 - GMD의 Liedtke가 효율적인 IPC 구현 기술을 개발 1세대 마이크로 커널 운영체제보다 수십배가 빠른 마이크로 커널 운영체제를 만듬 한두가지가 아닌 굉장한 많은 복합적인 컴퓨터과학의 방법들을 적용하여 Optimization 시킴 => 성능향상 3세대 - 수학 logic과 프로그래밍언어의 semantics를 사용하여 formal verification 기술을 개발 단순 테스트가아닌 "증명"을 수행하여 신뢰할 수 있는 마이크로 커널을 만들게 됨 => 고 신뢰성을 보장. security, availability, reliability ...
  • 7. 마이크로커널 운영체제의 특징 • 기본특징 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과 같은 크리티컬한 프로그램도 쉽게 업데이트할 수 있음
  • 8. 마이크로커널 운영체제의 내부구조 • 마이크로커널 부분 (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만 있는 경우는 너무 불편하므로 섞음
  • 9. 마이크로커널 운영체제의 내부구조 • 마이크로커널 부분 (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를 알지 않는다는 뜻)
  • 10. 마이크로커널 운영체제의 내부구조 • 서버프로그램 부분 (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) 사용자모드
  • 11. 마이크로커널 운영체제의 내부구조 • 서버프로그램 부분 (2/2) Device driver - 인터럽이 발생하면 policy를 갖지않는 커널의 인터럽트 핸들러가 호출되어 인터럽트 처리는 하지 않고, irq 커널스레드를 통해서 처리해주는 thread와 맵핑. 실제 ipc 번호를 식별하여 인터럽트 처리 프로그램이 동작하게 됨
  • 12. 성능향상 • 마이크로커널 운영체제에서 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. 임시 매핑 해제
  • 13. 성능향상 • 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)
  • 14. 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, 상명대학교 신동하교수님)를 보고 작성하였습니다.
  • 15. 끝. 개인적으로 공부하는 목적으로 정리한 내용입니다. 잘못된 부분이나 추가적인 내용을 언제든지 공유해주시길 부탁드립니 다. 감사합니다. 