리눅스 커널(Linux kernel)은 리눅스 운영체제의 핵심 구성 요소로, 하드웨어와 소프트웨어 사이에서 자원을 관리하고 시스템 서비스를 제공하는 오픈소스 모놀리식 커널이다.[1] 1991년 핀란드 출신의 대학원생 리누스 토르발스(Linus Torvalds)가 개발을 시작하였으며, GNU 일반 공중 사용 허가서 버전 2(GPLv2)로 배포된다. 오늘날 리눅스 커널은 서버, 모바일, 임베디드 기기, 슈퍼컴퓨터에 이르기까지 세계에서 가장 광범위하게 사용되는 커널로 자리잡았다. 안드로이드 (운영체제) 역시 리눅스 커널을 기반으로 동작하며, AOSP 프로젝트를 통해 오픈소스 생태계와 긴밀하게 연결되어 있다.

1. 역사

리누스 토르발스는 1991년 8월 25일 유즈넷 뉴스그룹에 리눅스 개발 계획을 처음 공개하였고, 같은 해 9월 17일 버전 0.01을 공식 배포하였다.[2] 초기에는 인텔 80386 아키텍처 전용으로 작성되었으며, 태스크 스위처와 터미널 드라이버가 주된 구성이었다. "취미로 만드는 작은 프로젝트"라고 스스로 소개했던 이 커널은 GNU 생태계와 결합하면서 빠르게 성장하였다.

라이선스 측면에서 초기 리눅스는 상업적 이용을 금지하는 독자적 허가서를 따랐다. 1992년 2월 버전 0.12부터 GPLv2로 전환하였으며, 토르발스는 이를 "내가 내린 가장 훌륭한 결정"이라고 회고하였다.[3] GPLv2 채택은 GNU 프로젝트와의 협력을 촉진하여 완전한 자유 운영체제 생태계 형성으로 이어졌다.

주요 버전 흐름은 다음과 같다.

2025년 도쿄에서 열린 커널 메인테이너 서밋에서는 Rust 언어 사용이 더 이상 실험적이지 않음을 공식 선언하였으며, Greg Kroah-Hartman 메인테이너는 "Rust로 작성된 드라이버가 C 버전보다 안전성이 입증되고 있다"고 밝혔다.[4]

2. 아키텍처: 모놀리식 커널과 모듈

리눅스 커널은 모놀리식 커널(monolithic kernel) 방식을 채택하고 있다.[1] 이는 파일 시스템, 디바이스 드라이버, 메모리 관리, 프로세스 스케줄링 등 운영체제의 핵심 기능이 모두 단일 커널 공간(kernel space)에서 실행됨을 의미한다. 모놀리식 구조는 서브시스템 간 직접 함수 호출이 가능하므로 마이크로커널 방식보다 컨텍스트 전환 오버헤드가 적고 성능이 높다.

그러나 리눅스는 "순수한" 모놀리식 커널이 아니다. 커널 모듈(loadable kernel module, LKM) 시스템을 통해 디바이스 드라이버, 파일 시스템 지원, 네트워크 프로토콜 등을 컴파일 없이 실행 중에 동적으로 적재(load)하거나 제거(unload)할 수 있다.[1] 사용자는 modprobe, insmod, rmmod 명령으로 모듈을 관리한다.

이 설계 덕분에 리눅스는 모놀리식 커널의 성능과 마이크로커널의 유연성을 함께 확보하였다. 마이크로커널 지지자였던 앤드루 타넨바움(Andrew Tanenbaum)과 토르발스 사이의 1992년 논쟁은 운영체제 설계 역사에서 유명한 사례로 남아 있다.

3. 핵심 서브시스템

리눅스 커널은 프로세스 스케줄링, 메모리 관리, 파일 시스템, 네트워킹이라는 네 가지 핵심 서브시스템으로 구성된다.[1]

3.1 프로세스 및 스케줄링

