본문 바로가기
경제

임베디드기사 실기 20부작 4편 Linux Kernel은 무엇을 관리하는가?

by 프레스러쉬 2026. 9. 14.

임베디드기사 실기 20부작 4편
Linux Kernel은 무엇을 관리하는가?

프로세스 · 메모리 · 파일시스템 · 네트워크 · 디바이스 드라이버를 하나의 그림으로 이해하기

이번 편에서 꼭 잡아야 할 핵심

앞선 2편과 3편에서는 전원이 들어온 뒤 Startup Code가 실행 환경을 만들고, Bootloader가 커널 이미지를 메모리에 적재한 뒤 커널로 제어권을 넘기는 과정을 살펴보았습니다. 이제부터는 그 다음 단계입니다. 커널이 실행되기 시작하면 도대체 무엇을 관리할까요?

이번 편에서는 통합 학습교재의 핵심 분류인 프로세스 관리, 메모리 관리, 파일시스템 관리, 네트워크 관리, 디바이스 드라이버 관리를 중심으로 Linux Kernel의 역할을 한 장의 구조처럼 연결해 보겠습니다. 임베디드기사 실기에서는 각 항목이 따로 떨어져 나오는 경우가 많지만, 실제로는 모두 커널 안에서 서로 연결되어 움직입니다.

1. 운영체제와 Kernel의 관계

운영체제(OS)는 하드웨어 자원을 제어하고 응용 프로그램이 안정적으로 실행될 수 있도록 환경을 제공하는 시스템 소프트웨어입니다. 그 중심에 있는 것이 Kernel입니다.

사용자 프로그램은 보통 CPU, RAM, 디스크, 네트워크 카드, UART, SPI 같은 하드웨어를 마음대로 직접 제어하지 않습니다. 대신 운영체제가 제공하는 표준 인터페이스를 통해 자원을 요청하고, 실제 제어는 Kernel이 중개합니다.

시험 암기 한 줄
Kernel은 프로세스, 메모리, 파일시스템, 네트워크, 디바이스 드라이버 등 운영체제의 핵심 자원을 관리한다.
2. 전체 구조를 먼저 한눈에 보기
[ User Application ]
        │
        │ System Call / Library API
        ▼
[         Linux Kernel          ]
 ├─ Process Management
 ├─ Memory Management
 ├─ File System Management
 ├─ Network Management
 └─ Device Driver Management
        │
        ▼
[ CPU / RAM / Storage / NIC / GPIO / UART / SPI ... ]

이 그림을 먼저 기억하면 실기 문제에서 용어가 바뀌어도 방향을 잃지 않습니다. 응용 프로그램은 위쪽, 하드웨어는 아래쪽, Kernel은 그 사이의 관리자라고 이해하면 됩니다.

3. 프로세스 관리 - 누가 CPU를 언제 사용할 것인가?

프로세스 관리는 실행 중인 프로그램과 스레드를 관리하는 영역입니다. 여러 프로그램이 동시에 실행되는 것처럼 보이지만 CPU 자원은 한정되어 있으므로, Kernel은 어떤 작업에 CPU 시간을 줄지 결정해야 합니다.

통합 학습자료에서는 프로세스 관리의 핵심으로 프로세스/스레드의 생명주기, PCB(Process Control Block), CPU 스케줄링, 동기화와 상호배제를 제시합니다.

PCB는 프로세스의 상태를 추적하기 위한 대표 자료구조입니다. 임베디드기사 실기에서는 PCB 자체가 단답형으로 나오거나, Program Counter·Register·Process State 같은 저장 정보를 묻는 형태로 변형될 수 있습니다.

연결해서 외우기
Process → PCB → Scheduling → Mutex/Semaphore
4. 메모리 관리 - RAM은 단순한 빈 공간이 아니다

메모리 관리는 RAM의 할당과 회수, 그리고 프로세스별 주소 공간을 관리하는 기능입니다. 사용자 프로그램 입장에서는 각자 독립된 메모리를 사용하는 것처럼 보이지만, 실제 물리 RAM은 여러 프로세스와 Kernel이 공유합니다.

자료에서는 가상 메모리와 Paging, MMU를 통한 논리주소-물리주소 변환, Code/Data/Heap/Stack 영역, 페이지 교체 알고리즘을 핵심으로 정리합니다.

실기에서는 이 영역이 매우 다양한 형태로 출제됩니다. Best-Fit 같은 메모리 할당 문제, Paging과 Segmentation 비교, ZONE_NORMAL, Working Set, Thrashing처럼 서로 다른 문제처럼 보이는 개념들이 사실 모두 메모리 관리라는 큰 틀 안에 있습니다.

시험 포인트
Paging = 고정 크기 단위 관리
Segmentation = 논리적 가변 크기 단위 관리
Thrashing = Page Fault가 과도해 실제 실행보다 Page 교체에 많은 시간을 쓰는 현상
5. 파일시스템 관리 - 저장장치를 '파일'로 보이게 만드는 계층

SSD, eMMC, SD Card, NAND Flash와 같은 저장장치는 물리적으로는 Sector, Block, Page 등의 단위로 동작합니다. 하지만 응용 프로그램은 보통 그 구조를 직접 다루지 않고 파일 이름과 디렉터리 구조를 이용합니다.

Kernel의 파일시스템 관리 영역은 이러한 저장장치를 계층적인 파일/디렉터리 구조로 추상화하고, 접근 권한과 공간 할당을 관리합니다. 자료에서는 Permission, Journaling, 무결성, 공간 할당을 주요 기능으로 다룹니다.

