운영체제 커널의 구조와 자원 관리 방식

운영체제 커널이 프로세스·메모리·파일 시스템·장치를 관리하는 방식과 커널 공간, 아키텍처 유형을 정리합니다.

2026-08-14 · 최초 발행 2026-01-12

하드웨어 접근을 통제하는 운영체제의 중심

커널은 CPU, 메모리, 디스크, 네트워크 같은 하드웨어 자원을 관리하고, 응용 프로그램이 필요한 시스템 서비스를 받을 수 있게 하는 운영체제의 핵심 구성 요소다. 하드웨어와 소프트웨어 사이의 인터페이스로서 자원을 할당하고 제어하며, 서로 다른 하드웨어의 차이를 감춘 일관된 인터페이스를 제공한다.

이 추상화 계층 덕분에 응용 프로그램의 이식성이 높아진다. 동시에 커널은 프로세스를 격리하고 권한을 관리하며 불법 접근을 차단한다.

커널은 Kernel Mode(Ring 0)에서 실행된다. 이 모드에서는 모든 명령어를 실행하고 전체 메모리에 접근할 수 있다. 시스템 부팅과 함께 로드되어 종료될 때까지 메모리에 상주하므로, 커널 오류는 시스템 전체 오류로 이어질 수 있다.

Kernel SpaceUser SpaceKernel 주요 기능응용 프로그램 1응용 프로그램 2응용 프로그램 3ShellSystem Call Interface프로세스관리메모리관리파일시스템관리네트워크관리장치드라이버하드웨어(CPU, 메모리, 디스크,네트워크)

프로세스부터 네트워크까지 커널이 맡는 일

프로세스 관리에서는 fork(), exec(), exit()에 따른 생성과 종료를 처리하고 프로세스 테이블 및 PCB(Process Control Block)를 유지한다. CPU 시간 할당, 우선순위 관리, Context Switching도 이 범위에 속한다. 프로세스 간에는 파이프, 메시지 큐, 공유 메모리로 통신할 수 있으며, 세마포어와 뮤텍스는 동기화에 사용된다. Deadlock 방지와 Race Condition 해결 역시 커널이 다루는 문제다.

메모리 관리자는 프로세스별 공간을 배정하고 힙, 스택, 동적 메모리 할당을 관리한다. 가상 메모리는 페이징(Paging), 세그멘테이션(Segmentation), 페이지 테이블을 기반으로 동작한다. 프로세스 간 메모리 격리와 접근 권한 관리가 보호를 제공하며, 물리 메모리가 부족한 경우에는 디스크를 사용하는 Swap과 페이지 교체 알고리즘이 관여한다.

파일 시스템 관리의 대상은 파일과 디렉토리의 생성, 삭제, 읽기, 쓰기이며, 디렉토리 구조와 inode, superblock도 관리한다. Linux에서는 ext4, XFS, Btrfs가, Windows에서는 NTFS, FAT32가, macOS에서는 APFS, HFS+가 파일 시스템 유형으로 제시된다. 버퍼 캐시는 자주 접근하는 데이터를 캐싱해 디스크 I/O 성능을 높인다.

장치 드라이버는 장치를 초기화하고 입출력을 제어하며 인터럽트를 처리한다. 디스크와 USB는 블록 장치, 키보드·마우스·시리얼 포트는 문자 장치, 이더넷과 Wi-Fi는 네트워크 장치로 추상화된다.

네트워크 기능은 TCP/IP 프로토콜 구현과 소켓 인터페이스 제공을 포함한다. 송수신 버퍼 관리, 라우팅, NAT도 패킷 처리 범위에 있다.

사용자 프로그램은 시스템 콜을 통해 커널에 요청을 전달한다. open(), read(), write(), close()는 파일 관련 요청이고, fork(), exec(), wait()는 프로세스 제어에 쓰인다. socket(), bind(), listen()은 네트워크 요청의 예다. 이 호출 과정에서는 User Mode에서 Kernel Mode로 전환되고 Trap 또는 Exception이 처리된다.

설계에 따라 달라지는 커널의 경계

단일 주소 공간에 기능을 넣는 Monolithic Kernel

Monolithic Kernel은 프로세스 관리, 메모리 관리, 파일 시스템, 장치 드라이버를 비롯한 커널 기능을 단일 주소 공간에서 실행한다. 동적으로 로딩할 수 있는 커널 모듈을 통한 모듈화도 지원한다.

컴포넌트 간 직접 호출과 빠른 시스템 콜 처리가 성능상의 장점이다. 반면 코드 크기와 복잡성이 커지고, 드라이버 오류가 시스템 전체 충돌을 유발할 수 있으며 유지보수도 어려워진다. Linux Kernel과 UNIX(BSD, Solaris)가 예시다.

Kernel Space (Monolithic Kernel)User Space응용 프로그램프로세스 관리메모리 관리파일 시스템장치 드라이버네트워크 스택하드웨어

최소 기능만 남기는 Microkernel

Microkernel은 프로세스 관리, IPC, 기본 메모리 관리처럼 필요한 기능만 커널 공간에서 실행한다. 파일 시스템과 장치 드라이버는 User Space 서버로 분리된다.

서버 충돌이 시스템 전체에 미치는 영향을 최소화할 수 있어 안정성이 높고, 모듈화로 유지보수가 용이하다. 최소 권한 원칙 측면에서도 이점이 있다. 다만 User-Kernel 모드 전환이 빈번해지고 IPC 오버헤드가 발생할 수 있다. Minix, 실시간 OS인 QNX, L4 Family가 예시에 해당한다.

