커널이란?

프로세스/메모리/저장장치/입출력 시스템 등을 관리하는 운영체제의 핵심적인 기능을 모아놓은 프로그램이다. 그만큼 운영체제의 핵심이라고 할 수 있으며, 운영체제의 성능은 커널이 좌우하게 된다. 컴퓨터가 부팅하는 순간 커널 코드가 메모리에 올라가고, 다른 프로그램과 다르게 항상 메모리에 상주(Memory Resident)한다.


커널의 주요 기능

  1. 프로세스 또는 Thread 관리 및 CUP Scheduling(CPU 스케쥴링) : 프로세스마다 CPU를 사용할 수 잇는 시간을 분배 및 관리한다.
  1. 메모리 관리 : 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상 공간을 제공한다.
  1. I/O Device 관리 : 입출력 디바이스를 관리해준다.
  1. IPC(=Inter Process Communication) : 한 컴퓨터 내부의 프로세스끼리 통신을 도와준다.
  1. 네트워크 : 다른 컴퓨터와의 통신을 가능하게 해준다 => TCP/IP 기반의 인터넷에 연결하거나, 응용 프로그램이 네트워크를 사용하려면 운영체제에서 네트워크 프로토콜을 지원해야 한다. 현재 상용 OS들은 다양하고 많은 네트워크 프로토콜을 지원한다.
  1. File System(파일 시스템) : 데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다.

커널의 종류

1. 단일형 커널(Monolithic Kernel)

초창기의 구조로 커널에서 제공할 수 있는 다양한 기능을 한 덩어리로 묶은 형태의 커널이다.

장점

  • 모듈들이 거의 분리되어 있지 않기 때문에 모듈 간의 통신 비용이 줄어들어 성능이 좋다

단점

  • 오류 발생 시에 여러 기능들이 상호 의존하기 때문에 작은 결함에도 시스템 전체가 위험해질 수 있다.
  • 유지보수가 어렵다.
  • 운영체제가 커지고 복잡해질수록 구현하기가 매우 어렵다.

단일형 커널을 사용하는 운영체제 : 유닉스, 리눅스, BSD, 솔라리스, 인도 NT 등


2. 마이크로 커널(Micro Kernel)

프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공하고, 나머지는 사용자 영역에 구현한 구조이다.

장점

  • 모듈 크기가 굉장히 작아져서 안정성이 높다.
  • 각 모듈이 독립적으로 작동하기 때문에 하나의 모듈이 실패하더라도 전체 운영체제가 멈추지 않는다.
  • 커널의 크가가 작으므로 커널과 일부 서비스만으로 작은 운영체제를 구성하여 임베디드 시스템에 사용할 수 있다.

단점

  • 잦은 통신이 필요하기 때문에 성능 저하의 우려가 있다.

마이크로 커널을 사용한 운영체제 : AmigaOS, Haiku, LSE/OS, KeyKOS, MAch, 심비안 OS 등


3. 계층형 커널(Layered Kernel)

비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고, 계층간의 통신을 통해 운영체제를 구현한 방식이다.

장점

  • 단일형 구조보다 버그나 오류를 쉽게 처리할 수 있다.
  • 보다 디버깅이 쉽다.
  • 이식성이 뛰어나다.

단점

  • 상하관계가 생기긱 때문에 하나의 계층에 이상이 생기면 위, 아래 계층도 동작하지 못할 수 있다.
  • 운영체제가 커지고 복잡해지면 많은 계층들이 발생하게 되어 커널의 크기도 커지고 하드웨어의 용량도 늘어난다.

계층형 커널을 사용한 운영체제 : MS의 윈도우 등 대부분 운영체제의 구현 방식

profile
개발을 꿈꾸는 초짜

0개의 댓글