..
컴퓨터 구조 CS:APP 9장
Virtual Memory
가상 메모리의 목적
- 캐싱 도구로서의 역할: 디스크에 저장된 데이터를 메모리에 필요한 만큼만 가져와 사용
- 메모리 관리 단순화: 각 프로세스에 독립적인 주소 공간을 제공하여 충돌 없이 메모리를 다룰 수 있음
- 메모리 보호: 하나의 프로세스가 다른 프로세스의 메모리를 침범하지 못하게 함
주소 변환
- CPU는 가상 주소를 생성하고, 하드웨어는 이를 물리 주소로 변환
- 이 변환은 페이지 테이블에 의해 수행되며, TLB와 같은 캐시를 통해 속도를 높임
메모리 매핑
- 파일 매핑: 파일을 메모리 공간에 직접 매핑
- 익명 매핑: 초기화되지 않은 메모리 영역을 생성
- mmap() 시스템 콜을 통해 구현
동적 메모리 할당
- malloc, free, realloc등 함수들로 구현
- 내부 단편화와 외부 단편화를 최소화하는 것이 중요
- 다양한 할당 전략:
- 암시적/명시적 Free List
- 분리된 Free List(Segregated Free Lists)
- 경계 태그(Coalescing with Boundary Tags)
가비지 컬렉션
- C에서 명시적으로 free()를 호출해야 하지만, 일부 언어는 가바지 컬렉터가 자동으로 메모리 회수
- 대표적인 방식: Mark and Sweep 알고리즘
- 루트 노드(root set)부터 도달 가능한 객체를 마크(mark)
- 마크되지 않은 객체는 스왑하여 회수