운영체제가 점점 더 많은 하드웨어와 소프트웨어를 지원하면서 구조 또한 어려워졌다. 그런데 복잡한 시스템은 설계, 구현, 테스트, 유지 보수 등 다양한 면에서 간단하지 않다. 이를 해결하려고 운영체제를 설계하는 다양한 수단이 나타났다. 이 글에서는 대표적인 운영체제 구조 몇 가지만 살펴본다.
단일 구조 운영체제
단일 구조 운영체제는 초기에 탄생한 가장 일반적인 형태이다. 운영체제의 모든 기능을 커널과 같은 메모리 공간에 적재한 후 시스템 호출만으로 활용할 수 있다. 작고 간편하면서 시스템 기능이 제한된 구조로, 대부분 기능을 최저한의 영역으로 제공하는데, 한 계층으로는 결합할 수 없는 매우 많은 기능으로 구성되어 있다. 물론 모듈이 효율적으로 나누어져 있지는 않다. 단일 구조의 또 다른 예시는 초기 유닉스이다. 여러 계층으로 구성되어 있다.
단일 구조 운영체제는 대다수의 기능을 커널에 그룹화해서 구현하므로, 직접 연락하여 시스템 자원을 효율적으로 관리할 수 있다는 장점이 있다. 하지만 커널 크기가 상대적으로 거대해지면서 버그의 원인이나 기타 결함을 구별하기 복잡하고, 신기능을 더하는 수정과 유지 보사 매우 까다롭다. 그리고 같은 메모리에서 수행하므로 한 부분에서 일어난 문제 때문에 시스템 전체에 심각한 영향을 줄 수 있다는 단점이 있다. 특히 최근 빈번하게 일어나는 악성 코드로 피해를 보기가 쉽다.
커널에는 파일 시스템, 프로세서 스케줄링, 메모리 관리 등이 포함되며, 시스템 호출을 하여 다른 운영체제 기능을 부여한다. 이후 커널의 여러 기능을 나눠주는 형태로 만들었는데 예시를 들면, IBM 버전의 AIX는 커널을 2개로 분리했다.
2 계층 구조 운영체제
계층 구조 운영체제에서는 계층을 설명하기가 어렵다. 각 계층은 자신의 하위 계층만 이용할 수 있으므로 신중히 설계해야 한다. 예시를 들면, 가상 메모리 알고리즘으로 활용한 디스크 공간용 장치 드라이브는 메모리 관리가 디스크를 이용할 수 있어야 하므로, 메모리 관리 루틴보다 하위 계층에 존재해야 한다. 그리고 디스크 드라이브는 일반적으로 프로세서 스케줄러 위에 위치하는데, 드라이버가 입출력을 하려고 대기하는 동안 프로세서가 다른 프로세스를 스케줄링할 수 있기 때문이다. 하지만 대형 시스템의 프로세서 스케줄러에서 메모리에 적재할 수 있는 것보다 활동 중인 프로세스를 훨씬 많이 처리하려면 교체 기능이 필요하다. 이것은 디스크 드라이브 루틴을 프로세서 스케줄러 아래에 놓도록 요청한다. 이런 제약 때문에 계층화에 약간 부정적인 의견을 제시한다. 또한 모든 계층이 시스템에 통제 없이 접근할 수 있어 오류나 악성 코드에 민감하게 대응할 수 있다.
계층적 구조의 장점은 모듈화로 단일 구조 운영체제보다 모듈화가 잘 되어 있다는 것이다. 각 계층은 자신의 하위 계층 서비스와 기능만 이용하므로, 계층 구조에서는 시스템 검증과 오류 수정을 간단하게 할 수 있다. 첫 번째 계층은 보통 하드웨어를 이용하여 기능을 만들었기 때문에 나머지 시스템에 의문을 가지지 않고 오류를 고칠 수 있다. 첫 번째 계층의 오류를 수정하면 기능이 정확하다고 가정하여 두 번째 계층을 생성한다. 그리고 이런 과정을 계속한다. 특정 계층에서 오류를 발견하더라도 하위 계층은 오류를 수정했기 때문에 해당 계층에 오류가 없다고 할 수 있다. 시스템은 이렇게 계층으로 나누면 시스템 설계나 재현이 쉬워진다.
계층적 접근 방법을 사용한 설계는 1968년 다익스트라가 개발한 THE 운영체제에서 가장 먼저 이용했다. THE 운영체제는 계층 6개로 구성되어 있다. 최하위 계층은 하드웨어이고, 다음으로 프로세서 스케줄링, 메모리 관리 순이다. 메모리 관리 방법은 가상 메모리를 이용한다. 계층 3은 운영자와 프로세스 간에 대화로 실행할 수 있는 콘솔 키보드의 할당을 돌보는 '메시지 해석기', 곧 운영자 - 콘솔용 장치 드라이버를 포함한다. 이것은 입출력 버퍼링처럼 메모리 관리 위에 있는 계층 3에 위치하므로 장치 버퍼는 가상 메모리 계층에 위치할 수 있다. 그리고 입출력 버퍼링은 오퍼레이터 콘솔 계층 위에 있기 때문에 입출력 오류 조건이 오퍼레이터 콘솔 출력이 될 수 있다.
운영체제가 점점 커지고 어려워지면서 순수 단일 구조만으로는 다루기가 까다로워졌다. 이 문제를 해결하려고 나타난 것이 바로 계층 구조 운영체제이다. 계층 구조에서는 비슷한 기능을 수행하는 요소를 그룹화하여 계층적으로 구성한다. 최하위 계층인 하드웨어에서 최상위 계층인 사용자 인터페이스까지 다수의 계층으로 구성된다. 이때 각 계층은 근접한 상위나 하위에 있는 계층과 상호작용한다. 이런 구조는 사용자 프로세스의 요구를 실행할 때 여러 계층을 거쳐야 하므로, 한 계층에서 다음 계층으로 데이터를 전파할 때마다 추가적인 시스템 호출이 생겨난다. 그러므로 호출 한 번으로 서비스를 받는 단일 구조보다는 성능이 떨어진다.
마이크로 커널 구조 운영체제
최근 운영체제는 많은 서비스를 주고 다양한 하드웨어와 소프트웨어 자원을 보조하여 몹시 어렵고 규모가 크다. 앞서 살펴본 유닉스 운영체제도 기능을 확장하고 커널이 커지면서 관리하기가 까다롭고 디버깅이 간단하지 않았다. 단일 커널의 문제점을 해결하려고 1980년대 카네기멜론대학교에서는 모듈화된 마이크로 커널을 이용하여 매크를 개발했다. 마이크로 커널은 커널의 기능을 많이 제외시켰다. 곧 커널에는 최소 기능만 포함시켜 크기를 대폭 줄이고 기타 기능은 사용자 공간으로 이동시켜 사용자 영역에서 발동하는 서버 구현 방법이다.
요약 및 결론
• 운영체제의 구조는 단일 구조, 계층 구조, 마이크로 커널 구조로 나뉜다.
• 단일 구조는 모든 기능을 커널에 집중시켜 관리하기 쉽지만, 커널이 커지면서 관리와 수정이 어려워진다.
• 계층 구조는 기능을 계층적으로 나누어 관리하기 쉽지만, 계층 간의 상호작용으로 성능이 저하될 수 있다.
• 마이크로 커널 구조는 커널의 기능을 최소화하고 나머지 기능을 사용자 공간으로 이동시켜 관리하기 쉽고 확장성이 좋다.
'IT 및 프로그래밍' 카테고리의 다른 글
데이터 통신과 컴퓨터 네트워크의 용어의 정의 - 1 (0) | 2024.10.24 |
---|---|
교착 상태와 기아 상태 중 교착 상태의 해결 방법 (0) | 2024.10.22 |
교착 상태와 기아 상태 중 교착 상태의 개념과 발생원인 (0) | 2024.10.22 |
병행 프로세스와 상호배제 중 상호배제와 동기화에 관하여 (0) | 2024.10.22 |
병행 프로세스와 상호배제 중 병행 프로세스에 대하여 (0) | 2024.10.22 |
프로세스와 스레드 중 스레드의 구현에 대하여 (0) | 2024.10.22 |
프로세스와 스레드 중 프로세스의 관리에 대하여 - 2 (0) | 2024.10.22 |
운영체제의 발전 과정과 유형 중 유형에 대하여 (0) | 2024.10.22 |