[ 운영체제 ] 3. OS Structure ( 디자인,Implementation )
OS Design and Implemetation
● User Goal = 사용하기 쉬워야 한다.
● System Goal = Design과 Implement, Maintain이 간편해야 한다.
Design할 때 고려해야하는 것
● Policy = 어떤 게 되어야 하는가? = What
● Mechanism = 어떻게 구현할 것인가? = How
OS Structure
● Monolithic
특징 1) 단조로운 구조 , Hardware의 기능이 제한적임
특징 2) System program / Kernel 영역이 나누어져 있다.

● Layered Approach
: 가장 중심부 ( layer 0 ) = Hardware
가장 높은 곳 ( layer N ) = User Interface
특징 1) 만들기 단순하다. + 현재 층에서는 아래 층에 대한 Detail을 알 필요가 없다.

특징 2) 각 층에서 자기보다 아래 층에(하드웨어 쪽에 가까운) 기능들을 사용한다.

● Microkernel
: 중요하지 않은 component들은 Kernel에서 실행되지 않는다.
대신 System/user 레벨에서 실행된다.
Kernel - 프로세스/메모리 관리를 한다. + System call을 message 전달로 구현함.
장점
1) 확장하기 간편하다.
2) 다른 architecture에 OS를 연결하기 좋다.
3) reliable ( Kernel에서 실행되는 게 적기 때문에 )
4) 안전함.
단점
퍼포먼스 Overhead
● Modules
주로 Loadable Kernel Modules( LKM ) 로 구현된다.
특징 1) 객체지향 사용
특징 2) 중요한 Component는 분리되어 있음
특징 3) 필요한건 Kernel 안에서만 Loadable하다.

장점
1) 동적으로 구현 가능 ( 객체지향이니까 )
2) Layer랑 비슷한 게 좀 있는데 더 유연함
3) MicroKernel이랑 차이는 message passing이 필요없음.
System Boot
Booting
: Kernel을 로딩하면서 컴퓨터를 시작하는 것
전원이 들어오면, 지정된 메모리 위치서 Execution을 시작한다.
따라서, OS는 Hardware가 작동할 수 있어야 하므로, Hardware도 사용하게 만들어져야한다.
(출처)
한동대학교 고윤민교수님 - OS