[OS] 커널의 종류

HenryHong·2022년 7월 27일

OS

목록 보기
3/14
post-thumbnail

종류와 특징

커널은 운영체제의 핵심으로, 프로세스·메모리·입출력·파일 시스템 등 시스템 자원을 관리하고, 사용자 프로그램이 하드웨어에 직접 접근하지 않고도 동작할 수 있도록 공통 인터페이스와 보호 장치를 제공한다.


1. 커널이 하는 일과 하드웨어 추상화

  • 현대 OS는 커널 모드(Kernel Mode)사용자 모드(User Mode)로 나뉘어 실행된다.
  • 사용자 프로그램은 파일 읽기/쓰기, 네트워크, 화면 출력, 프로세스 생성 등 대부분의 작업을 시스템 콜(System Call)을 통해 커널에 요청한다.
  • 커널은 하드웨어마다 다른 세부 구현을 감추고, 하드웨어 추상화(HAL, Hardware Abstraction Layer)를 제공한다.
    • 프로그래머는 디바이스 레지스터나 복잡한 명령어를 직접 다루지 않고, 드라이버·추상 API를 통해 일관된 방식으로 접근한다.

초기에는 프로그램이 OS 없이 바로 하드웨어 위에서 동작했고, 다른 프로그램을 실행하려면 기계를 다시 리셋하고 읽혀야 했다.
이 과정을 자동화·일반화한 것이 로더, 간단한 디버거이고, 이것들이 발전하면서 오늘날의 커널 구조가 만들어졌다.


2. 커널 구조의 네 가지 패턴

주요 커널 구조는 보통 다음 네 가지로 분류한다.

  • 모놀리딕 커널(Monolithic Kernel)
  • 마이크로 커널(Microkernel)
  • 하이브리드 커널(Hybrid Kernel)
  • 엑소커널(Exokernel)

각각의 목표는 “어디까지를 커널 내부에 둘 것인가”와 “성능 vs 안정성 vs 유연성”에 대한 선택이다.


3. 모놀리딕 커널 (Monolithic Kernel)

모놀리딕 커널은 커널 공간 안에 대부분의 OS 서비스가 하나의 큰 커널 이미지로 포함된 구조다.

3.1 특징

  • 프로세스 관리, 메모리 관리, 파일 시스템, 네트워킹, 디바이스 드라이버 등 주요 기능이 모두 커널 공간에서 동작한다.
  • 이 모듈들은 같은 주소 공간을 공유하기 때문에, 서로 함수 호출로 직접 통신하며 오버헤드가 낮다.
  • 코드가 밀집돼 있어, 한 모듈의 버그가 커널 전체를 크래시시킬 수 있다는 위험이 있다.

3.2 장점 / 단점

  • 장점
    • 내부 호출이 빠르고, 컨텍스트 스위칭 비용이 적어서 성능이 높다.
    • 코드가 안정화되면 전체 시스템 효율이 좋다.
  • 단점
    • 큰 하나의 커널 이미지라 수정·확장이 어렵고,
    • 버그 하나가 전체 시스템 다운으로 이어질 위험이 크다.

현대 모놀리딕 커널은 Loadable Kernel Module(동적 모듈)을 지원해, 런타임에 드라이버나 기능을 추가/제거하며 일정 수준의 유연성을 확보한다.

3.3 예시

  • 전통적인 UNIX 커널, BSD 계열
  • Linux 커널
  • Solaris 커널
  • AIX 커널
  • Windows NT 계열(오늘날 구현은 “하이브리드”로도 분류되지만, 구조적으로는 모놀리딕 특성이 강하다)

4. 마이크로 커널 (Microkernel)

마이크로 커널은 커널을 가능한 한 최소한의 기능만 담고 나머지는 사용자 공간 서버로 빼는 설계다.

