
- 실제 메모리(RAM)보다 더 큰 메모리 공간을 사용할 수 있도록 해주는 기술
- 각 프로세스가 메인 메모리를 독점적으로 사용하는 것처럼 보이게 함
- 운영체제는 디스크(스토리지)의 일부를 메모리처럼 사용하여 부족한 RAM을 확장
📌 가상 메모리의 핵심 역할
1️⃣ 프로세스마다 독립적인 메모리 공간 제공
- 여러 개의 프로세스가 실행될 때, 각 프로세스가 자신의 독립적인 메모리를 가지고 있는 것처럼 보이게 함
2️⃣ 실제 RAM보다 더 큰 메모리 사용 가능
- 실행 중인 프로그램이 RAM보다 많은 메모리가 필요하면, 운영체제가 디스크 공간을 활용하여 메모리를 확장함
3️⃣ 프로세스 간 메모리 보호
- 하나의 프로세스가 다른 프로세스의 메모리를 침범하지 못하도록 보호
각 프로세스는 가상 주소 공간(Virtual Address Space)을 가지며, 이는 여러 개의 영역으로 나뉘어요.
📌 그림 1.13을 보면 가상 주소 공간이 어떻게 구성되는지 나타나 있음
📌 각 영역의 특징
- 코드(Code) & 데이터(Data): 프로그램 실행을 위한 기본적인 코드 & 전역 데이터 저장
- 힙(Heap): 실행 중 동적으로 할당하는 메모리 (크기가 가변적)
- 스택(Stack): 함수 호출, 지역 변수 저장 (LIFO 구조)
- 공유 라이브러리: printf(), malloc() 같은 공용 함수가 저장되는 공간
- 커널 공간: 운영체제 코드가 실행되는 영역 (사용자는 접근 불가)
📌 1️⃣ 메모리 보호(Memory Protection)
- 각 프로세스는 자신만의 가상 주소 공간을 가지므로, 다른 프로세스의 메모리에 접근할 수 없음.
- 이를 통해 보안 및 안정성이 향상됨.
📌 2️⃣ 페이지 매핑(Page Mapping) – 물리적 메모리와 연결
- 운영체제는 가상 주소(Virtual Address)를 실제 물리적 메모리(Physical Memory)로 변환해야 함.
- 이 변환 과정에서 페이지 테이블(Page Table)이 사용됨.
- 운영체제가 가상 주소와 실제 주소를 매핑하여 프로세스가 자신의 독립적인 메모리를 가지고 있는 것처럼 보이게 함.
📌 3️⃣ 페이지 교체(Page Swapping) – 디스크를 메모리처럼 활용
- 실행 중인 프로세스가 필요한 메모리가 RAM보다 많을 경우,
일부 데이터를 디스크(Swap 영역)에 저장했다가 필요할 때 다시 불러오는 방식.- 즉, 디스크의 일부를 가상의 RAM처럼 사용하여 메모리를 확장하는 효과!
- 하지만, 디스크는 RAM보다 속도가 훨씬 느리므로 너무 자주 발생하면 성능이 저하될 수 있음.
📌 페이지(Page)와 페이지 테이블(Page Table)
- 가상 메모리는 작은 "페이지(Page)" 단위로 관리됨
- 운영체제는 각 페이지가 물리적 메모리 어디에 위치하는지 매핑 정보를 저장
- 이 매핑 정보를 관리하는 것이 바로 페이지 테이블(Page Table)
📌 페이지 테이블 역할
- 가상 주소 → 물리 주소 변환 (페이지 매핑)
- 프로세스마다 고유한 페이지 테이블을 가짐
📌 페이지 폴트(Page Fault)
- 프로세스가 필요한 데이터가 메모리에 없고, 디스크(Swap 영역)에 있을 때 발생하는 현상
- 운영체제가 디스크에서 데이터를 불러오고, 메모리에 적재하는 과정이 필요
- 페이지 폴트가 자주 발생하면 속도가 느려질 수 있음.
📌스왑(Swap)과 스왑 영역(Swap Space)
- 운영체제는 RAM이 부족할 때 일부 데이터를 디스크의 Swap 영역에 저장
- 이 공간을 활용하면 실제 RAM보다 더 많은 데이터를 처리 가능
- 하지만 디스크 접근 속도가 RAM보다 느리므로 성능 저하가 발생할 수 있음.
📌 ✅ 가상 메모리의 장점
✔ 메모리 확장 가능 → RAM보다 더 많은 메모리를 사용할 수 있음
✔ 메모리 보호 → 각 프로세스가 독립적인 메모리를 가지므로 충돌 방지
✔ 멀티태스킹 가능 → 여러 개의 프로그램을 동시에 실행 가능
📌 ❌ 가상 메모리의 단점
❌ 페이지 폴트 발생 시 성능 저하 → 디스크에서 데이터를 불러오면 속도가 느려짐
❌ 스왑 사용 시 속도 저하 → RAM보다 디스크가 훨씬 느리므로 성능 저하 발생
❌ 페이지 테이블 관리 비용 → 페이지 매핑을 위한 추가적인 오버헤드 발생
✔ 가상 메모리는 프로세스가 독립적인 메모리를 사용하는 것처럼 보이게 하는 운영체제의 기술
✔ 실제 RAM보다 더 큰 메모리를 사용할 수 있도록 디스크(Swap)를 활용
✔ 각 프로세스는 가상 주소 공간을 가지며, 운영체제가 이를 물리 메모리와 매핑
✔ 페이지 테이블을 통해 가상 주소 → 물리 주소 변환
✔ 스왑과 페이지 폴트는 성능 저하를 유발할 수 있으므로 주의해야 함