Learning
토픽 51 / 85·메모리 관리

버디 시스템 (Buddy System)

버디 시스템 (Buddy System)

메모리를 2의 거듭제곱 크기의 블록으로 관리하고, 요청 시 적절한 크기로 분할하며 인접 블록(버디)과 병합하는 메모리 할당 기법

목적: 빠른 할당/해제, 효율적 병합, 외부 단편화 감소

특징: 2의 거듭제곱 블록, 분할/병합, Free List 관리, 빠른 연산

버디(Buddy): 같은 크기의 인접한 두 블록, 주소로 계산 가능

할당 과정 (예: 70KB 요청, 전체 256KB)

해제 과정

버디 주소 계산: buddy_addr = block_addr XOR block_size

Free List: 각 크기별로 Free 블록 리스트 유지

시간 복잡도: 할당/해제 O(log n), n=전체 메모리/최소블록

장점: 빠른 병합, 외부 단편화 감소, 간단한 주소 계산

단점: 내부 단편화 (예: 65KB→128KB 할당), 2의 거듭제곱 제약

적용사례: Linux 커널 페이지 할당자, FreeBSD, 메모리 관리

변형: 슬랩 할당자(Slab Allocator)와 결합하여 내부 단편화 해결

비교: 버디(빠른병합/내부단편화) vs First Fit(유연/느린병합) vs Slab(객체캐시)

연관: 메모리 할당, 내부 단편화, 외부 단편화, 슬랩 할당자