Operating System
CSAPP 9.10 - 가비지 컬렉션과 보수적 Mark & Sweep
도달 가능성으로 가비지를 구분하는 원리부터 Mark & Sweep, C의 포인터 판별 한계와 블록 검색용 균형 트리까지 한 흐름으로 정리했다.
하나의 주제로 이어지는 배움의 기록.
도달 가능성으로 가비지를 구분하는 원리부터 Mark & Sweep, C의 포인터 판별 한계와 블록 검색용 균형 트리까지 한 흐름으로 정리했다.
잘못된 역참조, 초기화 누락, 경계 초과, 포인터 연산, 수명과 해제 문제까지 메모리 버그의 원인과 증상이 멀어지는 이유를 정리했다.
헤더와 푸터로 앞뒤 블록을 찾는 방법, 가용 블록을 연결하는 네 가지 경우, 푸터를 생략할 때 필요한 정보를 정리했다.
memlib의 가상 힙부터 블록 매크로, mm_init, extend_heap, coalesce, mm_malloc까지 묵시적 가용 리스트 할당기의 흐름을 따라갔다.
가용 블록만 연결해 탐색 범위를 줄이는 원리와 LIFO·주소 순서 정책, 포인터 두 개가 최소 블록 크기에 미치는 영향을 정리했다.
크기 클래스별로 가용 블록을 관리하는 simple segregated storage, segregated fit, 버디 시스템의 할당·반환 과정을 비교했다.