Chapter 9: Virtual Memory (가상 메모리)
가상 메모리는 현대 시스템에서 매우 중요한 메모리 추상화 개념이다. 이 추상화는 각 프로세스에게 독립적이고 균일한 메모리 주소 공간을 제공하며, 다음 세 가지 주요 기능을 제공한다:
- 캐싱 도구로서의 VM
메모리에 전부 올려놓기에는 프로그램이 너무 크거나, 메모리가 부족할 수 있다. 가상 메모리는 주기억장치를 디스크 기반의 큰 주소 공간에 대한 캐시로 사용함으로써 효율적인 메모리 사용을 가능하게 한다. - 메모리 관리 도구로서의 VM
사용자 수준의 메모리 할당자 (예: malloc) 구현에 도움을 준다. 가상 메모리를 사용하면 프로그램은 큰 연속적인 주소 공간을 가지고 있는 것처럼 보이므로, 다양한 할당 전략이 가능하다. - 메모리 보호 도구로서의 VM
하나의 프로그램이 다른 프로그램의 메모리를 침범하는 것을 방지한다. 운영체제가 각 프로세스에 대해 별도의 가상 주소 공간을 제공함으로써, 보호가 가능하다.
가상 메모리는 이러한 기능들을 대부분 자동으로 처리한다. 하지만 이를 이해하면 프로그램의 성능, 안정성, 그리고 디버깅 능력이 향상된다.
9.1절 물리 주소와 가상 주소 (Physical and Virtual Addressing)
메모리에 접근하는 방식은 크게 두 가지가 있다: 물리 주소 방식과 가상 주소 방식이다.
물리 주소 방식 (Physical Addressing)
- 메모리는 0번부터 M-1번까지 연속된 바이트로 구성되어 있으며, 각 바이트는 고유한 물리 주소를 가진다.
- CPU가 메모리에 접근할 때, 명령어는 직접 물리 주소를 참조한다.
- 단순하지만, 다중 프로세스 환경에서 메모리 보호나 관리 기능이 없다.
- 초기 컴퓨터 시스템, DSP, Cray 슈퍼컴퓨터에서 사용되었다.
가상 주소 방식 (Virtual Addressing)
- 대부분의 현대 시스템은 가상 주소 방식을 사용한다.
- CPU가 메모리에 접근할 때, 직접 물리 주소를 사용하는 것이 아니라, 가상 주소(Virtual Address, VA) 를 생성한다.
- 생성된 VA는 주소 변환(Address Translation) 을 통해 물리 주소(Physical Address, PA) 로 변환된다.
- 이 변환은 MMU(Memory Management Unit)라는 하드웨어에 의해 수행되며, 운영체제가 관리하는 페이지 테이블을 사용한다.
- 이 덕분에 각 프로세스는 고립된 메모리 공간을 가지게 되며, 보안성과 안정성이 향상된다.
9.2 Address Spaces (주소 공간)
주소 공간(Address Space)은 0 이상의 정수 주소들로 구성된 순서 있는 집합이다. 일반적으로는 연속적인 주소 집합을 가정하며, 이를 선형 주소 공간(linear address space)이라고 부른다.
가상 주소 공간 (Virtual Address Space)
- 가상 메모리를 사용하는 시스템에서 CPU는 N = 2ⁿ개의 주소로 이루어진 가상 주소 공간에서 주소를 생성한다.
- 이 N은 가상 주소 공간의 크기를 뜻하며, n비트 주소 공간이라고 한다.
- 예: 32비트 주소 공간은 최대 2³²개의 주소를 포함하며, 이는 4GB 메모리를 뜻한다.
- 64비트 주소 공간은 2⁶⁴개의 주소를 포함할 수 있다.
- 현대 시스템은 보통 32비트 또는 64비트 가상 주소 공간을 지원한다.
물리 주소 공간 (Physical Address Space)
- 시스템은 물리 메모리(RAM)에 존재하는 M 바이트의 물리 주소 공간을 가진다.
- 이는 {0, 1, 2, ..., M-1}로 표현된다.
- M은 꼭 2의 제곱일 필요는 없지만, 설명의 편의를 위해 보통 M = 2ᵐ이라고 가정한다.
가상 메모리의 핵심 아이디어
- 각 데이터 바이트는 가상 주소와 물리 주소라는 두 개의 독립된 주소를 가질 수 있다.
- 즉, 같은 데이터를 가상 주소와 물리 주소 두 방식으로 바라볼 수 있다.
- 이는 바이트(데이터 객체)와 주소(속성)를 분리해서 생각하는 추상화의 결과다.
- 하나의 메모리 바이트에 대해, 여러 개의 주소 공간에서 독립적으로 주소를 지정할 수 있다는 개념이 바로 가상 메모리의 기본이다.
'크래프톤 정글 (컴퓨터 시스템: CSAPP) > 9장 가상 메모리' 카테고리의 다른 글
컴퓨터 시스템 : CSAPP 9장 정리 - 9.8 메모리 매핑 (0) | 2025.04.20 |
---|---|
컴퓨터 시스템 : CSAPP 9장 정리 - 9.7 사례 연구 : 인텔 코어 i7/리눅스 메모리 시스템 (0) | 2025.04.20 |
컴퓨터 시스템 : CSAPP 9장 정리 - 9.6 주소의 번역 (0) | 2025.04.20 |
컴퓨터 시스템 : CSAPP 9장 정리 - 9.4 ~ 9.5 (0) | 2025.04.20 |
컴퓨터 시스템 : CSAPP 9장 정리 - 9.3 캐싱 도구로서의 VM (0) | 2025.04.20 |