seungjun.dev

macOS의 메모리 구조와 가상 메모리 관리법

macOS의 메모리 구조는 어떻게 이루어져 있고 가상 메모리를 어떻게 관리할까?

macOS의 메모리 구조

1. 기본 메모리 구조

시스템 시작 시 사용 가능한 RAM을 두 개의 주요 섹션으로 나눔

  • 시스템 파티션: 메모리 주소 0부터 시작해 위쪽으로 확장되는 영역
    • 시스템 힙과 전역 변수들을 포함
  • 애플리케이션 파티션: 시스템 파티션 외부의 모든 메모리
    • 각 애플리케이션이 독립적인 메모리 공간을 할당받음

2. 통합 메모리 아키텍처

ARM Mac에서는 통합 메모리 아키텍처를 사용

  • CPU와 GPU가 별도의 메모리 뱅크를 사용하는 대신 같은 메모리 풀을 공유
  • 컴포넌트 간 거리가 짧아져 데이터 속도가 향상됨
  • 메모리 사용 효율성이 기존 Intel 기반 Mac보다 크게 개선됨

3. 메모리 관리 방식

  • 압축 메모리: 즉시 필요하지 않은 데이터를 압축해 RAM 사용량을 줄임
  • 스왑 메모리: 필요시 메모리 데이터를 SSD에 저장
  • 적극적인 캐싱: 모든 사용 가능한 메모리를 앱과 데이터 캐시로 활용

macOS의 가상 메모리 관리법

  • 맥에서 가상 메모리는 시스템이 자동으로 관리

MMU를 통한 주소 변환

  • MMU를 통해 가상 메모리 주소를 실제 물리 메모리 주소로 변환
  • 하지만 모든 메모리 주소를 개별적으로 변환하는 것은 오버헤드가 크다
    • 그래서 MMU는 메모리를 일정 단위로 쪼개서 관리

스왑 메모리 시스템

  • macOS에서 물리 메모리가 부족해지면 스왑 메모리가 활성화됨
  • 스왑 메모리는 일반적으로 RAM에 저장되는 데이터를 임시로 저장하기 위해 예약된 저장 공간의 일부

스왑 메모리 확인 방법

터미널에서 다음 명령어로 상태를 확인한다.

sysctl vm.swapusage
vm.swapusage: total = 2048.00M  used = 858.44M  free = 1189.56M  (encrypted)

내 컴퓨터에서는 지금 이만큼 쓰인다.

가상 메모리 관리의 핵심 전략

필요한 데이터만 메모리에 로드

  • macOS는 모든 데이터가 아니라 필요한 것만 올려서 사용
  • 사용하지 않는 데이터는 보조 기억장치에 저장

동적 메모리 할당

  • macOS는 성간(sparse) 주소 공간을 사용해 스택 영역과 힙 영역이 동적으로 크기를 변경할 수 있도록 함
  • 이를 통해 메모리를 효율적으로 사용할 수 있다