[Malloc Lab-2] CSAPP 9.9 동적 메모리 할당 (8) : 가용 블록의 분할

은채·2025년 4월 28일

Malloc Lab

목록 보기
10/21
post-thumbnail

CSAPP 책은 쌩으로 읽는다면 이해하기 매우 어렵습니다.
따라서 소단원만 그대로 따라가되, 내용을 이해하기 쉽게 재구성했습니다.

9.9.8 가용 블록의 분할

할당기가 적절한 가용 블록을 찾으면, 그 블록을 전체 할당할지, 아니면 필요한 만큼만 할당하고 남길지에 대한 추가 정책 결정을 해야 한다.

1. 가용 블록 전체를 사용하기

가용 블록 전체를 그대로 사용하는 방법이다.
이 방법은 간단하고 빠르다는 장점이 있지만, 내부 단편화를 초래할 수 있다.
(다만, 배치 정책이 잘 맞는 블록을 자주 찾는 경우에는, 약간의 내부 단편화는 감수할 수 있다.)

2. 가용 블록을 두 부분으로 쪼개기

요청 크기에 딱 맞는 블록을 찾지 못했을 경우, 할당기는 보통 이 방법을 선택한다.
필요한 만큼만 블록을 잘라서 할당하고, 나머지 부분은 새로운 가용 블록으로 남겨두는 전략이다.
이때, 잘라낸 첫 번째 부분은 할당된 블록이 되고, 남은 부분은 다시 free list에 등록된다.

3. 분할 예시

만약 프로그램이 3워드 크기를 요청했다고 가정해보자.
free list를 살펴보면, 3워드를 수용할 수 있는 블록은 32/0 하나뿐이다.

업로드중..

따라서 이 32/0 블록을 사용하게 된다.
요청한 크기만큼만 할당하고 남은 공간을 다시 가용 블록으로 남기기 위해, 16/1(할당됨)과 16/0(free)으로 블록을 나눈다.

0개의 댓글