1장에서 논의했던 OS의 구성요소들이 어떤 방법으로 서로 연결되어 있고 하나의 커널로 결합되는지 살펴보자.
1. 모놀리식 구조 (Monolithic Structure)
커널의 모든 기능을 단일 주소 공간에서 실행
하는 파일에 넣는 구조다. 이 방법은 OS를 설계하는 일반적인 기술이다.
이러한 구조를 갖는 대표적인 운영체제가 Unix이다. Unix는 커널
과 시스템 프로그램
두 부분으로 구성된다.
Unix가 발전해오면서 커널
은 여러 인터페이스와 장치 드라이버로 나눌 수 있고 각각이 추가되고 확장되었다.
- 전통적인 Unix 운영체제의 시스템 구조
위와 같이 계층
으로 구성되어 있다. 시스템 콜 인터페이스 아래
~ 물리적 HW 위
까지가 커널 영역이다.
커널은 시스템 콜을 통해 파일 시스템, CPU 스케쥴링, 메모리 관리 등 다양한 OS 기능을 제공한다. 즉, 하나의 주소 공간으로 결합하기에는 굉장히 많은 기능들을 갖고 있다.
Linux는 UNIX에 기반을 두고 구성되었다. 응용 프로그램은 커널에 대한 시스템 콜 인터페이스와 통신할 때 glibc 표준 C 라이브러리
를 사용한다. Linux 커널은 단일 주소 공간
에서 커널 모드
로 전부 실행되기 때문에 모놀리식
이지만 런타임 중 커널을 수정할 수 있는 모듈식 설계도 갖고 있다.
- Linux 운영체제의 구조
모놀리식 커널
은 굉장히 단순하지만 구조상 구현 및 확장이 어렵다. 하지만 성능 상의 이점이 확실하다.시스템 콜 인터페이스
에서는 overhead가 거의없고 커널 내부
에서는 통신 속도가 빠르다. 그렇기 때문에 여전히 Linux, Unix, Windows 에서는 이 구조를 사용하고 있다.
2. 마이크로 커널 (Microkernel)
초기 UNIX는 모놀리식 구조를 가진다는 걸 알았다. 때문에 커널이 커지면서 유지 관리하는 것이 굉장히 힘들어졌다.
때문에 마이크로 커널
이라는 접근 방식을 고안한다. 이를 이용해서 커널을 모듈화
하는 방식이 마이크로 커널 방식이다.
이 방법은 중요하지 않은 구성요소들을 커널에서 빼고 각각의 구성요소들
을 별도의 주소 공간
에 존재하는 사용자 수준 프로그램으로 구현해서 OS를 구성하는 방식이다. 일반적으로 마이크로 커널은 통신
관련된 기능 외에 최소한의 프로세스 관리
와 메모리 관리
기능을 제공한다.
- 대표적인 마이크로커널의 구조
마이크로 커널의 주된 기능은 client 프로그램
과 사용자 공간에서 수행되는 다양한 서비스
간에 통신을 제공
하는 것이다.
통신은 2-3의 3.5에서 언급했던 메시지 전달에 의해 제공된다.
예를 들어 클라이언트 프로그램
이 파일에 접근
하고 싶어한다면 클라이언트 프로그램
은 서비스와 직접 상호작용하지 않고 마이크로커널과 메시지를 교환
함으로써 간접적으로 상호작용한다.
장점
1) OS의 확장이 쉽다.- 새로운 서비스가 필요하다면 사용자 공간에 서비스를 추가해주면 되서 커널을 변경할 필요는 없다.
2) 커널을 변경할 때 마이크로 커널 자체가 워낙 작기 때문에 변경해야 할 대상이 비교적 적다.
3) 결과적으로 OS가 하나의 HW에서 다른 HW로 이식이 쉽다.
4) 대부분의 서비스가 사용자 프로세스에서 수행되기 때문에 보안성과 신뢰성을 높일 수 있다.
- 새로운 서비스가 필요하다면 사용자 공간에 서비스를 추가해주면 되서 커널을 변경할 필요는 없다.
단점 : 서비스를 서로 상호작용하는 과정에서 발생하는 overhead 때문에 결과적으로 성능이 나쁘다.
두 개의 사용자 수준 서비스가 통신해야 할 때 각각의 서비스가 별도의 주소공간에 존재하기 때문에통신
이라는 과정을 거쳐서 메시지를 주고받아야 한다. 때문에 단일 주소공간에서 실행되는모놀리식 구조
보다 성능이 더 나쁠 수 밖에 없다.
'OS Concepts 10th' 카테고리의 다른 글
[OS] 3-1. 프로세스 개념 (0) | 2023.09.04 |
---|---|
[OS] Chapter 3. Process (0) | 2023.09.03 |
[OS] 2-5. 링커와 로더(Linker and Loader) (0) | 2023.09.02 |
[OS] 2-3. 시스템 콜 (0) | 2023.08.21 |
[OS] 2-2. User and OS Interface (0) | 2023.08.16 |