운영체제 수업을 수강하며 정리한 내용을 작성하려고 합니다.
Monolithic kernel의 장단점
장점
- 어플리케이션과 모든 커널 서비스가 같은 주소 공간에 위치하기 때문에, 시스템 콜 및 커널 서비스 간의 데이터 전달 시 오버헤드가 적음(성능 우수)
단점
- 모든 커널 서비스들이 하나의 바이너리로 이루어져 있기 때문에 일부분의 수정이 전체에 영향을 미침
- 각 모듈이 유기적으로 연결되어 있기 때문에 커널 크기가 커질수록 유지 보수가 어려움
- 한 모듈의 버그가 시스템 전체에 영향을 끼침
Microkernel
- 커널 서비스를 기능에 따라 모듈화하여 각각 독립된 주소 공간에서 실행
- 이러한 모듈을 “서버”라 하며, 서버들은 독립된 프로세스로 구현
- 커널의 동작은 서버들간의 통신(message passing)으로 수행됨
- (마이크로) 커널 자체는 서버들 간의 통신 (IPC), 어플리케이션의 서비스 콜 전달과 같은 단순한 기능만을 제공

Microkernel 장단점
장점
- 각 커널 서비스가 따로 구현되어 있기 때문에 서로 간의 의존성이 낮음
- monolithic 커널 보다 독립적인 개발이 가능
- 커널의 개발 및 유지 보수가 상대적으로 용이
- 커널 서비스의 간단한 시작/종료 가능
- 불필요한 서비스의 서버는 종료
- 메모리 및 CPU utilization을 효과적으로 관리 및 확보 가능
- 이론적으로 micro 커널이 monolithic보다 안정적
- 각 서버별로 주소 공간이 별도로 존재 → 기능별 독립 실행 및 검증이 가능
- 기능별 검증이 중요한 분야에서 사용하기에 적합
- 임베디드 로봇 산업, 의료 컴퓨터 분야
단점
- Monolithic 커널보다 낮은 성능을 보임
- 독립된 서버들 간의 통신 및 context switching
- L4 마이크로커널은 하드웨어를 활용하여 성능 개선

Monolithic vs Microkernel

블록 I/O 처리 (시스템콜) 비교
- Monolithic : 시스템콜이 들어오면 단순히 함수를 호출하는 과정을 통해 I/O 처리
- Micro : 시스템콜이 들어오면 하나의 개별 서버들을 upcall하면서 커널이 프로세스를 호출
→ Monolithic kernel의 성능이 압도적
Hybrid structures
💡 대다수의 modern operating system은 정확히 특정 모델을 따르는 것이 아니라, Hybrid 구조를 사용
Linux
- 일반적으로 커널 전체가 하나의 주소 공간을 사용하는 monolithic kernel.
- 기능의 확장을 위한 동적 모듈 제공 (loadable kernel module)
Windows
- Monolithic 구조가 기본이지만, 특정 서브 시스템은 micro kernel 구조처럼 server 사
용 가능
Mac OS X
- 시초는 Mach Microkernel 기반으로, 현재 대부분 BSD UNIX(monolithic 커널)의 구성 요소 사용
- Loadable kernel module도 사용 가능
가상화 (virtualization)
💡 Host OS(물리 컴퓨터의 OS) ↔ Guest OS(가상 인스턴스 OS, image라고도 함)
- 하드웨어와 OS 1:1 관계 → 가상화 → 1:多 관계를 가능하게 하기 위함(하드웨어 하나에 OS 여러 개 사용)
- 다수 Guest OS들 존재, Guest OS는 Hypervisor를 거쳐 하드웨어 사용
- Hypervisor는 1960년대부터 존재하였으나 성능 저하로 활용되지 못함
- Xen의 등장(2003)으로 실질적으로 이용이 가능해짐
- 클라우드의 enabling technology

- virtualbox가 Hypervisor의 기능을 함
- native 가상화(Type 1 hypervisor) vs hosted 가상화(Type 2 hypervisor)