주소는 가짜입니다.
매핑과 정책이 경계를 만듭니다.
가상화는 여기서 시작됩니다.
1. “Virtual Memory가 가상화 맞아요?”
이 시리즈를 시작하며 저는 “VM → 컨테이너 → Docker → Kubernetes” 흐름을 잡았습니다. 그런데 첫 번째 주인공으로 Virtual Memory를 꺼내면 보통 이런 질문이 돌아옵니다.
- “메모리 관리는 그냥 OS의 기본 기능 아닌가요?”
- “본격적인 가상화 이야기로 넘어가기 전에 왜 갑자기 메모리 쪽으로 새는 거죠?”
저 역시 처음에는 Virtual Memory를 ‘메모리 부족을 해결하는 기술’ 정도로만 생각했습니다. 하지만 관점을 [경계 + 매핑 + 정책]이라는 프레임으로 옮겨 보면, Virtual Memory는 오히려 가상화의 원형에 가깝다는 사실을 확인하게 됩니다.
결론은 단순합니다.
- 경계: 프로세스마다 나만의 독립된 주소 공간이 존재하는 것처럼 보이게 합니다.
- 매핑: 가상 주소를 실제 물리 메모리 위치에 연결하는 번역층을 둡니다.
- 정책: 서로의 영역을 침범하지 못하도록 보호 규칙을 강제합니다.
이 구조는 이후에 다룰 VM이나 Kubernetes에서도 이름만 바뀐 채 반복됩니다. 차이는 “무엇을 경계로 잡느냐”에 가깝습니다.
2. Virtual Memory가 만든 환상: “각 프로세스는 자기 주소 공간을 가진다”
Virtual Memory가 만든 첫 번째 효과는 단순하면서도 강합니다.
- 프로세스 A는 자신이 0번지부터 끝번지까지의 메모리를 ‘가진 것처럼’ 동작합니다.
- 프로세스 B도 똑같이 0번지를 사용하지만, A의 0번지와는 다른 세계입니다.
- 서로의 메모리가 어디에 있는지 알 수도, 볼 수도 없습니다.
여기서 핵심은 주소(Address)의 의미가 바뀐다는 점입니다. 우리는 흔히 주소를 ‘실제 메모리의 물리적 위치’라고 생각합니다. 하지만 Virtual Memory에서 주소는 그렇게 취급되지 않습니다.
- 주소는 ‘실제 위치’가 아니라, 자원을 식별하기 위한 이름에 가깝습니다.
- 실제 위치는 운영체제가 관리하고, 프로세스에는 이름(주소)만 제공합니다.
이 순간부터 주소 공간(Address Space)은 물리적 현실이 아니라 운영체제가 설계한 인터페이스가 됩니다. 저는 이 지점을 “첫 번째 가상화 레이어라고 봅니다.

3. 그럼 질문이 바뀝니다: “이름이 인터페이스라면, 실체는 누가 관리하죠?”
주소가 인터페이스라면 저는 이런 생각이 들었습니다.
- “그럼 실제 물리 메모리는 누가, 어떻게 나눠주지?”
- “프로세스들이 각자 주소를 쓰는데 충돌이 안 나는 이유가 뭐지?”
이 의문을 해소하면 Virtual Memory의 구조는 세 가지로 정리됩니다.
3-1) 경계: 주소 공간이라는 소유권 경계
운영체제는 각 프로세스가 볼 수 있는 주소의 범위를 논리적으로 확정합니다. 이 범위 밖은 프로세스 입장에서 원칙적으로 접근할 수 없는 영역입니다. 저는 이것을 격리(Isolation)의 시작이라고 봅니다.
3-2) 매핑: 가상 주소 → 물리 메모리
운영체제는 “이 주소는 실제로 여기다”를 연결하는 매핑 정보를 유지합니다. 프로세스는 주소만 사용하고, 실제 물리적 배치는 운영체제가 결정합니다. 저는 이것이 간접화(Indirection)의 핵심이라고 정리했습니다.
3-3) 정책: 보호 규칙(Permission)으로 침범을 막는다
매핑에는 위치 정보만 있는 게 아닙니다. 읽기만 가능, 쓰기 가능, 실행 가능 같은 규칙이 붙습니다. 이것은 구현 디테일을 넘어선 정책(Policy)입니다. 가상화는 환상을 보여주는 것으로 끝나지 않고, 그 환상을 유지하기 위해 정책을 강제해야 합니다.
4. Virtual Memory가 남긴 핵심: “환상은 운영 모델을 바꾼다”
여기까지 오면 질문은 이렇게 바뀝니다.
- “그래서, 주소를 가상으로 만들어서 얻는 진짜 이득이 뭔가요?”
Virtual Memory는 단순한 편의 기능을 넘어 운영 모델을 바꿨습니다.
- 프로세스는 물리 메모리의 구조를 몰라도 됩니다. (추상화)
- 운영체제는 상황에 맞춰 데이터를 배치하거나 이동시킬 수 있습니다. (유연성)
- 잘못된 접근이나 침범은 정책 위반으로 차단됩니다. (안정성)
즉, 현실 자원을 직접 다루던 방식이 [간접화 + 정책] 구조로 넘어간 것입니다. 저는 이 패턴이 뒤에서 다룰 VM / 컨테이너 / Kubernetes로 이어지는 “공통 골격”이라고 봤습니다.
5. 오늘날의 연결: 주소 공간에서 머신으로의 확장
여기까지 정리하고 나서, 저는 가상화를 보는 시각이 바뀌었습니다. 가상화는 단순한 속임수가 아니라, 경계와 매핑, 그리고 정책을 통해 자원을 운영하는 시스템 설계입니다.
그리고 그 첫 번째 성공 모델이 Virtual Memory였습니다. 그렇다면 다음 질문은 자연스럽습니다.
- “주소 공간(메모리)을 가상화할 수 있다면, CPU와 디스크를 포함한 머신 전체도 같은 방식으로 가상화할 수 있지 않을까?”
이 질문에 대한 대답이 다음 편의 주제인 Virtual Machine(VM)입니다.
'Notes > Computer Science' 카테고리의 다른 글
| Atomic: 락이 아니라 캐시 라인 소유권 경쟁이다. (0) | 2026.03.30 |
|---|---|
| Invalidate를 줄이는 법: MESI로 이해하는 캐시 라인 소유권 경쟁 (0) | 2026.03.26 |
| 현대 CPU 최적화의 본질: 연산(ALU)이 아닌 메모리(LSU) (0) | 2026.03.12 |
| 당신의 멀티스레드가 느린 이유: False Sharing과 alignas(64)의 진실 (0) | 2026.03.05 |
| OSI 7계층과 TCP/IP 4계층 (0) | 2010.08.23 |




