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, 버디 시스템의 할당·반환 과정을 비교했다.
참조 카운팅이 주력이고 추적 GC가 보조인 파이썬 GC 구조를, CSAPP의 가비지 컬렉터 정의부터 순환 참조와 세대별 수집까지 정리.