🗺️ 가상 메모리(Virtual Memory)
한 줄 요약 : 각 프로세스에게 독립된 가상 주소 공간을 제공하고, MMU가 이를 물리 주소로 변환해 메모리 충돌을 원천 차단하는 기술이다.
💡 핵심 아이디어
프로세스 A와 B가 같은 가상 주소 0x1000을 사용한다고 해도 문제가 없다.
프로세스 A : 가상 주소 0x1000 → 물리 주소 0xA000
프로세스 B : 가상 주소 0x1000 → 물리 주소 0xF000
겉으로는 같아 보이지만, RAM에서는 전혀 다른 위치를 가리킨다.
각 프로세스는 자기만의 독립된 메모리 공간을 가진다고 착각하며, 그 착각이 안전을 만든다.
⚙️ 동작 원리 : 주소 변환(Address Translation)
프로세스 → 가상 주소 요청
↓
MMU(Memory Management Unit)
↓
페이지 테이블(Page Table) 조회
↓
물리 주소로 변환
↓
RAM 접근
RAM은 4KB 단위의 페이지(Page) 로 나뉘며, 각 프로세스는 자신만의 페이지 테이블을 가진다.
MMU가 이 테이블을 참조해 가상 주소 → 물리 주소 변환을 수행한다.
🛡️ 메모리 보호 (Memory Protection)
프로세스 A가 프로세스 B의 메모리 영역에 접근하려 하면?
OS가 즉시 차단 → Segmentation Fault 발생 → 프로세스 강제 종료
페이지 테이블에 없는 주소에 접근하는 순간, OS가 허용하지 않는다.
덕분에 프로세스끼리 서로의 메모리를 절대 침범할 수 없다.
☁️ Spring Boot 서버 관점
EC2 인스턴스 하나에서 여러 Java 프로세스가 동시에 실행되어도 서로 메모리를 침범하지 못하는 이유가 바로 가상 메모리다.
JVM 프로세스 1 → 가상 주소 공간 독립
JVM 프로세스 2 → 가상 주소 공간 독립
↓
OS + MMU가 물리 메모리 분리 관리
📌 핵심 요약
| 개념 | 설명 |
|---|---|
| 가상 주소 | 프로세스가 실제로 사용하는 논리적 주소 |
| 물리 주소 | RAM의 실제 위치 |
| MMU | 가상 → 물리 주소 변환 담당 하드웨어 |
| 페이지 테이블 | 각 프로세스가 가진 주소 변환 매핑표 |
| 메모리 보호 | 허용되지 않은 주소 접근 시 OS가 즉시 차단 |