커널

운영체제의 핵심 구성 요소로, 하드웨어와 소프트웨어 사이에서 자원 관리와 추상화를 담당하는 프로그램입니다.

커널의 역할

역할설명
프로세스 관리프로세스 생성·종료·스케줄링, 문맥 교환
메모리 관리가상 메모리, 페이징, 메모리 할당·해제
파일 시스템 관리파일 읽기·쓰기, 디렉토리 구조, 권한 관리
장치 관리디바이스 드라이버를 통한 하드웨어 제어
시스템 콜 처리사용자 프로세스의 커널 기능 요청 처리
보안·보호프로세스 간 메모리 격리, 접근 권한 제어

커널의 위치

┌──────────────────────────┐
│      응용 프로그램         │  ← 사용자 모드
│   (브라우저, IDE, 게임)    │
├──────── 시스템 콜 ─────────┤
│         커널              │  ← 커널 모드
│  (프로세스·메모리·파일·장치) │
├───────────────────────────┤
│     하드웨어               │
│  (CPU, RAM, Disk, NIC)    │
└──────────────────────────┘

커널 구조 유형

유형특징장점단점예시
모놀리식 커널모든 서비스가 하나의 커널 공간에서 실행빠른 성능 (함수 호출)하나의 버그가 전체 시스템에 영향Linux, Unix
마이크로 커널최소 기능만 커널에, 나머지는 사용자 공간 서버로 분리안정성·모듈성 높음잦은 IPC로 성능 저하Minix, QNX
하이브리드 커널모놀리식 + 마이크로 커널 절충성능과 안정성 균형구조가 복잡Windows NT, macOS(XNU)
[모놀리식 커널]              [마이크로 커널]
┌──────────────┐          ┌──────────────────────┐
│   사용자 공간  │          │ 파일서버  디바이스서버  │ ← 사용자 공간
├──────────────┤          ├──────────────────────┤
│ 파일 시스템    │          │     IPC, 스케줄링      │ ← 커널 공간
│ 디바이스 드라이버│          │     메모리 관리        │
│ 메모리 관리    │          └──────────────────────┘
│ 스케줄링      │
└──────────────┘

사용자 모드 vs 커널 모드

커널은 커널 모드에서 동작하며, 일반 프로그램은 사용자 모드에서 실행됩니다. 사용자 프로그램이 커널 기능을 쓰려면 시스템 콜을 통해 커널 모드로 전환해야 합니다.

// Java에서 파일을 열면 JVM 내부적으로 커널에 시스템 콜 요청
FileInputStream fis = new FileInputStream("/tmp/data.txt");
// Java 코드(사용자 모드) → JVM → 시스템 콜 → 커널(커널 모드)이 디스크에서 데이터 읽기
int data = fis.read();

대표적인 커널 비교

항목LinuxWindows NTmacOS (XNU)
구조모놀리식 (모듈 지원)하이브리드하이브리드 (Mach + BSD)
오픈소스OX부분 공개
모듈 적재런타임 모듈 로딩 가능드라이버 로딩kext / DriverKit

CSLOG에서 보기