[Malloc Lab-2] CSAPP 9.9 동적 메모리 할당 (9) : 추가적인 힙 메모리 획득하기

은채·2025년 4월 28일

Malloc Lab

목록 보기
11/21
post-thumbnail

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

9.9.9 추가적인 힙 메모리 획득하기

만약 할당기가 요청한 블록에 맞는 가용 블록을 찾지 못하면 어떻게 될까?

가장 먼저 시도할 수 있는 방법은, 메모리 상에서 서로 인접한 가용 블록들을 합쳐서(coalescing) 더 큰 가용 블록을 만드는 것이다.
(이 과정은 다음 장에서 자세히 다룬다.)

하지만 인접한 블록을 합쳐도 충분히 큰 블록이 만들어지지 않거나, 이미 합칠 수 있는 모든 블록이 합쳐진 상태일 수 있다.
이 경우, 할당기는 커널(kernel)에게 추가적인 힙 메모리를 요청한다.
이때 사용되는 함수가 바로 sbrk이다.

sbrk를 호출해 커널로부터 새로운 메모리를 받아오면, 할당기는 이 추가된 메모리를 하나의 큰 가용 블록으로 변환한 뒤, free list에 등록한다.
그 다음, 요청한 블록은 이 새롭게 추가된 가용 블록 안에 할당한다.

이 과정을 통해 프로그램은 필요할 때마다 힙 메모리 크기를 유동적으로 확장할 수 있다.

0개의 댓글