Open minseo25 opened 2 months ago
Explicit list의 경우, Coalescing 후에는 LIFO policy에 따라 새 free block이 free list의 가장 앞에 추가되어야 합니다.
100K.dmas 테스트케이스와 같이 성능 차이가 확연한 테스트 케이스에서만 확인할 예정입니다.
heap에서 마지막 free block의 사이즈가 SHRINKTHLD
를 넘으면 heap을 shrink하고자 하는 의도로 있는 전역변수입니다만, 구현에 따라서는 사용하셔도, 사용안하셔도 됩니다.
답변 감사합니다-!!
강의 보다가 추가 질문이 생겨 문의드립니다!!
Lec9 25p에 따르면 split 결과 새로운 free chunk가 생겼을 때, (split 되기 전) 기존 free chunk의 free_list에서의 위치를 유지하는 것 같은데, 이 경우도 그냥 LIFO로 구현해도 상관없을까요?
double free error 말고도 free된 chunk를 realloc 하는 등의 상황에 대한 에러처리에서 프로그램을 종료할 필요가 있는지 궁금합니다. (저희가 구현하는 부분에서 PANIC()을 쓸 필요가 없는지 궁금합니다)
mm_free
로 인해 발생한 free block에 대해서만 LIFO를 따라주시면 됩니다. split으로 인해 발생하는 free block의 경우에는 LIFO를 사용하셔도 되고, 강의 슬라이드와 같이 자리를 유지하셔도 됩니다. (reference의 경우에는 split시에도 LIFO를 사용하도록 구현되어있긴 합니다.)
mm_realloc
을 유효하지 않은 블록에 대해 호출할 때는 어떤 방법으로 처리하셔도 무방합니다. PANIC
을 사용하셔도 되고, error만 출력하고 프로그램을 유지하셔도 됩니다.
넵 감사합니다~
새롭게 free한 chunk와 인접 free chunk 병합할 때, free_list에서의 기존 free chunk의 위치를 보전해야하는지 안해도 상관없는지 궁금합니다
implicit free list에 대한 상대적인 퍼포먼스로 explicit free list를 판단하신다고 했는데, 요구되는 최소한의 성능 향상 폭이 있을까요? ls.dmas 테케의 경우만 퍼포먼스 차이가 거의 없게 나타나는데 제가 잘못 구현한건지 헷갈립니다ㅠ
SHRINKTHLD 전역변수의 의미가 궁금합니다. heap shrink 여부를 결정하는 기준이라 해석하고 구현했는데 맞을까요?
감사합니당