first fit : 리스트를 처음부터 검색해서 크기가 맞는 첫 번째 가용 블록을 선택
next fit : first fit과 비슷하지만 이전 검색이 종료된 지점에서 검색을 시작한다.
best fit : 모든 가용 블록을 검사하여 크기가 맞는 가장 작은 블록을 선택한다.
이 3가지가 있다. 이건 csapp 9장에 나오니 간단하게만 적는다.
먼저 동적 메모리 할당기에 대해 알아야 한다.
일단, 동적 메모리 할당기는 2가지 종류가 있다.
명시적 할당기(explicit allocator) : 블럭을 명시적으로 해제(free)해야하는 할당기
묵시적 할당기(implicit allocator) : 자동으로 감지해서 해제해주는 할당기(c는없음)
여기서, 명시적 할당기(ex/malloc)의 가용 리스트는 다음과 같다.
명시적 가용 리스트 : 사진의 왼쪽, 가용(free)블럭들의 크기가 헤더에 있기 때문에 '암묵적'으로 다른 블럭과 연결되어있음.(크기를 아니까 다음블럭이 어디있는지 알수있음)
묵시적 가용 리스트 : 가용(free)블럭의 payload가 비어 있음으로 여기에 이전/다음 블록을 가르키는 포인터를 배치.
묵시적 할당기의 예는 가비지 컬렉터 등이 있다.
여기서 중요한것은 allocator(할당기)와 free list(가용 리스트)의 용어를 혼동하면 안된다.