[CSAPP 9장 완전 정복] 9.9(Part 12) 최종 정리: 간단한 동적 메모리 할당기 설계 방향

2025. 4. 26. 15:08·크래프톤 정글/컴퓨터구조(CSAPP)

최종 정리: 간단한 동적 메모리 할당기 설계 방향

이번 마지막 포스트에서는 지금까지 배운 동적 메모리 할당기의 주요 개념들을 정리하고, 실제로 간단한 할당기를 설계할 때 어떤 흐름으로 접근해야 할지 방향을 제시해보려고 합니다.

 

 

핵심 개념 복습

  • Heap 구조: 블록 단위로 메모리를 관리 (Header + Payload + Footer)
  • Free List: 암시적 또는 명시적 방식으로 free block을 관리
  • Placement 정책: First-Fit, Next-Fit, Best-Fit 등
  • Splitting/Coalescing: 단편화 최소화를 위한 블록 분할 및 병합
  • Boundary Tag: O(1) 시간에 병합 가능하도록 Header/Footer에 블록 크기/할당 상태 기록
  • 성능 목표: Throughput과 Peak Utilization의 균형

 

간단한 할당기 설계 흐름

  1. mm_init(): 힙 초기화
    • 초기 힙 생성 (Prologue, Epilogue 블록 삽입)
  2. mm_malloc(size): 요청 payload만큼 블록 할당
    • 요청 크기 조정 (정렬 + Overhead 포함)
    • Free List 탐색 (find_fit)
    • 적당한 블록이 있으면 place()
    • 없으면 extend_heap()으로 힙 확장 후 place()
  3. mm_free(ptr): 해당 할당 블록 해제
    • 블록을 free 상태로 표시
    • 주변 free block과 coalesce()
    • 필요 시 Free List 업데이트
  4. coalesce(bp): 병합
    • 4가지 병합 Case 처리
  5. find_fit(asize): 할당할 free block 탐색
    • 적절한 블록 탐색 (First-Fit 기본)
  6. place(bp, asize): 배치 및 분할
    • 블록 배치 및 필요시 분할

 

설계 시 주의사항

  • 힙 일관성(Heap consistency) 필수적으로 체크하기
    • assert 등을 통해 점검 가능
  • 정렬(Alignment) 위반이 없는지 꼼꼼히 확인하기
  • 병합/분할 로직 오류 방지하기
    • boundary tag를 꼼꼼히 사용
  • 메모리 오버헤드와 활용률 사이의 균형 고민하기

 

마치면서

지금까지 동적 메모리 할당기의 핵심 개념, 설계 전략, 최적화 기법까지 총정리해봤는데요. 책을 읽을 때 막연히 코드만 보는 것이 아니라, 왜 이런 구조가 필요한지를 이해하는 데 이 포스트 시리즈가 도움이 되었기를 바랍니다.

 

앞으로 할당기 실습(mm.c 구현)이나 Garbage Collection, segregated list 등 고급 Allocator 심화 주제로 넘어갈 때도, 여기서 다룬 기초들이 탄탄한 기반이 되어주리라 생각합니다. 긴 시리즈를 끝까지 함께 해주셔서 감사합니다.

저작자표시 비영리 변경금지 (새창열림)

'크래프톤 정글 > 컴퓨터구조(CSAPP)' 카테고리의 다른 글

[CSAPP 9장 완전 정복] 9.11~9.12 C 프로그램에서 자주 발생하는 메모리 버그와 9장 전체 요약  (0) 2025.04.26
[CSAPP 9장 완전 정복] 9.10 가비지 컬렉션(Garbage Collection) 이해하기  (0) 2025.04.26
[CSAPP 9장 완전 정복] 9.9(Part 11) 메모리 활용률(Peak Utilization) 측정과 평가 지표  (0) 2025.04.26
[CSAPP 9장 완전 정복] 9.9(Part 10) 할당기 설계 시 고려해야 할 제약과 목표  (0) 2025.04.26
[CSAPP 9장 완전 정복] 9.9(Part 9) 블록 병합(Coalescing) 로직과 실제 구현  (0) 2025.04.26
'크래프톤 정글/컴퓨터구조(CSAPP)' 카테고리의 다른 글
  • [CSAPP 9장 완전 정복] 9.11~9.12 C 프로그램에서 자주 발생하는 메모리 버그와 9장 전체 요약
  • [CSAPP 9장 완전 정복] 9.10 가비지 컬렉션(Garbage Collection) 이해하기
  • [CSAPP 9장 완전 정복] 9.9(Part 11) 메모리 활용률(Peak Utilization) 측정과 평가 지표
  • [CSAPP 9장 완전 정복] 9.9(Part 10) 할당기 설계 시 고려해야 할 제약과 목표
그냥사람_
그냥사람_
IT 관련 포스팅을 합니다. 크래프톤 정글 8기 정경호
  • 그냥사람_
    그냥코딩
    그냥사람_
  • 전체
    오늘
    어제
    • 글 전체보기 N
      • 크래프톤 정글 N
        • 로드 투 정글(입학시험)
        • CS기초(키워드, 개념정리) N
        • 컴퓨터구조(CSAPP)
        • Code 정글(C언어) N
        • 마이 정글(WIL, 에세이)
      • 자료구조&알고리즘
        • 자료구조
        • 알고리즘
      • 일상
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • hELLO· Designed By정상우.v4.10.3
그냥사람_
[CSAPP 9장 완전 정복] 9.9(Part 12) 최종 정리: 간단한 동적 메모리 할당기 설계 방향
상단으로

티스토리툴바