Kernel Space (Microkernel)User Space응용 프로그램파일 시스템서버장치 드라이버서버네트워크서버프로세스 관리IPC기본 메모리관리하드웨어

성능과 분리를 함께 고려하는 Hybrid Kernel

Hybrid Kernel은 Monolithic Kernel과 Microkernel의 장점을 결합한 방식이다. 핵심 서비스는 커널 공간에 두고 일부 서비스는 User Space에 둔다. 성능과 안정성 사이의 균형, 그리고 유연성이 장점이지만 구조가 복잡해진다.

Windows NT Kernel과 macOS XNU가 이 유형에 속한다.

추상화를 최소화하는 Exokernel

Exokernel은 추상화를 최소화하고 응용 프로그램이 하드웨어를 직접 관리하게 하는 구조다. 추상화는 Library OS가 제공한다. 최대 성능을 얻을 수 있지만 개발 복잡도가 높고 실험적 단계라는 제약이 있다.

주소 공간을 나누고 권한을 제한하는 이유

Kernel Space는 x86 32-bit에서 0xC0000000 ~ 0xFFFFFFFF처럼 상위 메모리 주소에 배치될 수 있으며, 커널 코드·데이터·스택이 위치한다. Kernel Mode에서만 접근할 수 있으므로 사용자 프로그램은 이 영역에 접근할 수 없다.

User Space는 0x00000000 ~ 0xBFFFFFFF처럼 하위 메모리 주소를 사용하며, 응용 프로그램 코드와 데이터, 힙, 스택이 배치된다. User Mode에서 접근하고 프로세스별로 독립적인 주소 공간을 가진다.

이 분리는 MMU(Memory Management Unit)와 페이지 테이블 권한 비트로 보호된다. Protection Ring에서는 Ring 0이 가장 높은 권한의 Kernel Mode이고, Ring 3은 가장 낮은 권한의 User Mode다.

계층과 서브시스템으로 보는 커널 내부

운영체제 구조는 Layer 0의 하드웨어(CPU, 메모리, 디스크, 네트워크) 위에 Layer 1의 Kernel이 놓이고, 그 위에 Layer 2의 System Call Interface가 위치한다. Layer 3에서는 응용 프로그램과 Shell이 실행된다.

커널 내부에서 스케줄러는 Linux의 CFS(Completely Fair Scheduler)와 구형 Linux의 O(1) Scheduler를 포함한다. 메모리 관리자는 물리 메모리 할당에 Buddy System을, 커널 객체 할당에 Slab Allocator를 사용한다. VFS(Virtual File System)는 파일 시스템 추상화 계층으로 ext4, XFS, NTFS 등을 지원한다. 네트워크 스택은 TCP/IP, UDP, ICMP와 Socket API를 제공한다.

특권 모드 전환이 일어나는 시점

Kernel Mode에서는 모든 명령어 실행, 전체 메모리 접근, I/O 포트 직접 접근이 가능하다. 커널 코드와 장치 드라이버가 이 모드에서 실행된다.

User Mode의 응용 프로그램과 사용자 라이브러리는 특권 명령어를 실행할 수 없고 Kernel Space나 I/O 포트에 직접 접근할 수 없다.

System Call, 인터럽트, Exception은 User Mode에서 Kernel Mode로 전환되는 계기다. 시스템 콜이 반환되거나 인터럽트 처리가 완료되면 실행은 다시 User Mode로 돌아간다.

운영체제에서 사용되는 커널

Linux Kernel은 모듈을 지원하는 Monolithic Kernel이다. 오픈 소스이며 GPL 라이선스를 사용하고 광범위한 하드웨어를 지원한다. 2024년 기준 버전은 5.x, 6.x이며, CFS 스케줄러, VFS(Virtual File System), Netfilter(방화벽)가 주요 서브시스템으로 제시된다.

Windows NT Kernel은 Hybrid Kernel이다. HAL(Hardware Abstraction Layer), Executive(커널 서비스), Microkernel-like 구조와 성능 최적화가 특징이며 Windows NT 3.1 ~ Windows 11에 걸쳐 사용된다.

macOS XNU Kernel도 Hybrid Kernel이다. Mach Microkernel은 IPC와 메모리 관리를 맡고, BSD는 파일 시스템·네트워크·POSIX를 제공하며, IOKit은 장치 드라이버 프레임워크다. XNU 기반 오픈소스 OS인 Darwin도 있다.

커널이 더 이상 안전하게 실행될 수 없을 때

Kernel Panic은 커널 버그, 하드웨어 오류, 잘못된 드라이버, 메모리 손상 같은 심각한 오류로 발생한다. 커널이 안전하게 계속 실행될 수 없는 상태에서는 시스템이 중단된다.

Linux에서는 "Kernel panic - not syncing" 메시지와 시스템 멈춤으로 나타날 수 있다. Windows에서는 BSOD(Blue Screen of Death)와 STOP 에러 코드가 표시된다. macOS는 "You need to restart your computer" 메시지와 함께 다국어로 재시작을 요구한다.

대응 시에는 Linux의 /var/log/kern.log를 확인하고 Windows에서는 덤프 파일을 분석한다. 문제 드라이버는 제거하거나 업데이트하며, memtest86을 이용한 메모리 테스트와 디스크 점검도 수행한다.

운영체제커널시스템 콜메모리 관리프로세스 관리