상세 컨텐츠

본문 제목

동적 메모리 할당 | Malloc Lab | (2) 과제 소개

본문

Malloc Lab 과제

Malloc Lab은 CSAPP의 공식 과제 중의 하나이다. 두 저자가 교수로 재직 중인 카네기 멜론 대학은 물론, 세계 곳곳의 컴공과에서 진행 중인 과제이다. malloc을 통해 메모리를 매니징 하는 것을 넘어서, 명시적 할당기 자체를 구현해봄으로써 이해도를 한층 더 높이자는 것이 주 요지이다. 

 

주요 파일 설명

mm.c

  • 학생이 할당기를 구현하는 파일이다.
  • 학생은 mm.c 파일만 수정할 수 있다. (디버깅을 위한 목적 제외)

 

memlib.c

  • 테스트 환경이 돌아갈 힙 공간을 추상화해놓은 파일이다.
  • 학생들은 과제에서 지정해놓은, 제약된 리소스 하에서 힙을 할당받고 활용해야 한다. 
  • 힙 공간을 요청하는 함수들(sbrk() 등)이 포함되어 있다.

 

mdriver.c

  • 테스트를 담당하는 파일이다. 
  • 해당 파일을 실행하면 테스트가 작동한다. 
  • 테스트를 수행하면 기본적으로는 메모리 에러가 발생하며, 학생이 할당기를 제대로 구현했다면 통과하게 된다.
  • 통과했을 경우, 이용도와 쓰루풋(처리량)을 각각 점수화해서 총합 100점 만점으로 점수를 낸다. 

예시

 

short1-bal.rep, short2-bal.rep

  • 짧은 버전의 데이터셋으로, 작은 데이터로 테스트를 해보고 싶을 때 사용하는 파일들이다. 

 

makefile

  • driver를 빌드하는 파일이다.
  • 본인의 컴파일 환경이라든지, 시스템 환경이 과제에서 설계된 바와 다를 경우 여기서 조정해주면 된다. 

나의 과제 수행 방식

  1. 우선 기초 버전의 할당기를 책을 참고하여 빠르게 완성해본다.
  2. 그 다음 코드를 기반으로 할당기의 내부 동작을 이해하고, 해당 전략의 어느 지점에서 병목이 발생가능한지, 개선사항을 고민해본다.
  3. 잘 알려진 개선 방식과 내가 시도해보고 싶은 개선 방식들을 적용해보며, 점수를 극대화해본다. 

자세한 과제 수행 내용은 다음 포스팅에 이어서 기록!

 

관련글 더보기