Linux Kernel?
리눅스 커널의 구조, 부팅 과정, 동작 방식에 대한 개요 정리
커널 퍼징 분석을 진행하기에 앞서 커널의 기본 개념을 먼저 정리합니다.
커널이란?
커널(Kernel)은 운영체제의 핵심으로서 사용자 공간과 하드웨어 사이를 중재하는 소프트웨어 계층 입니다.
리눅스 커널은 모놀리식(monolithic) 구조이며, 동적 모듈 로딩을 지원합니다.
커널의 동작 방식
1. 펌웨어/부트로더에서 커널로의 핸드오프
부트로더(GRUB 등)가 커널 이미지를 메모리에 적재하고 제어권을 넘깁니다.
2. 커널 초기화
커널 압축 해제, 메모리 관리 초기화, 스케줄러 설정 등이 수행됩니다.
3. 초기 유저스페이스 (initramfs)
initramfs가 실행되어 루트 파일시스템 마운트 전 필요한 드라이버를 로드합니다.
4. 태스크 스케줄링
CFS(Completely Fair Scheduler) 등을 통해 프로세스 스케줄링이 이루어집니다.
5. 시스템 콜 인터페이스
사용자 공간에서 커널 공간으로의 진입 경로를 제공합니다. syscall 명령어를 통해 유저 모드에서 커널 모드로 전환됩니다.
6. 인터럽트 처리
비동기 이벤트(하드웨어 인터럽트, 소프트 인터럽트)를 처리합니다.
7. VFS와 I/O 연산
VFS(Virtual File System)는 다양한 파일시스템에 대한 통합 인터페이스를 제공합니다.
8. 메모리 관리
가상 메모리, 페이지 폴트 처리, SLAB/SLUB 할당자를 통한 메모리 관리가 이루어집니다.
9. 프로세스 라이프사이클
fork() , clone() , execve() 등을 통한 프로세스 생성과 관리가 이루어집니다.
10. 보안 메커니즘
댓글