토픽 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(객체캐시)
연관: 메모리 할당, 내부 단편화, 외부 단편화, 슬랩 할당자