본문 바로가기

운영체제

운영체제 #5 OS Architecture : Monolithic Kernel, Microkernel

운영체제 핵심 기능인 커널 소프트웨어를 구현할 때 어떤 구조로 하느냐에 따라 Monolithic Kernel 구조와 MicroKernel 구조로 구분할 수 있다.

 

Monolithic Kernel

 

▲ monolithic kernel 구조 OS

 

  • Monolithic ?

 

단일체, 한 덩어리 라는 의미다. 즉, 운영체제 주요 기능들(파일 관리, 프로세스 관리, 메모리 관리, 통신 프로토콜 등..) 이 모두 커널 내부에 구현되어 있다. 또한 커널 모드로 실행된다.

 

  • 커널 모드?

: 컴퓨터가 응용 프로그램 코드를 실행하는 것이 아니라 운영체제 코드를 실행하고 있는 상황을 말한다.

 

 

+) UNIX와 Linux는 monolithic 구조로 되어있다.

 

  • upside :)

 

: Micro 구조와 달리 운영체제 실행 속도가 빠르기 때문에 컴퓨터 성능이 일반적으로 우수하다.

 

Microkernel

 

"Monolithic Kernel" vs "Micokernel"

 

  • Micro ?

: 운영체제 기능들이 운영체제 외부에 구현되는 방식을 사용한다.

 

상단 그림에서 알 수 있듯이, Monolithic Kernel은 운영체제(s1, s2, s3)가 커널 내부에 구현되어있는데, Microkernel은 운영체제 기능들이 커널 밖에 실행된다. 

 

응용 프로그램처럼, 독립적인 프로세스의 형태를 띄고서 운영체제 위에서 실행되는 것 처럼 커널의 기능이 실행된다.

 

원래는 운영체제 내부에 있어야하는 기능이 밖에 위치하고, 커널 내부에는 남아있는 기능이 많지 않다. 그래서 커널의 크기가 작다는 뜻으로 micro라는이름이 붙었다.

 

---

 

이론적으로 볼 때 Monolithic Kernel 안에 있는 기능들을 모두 밖에 뺄 수 있으나 꼭 Kernel에 있어야만 하는 기능들이 있다.

 

ex ) 하드웨어의 종속적인 부분 (운영체제 커널 아래에 하드웨어가 있다. 그 하드웨어를 직접 제어해야하는 코드들) , 프로세스 메모리 영역을 보호하는데 필요하는 영역들, 프로세스 간 통신 기능들, '어느 프로세스를 실행할까'하는 기본적인 스케줄링 기능들은 Micro kernel이라도 꼭 내부에 남아있어야한다

 

이 외 파일 관리, 가상메모리를 위한 기능, 통신 프로토콜, 입출력 디바이스를 제어하는 기능들은 커널 밖으로 뺄 수도 있다

 

 

Benefits of Microkernel :)

 

1. 운영체제를 커스터마이징 할 수 있다.

 

: 커널에 꼭 필요한 기능만 남기고 커널 밖에 위치 -> 커널 크기가 작다 -> 스마트폰, IOT(사물 인터넷)에 사용되는 장치들처럼 작은 운영체제를 필요로하는 경우 효과적으로 사용할 수 있다. 

 

메모리 공간을 줄일 수도 있고, 확장성도 good.

 

2. 운영체제 개발자 입장 good

 

:  운영체제 기능을 개발 / 수정할 때 서버 프로세스 형태로 커널 밖에 나와있으면 Application Program을 수정, 컴파일하고 실행시키듯이 다른 운영체제는 영향받지 않고 프로세스를 쉽게 수정할 수 있다.

 

간단하게 생각해서, s3를 수정하고 싶다면 s3만 수정하면 된다. 컴파일 후 실행시키면 되기에 s1,s2,s4,Kernel에는 전혀 영향을 미치지 않는다

= 운영체제 개발 과정이 매우 효과적이다.

 

- - -

 

반면 Monolithic Kernel은 코드 수정이 어렵다.

 

왜 ?

 

: s3를 수정해야할 때, monolithic Kernel 방식을 사용했다면 커널 전체를 새로 컴파일 하고 시스템을 새로 껐다 켜야한다.

= 시간 소요 많고 번거롭다. 

 

