Learning
토픽 93 / 97·비교표

메모리 관리

페이징 vs 세그멘테이션

항목페이징세그멘테이션
크기고정 (4KB)가변 (논리적 단위)
분할 기준물리적논리적 (코드/데이터/스택)
외부 단편화없음있음
내부 단편화있음 (평균 2KB)없음
보호/공유페이지 단위세그먼트 단위 (논리적)
현대 사용주류 (x86-64)레거시 (x86 플랫 모델)

연속 할당 vs 페이징 vs 세그멘테이션

항목연속 할당페이징세그멘테이션
할당 방식연속 블록고정 크기 페이지가변 크기 세그먼트
단편화외부 단편화내부 단편화외부 단편화
접근빠름페이지 테이블 참조세그먼트 테이블 참조

내부 단편화 vs 외부 단편화

항목내부 단편화외부 단편화
위치할당된 블록 내부할당된 블록 사이
원인고정 크기 블록 할당가변 크기 할당/해제 반복
해결가변 크기 할당, 슬랩 할당자압축, 페이징, 버디 시스템

페이지 교체 알고리즘 비교

알고리즘방식장점단점성능 순위
Optimal가장 나중에 사용될 페이지이론적 최적미래 예측 불가1 (기준)
LRU가장 오래 사용 안된 페이지실용적, 지역성 활용구현 비용 (스택/카운터)2
ClockFIFO + Reference 비트LRU 근사, 효율적근사치3
FIFO가장 오래된 페이지단순Belady's Anomaly4

다단계 페이지 테이블 vs 단일 vs 역페이지 테이블

항목다단계단일역 (Inverted)
기준프로세스별프로세스별시스템 전체
공간절약 (미사용 영역 미할당)낭비최소
접근다회 메모리 접근1회 접근해시 검색
사례x86-64 (4단계)소규모 시스템PowerPC, IA-64

메모리 할당 기법: First Fit vs Best Fit vs Worst Fit

항목First FitBest FitWorst Fit
방법첫 번째 충분한 블록가장 근접한 블록가장 큰 블록
속도빠름 (평균 O(n/2))느림 (전체 탐색 O(n))느림
단편화앞쪽 작은 단편아주 작은 단편 생성큰 블록 빨리 소진
실무가장 많이 사용이론적 관심거의 미사용

버디 시스템 vs Slab 할당자 vs malloc

항목버디 시스템슬랩 할당자malloc
대상페이지 단위커널 객체사용자 공간
크기2의 거듭제곱객체 크기 정확가변
단편화내부 단편화없음 (정확 할당)외부/내부
속도O(log n)O(1)가변

가비지 컬렉션: Reference Counting vs Tracing GC

항목Reference CountingTracing GC (Mark-Sweep)
회수 시점즉시 (참조 수 0)주기적 (GC 사이클)
순환 참조문제 (해결 불가)해결 (도달 가능성 기반)
STW없음있음 (Stop-the-World)
사례Python, SwiftJava, Go, JavaScript

메모리 관리: 수동 vs GC vs 소유권 모델

항목수동 관리 (C)GC (Java)소유권 (Rust)
속도빠름GC 오버헤드빠름
안전성위험 (댕글링, 누수)안전안전 (컴파일 타임 검증)
학습 곡선중간낮음높음

메모리 압축 vs 스왑 vs OOM Kill

항목메모리 압축스왑OOM Kill
방식CPU로 페이지 압축디스크로 페이지 이동프로세스 강제 종료
속도빠름느림 (디스크 I/O)즉시
SSD 영향없음수명 단축없음
사례zswap, zramswap 파티션Linux OOM Killer