SNU-ARC / 2024_spring_sysprog_Lab3

8 stars 0 forks source link

mm_drive 동작과 mm_test동작 차이 원인 문의드립니다. #2

Open DOGEUNNKIM opened 2 months ago

DOGEUNNKIM commented 2 months ago

mm_drive동작과 mm_test동작이 달라서 문의드립니다.

mm_test에 대해서 malloc이 수행이 잘됨을 확인하여 mm_driver를 수행해보았습니다. mm_drive의 경우 100k.dmas파일을 수행하게 되면 모든 malloc 명령에 대하여 계속 sbrk가 호출되어서 1024번 수행 시 기존에 할당된 모든 heap을 다 사용하여 ds_sbrk가 실패하는 것을 확인하였습니다.

그래서 100k.dmas를 따라서 mm_test에 똑같이 진행해 보았는데 mm_test에서는 sbrk를 필요할 때에만 호출하는 것을 확인하였고 이는 동작에 문제가 없어 보였습니다.

혹시 mm_driver가 mm_test와 다르게 동작하는 원인을 알 수 있을까요?

kwonsw055 commented 2 months ago

mm_driver와 mmtest는 `mm*함수들을 호출하는 역할만 수행해, 내부 동작과는 무관합니다. 그렇기에 둘의 동작이 다를 이유는 없어보입니다. mm_driver가make명령으로는 빌드가 안되고,make mm_driver` 명령을 사용해야 빌드가 되는데, 혹시 up-to-date 빌드 파일로 확인해보신 것이 맞는지 확인해보시길 바랍니다.

DOGEUNNKIM commented 2 months ago

아 사이즈 조절을 안했어서 생긴 문제였네요 감사합니다.

sbkim28 commented 2 months ago

저도 비슷한 문제를 겪어서 코멘트를 남깁니다.

100K.dmas를 mm_drive에서 --implementation libc 옵션을 주고 실행시킨 결과, payload는 0x685695a0 (1750504864) bytes, heap size는 0x68b7d000 (1756876800) bytes임이 확인되었습니다.

그런데, 100K.dmas에서 기본으로 설정된 dataseg size는 0x4000000 (67108864) bytes로, libc에서 사용한 heap size보다 훨씬 작은 상황이어서 해당 문제가 발생하는 것으로 보입니다.

100K.dmas에서 dataseg size를 충분히 크게 늘리면 해당 문제가 해결되는 것을 확인하였으며, 다른 분들도 비슷한 문제를 겪지 않도록 테스트 파일을 수정해주셨으면 합니다.

kwonsw055 commented 2 months ago

말씀 주신대로 100K.dmas의 dataseg 크기를 수정하였습니다. 감사합니다.