1. 가상 메모리 개념
가상 메모리(Virtual Memory)는 각 프로세스에 연속되고 독립적인 가상 주소 공간을 제공하고,
실제로는 그중 필요한 부분만 물리 메모리에 적재하여 실행할 수 있게 하는 메모리 관리 기법 의미. [1][2]
이 방식 덕분에 프로세스 전체가 항상 물리 메모리에 올라와 있지 않아도 실행 가능. [1][2]
또한 사용자 프로그램은 물리 메모리의 실제 배치 방식과 분리된 주소 공간을 사용하므로,
운영체제가 메모리 보호와 관리 효율을 높일 수 있음. [1][2]
2. 왜 필요한가
가상 메모리는 다음 이유로 중요.
- 물리 메모리보다 큰 주소 공간 제공 가능 [1][2]
- 프로세스마다 독립적인 주소 공간 제공 가능 [1][2]
- 필요한 부분만 메모리에 올려 메모리 사용 효율 향상 가능 [1][2]
즉, 프로그램 입장에서는 큰 연속 주소 공간을 사용하는 것처럼 보이지만,
운영체제는 필요한 페이지 중심으로 메모리를 관리하는 구조.
3. 요구 페이징 (Demand Paging)
가상 메모리는 보통 요구 페이징(Demand Paging) 방식과 함께 설명됨. [1][2]
요구 페이징은 실제로 참조되는 시점에 페이지를 메모리로 가져오는 방식 의미. [1][2]
즉, 프로세스를 시작할 때 모든 페이지를 한꺼번에 적재하지 않고,
당장 필요한 페이지부터 적재하는 구조.
이때 페이지 테이블에는 각 페이지가 현재 메모리에 있는지 나타내는
유효 / 무효 비트(valid / invalid bit)를 둘 수 있음. [2]
장점은 다음과 같음.
- 초기 적재 I/O 감소 [1][2]
- 메모리 사용량 감소 [1][2]
- 더 많은 프로세스를 동시에 수용할 가능성 증가 [1][2]
4. Page Fault
CPU가 참조한 페이지가 현재 물리 메모리에 없을 때 page fault가 발생. [1][2]
일반적인 처리 흐름은 다음과 같음.
- CPU가 어떤 가상 주소를 참조
- MMU가 페이지 테이블을 확인
- 해당 페이지가 메모리에 없으면 page fault trap 발생
- 운영체제가 해당 페이지를 보조기억장치에서 읽어 빈 프레임에 적재
- 페이지 테이블을 갱신하고, 중단된 명령을 다시 실행 [2]
즉, page fault는 단순 오류라기보다
필요한 페이지를 나중에 적재하기 위한 정상적인 제어 흐름의 일부일 수 있음. [2]
5. 페이지 교체 (Page Replacement)
Page fault가 발생했을 때 빈 프레임이 없다면,
현재 메모리에 있는 페이지 중 하나를 내보내고 새 페이지를 적재해야 함.
이 과정을 페이지 교체(Page Replacement)라고 함. [1][2]
페이지 교체의 목표는 전체 page fault 횟수를 줄이는 것. [1][2]
대표 알고리즘은 다음과 같음.
| 알고리즘 | 설명 |
|---|---|
| FIFO | 메모리에 가장 먼저 들어온 페이지를 먼저 교체 |
| OPT(최적 페이지 교체) | 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체 |
| LRU | 가장 오랫동안 참조되지 않은 페이지를 교체 |
| LFU | 참조 횟수가 가장 적은 페이지를 교체 |
여기서 OPT는 이론적으로 가장 좋은 기준이지만,
미래 참조를 알아야 하므로 실제 그대로 구현할 수는 없음. [2]
또한 LFU는 카운트 관리 비용이 크고 실제 사용 패턴을 항상 잘 반영하지 못해
전형적인 설명용 알고리즘으로 더 자주 다뤄짐. [2]
6. 면접에서 같이 말하면 좋은 포인트
가상 메모리 질문에서는 보통 다음 흐름으로 이어짐.
- 가상 메모리란 무엇인가
- 요구 페이징이 무엇인가
- page fault가 어떻게 처리되는가
- 페이지 교체 알고리즘에는 무엇이 있는가
즉, 가상 주소 공간, 요구 페이징, page fault, page replacement를
한 흐름으로 연결해서 설명하면 정리가 잘 됨.
핵심 정리
가상 메모리
- 프로세스에 연속된 가상 주소 공간을 제공하는 메모리 관리 기법
- 필요한 부분만 물리 메모리에 적재하여 실행 가능
요구 페이징
- 실제로 참조되는 시점에 필요한 페이지를 적재하는 방식
Page Fault
- 참조한 페이지가 현재 메모리에 없을 때 발생
- 운영체제가 페이지를 적재한 뒤 명령을 다시 실행
페이지 교체
- 빈 프레임이 없을 때 기존 페이지를 내보내는 과정
- 대표 알고리즘: FIFO, OPT, LRU, LFU
참고 자료
- KOCW, 운영체제 강의자료
https://contents.kocw.or.kr/KOCW/document/2015/cup/weonsunghyun/8.pdf - University of Illinois Chicago, Operating Systems Notes, “Virtual Memory”
https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/9_VirtualMemory.html