SNU-ARC / 2024_spring_sysprog_Lab3

7 stars 0 forks source link

heap shrink로 free block이 작아졌을 때 LIFO 정책 적용 여부 #28

Open m-joon-ixix opened 5 months ago

m-joon-ixix commented 5 months ago

해당 질문에 답변해주신 것에 의하면

이라고 말씀해주셨는데요, heap shrink이 발생했을 때 함께 작아진 free block은 어떻게 구현하면 될지 문의드립니다. (LIFO or free list에서 기존 자리 유지) 어느쪽으로 구현해도 무방하다면, reference는 어느쪽으로 구현되어 있는지도 궁금합니다!

m-joon-ixix commented 5 months ago

fyi

일단 저는 기존 free block의 size가 변하는 경우에는 일괄적으로 LIFO policy를 따르도록 (mm_free에서의 구현처럼) 구현을 완료했습니다.

kwonsw055 commented 5 months ago

Shrink 시에는 LIFO을 따르지 않아도 됩니다. Reference에서는 기존 자리를 유지합니다.

m-joon-ixix commented 5 months ago

@kwonsw055 구현하다보니 realloc 시에도 다음과 같은 상황이 있는데요,

이 때 그 free block은 크기가 줄어들지만 그대로 남아있게 되는데, 이 free block을 어떻게 처리하면 되는지 궁금합니다. free block의 header 위치가 바뀌어야 하므로 LIFO를 적용해야 한다고 봐야할까요?

언뜻 생각하기에, mm_free에서는 무조건 LIFO 적용, 이외에는 "기존에 있던 free block의 header 위치가 바뀐 경우"에 한해 LIFO 적용 이렇게도 보이는데 올바른 해석일지 모르겠네요.

kwonsw055 commented 5 months ago

mm_free에 대해서는 LIFO를 적용하고, 나머지 경우(mm_realloc, heap shrink 등)에 대해서는 원하시는 방법대로 하시면 됩니다.