안녕하세요? 허니입니다. 운영체제 아키텍처의 종류와 그 내용을 가지고 포스팅 하려고 합니다. 운영체제의 종류는 정말 많은데요. 아무 대부분이 아시는 윈도우, 리눅스 운영체제는 모놀리식 운영체제이며 임베디드 관련된 운영체제는 계층적 또는 마이크로 운영체제를 많이 쓰고 있습니다. 학생이나 연구원분들에게 많은 도움이 될 것이라고 생각하며 언제든지 질문은 환영입니다.

 


오늘의 주제

 

 운영체제 아키텍처

모놀리식 운영체제 (Monolithic Operating System)

 계층적 운영체제 (Layered Operating System)

 마이크로커널 운영체제 (MicroKernel Operating system)

 


 

현대 운영체제는 많은 서비스를 제공하고 다양한 하드웨어, 소프트웨어 자원을 지원하기 때문에 매우 복잡하다. 운영체제 설계 연구자들은 운영체제 구성 요소를 구성하고 각 구성 요소가 실행될 권한을 지정할 수 있게 함으로써 이러한 복작성을 해결합니다. 모놀리식 설계에서 운영체제의 모든 구성 요소를 커널에 포함하지만 마이크로 커널 설계에서는 필수 구성 요소만 커널에 포함시켜 안정성을 최대화 하였습니다.

 

 모놀리식 운영체제

가장 초기에 개발된 보편적인 운영체제 설계며 모든 구성 요소를 커널에 포함시킨 아키텍처이다. 단순히 기능 호출만으로도 다른 구성요소와 직접 통신이 가능하며 이런 유형의 커널은 컴퓨터 시스템에 제한없이 접근해 실행할 수 있다.

그림 1. 모놀리식 운영체제 커널의 아키텍처 & 마이크로커널 운영체제 아키텍처

 

그림에서 보듯이 모놀리식 커널은 구성 요소들을 함께 그룹화하기 때문에 모놀리식 운영체제의 구성 요소 간 직접적인 상호 통신은 효율을 높여준다. 그러나 버그의 원인이나 기타 오류를 구분하기 어려워 안정성에 문제가 있다. 더욱이 모든 코드가 제한없이 시스템에 접근하므로 모놀리식 커널 시스템은 특히 오류나 악성 코드나 해킹로부터 해를 입기 쉽다.

 

 계층적 운영체제

운영체제가 점점 커지고 복작해짐에 따라 순수한 모놀리식 설계는 점점 다루기 어려워졌다. 이 문제를 해결하기 위해 운영체제에 대한 계층적 접근법이 시도되었다. 계층적 접근법은 유사한 기능을 수행하는 요소들을 구룹으로 묶어 계층으로 구분하며 각 계층은 오직 바로 위아래에 잇는 계층과 상호 작용 할수 있다. 하위 계층은 구체적인 구현을 숨긴채 인터페이스를 통해 상위 계층에 서비스를 제공한다. 계층적 운영체제는 모놀리식 운영체제보다 모듈화가 잘 되어 있다. 다른 계층에 전혀 영향을 주지 않고 각 계층의 구현을 수정할 수 있기 때문이며 모듈화된 시스템은 시스템 전반에 걸처 재사용할 수 있는 자기 충적적인 구성 요소들이 포함된다.

그럼 2. 운영체제의 계층적 구조

 

각 구성 요소는 작업을 수행하는 내부적인 방법을 감추고, 표준 인터페이스를 보여줌으로써 다른 구성 요소들이 서비스를 요청할 수 있게 한다. 모듈화는 운영체제에 구조와 일관성을 부여하며 소프트웨어 검증과 디버깅 및 수정 과정을 간편하게 해준다. 그러나 계층적 접근법은 사용자 프로세스의 요청을 수행하는데 많은 계층을 거쳐야 하며 한 계층에서 다음 계층으로 데이터를 전달할 때마다 추가적인 함수 호출이 발생하므로 모놀리식 커널에 비해 성능이 많이 떨어진다.

 

 마이크로커널 운영체제

마이크로커널 운영체제 아키텔처는 커널의 규모를 최소화하고 규모 확장성을 높이고 필수 서비스만 제공한다. 여기에 포함되는 서비스는 전형적으로 수준이 낮은 메모리 관리, 프로세스 간 통신, 프로세스 간 협력을 위한 기본적인 동기화 기능뿐이 없다. 이 설계에서는 프로세스 관리, 네트워크, 파일 시스템 상호 작용과 장치 관리 등 대부분의 운영체제 구성 요소를 커널이 아닌 유저 권한을 통해 커널 외부에서 작동한다. 마이크로 커널은 모듈화 정도가 높아서 확장성, 이식성, 규모 확상성이 높다. 더 나아가 실행을 위해 각 구성 요소에 의존하지 않기 때문에, 한두개 구성요소에 오류가 발생하여보 운영체제 전체가 마비되지 않는다. 그러나 이러한 모듈화는 모듈 간 통신 정도가 높아지므로 성능 저하가 나타나는 트레이드 오프가 있다. 

 

 

그 외 운영체제

그 외로 네트워크 운영체제, 분산 운영체제, 하이퍼바이저 운영체제 등 많은 아키텍처들이 존재한다.

목 차

 운영체제를 시작하는 분들을 위해

 운영체제의 역사와 구체적으로 어떤 일들을 수행하나요?

 운영체제의 목표와 역할이 미래에도 계속 증대될까요?

 운영체제를 이해하기 위해 필요한 기본 개념들은 무엇인가요?

 운영체제 프로세스 생애주기(Process Lifecycle)는 무엇인가요?

 운영체제 프로세스 관리(Process Management)는 어떻게 하나요?

 운영체제 프로세스(Process)의 처리 속도는 어떻게 높일까?

 운영체제 스레드(Thread)는 무엇인가요?

 운영체제 스케줄링 (Scheduling)은 어떻게 하나요?

 운영체제 스케줄링 알고리즘의 비교 기준이 있나요?

 운영체제 프로세스 동기화가 무엇인가요?

 운영체제에서 세마포어(Semaphore)란?

 운영체제 메모리 관리(Memory Management)는 어떻게 하나요?

 운영체제 메모리 분할 방법은 어떻게 하나요?

 운영체제 가상메모리(Virtual Memory)는 무엇인가요?

 운영체제 Page in/out, Swapping 등이 Page Table Entry와 어떤 관계인가요?

 운영체제 메모리 관련해서 알아야 할 개념은 어떤것이 있나요? (TLB, Locality, Working Set, Overlay)

 운영체제 Page replacement (페이지 대체) 알고리즘이란?

 운영체제 파일시스템(File System)은 어떻게 운영되나요?

 운영체제 파일시스템 내부구조는 어떻게 되나요?

 운영체제 디스크 공간 할당(Disk Space Allocation) 알고리즘과 효과적 알고리즘의 판단 기준은?

 운영체제 파일시스템에서 접근 시간, 디스크 스케줄링을 위한 알고리즘, I/O 시스템이란?

 리눅스 인터럽트 (Interrupt)에 대해 자세히 설명해 주세요.

 인텔 구조에서 운영체제 가상 메모리 (Virtual Memory)는?

 운영체제 아키텍처의 종류는 얼마나 있나요?

 

+ Recent posts