WIPIVERSE

커널

정의

커널(kernel)은 컴퓨터 과학에서 운영 체제의 핵심이 되는 컴퓨터 프로그램으로, 시스템의 모든 것을 완전히 제어한다. 운영 체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러 가지 서비스를 제공하며, 핵심(核心)이라고도 한다. 커널은 컴퓨터가 부팅된 이후부터 전원이 꺼질 때까지 항상 메모리에 상주한다.

어원

영어 'kernel'은 '씨앗의 알맹이', '핵심'이라는 뜻을 가진 고대 영어 'cyrnel'에서 유래하였다. 이는 사물의 가장 중심적이고 본질적인 부분을 의미한다.

주요 역할

커널은 다음 세 가지 핵심 역할을 수행한다.

첫째, 보안이다. 커널은 컴퓨터 하드웨어와 프로세스의 보안을 책임진다.

둘째, 자원 관리이다. 한정된 시스템 자원(CPU, 메모리, 입출력 장치 등)을 효율적으로 관리하여 프로그램의 실행을 원활하게 한다. 특히 프로세스에 처리기를 할당하는 작업을 스케줄링이라고 한다.

셋째, 추상화이다. 같은 종류의 부품에 대해 다양한 하드웨어가 설계될 수 있기 때문에 하드웨어에 직접 접근하는 것은 복잡한 문제를 야기한다. 커널은 하드웨어 추상화 계층(HAL)을 통해 운영 체제의 복잡한 내부를 감추고 일관성 있는 인터페이스를 제공한다.

커널의 종류

커널은 설계 방식에 따라 여러 유형으로 분류된다.

  • 단일형 커널(monolithic kernel): 커널의 다양한 서비스와 높은 수준의 하드웨어 추상화를 하나의 주소 공간에 묶은 구조이다. 유지 보수가 어려운 편이나 성능이 뛰어나다. 리눅스, FreeBSD 등이 대표적이다.

  • 마이크로커널(microkernel): 하드웨어 추상화에 대한 간결하고 작은 집합만을 제공하고, 더 많은 기능은 사용자 공간의 서버(응용 소프트웨어)를 통해 제공한다. 안정성이 높으나 문맥 교환으로 인한 성능 저하가 발생할 수 있다. QNX, Minix 등이 대표적이다.

  • 혼합형 커널(hybrid kernel): 마이크로커널을 기본으로 하되, 성능 향상을 위해 일부 코드를 커널 공간에서 실행하도록 수정한 형태이다. 수정 마이크로커널이라고도 한다. macOS의 XNU 커널, Windows NT 계열이 이에 해당한다.

  • 엑소커널(exokernel): 낮은 수준의 하드웨어 접근을 위한 최소한의 추상화만 제공하며, 커널이 아닌 라이브러리가 단일형 커널 수준의 추상화를 제공한다.

  • 나노커널(nanokernel): 실질적으로 모든 서비스를 책임지는 매우 작은 크기의 커널이다.

역사

초창기 컴퓨터에서 운영 체제 커널은 필수적인 요소가 아니었다. 초기의 프로그램은 하드웨어 추상화나 운영 체제의 지원 없이 컴퓨터에 직접 불러들여 실행되었다. 이후 로더(loader)와 디버거(debugger) 같은 작은 프로그램들이 상주하면서 다른 프로그램으로 교체하거나 새로운 프로그램을 개발하는 데 유리하다는 사실이 알려졌고, 이들이 초기 운영 체제 커널의 기초가 되었다.

기타 용례

'커널'은 컴퓨팅 분야 외에도 다음과 같은 의미로 사용된다.

  • 수학: 추상대수학에서 0의 원상(preimage)으로 정의되는 특별한 단사 사상을 의미한다. 통계학에서도 커널이라는 용어가 사용된다.
  • 리눅스 커널: 오픈 소스 모놀리식 유닉스 계열 컴퓨터 운영 체제 커널로, 전 세계적으로 가장 널리 사용되는 커널 중 하나이다.
  • 인명: 커널 샌더스(Colonel Sanders)는 KFC를 창업한 미국의 기업인으로, '커널'은 '대령(Colonel)'의 발음 표기이다.
둘러보기

더 찾아볼 만한 주제

    전체 문서 보기