운영체제 서비스
운영체제가 사용자와 응용 프로그램에 제공하는 서비스는 하드웨어의 복잡함을 숨기고, 안전하고 효율적인 자원 활용을 보장하기 위해 다음과 같은 기능들을 포함합니다.
프로세스 관리 서비스
프로세스 생성·제거
새 프로세스 생성 시 커널은 프로세스 제어 블록(PCB)을 할당하고, 부모 프로세스의 메모리 맵과 파일 디스크립터 테이블을 copy-on-write 방식으로 연결합니다.
프로세스 종료(
exit
) 시 PCB, 메모리 페이지, 열린 파일 등 모든 자원을 회수하고, 부모에게 종료 상태를 전달하는 자원 회수 루틴을 실행합니다.
프로세스 동기화
커널은 세마포어(Semaphore), 뮤텍스(Mutex), 조건 변수(Condition Variable) 같은 커널 내 동기화 프리미티브를 제공합니다.
사용자 공간 락(futex)은 빠른 락 획득을 위해 커널과 사용자 공간을 결합한 구조로, 락이 경합될 때만 커널 호출이 발생하도록 최적화되어 있습니다.
프로세스 통신(IPC)
파이프(Pipe): 단방향 바이트 스트림을 위한 커널 버퍼. 생성 시 양 끝단의 파일 디스크립터 쌍을 할당하고, 링버퍼로 데이터를 주고받습니다.
메시지 큐(Message Queue): 커널에서 관리하는 고정 크기 메시지 슬롯 배열. 각 메시지는 우선순위와 함께 대기열에 삽입되며,
msgsnd
/msgrcv
호출로 송수신됩니다.공유 메모리(Shared Memory): 여러 프로세스가 동일 물리 페이지를 매핑해 고속 통신. 커널은
shmget
으로 공유 영역을 생성하고,shmat
으로 주소 공간에 매핑합니다.
메모리 관리 서비스
주기억장치 할당·회수
연속 할당: 비트맵(bitmap) 또는 프리 리스트(free list)를 이용해 적합한 크기의 빈 공간을 할당. 외부 단편화를 줄이기 위한 재배치(compaction) 기능은 일반적이지 않음.
비연속 할당: 페이징(Paging) 기법으로 고정 크기 페이지(4KB 등) 단위로 물리 메모리 프레임을 나누고, 각 프로세스에 비연속 물리 페이지를 매핑합니다.
가상 메모리
프로세스마다 독립된 가상 주소 공간을 제공. 페이지 테이블은 다단계(n-level) 구조로, 메모리 오버헤드를 줄이면서 대규모 주소 공간(32/64비트)을 지원합니다.
페이지 폴트(page fault)가 발생하면 커널은 페이지 교체 알고리즘(LRU, Clock, FIFO 등) 을 이용해 적합한 물리 페이지를 선택하고, 스왑 영역과 교환(swap out/in)합니다.
메모리 보호
페이지 테이블 엔트리(PTE)에 접근 권한 비트(R/W/X) 를 설정해 비허가 접근 시 예외를 발생시키고, 프로세스 간 메모리 침범을 방지합니다.
커널 모드와 유저 모드를 구분해 커널 메모리 영역을 절대 유저 프로세스가 접근하지 못하도록 설계합니다.
파일 시스템 서비스
파일 및 디렉터리 조작
open
,read
,write
,lseek
,close
와 같은 시스템콜을 통해 파일을 생성·삭제·읽기·쓰기·위치 이동을 수행합니다.커널은 파일 디스크립터 테이블(fd table) 을 사용해 프로세스별 열린 파일을 추적하고, 인노드 테이블(inode table) 로 실제 메타데이터를 관리합니다.
디렉터리 관리
디렉터리는 파일명→inode 번호 매핑을 해시 테이블 또는 B-트리로 구현.
빈번한 경로 탐색을 위해 dentry 캐시(directory entry cache)로 최근 사용된 디렉터리 엔트리를 저장합니다.
저널링
ext4, XFS 등 저널링 파일 시스템은 메타데이터 변경 전 저널 로그에 기록한 뒤 실제로 디스크에 반영합니다.
커널 내 트랜잭션 로그 구조와 체크포인트 메커니즘이 조합되어, 충돌 시 빠른 복구를 보장합니다.
입출력 장치 제어 서비스
추상화 계층
VFS(Virtual File System)는 여러 파일 시스템(NFS, ext4, FAT, etc.) 드라이버를 **슈퍼블록(superblock)**과 파일 시스템 객체 레이어로 일관되게 추상화합니다.
블록 장치(block device)와 문자 장치(char device)에 공용 인터페이스를 제공하고, 장치별 특성별 드라이버에 연결합니다.
동기·비동기 I/O
동기 I/O(
read
/write
)는 호출 프로세스가 완료까지 블록되고, 비동기 I/O(aio_read
/io_submit
)는 I/O 작업 디스크립터를 커널 큐에 등록해 즉시 복귀 후 이벤트 알림(aio_signals
,io_getevents
)을 제공.
DMA 지원
고속 네트워크·스토리지 장치는 DMA 디스크립터 링을 사용해 메모리와 장치 간 직접 전송.
운영체제는 IOMMU를 구성해 가상 주소 기반 DMA 보호와 오버레이 매핑을 관리합니다.
정보 검색·보고 서비스
가상 파일 시스템(/proc, /sys)
/proc
은 커널 내부 데이터 구조(프로세스 정보, 메모리 통계, 네트워크 통계 등)를 동적으로 파일처럼 노출합니다./sys
는 장치 트리와 디바이스 속성(attribute)을 계층적 파일로 제공해, 사용자 공간에서 간편한 드라이버 설정이 가능하도록 지원합니다.
성능 모니터링
커널은 성능 카운터(PMU), 소프트웨어 계측(eBPF, Tracepoints) 를 통해 이벤트 데이터를 수집하고,
perf
,bpftrace
같은 유저 공간 도구와 연동해 실시간 분석을 지원합니다.
보안·보호 서비스
이미 1.6절에서 상세히 다뤘으므로 여기서는 LSM(Linux Security Modules) 확장 지점을 중심으로 설명합니다.
LSM 후킹 아키텍처: 파일, 네트워크, 프로세스 관련 핵심 경로에 후킹 포인트를 제공해 SELinux, AppArmor, Smack 같은 보안 정책 모듈을 연동할 수 있습니다.
캡슐화된 보안 모듈: 각 LSM 모듈은 커널 코드 수정 없이 보안 정책만 교체해 다양한 용도(격리, 무결성 검사, 접근 제어)를 지원합니다.
자원 회수 및 오류 처리 서비스
자원 해제
프로세스 종료 시 커널은 PCB, 메모리, 파일 디스크립터, 세마포어, IPC 객체 등 모든 자원을 모듈화된 클린업 루틴으로 안전하게 회수합니다.
메모리 누수를 방지하기 위해 레퍼런스 카운팅과 슬랩 할당자(slab allocator) 기법을 사용합니다.
장애 복구
소프트웨어 충돌 시 커널 패닉을 방지하기 위해 커널 내 hotplug, watchdog timer를 이용한 자동 재부팅 옵션 제공
파일 시스템 불일치 시
fsck
유틸리티와 커널 내 저널 재생(journal replay) 기능으로 일관성 복원
Last updated