정답 같은 건 없고
이번 주차 malloc 구현 채점 기준을 대강 살펴보았다
내가 분석하기엔 어려워 AI의 도움을 받았다
realloc
시 이전 데이터 보존 확인hwm
÷ 최종 힙 크기(mem_heapsize()
)
mem_sbrk
는 줄일 수 없어서 최종 brk가 힙 크기로 고정된다fsecs(eval_mm_speed)
로 재고, 내부에서 사이클 카운터 기반 fcyc
을 사용한다UTIL_WEIGHT*avg_util + (1-UTIL_WEIGHT)*min(1, avg_throughput/AVG_LIBC_THRUPUT)
× 100분할(splitting) 조건:
남는 조각이 최소 블록 크기 미만이면 분할하지 않기
→ 내부 단편화·추가 힙 확장을 줄여 util🔺 (분모 억제)
즉시 병합(coalescing) 과 prev_alloc 비트로 할당 블록의 푸터 제거
→ 메타데이터 오버헤드 축소로 util🔺, 캐시 효율로 thru도 보통🔺
배치 정책:
단일 리스트 First-fit보다 분리 적합(세그리게이티드 리스트) 가 대체로 util/throughput 모두 유리
realloc 최적화:
뒷블록이 비어있으면 동일 위치 확장·축소 우선
→ 추가 mem_sbrk
방지로 util🔺, 복사 감소로 thru🔺
CHUNKSIZE 튜닝:
너무 크면 불필요한 힙 증가로 util↓, 너무 작으면 extend_heap
빈번
→ thru↓
트레이스별 균형점이 있어 보조 레버로 사용