4.1 특징

  • 커널이 직접 담당하는 기능을 스레드 관리, 주소 공간 관리, 프로세스 간 통신(IPC) 정도로 최소화한다.
  • 파일 시스템, 네트워크 스택, 디바이스 드라이버 같은 나머지 서비스는 사용자 공간 서버 프로세스로 동작한다.
  • OS 기능을 켜고 끄는 것이 비교적 쉽고, 각 서비스가 죽어도 커널까지 같이 죽지 않기 때문에 안정성·격리 측면에서 유리하다.

4.2 성능 이슈와 현대 접근

  • 구조상, 서비스 간 통신 시 커널을 거친 메시지 기반 IPC·컨텍스트 스위칭이 자주 발생해서, 초기 마이크로커널들은 성능 문제가 컸다.
  • 이후 L4 계열 등은 IPC 경로 최적화, 커널 최소화 등을 통해 많은 오버헤드를 줄였고, 실시간·임베디드 등 일부 영역에서 널리 쓰인다.

4.3 예시

  • MINIX, QNX, L4 계열, Mach 기반 시스템 등
  • Symbian OS, 일부 연구용/상용 RTOS 등

5. 하이브리드 커널 (Hybrid Kernel)

하이브리드 커널은 마이크로커널 아이디어를 가져오되, 성능이 민감한 일부 컴포넌트를 다시 커널 공간으로 끌어들인 구조다.

5.1 특징

  • 논리적으로는 “서비스 분리 + 메시지 기반 통신” 같은 마이크로커널 철학을 따르지만,
  • 성능이 중요한 파일 시스템, 드라이버, 일부 서버를 커널 주소 공간에 올려서 모놀리딕처럼 실행한다.
  • 설계 관점에서 “어떤 컴포넌트는 사용자 공간, 어떤 것은 커널 공간”에 둘지 선택하는 구조라고 볼 수 있다.

5.2 예시

  • Windows NT 계열 (NT, 2000, XP, 2003, 이후 버전)
    • Mach 스타일 요소 + Windows 고유 Executive를 커널 공간에 두는 하이브리드 형태.
  • macOS의 XNU 커널
    • Mach 3 기반에 BSD 커널 코드 일부를 같은 주소 공간에서 실행하여, 순수 마이크로커널 지연을 줄이도록 설계.
  • BeOS, ReactOS, 일부 NetWare 계열 등

6. 엑소커널 (Exokernel)

엑소커널은 “커널이 추상화를 강요하지 말고, 그냥 자원만 안전하게 나눠주자”는 급진적인 설계 철학이다.

6.1 특징

  • 전통적인 커널처럼 “파일 시스템, 프로세스, 소켓” 같은 고수준 추상화를 제공하지 않고,
    메모리, 디스크 블록, CPU 시간 등의 자원을 직접적으로 노출한다.
  • 커널은 “이 자원이 어느 애플리케이션에게 할당돼 있는가”와 같은 자원 보호/할당만 맡는다.
  • 실제 추상화(파일 시스템, 프로세스 모델 등)는 라이브러리 OS(libOS)가 담당한다.

6.2 장단점과 활용

  • 장점
    • 불필요한 추상화를 제거하고, 애플리케이션이 자신에게 맞는 방식으로 하드웨어를 활용해 성능을 극한까지 끌어올릴 수 있다.
  • 단점
    • 일반적인 애플리케이션 개발자 입장에서는 너무 저수준이라 복잡하다.
  • 현재는 주로 학계·연구용으로, 대규모 상용 시스템에서는 거의 사용되지 않는다.

7. 한 줄 정리

  • 모놀리딕 커널
    • “거의 다 커널 안에 넣고, 한 덩어리로 빠르게 돌리자.”
  • 마이크로 커널
    • “커널은 최소한만, 나머지는 사용자 공간 서버로 빼서 안정성과 유연성을 높이자.”
  • 하이브리드 커널
    • “마이크로커널 철학을 따르되, 성능이 중요한 건 커널 안으로 끌어들여 적당히 섞자.”
  • 엑소커널
    • “추상화는 애플리케이션이 선택하게 하고, 커널은 자원 할당/보호만 하자.”
profile
주니어 백엔드 개발자

0개의 댓글