[TIL] 261003 공부기록
가용블록 공부하기
TIL#
오늘은 벌써 토요일.. 하지만 월요일까지 빨간날인데 아쉽게도 정글에서 공부는 롱런이다 오전엔 좀 바빴는데 블로그 깃허브 액션속도가 약 2분 30초 가까이 느려서 CI 속도를 개선시키느라 오전시간동안 조금 할애했고 마저 어제 쓰다가 포기한 malloc에 관한 블로그 글도 썼다. 그리고 점심시간에는 동석코치님이 추천해주신 마인드셋이라는 책을 2장까지 읽었고 오후 2시까지는 바이브 코딩을 잠깐했는데 오늘이 무료토큰 초기화라서 바로 만들었다 ㅋㅋㅋ… 사실 거의 한달가까이 만들었는데 오늘 파이어베이스를 연결해서 롱디라는 맥북 데스크탑 앱을 만들었다 근데 저녁에 보니까 오류하나가 있어서 다음주에 개선작업을 진행하기로.. (스토리 이미지가 하나만 올라가는 버그)
이렇게 오늘은 좀 알차게 작업을 했고 malloc을 다쓰고나서 오늘 묵시적 가용리스트 9.9를 다 공부했다.. 이제 코드구현만 남아있는데 할수있을까 걱정이… 내일 한번 진짜 만들어보면서 힘든 싸움이 되지않을까 싶다..
배운점#
오늘은 좀 이해안갔던 부분을 공부했다 특히 bt는 블록 포인트 약자인데 힙 블록에서 헤더 말고 페이로드앞부분에 가리키는것이다 malloc함수가 최종적으로 사용자에게 반환하는 포인터가 페이로드의 시작주소라서 그런데 사용자는 헤더나 푸터같은 메타데이터의 존재를 몰라야 하고 자신이 요청한 메모리 공간에 바로 데이터를 읽고 써야해서다
그리고 가용블록을 연결하는데 free 함수를 호춣서 블록을 해제 할때 해당 블록의 헤더 비트를 가용상태로 바꾸기만 하고 인접한 빈공간에 합치지않으면 가짜 단편화현상이 발생한다
힙에 연속된 두개의 3워드 자리 가용블록이 있을경우, 힙전체에 남아있는 총 가용메모리 6워드지만 연속된 하나의 4워드 할당요청이 들어오면 연속된 4워드 공간이 없어서 메모리 할당에 실패한다 이렇게 작은 가용공간들이 파편화 되어 낭비하는 것을 막기 위해 인접 가용블록들을 하나의 큰 가용블록으로 묶어주는 과정이 바로 연결이다.
느낀점#
사실 책에선 아예 이해가 안됐는데 노트북 LM 도움으로 엄청 열심히 썼다..특히 코드 한줄마다 해석한 글을 썼는데 그나마 도움이 되었던것같기도!