리눅스 커널은 각 실행 흐름을 태스크(task)로 표현하며, task_struct 구조체에 PID, 상태, 메모리 맵, 파일 디스크립터 등을 저장한다.[5] 스케줄러는 공정 분배(Completely Fair Scheduler, CFS)를 기본으로 사용하며, 각 태스크의 가상 런타임(vruntime)을 기준으로 다음 실행 프로세스를 결정한다. 실시간 워크로드를 위해 SCHED_FIFO, SCHED_RR 정책도 지원한다.

네임스페이스(namespaces)와 컨트롤 그룹(cgroups)은 컨테이너 격리의 토대를 이룬다.[7] 네임스페이스는 프로세스가 볼 수 있는 시스템 자원의 범위를 제한하고, cgroups는 CPU·메모리·네트워크 대역폭 등 자원 소비량의 상한을 설정한다. Docker, Kubernetes 같은 컨테이너 플랫폼이 이 두 기능에 직접 의존한다.

3.2 메모리 관리

리눅스의 메모리 관리자는 물리 메모리를 기본 4 KB 크기의 페이지(page) 단위로 관리한다.[6] 각 프로세스는 독립된 가상 주소 공간을 가지며, MMU(Memory Management Unit)와 페이지 테이블을 통해 물리 메모리로 매핑된다. 스왑(swap) 기능을 통해 물리 RAM보다 큰 주소 공간을 운용할 수 있다.

Huge Pages(2 MB, 1 GB 단위)는 TLB 미스를 줄여 데이터베이스처럼 대용량 메모리를 다루는 워크로드의 성능을 높인다.[6] OOM Killer(Out-of-Memory Killer)는 메모리 고갈 시 우선순위 점수를 기준으로 프로세스를 강제 종료하여 시스템을 보호한다.

3.3 파일 시스템

리눅스는 VFS(Virtual File System) 추상화 계층을 통해 다양한 파일 시스템을 단일 인터페이스로 지원한다.[1] 기본 로컬 파일 시스템으로는 ext4, Btrfs, XFS가 널리 사용된다.

  • ext4: 저널링을 지원하는 성숙한 파일 시스템으로, 대부분의 리눅스 배포판에서 기본 선택지다.
  • Btrfs: 스냅샷, 압축, 내장 RAID, 서브볼륨을 지원하는 차세대 파일 시스템이다.
  • XFS: 고성능 병렬 I/O에 최적화되어 있으며, Red Hat Enterprise Linux의 기본 파일 시스템이다.

원격 파일 시스템(NFS, CIFS/SMB)과 의사 파일 시스템(procfs, sysfs, tmpfs)도 VFS를 통해 투명하게 통합된다.

3.4 네트워킹

리눅스 네트워크 스택은 소켓 API, 프로토콜 계층(TCP/IP, UDP, IPv6), 넷필터(netfilter) 프레임워크로 구성된다.[1] 넷필터는 iptables, nftables, eBPF 기반 규칙 체인을 통해 패킷 필터링, NAT, 연결 추적을 수행한다.

eBPF(extended Berkeley Packet Filter)는 커널을 재컴파일하지 않고 커널 공간에서 안전하게 실행되는 프로그램을 주입할 수 있는 기술로, 2010년대 중반 이후 네트워크 관찰, 보안 정책, 성능 분석 분야에서 혁신적인 도구로 부상하였다.

4. 보안 모델

리눅스 커널은 전통적인 임의 접근 제어(DAC, Discretionary Access Control) 위에 LSM(Linux Security Modules) 프레임워크를 통해 강제 접근 제어(MAC, Mandatory Access Control)를 추가로 지원한다.[7]

SELinux(Security-Enhanced Linux)는 미국 NSA가 개발하고 Red Hat이 주도적으로 유지보수하는 대표적 LSM 구현이다.[7] SELinux는 레이블 기반 정책을 통해 프로세스가 접근할 수 있는 파일, 소켓, 디바이스를 세밀하게 제한하며, 컨테이너 환경에서 호스트를 격리하는 핵심 방어 수단이다. AppArmor는 경로 기반 정책으로 같은 목적을 달성하는 대안으로, Ubuntu·SUSE 계열 배포판이 기본 채택한다.

