What will be done
Supposed to be higher level, and use mechanism
How to do something
E.g., Concrete Algorithms, Data Structures



MS-DOS에서는 Layering 원칙을 무시한 Interface 호출로 인한 취약점이 존재했다.

Linux의 모듈러 구조이다.
System Protection을 위해서 필요
실행 Mode의 권한에 따라, 접근할 수 있는 메모리, 실행 가능한 명령어가 제한됨
각각의 Mode 별로 권한(Privilege)이 설정 됨
Hardware 지원이 필요

모든 권한을 가진 실행 Mode
OS가 실행되는 Mode
Previlege 명령어 실행 및 레지스터 접근 가능
Kernel Mode에 비해 낮은 권한의 실행 Mode
어플리케이션이 실행되는 Mode
Privilege 명령어 실행 불가능



Kernel의 모든 Service가 같은 주소 공간에 위치
애플리케이션은 자신의 주소 공간에 커널 코드 영역을 매핑하여 커널 서비스를 이용
H/W 계층에 관한 단일한 Abstraction을 정의
이를 사용하기 위해, 라이브러리나 애플리케이션에게 단일한(Monolithic) 인터페이스 제공

Kernel service를 기능에 따라 모듈화 하여 각각 독립된 주소 공간에서 실행
이러한 모듈을 서버라고 하며, 서버들은 독립된 프로세스로 구현
Micro Kernel은 서버들 간의 통신(IPC)
애플리케이션의 서비스 콜 전달과 같은 단순한 기능만을 제공
각 Kernel service가 따로 구현되어 있기 때문에 서로 간의 의존성이 낮음
Monolithic Kernel보다 독립적인 개발이 가능
Kernel의 개발 및 유지 보수가 상대적으로 용이
Kernel service 서버의 간단한 시작/종료 가능
불필요한 서비스의 서버는 종료 (Resource 확보)
이론적으로 Micro Kernel이 Monolithic 보다 안정적
서버 코드가 Protected Memory에서 실행되므로, 검증된 S/W 분야에 적합

가상화된 컴퓨터 H/W 자원을 제공하기 위한 관리 계층
Guest OS와 H/W 사이에 위치함
Guest OS-Hypervisor가 제공하는 가상화된 H/W 자원을 이용하는 운영체제
각 Guest OS들은 각각 서로 다른 가상 머신(VMs)에서 수행되며, 서로의 존재를 알지 못함
H/W에 대한 접근은 Hypervisor에게 할당 받은 자원에 대해서만 수행
Hypervisor는 각 Guest OS간의 CPU, 메모리, 등 시스템 자원을 분배하는 등 최소한의 역할을 수행
하나의 물리 컴퓨터에서 여러 종류의 Guest OS의 운용이 가능
한 서버에서 다양한 서비스를 동시에 제공
실제의 컴퓨터가 제공하는 것과 다른 형태의 명령어 집합 구조(Instruction Set Architecture)를 제공
