OS Concepts 10th

[OS] 2-8. OS 구조

patrick-star 2023. 9. 2. 16:08
728x90

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