본문 바로가기
운영체제

커널 종류

by tryotto 2020. 4. 26.

# 모노리틱 커널


- 구성 : 커널이 사용자와 같은 주소공간에 위치

      - 주소 공간을 (커널코드 + 사용자) 나눠서 사용


- 특징 : 여러 개의 주소 공간들이 있는데, 이때 각 주소공간에 

          위치하는 커널 코드들은 물리적으로 동일하다

   > 주소공간 매핑을 이용하기 때문

- 장점 : 

      - 여러 개의 주소 공간에서, 각각의 주소 공간 내에는 

        어플리케이션 + 커널 코드  두 개가 동시에 존재

> 시스템 콜 할 때 오버헤드가 적다

        ( 시스템 콜 = 사용자가 커널 레벨에 어떤 요청을 하는 것 )

      - 여러 개의 주소 공간 각각에 커널 코드들이 분산됐는데, 주소공간 매핑을 통해

        모든 커널들은 서로 연결되어 있다

> 각 커널들간의 데이터 전달 시, 오버헤드가 적다

- 단점 :

      - 하나의 커널 코드가 여러 개의 주소 공간들에 분포되어 있기에, 

        모든 어플리케이션들과도 연결된 것과 마찬가지다

> 만약, 커널 코드를 조금이라도 바꾸면, 연결된 모든 어플리케이션들이

     영향을 받는다

> 따라서, 유지 보수가 매우 힘들다






# 마이크로 커널


- 구성 : 마이크로 커널 + 모듈화된 커널 서비스들

       - 모듈화된 커널 서비스 = "서버" 또는 "커널 서버"

> 이 모듈들은 독립된 주소공간에 배치됨

       - 마이크로 커널은 위의 서버들끼리 통신하도록 해주는 IPC 역할을 수행

> 어플리케이션 레벨의 서비스 콜 같은 간단한 명령을 전달해줌


- 장점 : 

       - 커널 서버들이 따로 구현됨 

> 독립적인 개발, 유지, 보수 가능

        > 모노리틱보다 안전함

- 그러나 실제로는 더 위험함. 

  모노리틱보다 시스템 콜을 하는 횟수가 더 많기에,

  해킹의 위협이 더 많다

> 간단한 시작, 종료 가능


- 단점 : 

       - IPC 의 속도가 느림

> 서버들간의 통신, context switching 이 필수적이기 때문






# 하이퍼바이저 커널


- 구성 : 

      - 하나의 하드웨어에 여러개의 OS 가 존재

> 하이퍼바이저 레이어 덕분

      - 각각의 OS 에는 여러개의 어플리케이션 + 커널 존재


- 콜 종류 :

      1) 시스템 콜 : 앞서 했던 것과 동일. 어플리케이션에서 커널 레벨로 통신

      2) 하이퍼바이저 콜 : 커널 레벨에서 하이퍼바이저 레벨로 통신


- 가상화 장점 

      1) Consolidation : 하드웨어를 쪼개서 쓰지 않아도 된다

- 하드웨어 사용 계획이 편하다 : 내가 미리 계산해서 가상화를 시키기 때문

- 하드웨어 비용 감소 : 예전에는 1개의 OS 에 1 개의 하드웨어 할당해야 했음

        > 하나의 어플리케이션에 사용되는 CPU 를 다른 어플리케이션에도 할당 가능

      2) Decoupling :

- 하드웨어와 OS 를 분리시켜준다

       > 개발할 때, 서로의 연관성을 덜 고려한 채 개발하기 편하다

      3) Isolation :

- 각각의 OS 들은 서로 독립적으로 움직인다


- 하이퍼바이저

      - 특징 :

1) 위치 : OS 와 HW 사이

2) HW(CPU, 메모리) 접근 : 하이퍼바이저에게 할당 받은 자원만 수행

3) 각각의 OS : 서로 다른 가상머신 위에서 작동 + 서로의 존재 모름

      - 장점 : ISA 제공 (실제 컴퓨터가 제공하는 것과 다른 명령어)

> 다른 HW 환경에서 컴파일 된 것도 실행 가능

      - 단점 : 

1) 메모리 차지를 너무 많이 한다

2) 1대 1 의 SW-HW 방식보다 성능 떨어짐

        > 해결 방안 : 컨테이너


- 하이퍼바이저 업그레이드 버전

      1) KVM : 

- 하이퍼바이저를 아예 어떤 OS 로 두고 진행한다

- isolation 이 철저 

      -> 여러개의 OS 를 설치할때마다 패키지들을 모두 설치하므로, 무겁다

      2) 컨테이너 : 

- 구조 :

      - 마찬가지로, 하이퍼바이저를 어떤 OS 로 두고 실행

        - 컨테이너 엔진을 도입

- 특징 :

     - 각각의 컨테이너들이 루트/라이브러리 공유

    > 각각의 컨테이너들의 통신이 가능

> 배포가 쉽다


'운영체제' 카테고리의 다른 글

커널별 인터럽트 처리  (0) 2020.04.26
DMA 와 메모리  (0) 2020.04.26
선점형/비선점형 스케쥴링 방식  (0) 2020.04.26
인터럽트  (0) 2020.04.26