운영체제의 핵심으로 각 장치들을 관리하고 제어하기 위한 소프트웨어이다. 커널이라는 이름은 단단한 껍질 안의 씨앗처럼 OS 내에 위치하고 전화기, 노트북 및 컴퓨터 등 유형에 관계없이 하드웨어의 모든 주요 기능을 제어하기 때문에 붙여진 이름이다.
컴퓨터가 부팅되면서 GRUB과 같은 부트로더에 의해 메로리에 로딩되어 컴퓨터까지 항상 메모리에 상주하면서 컴퓨터의 각 장치들을 관리하고 제어하는 역할을 한다. 즉, 다른 프로그램들은 필요할 때만 RAM에 적재해 사용하는 것과 달리 항상 메모리에 상주(Memory Resident)하며 그만큼 커널이 중요하다는 뜻이다.
2. 커널의 기능
구분
설명
프로세스 관리
프로세스에 CPU를 배분하고 작업에 필요한 환경을 제공
메모리 관리
프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공
파일 시스템 관리
데이터를 저장하고 접근할 수 있는 인터페이스를 제공
입출력 관리
필요한 입력과 출력 서비스를 제공
프로세스 간 통신 관리
공동 작업을 위한 각 프로세스 간 통신 환경을 지원
커널의 기능을 정리하면 위 표와 같다.
3. 커널의 구성
위 그림은 간략하게 리눅스 커널의 구성을 나타낸 것이다. 커널은 하드웨어와 응용 프로그램 사이에 존재하며 사용자가 커널에 접근하려면 시스템 호출(System Call) 인터페이스를 통해야 한다.
시스템 호출이란? 커널이 자신을 보호하기 위한 수단으로 사용자나 응용 프로그램으로부터 컴퓨터의 자원을 보호하기 위해 직접 접근을 차단하는 인터페이스이며, 응용 프로그램에서 운영체제에게 어떠한 기능을 수행해 달라고 하는 하나의 수단이다.
세부적인 커널의 구성은 위 그림과 같다.
4. 커널의 종류
커널의 구조에 따라 여러 종류가 있지만 이 글에서는 모노리틱 커널, 마이크로 커널, 하이브리드 커널을 다룰 것이다.
1) 모노리틱 커널(단일형 커널)
초창기의 구조로 커널에서 제공할 수 있는 다양한 기능을 한 덩어리로 묶은 형태(단일한 커널 공간에 구현)의 커널이다.
장점 - 모듈들이 거의 분리되어 있지 않기 때문에 모듈 간의 통신 비용이 줄어들어 성능이 좋다.
단점 - 오류 발생 시에 여러 기능들이 상호 의존하기 때문에 작은 결함에도 시스템 전체가 위험해질 수 있다. - 유지보수가 어렵다. - 운영체제가 커지고 복잡해질수록 구현하기가 매우 어렵다.
사용하는 운영체제 - 유닉스, 리눅스, BSD, 솔라리스, 윈도 NT 등
2) 마이크로 커널
프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공하고 나머지는 사용자 영역에 구현하는 구조이다.
장점 - 모듈 크기가 굉장히 작아져서 안정성이 높다. - 각 모듈이 독립적으로 작동하기 때문에 하나의 모듈이 실패하더라도 전체 운영체제가 멈추지 않는다. - 커널의 크기가 작으므로 커널과 일부 서비스만으로 작은 운영체제를 구성하여 임베디드 시스템에 사용할 수 있다.
단점 - 잦은 통신이 필요하기 때문에 성능 저하의 우려가 있다.
사용하는 운영체제 - AmigaOS, Haiku, LSE/OS, KeyKOS, MAch, 심비안 OS 등
3) 하이브리드 커널
모노리틱 커널과 마이크로 커널의 개념을 합친 커널이다.
모노리틱 커널의 개념과 다를 것 없다는 의견도 있기 때문에 이러한 것이 있구나 정도로 넘어가면 된다.