Seccomp(Secure Computing Mode)는 프로세스가 허용된 시스템 콜 집합만 호출하도록 제한하여 공격 표면을 줄인다. 커널 자가 보호 기능으로는 KASLR(커널 주소 공간 배치 무작위화), SMEP/SMAP(커널/사용자 공간 메모리 접근 방지), 스택 카나리 등이 있다.

Android framework는 리눅스 커널의 보안 기능을 활용하여 애플리케이션 샌드박스를 구현한다.[7]

5. 개발 모델과 GPL 라이선스

리눅스 커널은 분산 버전 관리 시스템 Git을 통해 개발된다. 토르발스가 메인 트리를 유지하며, 수십 개의 하위 트리 메인테이너들이 각 서브시스템을 담당한다.[1] 새 릴리스는 약 9~10주 주기로 출시되며, 첫 2주가 병합 창(merge window), 이후 여러 주가 RC(Release Candidate) 단계다.

2025년 기준으로 매 커널 릴리스에는 약 1,000~2,000명의 개발자가 기여하며, 최대 기여 기업으로는 Intel, AMD, Google, Red Hat, Meta 등이 있다. 소스 코드는 수천만 줄에 달하며, 2025년에는 Rust 언어로 작성된 드라이버와 내부 추상화 계층이 본격적으로 축적되기 시작하였다.[4]

GNU GPL 버전 2는 리눅스 커널의 배포를 규율하는 핵심 라이선스다. GPLv2의 카피레프트(copyleft) 조항은 커널을 수정하거나 파생물을 배포하는 주체가 소스 코드를 공개하도록 의무화한다.[3] 2007년 GPLv3 공개 이후 일부에서 버전 업그레이드를 제안하였으나, 토르발스를 비롯한 주요 개발자 다수가 기여자 합의 부재와 특허 조항 차이를 이유로 GPLv2 유지를 결정하였다.

6. 배포 현황과 영향

리눅스 커널은 서버 시장(웹 서버 약 95% 이상), 슈퍼컴퓨터(Top500 순위 100%), 안드로이드 스마트폰, 라우터·IoT 기기, 항공우주 분야까지 광범위하게 사용된다.[1] macOS가 BSD 계열 XNU 커널을 사용하는 것과 달리 리눅스 커널은 완전한 오픈소스 생태계 위에서 발전하고 있다.

리눅스 커널의 성공은 분산 협업 소프트웨어 개발의 가능성을 증명하였고, Git이라는 버전 관리 도구의 탄생으로도 이어졌다. Git은 원래 리눅스 커널 개발 과정에서 토르발스가 2005년 직접 제작하였다.[1]

7. 관련 문서

  • 안드로이드 (운영체제) — 리눅스 커널 위에서 동작하는 모바일 운영체제
  • AOSP — 안드로이드 오픈소스 프로젝트, 리눅스 커널 커스터마이징 사례
  • Android framework — 리눅스 커널 보안 기능을 활용하는 안드로이드 상위 계층
  • SELinux — 리눅스 커널 LSM 프레임워크의 대표적 구현
  • macOS — XNU 커널 기반의 비교 대상 운영체제
  • 오픈소스 — 리눅스 커널이 따르는 소프트웨어 공개 철학

8. 인용 및 각주

[1] The Linux Kernel documentation. "Admin Guide." Ddocs.kernel.org(새 탭에서 열림)

[2] Red Hat Blog. "Celebrating 30 years of the Linux kernel and the GPLv2." Wwww.redhat.com(새 탭에서 열림)

[3] Red Hat Blog. "Celebrating 30 years of the Linux kernel and the GPLv2." Wwww.redhat.com(새 탭에서 열림)

[4] Phoronix. "Linux Kernel Highlights For 2025: Schedulers, Rust & Torvalds' Commentary." Wwww.phoronix.com(새 탭에서 열림)

[5] IBM Developer. "Anatomy of Linux process management." Ddeveloper.ibm.com(새 탭에서 열림)

[6] The Linux Kernel documentation. "Memory Management." Ddocs.kernel.org(새 탭에서 열림)

[7] Medium. "Must know — Container Security Constructs: Namespace, SecComp, Control Groups, SELinux." Sshweta-vohra.medium.com(새 탭에서 열림)