단일 구조 운영체제
단일(monolithic) 구조 운영체제 (또는 모놀리식 커널 구조)
- 초기 생겨난 가장 보편적 형태
- 운영체제의 모든 기능을 커널과 동일한 메모리 공간에 적재 후 시스템 호출만으로 사용
- 작고 간단하면서 시스템 기능이 제한된 구조
- 특징
- 대부분의 기능을 커널에 그룹화해서 구현, 직접 통신하여 시스템 자원을 효율적 관리
- 커널 크기가 상대적으로 커지면서 버그의 원인이나 기타 오류 구분 어려움
- 새 기능을 추가하는 수정과 유지 보수가 매우 어려움
- 동일한 메모리에서 실행하므로 한 부분에서 발생한 문제로 시스템 전체에 심각한 영향 가능
- 악성 코드로 피해 입기 쉬움
계층 구조 운영체제
- 운영체제가 점점 커지고 복잡해지면서 순수 단일 구조만으로 다루기 어려워져 해결하려고 등장
- 계층 구조에서는 비슷한 기능을 수행하는 요소를 그룹화하여 계층적으로 구성
- 사용자 프로세스의 요청을 수행할 때 여러 계층을 거쳐야 하므로, 한 계층에서 다음 계층으로 데이터를 전달할 때마다 추가적인 시스템 호출 발생
- 호출 한 번으로 서비스를 받는 단일 구조보다는 성능이 낮음
- 단일 구조 운영체제보다 모듈화가 잘 되어 있음
- 시스템 검증과 오류 수정이 용이
- 첫 번째 계층은 기본 하드웨어를 사용하여 기능을 만들어 나머지 시스템에 의문을 가지지 않고 오류를 수정 가능
- 첫 번째 계층의 오류를 수정하면 기능이 정확하다고 가정하여 두 번째 계층을 만듦
- 특정 계층에서 오류를 발견해도 하위 계층은 오류를 수정했기 때문에 해당 계층에 오류가 없다고 할 수 있음
- 시스템을 계층으로 나누면 시스템 설계나 구현이 단순해짐
- 계층 정의가 어려움
- 각 계층은 자신의 하위 계층만 사용할 수 있으므로 신중히 설계해야 함
- 대형 시스템의 프로세서 스케줄러에서 메모리에 적재할 수 있는 것보다 활동 중인 프로세스를 더 많이 처리하려면 교체 기능이 필요
- 모든 계층이 시스템에 제한 없이 접근할 수 있어 오류나 악성 코드에 민감하게 반응할 수 있음
마이크로 커널 구조 운영체제
- 단일 커널 문제점 해결을 위해 모듈화된 마이크로 커널을 사용해 만듦
- 커널 기능을 많이 제외
- 커널에는 최소 기능만 포함시켜 크기를 대폭 줄이고 기타 기능은 사용자 공간으로 옮겨 사용자 영역에서 수행하는 서버 구현
- 하드웨어 초기화, 메모리 관리(주소 공간 관리), 프로세스(스레드) 관리, 프로세스 간 통신, 프로세스 간 협력 동기화 기능 등 기본 기능만 실행
- 네트워크 시스템, 파일 시스템 상호작용과 장치 관리 등 대부분의 운영체제 구성 요소는 커널 외부, 즉 사용자 영역의 서버로 옮겨 구현
- 운영체제 서비스를 사용자 영역의 독립적인 서버에서 수행, 서버에서 잘못 수행하더라도 다른 서버와 커널에 치명적인 영향을 주지 않음
- 운영체제의 많은 기능을 사용자 영역의 서버로 구현할 수 있기 때문에 서버 개발 용이, 운영체제의 기능을 쉽게 변경 가능
- 모듈화 정도가 높아 확장성, 이식성, 규모 확장성이 높음
- 모듈 간 통신이 빈번하게 발생하여 성능이 떨어질 수 있음
- 프로세스 간 통신 발생을 최소화시키는 것이 중요 과제
- 응용 프로그램과 서버 간에 자료를 교환하려고 커널을 출입하는 문맥 교환 때문에 속도가 느림
- 커널 내부에서 발생 지연이 적고 예측 가능하여 실시간 시스템에 활용
- 대표적인 운영체제 중 마이크로 커널 구조를 전적으로 선택한 것은 없지만, 모듈화 구성 요소는 포함