목차
개요
운영체제는 크고 복잡한 하나의 체계보다는 여러가지로 분할되어 일을 분배하여 처리하는 방식이 더 적절하게 동작되고 쉽게 변경하고 적용할 수 있는 장점을 가지게 된다.
따라서 이번 포스팅에서는 운영체제의 기술구조의 유형과 그에 맞는 차이점 등을 알아볼 것이다.
대부분의 운영체제는 기술의 발전에 따라서 단순한 계산과정만 처리하던 컴퓨터에서 기능이 점점 많아지면서 점점 복잡한 작업들을 수행해야함에 따라 세분화되고 체계화 되는 것을 알 수 있다.
모놀리식 구조 Monolithic Structure
가장 간단한 구조는 구조가 존재하지 않는 구조이다. 즉 커널의 모든 기능을 단일 주소 공간에서 실행되는 단일 정적 이진 파일에 넣는 것이다.
이러한 구조는 UNIX에서부터 시작되었는데 전통적인 UNIX 운영체제는 아래의 그림과 같이 형성 되어있다.
커널을 통해 파일시스템, CPU 스케쥴링, 메모리 관리, 다른 운영체제 기능까지 전부 제공을 한다.
이러한 단순한 구조는 단순한 구조로 인한 큰 장점이 있게 되는데
장점
- 오버헤드가 거의 없고 커널 내의 통신 속도가 매우 빠르다.
- 하나의 구조이기 때문에 배포가 쉬워진다.
단점
- 구현 및 확장하기가 어렵다.
- 유연성이 부족하여 모놀리스 방식으로의 개발 기술에 의해서 제약이 있을수 있다.
- 하나를 수정하면 배포를 할 시에 전부를 다 배포해야된다.
또한 시스템의 한 부분을 변경하게 되면 다른 부분에 영향을 줄 수 있을 확률이 크기 때문에 밀접하게 결합된 시스템이라고도 불린다. 따라서 이러한 모놀리식 구조를 모듈화할 수 있는데 계층적 접근, 마이크로커널 등 모듈화를 통한 운영체제 형태가 존재한다. 앞으로 더 알아보자
계층적 접근 Layered Approach
운영체제를 여러가지 층으로 나누어서 오직 하위의 층에 대한 연산을 할 수 있게 하여 각 층 별로 하위 층에 의하여 제공된 연산만 수행하고 위에 층에 있는 정보들은 접근할 수 없게하여 자원을 아낄 수 있게 한다.
장점
- 구현과 디버깅이 간단하다.
단점
- 만약 접근해야되는 계층이 깊을 경우 여러 계층을 통과해야되기 때문에 오버헤드가 발생하게된다.
- 계층의 정의나 접근 방식 등을 적절하게 정의 해야 한다.
현재, 컴퓨터 네트워크나 웹 응용 프로그램에서 계층적 접근 방식의 시스템이 성공적으로 사용되었다.
OSI프로토콜 스택,TCP/IP 포스팅 예정
마이크로 커널 Microkernels
UNIX의 발전과 확장에 따라서 커널이 너무 커지고 관리하기가 어려워졌다. 따라서 주요한 기능인 스케줄링, 메모리 관리 (MMU) 디바이스 접근 등 만을 커널에 포함시키고 디바이스 드라이버나 파일 시스템 등이 유저 모드에 들어간다.
직접 상호작용 하지 않고 메세지를 통하여 간접적으로 상호작용을 한다.
장점
- 커널의 크기가 줄어들어서 안정성이 높다.
- 대부분의 새로운 서비스는 사용자의 공간에 추가되기 때문에 운영체제의 기능 확장에 좋다.
- 구조 때문에 보안성도 높다.
단점
- 모놀리식에 비하여 간접적으로 상호작용을 해야하는 행동이 추가 되었기 때문에 속도 측면에서는 떨어지게 된다.
- 오버헤드로 인해서 성능이 나빠진다
- 두개의 유저 모드의 프로그램이 통신을 해야하는 경우에 다른 주소 공간에 서비스를 마련해주어 메세지가 복사되어야하기 때문에 프로세스 전환 등 시간이 오래걸리고 문제가 발생 할 수 있다.(초기 Window NT의 문제점 / 포스팅 예정)
적재가능 커널 모듈 Loadable kernel modules, LKM
커널은 핵심 요소 및 기능을 가지고 있고 부팅이나 실행 도중 필요한 서비스를 모듈을 통하여 링크 할 수 있다. 이는 현대에서 일반적으로 운영체제가 설계된 방식이기도 한다.
커널은 핵심 서비스 및 기능 만을 가지고 있고 다른 모듈들의 적재 방법과 통신하는 법은 알고있다.
(마이크로커널과 유사) 다만 메시지 전달을 호출할 필요가 없기 때문에 마이크로 커널보다 효율적이라고 할 수 있다.
또한 다른 서비스 들은 커널이 실행되는 동안 동적으로 구현되는데 이 과정에서 커널의 각 부분이 정의되고 보호된 인터페이스를 갖는다.
(계층 구조와 유사) 다만 모듈에서 모듈로 호출이 가능하기 때문에 이 부분에 있어서는 계층구조 보다 유연하다고 할 수 있다.
iOS의 Darwin 의 구조 / 포스팅 예정
'CS > Operating System' 카테고리의 다른 글
운영체제 구조 :: 성능관찰(카운터, 추적) (0) | 2022.08.04 |
---|---|
운영체제 구조 :: 운영체제의 생성과 부팅 (0) | 2022.08.03 |
운영체제 구조 :: ABI란? 안정적인 ABI (0) | 2022.07.30 |
운영체제 구조 :: System call(시스템 콜)과 API/ABI (0) | 2022.07.29 |
운영체제 구조 :: 사용자와의 인터페이스 (0) | 2022.07.27 |