1. OS설계
이전 시간에는 기존의 운영체제에 어떠한 문제점이 있었고, 그 문제점을 해결하기 위해서 운영체제의 구조가 어떻게 발전해왔는지 알아봤다. 이번 시간에는 그 운영체제의 구조가 어떠한 원칙을 바탕으로 구현되는지 알아보자.
운영체제 설계는 두가지 관점에서 볼 수 있다. Policy-(무엇)이 되게할 것인지? / Mechanism-무엇을 (어떻게) 할 것인지이렇게 2가지 관점으로 분리하면서 운영체제 설계를 모듈화할 수 있다. 그렇다면 이제부터 OS 설계 방식에 대해서 알아보자.
2. Layering
레이어링은 운영체제의 구조를 가상의 레이어로 나눔으로써 운영체제 설계의 복잡도를 낮추는 방식이다. 각 레이어는 잘 정의된 함수들로 이루어 졌는데, 하나의 레이어는 인접한 레이어와만 통신하도록 제한함으로써 설계의 복잡도를 낮추었다. 하지만 레이어를 건너뛸 수 없다는 특징 때문에 Overhead가 증가할 수 밖에 없다. 하지만 각 레이어가 다른 레이어에 대해 독립적이기 때문에 수정이 쉽고, 안전하다는 장점이 있다.
다만 레이어의 특성을 무시한 불완전한 레이어는 오히려 시스템 성능에 악영향을 끼칠 수 있다.
3. Module
두번째 설계 방식으로는 모듈화가 있다. 각 기능에 대해서 모듈화 시키고, 이를 구성하여 OS를 설계하는 방식이다. 각 모듈은 내부적으로 Layered되어 있다.
4. 실행 모드
OS설계에는 실행 모드도 포함된다. User mode와 Kernel mode의 명확한 분리로 System protection을 제공할 수 있다. 각 모드별로 접근할 수 있는 메모리와 실행 가능한 명령어가 제한된다. 이는 하드웨어의 지원을 통해 구현되는데, 각 mode별로 권한(Privilege)가 설정되어 구분된다. 대표적인 모드 두개를 살펴보자.
-1. Kernel mode
모든 권한을 가진 실행 모드로, 운영체제가 실행되는 모드이다. Privilege 명령어 실행 및 레지스터에 접근 가능한 특징을 갖고 있다.
-2. User mode
어플리케이션이 실행되는 모드로, Privilege 명령어의 실행이 불가능 하기 때문에 시스템 콜을 통해 Kernel에서 제공하는 Protected service를 실행한다. 이러한 것을 Execution mode switch라고 한다. 이때 User mode는 Kernel의 메모리에 접근이 불가능하기 때문에 Register를 사용하여 요청해야 한다. Kernel이 제공하는 Protected service에는 다양한 것이 있는데, 보통 파일이나 디바이스와 같이 해당 프로세스 영역 외의 요소를 접근하는 기능들이 많다.
다음은 지금까지 배운 커널의 일반적인 구조이다.
OS가 다음과 같이 실행 영역에 따라 실행 모드를 구분을 한다는 것을 지금까지 배웠다. 그렇다면 시스템에 직접적으로 접근하는 커널은 어떻게 디자인 될까?
5. Kernel design
커널이 로드되는 위치와 방식에 따라 나뉘게 된다.
-1. Monolithic kernel
이는 커널의 모든 서비스가 PM과 VM(보안상의 이슈로 조금씩 다를 수 있다고 한다)상의 같은 주소에 위치하는 방식으로 하나의 큰 커널 바이너리가 고정된 곳에 박히는 방식이다. 각 어플리케이션은 각자 독립된 메모리 상에 Kernel영역이 존재하겠지만, 이는 PM에 존재하는 실제 커널 영역을 동일하게 매핑한다. 어쨋든 어플리케이션과 모든 Kernel 서비스가 같은 주소 공간에 위치하기 때문에, 시스템 콜 및 Kernel 서비스 간의 데이터 전달 시 Overhead가 적다는 장점이 있다. 하지만 모든 서비스가 하나의 바이너리로 이루어졌기 때문에 일부분의 수정이 전체에 영향을 미치고, 각 모듈이 유기적으로 연결되어 있기 때문에 유지보수가 어렵다는 단점이 있다.
-2. Micro kernel
커널 서비스를 기능에 따라 모듈화 하여 각각 독립된 주소 공간에서 실행하는 방식으로 나눈 모듈(서버)가 독립된 프로세스로 구현되는 방식이다. 이렇게 독립된 서버간에 통신(IPC)를 이용하는 방식으로 커널 서비스를 제공한다.
각각 독립된 모듈로 구현하기 때문에 상호간의 의존성이 낮고 안정적이라는 장점이 있지만 IPC 통신이 강제되고, 독립된 프로세스로의 구현으로 인한 Context switching으로 인해 성능이 낮다는 단점이 있다.
-3. Hypervisor
가상화 된 컴퓨터 H/W자원을 제공하기 위한 관리 계층으로 Virtual machine이 이에 해당된다. 이 커널은 각 Guest OS간의 자원 분배 등 최소한의 역할만 한다. 하나의 물리 컴퓨터에서 다양한 Guest OS를 운용 가능하다는 장점이 있지만 느리다는 단점이 있다.
다음은 지금까지 알아본 커널 설계방식에 따른 청사진이다.
'학교 공부 > OS' 카테고리의 다른 글
운영 체제 (Operating System) - Kernel System Call 이해와 구현 (0) | 2021.11.28 |
---|---|
운영 체제 (Operating System) - Computer Architecture (0) | 2021.11.28 |
운영 체제 (Operating System) - Process (0) | 2021.11.28 |
운영 체제 (Operating System) - 운영체제 구조 (0) | 2021.11.27 |
운영 체제 (Operating System) - 개요 (0) | 2021.11.27 |