말록랩 즐기기 1..

강민규·2021년 1월 18일
0

묵시적 가용리스트

뭐가 묵시적인가..

  • 가용리스트가 따로 표시가 저장되어있지 않고, 모든 청크를 확인하며 사이즈가 맞는 가용리스트를 찾으면 메모리를 할당해주는 방식
  • 즉 가용리스트가 명시되어있지 않다.

구현 방식

힙을 초기화

  1. 초기화 된 힙에는 프롤로그, 에필로그가 있어야 한다.
  2. 프롤로그는 헤더와 푸터를 가지고 있다.
  3. 에필로그는 헤더를 가지고 있다..

메모리 블록의 구조

  1. 힙영역에서 가지고 온 메모리 공간을 청크라고 부른다.
  2. 각 청크는 헤더와 푸터를 가지고 있다.
  3. 헤더와 푸터에는 사이즈와 할당 여부를 저장해준다

메모리 할당

  1. 힙의 모든 청크를 확인하여, 할당하고자 하는 크기보다 크거나 같은 가용블럭을 찾으면 할당해준다.
  2. 없으면 힙 영역에서 메모리를 더 가지고 와서, 거기다 할당을 해준다.

메모리 해제

  1. 해당 청크의 헤더와 푸터에 할당정보를 갱신해준다.
  2. 해제된 청크의 앞뒤를 확인하여, 가용블럭끼리 연결시킨다.
  • 경계 태그를 이용하여 가용리스트간의 연결을 상수시간 안에 해낼 수 있다.

깃헙 코드 참조하기..
https://github.com/stkang9409/mallocLab

profile
새싹 -> 나무

0개의 댓글