본문 바로가기

Computer Science/OS

운영체제의 구조

운영체제의 구조

단일 구조, 계층 구조, 마이크로 커널 구조

3개가 있습니다.

 

A는 단일 구조 B는 마이크로 커널 구조 입니다.

 

간단하게 비교하고 있습니다.

 

단일 커널은 커널안에 운영체제에 필요한 것을 모두 담고 있습니다.

 

마이크로 커널은 커널은 작게하고 운영체제가 해야할 나머지 모듈들을 사용자 영역으로 넘기는 것 입니다.

 

privilliged가 커널의 영역입니다.

 

마이크로 커널은 

커널에 꼭 필요한것만 가지고 있습니다.

 

실제로 운영체제에 필요한 일들은 유저영역에서 일어납니다.

각각을 서버라고 부릅니다. 

그것들이 동작을 하려면 시스템 콜을 해야합니다.

 

커널이 자기가 직접할 수 있는건 자기가 하는데 안되는 거면 서버를 콜해야합니다.

ex)file server가 요청한 것을 커널이 받아서 application ipc를 이용해서 해결한 다음 다시 file server에 넘겨줄 수 있습니다.

 

 

하이브리드 커널이란 것이 나옵니다.

커널부분에 기본적인 것 말고도 몇개 더 넣은 것 입니다.

 

 

 

 

운영체제의 구조 - 단일 구조 

 

모놀리식 monolithic 커널 구조

운영체제의 모든 기능을 커널에 포함

초기에 생겨난 가장 보편적 형태

 

장점

- (운영체제가 작으면)자원 용의 효율성

 

단점

- 커널 크기가  커지면 버그나 오류의 원인 파악 어려움

- 기능 추가나 유지 보수 어려움

- 부분에서 발생한 문제로 시스템 전체에 심각한 영향

  - 악성 코드로 피해 입기 쉬움

 

 : MS-DOS, 초기 Unix

 

 

 ex)MS-DOS

 

application program을 제외한 것이 커널입니다.

커널안에 운영체제가 하는 모든일들이 있다는 것을 보라는 것 입니다.

 

 

운영체제의 구조 - 계층 구조 

비슷한 기능을 수행하는 요소를 그룹화하여 계층적으로 구성

- 운영체제가 점점 커지고 복잡해지면서 순수 단일 구조만으로는 다루기가 어려워진 문제를 해결

맨 밑에 하드웨어가 있고

그걸 감싸는 운영체제의 어떤 부분은 layer1이라고 하고 그위에 또다른 layer가 있습니다.

맨 위에는 user interface가 있습니다.

 

여기서 운영체제는 파란색 부분까지 입니다.

 

 

장점

- 모듈화

- 각 계층의 설계나 구현 단순

- 각 계층의 검증과 오류 수정 용이

  - 위 아래층과 무관하게 수정되거나 교체될 수 있음

 

 

단점

- 시스템 호출 한 번으로 서비스를 받는 단일 구조보다는 성능 낮음(느림)

  - 사용자 프로세스의 요청을 수행할 때 여러 계층을 거치느라 다수의 호출 발생

- 계층 나누기의 어려움

 

 

계층 나누기의 어려움

실제로 딱 떨어지게 만들기가 어렵습니다.

- 각 계층은 하위 계층만 사용 가능

- 모든 함수(모듈) 간의 의존관계가 Directed Acyclic Graph (DAG)로 표현될 수 있어야 가능함

- 가상메모리용 디스크의 디바이스 드라이버와 CPU 스케쥴러 간의 계층관계는? 어느것을 위에 두어야 할지 어렵습니다.

 

 

 

 

 

 

운영체제의 구조 - 마이크로 커널 구조 

커널은 최소 기능만 포함하고 나머지는 사용자 영역

 

커널은 코어만 작게 가지고 있고 나머지는 사용자의 영역으로 마치 플러그인 처럼 꽂아서 사용할 수 있게끔 만듭니다.

 

 

커널 영역

- 하드웨어 초기화, 메모리 관리(주소 공간 관리), 프로세스(스레드) 관리, 프로세스 간 통신, 프로세스 간 협력 동기화 등 기본 기능만

사용자 영역

- 네트워크 시스템, 파일 시스템, 장치 관리 등 나머지 대부분의 운영체제 구성 요소

 

 

나머지가 유저 모드에 있습니다.

 

사실 file system, device driver는 운영체제의 영역이고 application program은 진짜 사용자 영역인데 구별없이 있습니다.

 

시스템콜을 하면 커널이 메세지를 전달해 줄 수 있어서 다른 모듈을 사용할 수 있습니다.

 

 

장점

- 모듈화 정도 높음

 

확장성

- 새로운 서비스는 커널의 변경이 필요 없이 사용자 공간에 추가

 

이식성

- CPU용량이 작은 시스템에도 적용 가능

- 유저 영역에 필요 없는것은 설치할 필요가 없습니다.

 

보안성과 신뢰성이 높음

- 한 서버의 잘못된 수행이 다른 서버와 커널에 영향 적음

- 여기서 서버는 file system, device driver 모듈 같이 서비스를 해주는 주체입니다.

 

커널 내부의 지연이 적고 예측 가능하여 실시간 시스템에 활용

 

단점

- IPC (Inter-process communication )이 빈번하여 성능 저하

운영체제가 커지면 사용자 영역에 추가해야할 서버들이 많아집니다.

그러면 커널 안에서 왔다갔다 해야하는게 많아집니다.

 

커널과 서버들은 message passing으로 상호작용.

사용자 프로그램이 커널에 메시지를 전달하면,

커널은 해당 인터럽트(이벤트)를 처리하는 서버에게 메시지로 처리 요청

 

 

문제)

단일 구조 커널입니다.

Monolithic Kernel

 

 

운영체제의 구조 - Hybrid 구조 

현재는 많이 섞어서 쓴다.

 

많은 현대 OS loadable kernel modules (LKMs)로 구성

- object-oriented approach

- 여러 서비스가 모듈화되어 있다는 면에서 마이크로 커널 구조와 유사하지만 그 모듈들이 커널안에 속하고 message passing이 필요 없음.

  - 필요시 커널 안으로 적재

- 커널이 모듈화되어 있다는 면에서 계층적 구조와 유사하지만 유연성 높음.

- 정해진 Interface로 모듈 간 통신

- Modern UNIX, Solaris, Linux, Windows, Mac OS X

 

내가 필요한 기능들의 모듈들만 뽑아서 그것만 커널묶고 설치합니다.

 

 

Monolithic plus modular design

 

하드웨어가 있고 그위에 device driver가 있습니다. 그 안에 많은 모듈들이 있습니다.

 

 

문제)

마이크로 커널 구조 입니다.

 

 

시스템 호출 입니다.

 

 

 

 

 

 

 

 

 

 

728x90