-
Monolithic 구조
모놀리식 구조는 가장 간단한 운영체제 구조다. 이 구조는 최소한의 공간(자원)을 사용하여 최대의 기능들을 제공하도록 작성되어 있어서 모듈들로 주의 깊게 분할되지 않았다. 즉 인터페이스와 기능 계층이 잘 분리되어 있지 않다. 예를 들어, 응용 프로그램은 기본 입출력 루틴을 통하여 디스플레이와 디스크 드라이브에 직접 쓰기가 가능하다. 이러한 권한은 오류(혹은 악의적인 프로그램)에 취약하며, 사용자 프로그램이 고장나면 시스템 전체가 고장나고 하드웨어적 기능도 제한받았다. 이러한 예로 MS-DOS가 있다.
계층적 구조
운영체제는 다양한 방식으로 모듈화가 될 수 있고, 그 중 한 방식이 계층적 구조다. 계층적 구조에서 최하위 층은 하드웨어이고 최상위 층은 사용자 인터페이스다. 옛날 UNIX가 계층적 구조였다.
-
장점 : 구현과 디버깅의 간담함이다. 각 계층은 하위 계층에서 제공하는 연산(기능)만을 통해 구현되고 이 연산들이 어떻게 구현되었는지 알 필요가 없다. 예를 들어 첫 번째 층은 하드웨어만을 사용하여 이 층의 기능을 구현하기 때문에 나머지 시스템에 아무런 신경을 쓰지 않고 디버깅을 할 수 있다. n번째 층에서 디버깅을 할 때 오류가 난다면 n-1 층까지는 잘 동작한다고 가정할 수가 있다.
-
단점1: 각 계층의 기능을 명확히 정의하기가 어렵다. 왜냐하면 아래 위 계층의 기능 순서가 명확하지 않을 수 있기 때문이다. 그래서 오직 하위 계층의 기능만 사용하기 때문에 주의 깊은 설계가 요구된다.
-
단점2 : 계층적 구조는 구현 방법이 단순하지만 효율성이 낮다. 왜냐하면 하나의 기능을 수행하기 위해서 무조건 계층을 타고 수행되어야 하기 때문이다. 프로그램이 시스템 호출을 해서 변수 값을 변경하거나 데이터를 참조하거나 메모리에 접근할 때마다 계층을 타면서 이동하기 때문에 오버헤드가 발생한다. 결과적으로 계층적 구조가 아닌 시스템보다 시스템 호출의 실행시간이 더 오래 걸리게 된다.
마이크로커널 구조
옛날 UNIX는 수년에 걸쳐 기능이 확장됨에 따라 커널이 모든 기능을 수행하게 되어 비대해지고 관리하기가 어려워졌다. 1980년대 중반에 Carnegie-Mellon 대학교의 연구자들이 커널을 축소해서 만든 운영체제인 Microkernel 접근 방식을 사용하여 커널을 모듈화한 Mach라 불리는 운영체제를 개발하였다. 마이크로커널의 주 기능은 Client 프로그램과 사용자 공간에서 실행되는 다양한 서비스 간에 통신 설비를 제공하는 것이다. Client 프로그램이 사용자 공간에 file에 접근하는 것을 원한다면 마이크로커널과 메시지를 교환함으로써 간접적으로 상호작용을 해야 한다.
-
장점1 : 운영체제의 확장이 용이하다. 모든 새로운 서비스는 사용자 공간에 추가되며, 따라서 커널의 변경을 필요로 하지 않는다. 결과적으로 만들어지는 운영체제는 한 하드웨어로부터 다른 하드웨어로 이식이 쉽다.
-
장점2 : 마이크로커널은 대부분의 서비스가 커널이 아니라 사용자 프로세스로 실행되기 때문에 높은 보안성과 신뢰성도 제공한다.
-
단점 : Client 프로그램은 server 파일과 통신하기 위해서는 마이크로커널과 통신을 해야 한다. 그래서 커널 공간과 통신하기 위한 사용자 공간의 오버헤드가 크다.
적재 가능한 커널 모듈 구조
대부분의 현대 운영체제(LInux, Mac OS X, Windows)는 LKM(Loadable Kernel Modules)를 구현한다. LKM은 객체지향 프로그래밍 기법을 사용한다. 이 접근법에서 커널은 Core Componet들로 이루어지며 부팅 시 실행 중에 부가적인 서비스들을 모듈을 통해 동적으로 연결한다. 또한, 하나의 모듈에서 다른 모듈을 호출할 수 있는데, 이런 기능때문에 적재 가능한 모듈이라고 한다. 전체적인 결과는 커널의 각 부분이 정의되고 보호된 인터페이스를 가진다는 점에서 계층적인 구조를 닮았으나 모듈은 임의의 모듈을 호출할 수 있다는 점에서 계층적 구조보다 유연하다. 왜냐하면 계층적 구조에서는 하위 계층 서브시스템이 상위 계층 서브시스템의 기능을 이용할 수 없기 때문이다.
-