Disadvantages of Microkernel :(

 

1. Monolithic 보다 운영체제 실행 속도가 늦다.

 

: 개인형 pc같은 운영체제로는 큰 문제가 없으나, 고속 처리를 필요로 하는 고성능 컴퓨터에서는 microKernel을 쓰면 속도가 많이 늦어진다. 서버형 운영체제는 적합하지 않다. 

 

왜 ?

 

: Monolithic Kernel 같은 경우 kernel 내부에 있는 s1, s2, s3 가 서로 정보를 주고받아서 일을 같이 해야할 때 내부 함수 call을 부르고 결과를 받아 빠른 반면, MicroKernel은 정보를 주고받을 때 kernel을 거쳐야한다. (s1이 kernel에 필요한 정보 요청하면 kernel이 s2에 전달하고, 그 결과를 또 kernel을 통해 전달받아야함.)

 

--------

 

Example Operating Systems

 

  • 범용 컴퓨터에 사용되는 운영체제 (unix, linux, windows)

 

  • 모바일 디바이스(linux kernel+안드로이드, ios)

 +) 안드로이드 그 자체가 운영체제는 아님. 그 밑에 리눅스 커널이 있고 그 위에서 운영체제 많은 기능들을 별도로 구현함.

 

  • Real-time OS(실시간 운영체제)

 

: 컴퓨터 내/외부 상황에 사건이 발생했을 때 빨리 감지하고 정해진 시간 내에 상황에 대처를 끝마치는 컴푸터

(무작정 빨리 동작하는 것이 아니고, 정해진 시간 내에 처리해야한다..는 것이 실시간 운영체제) 

(내장형 컴퓨터(다른 장치안에 포함되어있는 컴퓨터)에 사용)

PC에서 사용되는 컴퓨터와 기능 범위가 다른 것이 일반적이다.

ex) 긴급한 상황에 환자의 건강 상태가 변화(맥박 불안정 등)하면 빠르개 대처하는 의료기기 

 

 

UNIX ***

 

  • UNIX OS

 

: 운영체제 분야에서 매우 중요한 위치를 차지한다.

 

C 언어 기반(high level language;고수준언어) -> 하드웨어가 달라지더라도 C 언어 소프트웨어를 새로 컴파일 하면 하드웨어에 쉽게 포팅할 수 있다.

 

UNIX가 나오기 이전 : 컴퓨터 하드웨어를 개발할 때 마다 하드웨어에 맞는 새로운 운영체제를 맞춰 개발하는 방식 사용.

하드웨어가 변경될 때 마다 운영체제를 새로 구현 -> 시간, 비용 많이 듦.

 

+) UNIX 운영체제의 발전 역사

:  AT&T 회사 -> 당시 미국법 규제로 컴퓨터 사업 진출 X -> 회사 외부에 상용화 하지 못 함 -> 학교나 연구소에 연구용으로 무료 배포 -> 다른 학교에서 UNIX가 C라는 고수준 언어로 구현되었기에 소스를 보고 운영체제 내부 기능 연구 -> 기능 향상 -> 그러면서 만들어진 OS 중 대표적인 게 BSD(Berkeley Software Distribution)

 

퍼스널 컴퓨터에도 unix를 사용하고싶다는 노력도 있었다.

 

UNIX 구조

 

 

UNIX 커널이 하드웨어와 응용프로그램 (user-written app) 사이에 있다.

 

커널 외부에 바로 응용프로그램이 있는 게 아니라 System Call이 kernel을 밖에서 감싸고 있다.

응용프로그램은 system call은 볼 수 있지만 kernel이 바로 보이는 게 아니므로 운영체제를 볼 수 없다.

 

지난 시간 운영체제가 무엇인 지 배울 때 표현한 계층 구조와 유사하다. 응용 프로그램이 운영체제를 사용할 수 있도록 interface 역할을 하는 함수들의 집합을 system call (그림 상 보라색 부분) 이라 했었던 것을 잘 기억해두자.

 

 

 

 

 

 

 

 

 

 

 

 

 

                                       

                                                  UNIX Kernel의 내부 구조 ▶

 

                           Monolithic Kernel 구조라는 것을 알 수 있다.

 

 

 

 

 

 

 

 

Linux

 

unix 같이 좋은 os를 pc에도 쓰고 싶은데 ...?

-> pc용 unix 개발을 위한 노력 

 

linux tovalds : 유닉스 커널을 재설계해서 리눅스 커널을 설계 

 

Linux kernel 내부 구조

 

 

! Monolithic Kernel 구조 

 

빠른 실행 성능을 가진 운영체제를 목표로했기 때문에 Monolithic 구조 선택

 

 

Windows

 

pc에서 자주 사용된다.

 

! MicroKernel 구조 

 

System support processes / Service processes 와 같은 프로그램들이 원래는 운영체제가 수행하는 기능들인데 커널 내부에 있지 않고 application처럼 커널 외부 독립 프로그램으로서 만들어져서 사용됨.

 

application 사용자 모드로 실행 (user mode) -> / cpu가 사용자 코드를 실행하고 있는 상황을 설명

 

 

운영체제 기능들이 커널 안에 있지 않고 밖에 있는 것을 확인할 수 있다.

(점선을 경계로 user mode와 kernle mode로 나뉘는 것을 참고할 것)