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) 주소 공간을 사용해 스택 영역과 힙 영역이 동적으로 크기를 변경할 수 있도록 함
- 이를 통해 메모리를 효율적으로 사용할 수 있다