Operating System
Week 6 Malloc Lab의 Place 함수 개선
Place 함수의 블록 배치 방향을 바꿔 91점에서 94점으로 개선한 과정과 임계값 최적화가 Util 향상으로 이어지지 않는 이유.
하나의 주제로 이어지는 배움의 기록.
Place 함수의 블록 배치 방향을 바꿔 91점에서 94점으로 개선한 과정과 임계값 최적화가 Util 향상으로 이어지지 않는 이유.
헤더와 푸터로 앞뒤 블록을 찾는 방법, 가용 블록을 연결하는 네 가지 경우, 푸터를 생략할 때 필요한 정보를 정리했다.
memlib의 가상 힙부터 블록 매크로, mm_init, extend_heap, coalesce, mm_malloc까지 묵시적 가용 리스트 할당기의 흐름을 따라갔다.
가용 블록만 연결해 탐색 범위를 줄이는 원리와 LIFO·주소 순서 정책, 포인터 두 개가 최소 블록 크기에 미치는 영향을 정리했다.
크기 클래스별로 가용 블록을 관리하는 simple segregated storage, segregated fit, 버디 시스템의 할당·반환 과정을 비교했다.
seglist의 크기 클래스에 물리적 제약을 더한 버디 시스템 — 반으로 쪼개고, XOR 한 번으로 O(1)에 짝을 찾아 병합하고, 그 대가로 최대 50%까지 내부 단편화를 감수하는 구조를 seglist와 비교하며 정리.
동적 메모리 할당기가 가용 블록을 관리하는 세 가지 방식을 검색 범위가 좁아지는 순서로 정리 — 크기 필드로 유추하는 implicit부터, pred/succ 포인터로 연결하는 explicit, 크기 클래스별로 리스트를 쪼개는 seglist까지.