임베디드기사 실기에서는 /var, /tmp, /sbin 같은 Linux 디렉터리, JFFS2, Btrfs, MTD, MBR 등이 별개의 문제로 나올 수 있습니다. 이 역시 큰 틀에서는 저장장치와 파일시스템 관리라고 묶어 두면 기억하기 쉬워집니다.

6. 네트워크 관리 - TCP/IP와 Socket도 Kernel의 일이다

네트워크 관리 영역에서는 외부 시스템과 통신하기 위한 프로토콜 스택을 처리합니다. 통합 자료에서는 TCP/IP, UDP, Socket Interface를 주요 요소로 정리하고 있습니다.

응용 프로그램은 socket(), bind(), listen(), accept()와 같은 함수를 호출하지만, 실제 패킷 처리와 프로토콜 상태 관리는 Kernel이 담당합니다.

따라서 실기에서 Socket 호출 순서나 TCP 3-Way Handshake가 출제되더라도 단순 암기에 머물지 말고, '응용 프로그램이 Kernel의 네트워크 기능을 사용하는 과정'이라고 연결해 이해하면 훨씬 오래 기억할 수 있습니다.

7. 디바이스 드라이버 관리 - Kernel과 H/W의 가장 직접적인 접점

임베디드 분야에서 특히 중요한 부분입니다. 센서, 모터, GPIO, SPI, UART, ADC, FPGA와 같은 하드웨어는 제각각 제어 방식이 다릅니다. Kernel은 이들을 Device Driver를 통해 표준적인 방식으로 다룰 수 있도록 추상화합니다.

자료에서는 블록 장치, 문자 장치, 네트워크 장치와 같은 하드웨어 추상화뿐 아니라 Buffering, Caching, DMA, Interrupt Service Routine 처리까지 드라이버 관리 영역으로 설명합니다.

이 부분은 앞으로 나올 mknod, register_chrdev(), ioctl(), module_init(), insmod, Interrupt와 자연스럽게 연결됩니다.

연결 구조
User App → open/read/write/ioctl → Device Driver → Register/DMA/Interrupt → Hardware
8. 다섯 영역은 실제로 서로 분리되어 있지 않다

시험 공부를 하다 보면 프로세스, 메모리, 파일시스템, 네트워크, 드라이버를 각각 외우게 됩니다. 하지만 실제 시스템에서는 하나의 동작에 여러 영역이 동시에 관여합니다.

예를 들어 센서 값을 네트워크로 전송하는 프로그램을 생각해 보겠습니다. 프로세스가 CPU를 할당받아 실행되고, 메모리에 Buffer를 확보하고, Device Driver를 통해 SPI 센서 값을 읽고, Socket을 이용해 TCP/IP Stack으로 데이터를 전송하고, 필요하면 파일시스템에 로그까지 저장합니다.

즉, Kernel의 다섯 관리 영역은 각각 독립된 섬이 아니라 하나의 임베디드 시스템을 운영하는 연결된 관리 체계입니다.

9. 실기시험에서는 어떻게 물어볼까?

예상문제 1. 운영체제 Kernel의 주요 관리 기능을 5가지 쓰시오.

모범답안
프로세스 관리, 메모리 관리, 파일시스템 관리, 네트워크 관리, 디바이스 드라이버 관리.

예상문제 2. 프로세스 상태와 Program Counter, CPU Register 등의 정보를 저장하는 자료구조는 무엇인가?

정답
PCB(Process Control Block)

예상문제 3. 응용 프로그램이 하드웨어를 직접 접근하지 않고 Kernel을 통해 제어하도록 하는 구성요소는 무엇인가?

정답
Device Driver
10. 시험 직전 초압축 암기

Kernel = P-M-F-N-D라고 기억해도 좋습니다.

Process / Memory / File System / Network / Device Driver

그리고 각 영역마다 대표 단어를 하나씩 붙입니다.

Process → PCB
Memory → Paging
File System → Permission/Journaling
Network → Socket/TCP-IP
Driver → Interrupt/DMA

11. 마무리 - Kernel을 하나의 관리자라고 생각하자

Kernel을 단순히 '운영체제의 핵심'이라고 외우는 것보다, 한정된 하드웨어 자원을 여러 프로그램이 안전하고 효율적으로 사용할 수 있도록 관리하는 관리자라고 이해하면 훨씬 선명합니다.

프로세스를 스케줄링하고, 메모리를 나누고, 파일을 관리하고, 네트워크 통신을 처리하고, 디바이스 드라이버를 통해 하드웨어를 제어합니다. 이후 연재에서 다루게 될 PCB, Paging, mknod, ioctl, Interrupt, Mutex, Socket 같은 주제들은 모두 오늘 살펴본 Kernel의 관리 기능에서 갈라져 나온 세부 주제입니다.

다음 편 예고

5편 - Kconfig, defconfig, .config: Linux Kernel 설정 파일의 관계

다음 편에서는 실기 빈칸 문제로 출제하기 좋은 Kconfig, defconfig, make menuconfig, .config의 흐름을 그림처럼 정리해 보겠습니다.

태그

#임베디드기사 #임베디드기사실기 #임베디드실기 #LinuxKernel #리눅스커널 #운영체제 #프로세스관리 #메모리관리 #파일시스템 #네트워크관리 #디바이스드라이버 #PCB #Paging #Socket #DMA #Interrupt #Linux #임베디드시스템 #자격증공부 #기사실기