// Linux · Kernel · 리눅스커널 · OS · 하드웨어 · 운영체제
리눅스를 제대로 쓰려면 커널을 알아야 한다 — 구조부터 핵심 기능까지 한 번에 정리
리눅스를 쓴다면 커널을 알아야 한다
리눅스를 처음 배울 때 커널이라는 단어는 자주 등장하지만 실제로 어떤 역할을 하는지 설명하기 어렵다. 그냥 "OS의 핵심"이라고 외워두기엔 너무 추상적이다.
이 글에서는 Linux 커널이 무엇인지, 시스템 안에서 어떤 일을 하는지, 핵심 기능은 무엇인지를 처음 보는 사람도 이해할 수 있도록 정리한다.
1. 리눅스 커널(Linux Kernel)이란?
커널(Kernel)은 운영체제의 핵심 구성 요소다. 하드웨어와 소프트웨어 사이에서 다리 역할을 하며, 시스템 리소스를 관리하고 다른 소프트웨어에 필수 서비스를 제공한다.
💡
한 줄 정의
커널은 하드웨어와 소프트웨어 계층 사이의 다리 역할을 하며, 필수 서비스와 리소스 관리를 제공하고 시스템의 각 부분 간 통신을 담당한다.
사용자 애플리케이션 (User Space)
↕
Linux Kernel (커널 공간)
↕
Hardware (CPU · RAM · Disk · Network)
Linux 시스템이 부팅될 때 커널은 가장 먼저 실행되는 프로그램이다. 하드웨어를 초기화하고, 필수 시스템 구성 요소를 설정한 뒤, 나머지 서비스들이 동작할 수 있는 환경을 만든다.
2. Linux 커널의 핵심 기능
01
하드웨어 상호 작용
커널은 CPU, 메모리, 저장 장치, 네트워크 인터페이스 등 모든 하드웨어와 직접 통신한다. 응용 프로그램은 하드웨어를 직접 다루지 않고, 커널을 통해서만 접근한다. 하드웨어 상호 작용은 크게 6가지로 나뉜다.
| 분류 |
설명 |
| 장치 드라이버 |
OS가 하드웨어 장치와 통신할 수 있게 해주는 소프트웨어 모듈. 중개자 역할을 한다. |
| 하드웨어 추상화 |
상위 소프트웨어에서 하드웨어 세부 정보를 숨기는 추상화 계층. 앱이 하드웨어 종류에 상관없이 일관되게 동작할 수 있도록 한다. |
| 인터럽트 처리 |
하드웨어 장치가 보내는 인터럽트 신호를 받아 적절한 핸들러를 실행. 네트워크 패킷 수신, 디스크 I/O 완료, 키보드 입력 등에 즉시 반응한다. |
| I/O 작업 |
디스크 읽기/쓰기, 네트워크 패킷 송수신, 주변 장치 통신 등 모든 입출력을 API로 제공한다. |
| 전원 관리 |
CPU 주파수 스케일링, 시스템 절전 상태, 장치 전원 제어 등을 통해 에너지 소비를 최적화한다. |
| 버스 통신 |
PCI, USB, SATA 등 다양한 버스를 통해 연결된 장치를 식별하고 데이터 흐름을 관리한다. |
02
프로세스 관리
커널은 실행 중인 프로세스들을 관리한다. 어떤 프로세스가 언제 CPU를 사용할지 스케줄링하고, 메모리와 장치 접근 권한을 부여한다. 프로세스 간 통신(IPC)도 커널이 중재한다.
스케줄링│여러 프로세스가 CPU를 공평하게 나눠 쓸 수 있도록 실행 순서를 결정
리소스 할당│각 프로세스에 CPU 시간, 메모리, 장치 접근 권한을 분배
IPC│프로세스 간 데이터 공유와 통신을 안전하게 중재
03
메모리 관리
커널은 시스템 메모리를 각 프로세스에 할당하고 관리한다. 물리 메모리가 부족하면 디스크를 메모리처럼 활용하는 스왑(Swap)을 이용해 더 많은 프로세스가 동작할 수 있게 한다.
가상 메모리│각 프로세스에 독립된 메모리 공간을 제공. 서로 간섭하지 않는다.
메모리 페이징│메모리를 일정 크기(페이지) 단위로 나눠 효율적으로 관리
메모리 스와핑│물리 메모리 부족 시 디스크 공간을 임시 메모리로 활용
💡
서버에서 swap이 중요한 이유
메모리가 가득 차면 커널은 OOM Killer를 실행해 프로세스를 강제 종료한다. 스왑 공간을 적절히 설정해두면 메모리 부족 상황에서 시스템이 좀 더 안정적으로 버틸 수 있다. LVM으로 스왑 파티션을 나중에 늘리는 것도 가능하다.
04
파일시스템 지원
커널은 다양한 파일시스템을 지원해서 저장 장치에서 파일을 읽고 쓸 수 있게 한다. 파일 권한, 디렉터리 구조, 시스템 호출을 통한 파일 접근을 모두 커널이 처리한다.
지원 파일시스템 예시
리눅스 계열│ext4, xfs, btrfs, f2fs
네트워크 FS│NFS, CIFS/SMB, SSHFS
윈도우 호환│FAT32, NTFS, exFAT
가상 FS│proc, sysfs, tmpfs (메모리 기반)
05
시스템 호출 (System Call)
사용자 공간의 애플리케이션이 커널 기능을 요청하는 인터페이스다. 파일 읽기, 프로세스 생성, 네트워크 통신 등 모든 하드웨어 관련 작업은 시스템 호출을 통해 커널에 위임된다.
💡
왜 시스템 호출이 필요한가?
애플리케이션이 하드웨어에 직접 접근하면 다른 프로세스의 메모리를 침범하거나 시스템이 불안정해질 수 있다. 시스템 호출은 커널이 검증한 경로만 허용해서 보안과 안정성을 보장한다. strace 명령어로 프로세스가 어떤 시스템 호출을 사용하는지 추적할 수 있다.
06
네트워킹
커널은 TCP/IP, UDP, IPv4/IPv6 등 다양한 네트워크 프로토콜을 내장한 네트워킹 스택을 포함한다. 네트워크 연결, 라우팅, 패킷 필터링(netfilter/iptables)까지 전부 커널이 처리한다.
프로토콜 스택│TCP/IP, UDP, ICMP, IPv4/IPv6 등
소켓│애플리케이션이 네트워크 통신을 할 수 있는 인터페이스 제공
netfilter│패킷 필터링 프레임워크, iptables/nftables의 기반
07
보안
커널은 시스템 보안의 핵심 게이트키퍼다. 사용자 권한을 관리하고, 접근 제어 정책을 시행하며, 안전한 통신을 위한 메커니즘을 제공한다.
DAC│임의적 접근 제어. 파일 소유자가 권한(chmod, chown)을 설정
SELinux/AppArmor│강제적 접근 제어(MAC). 정책 기반으로 프로세스 권한을 제한
Namespace│프로세스 격리. Docker 컨테이너 기술의 기반
cgroups│프로세스별 리소스(CPU, 메모리) 사용량 제한
08
커널 개발 — 오픈소스 프로젝트
Linux 커널은 전 세계 수천 명의 개발자가 참여하는 오픈소스 프로젝트다. 1991년 Linus Torvalds가 처음 공개한 이후 지금까지 이어지고 있다.
🌐
소스 코드는
kernel.org에서 누구나 받아볼 수 있다. GPL v2 라이선스로 배포되며, 누구든 코드를 읽고 수정하고 개선 사항을 기여할 수 있다. Intel, Google, Red Hat 등 주요 기업들도 커널 개발에 적극 참여하고 있다.
3. 정리 — 커널이 하는 일 한눈에
| 기능 |
한 줄 요약 |
| 하드웨어 상호 작용 |
드라이버·추상화·인터럽트·I/O·전원·버스 통신 전담 |
| 프로세스 관리 |
CPU 스케줄링, 리소스 할당, 프로세스 간 통신 중재 |
| 메모리 관리 |
가상 메모리, 페이징, 스와핑으로 메모리 효율 최적화 |
| 파일시스템 |
ext4/xfs 등 다양한 파일시스템 지원, 파일 권한 관리 |
| 시스템 호출 |
앱과 커널 사이의 안전한 인터페이스 (read, write, fork 등) |
| 네트워킹 |
TCP/IP 스택, 소켓, 패킷 필터링(iptables) 내장 |
| 보안 |
접근 제어(DAC/MAC), Namespace, cgroups 기반 격리 |
// 정리
커널은 단순히 "OS의 핵심"이 아니다.
하드웨어와 소프트웨어 사이의 모든 것을 관장하는 중재자다.
다음 글에서는 커널 버전 확인 방법과 커널 업데이트 방법을 다룰 예정입니다.
Tags:
#Linux
#Kernel
#LinuxKernel
#BasicLinux
#운영체제
#HW
#리눅스입문