..

컴퓨터 구조 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)
    • 마크되지 않은 객체는 스왑하여 회수