[OS] Virtual Memory
가상 메모리 (Virtual Memory)
● 컴퓨터 시스템에서 물리적 메모리(RAM)의 크기보다 더 큰 메모리 공간을 사용할 수 있게 하는
메모리 관리 기법
● 물리적으로 용량을 늘리면 되는데 왜 필요할까?
- 초기 컴퓨터 시스템에서는 프로그램이 RAM에 직접 적재되어야 했다.
- 최근에야 RAM에 용량이 높아졌고 비용적인 부분도 효율적으로 변했지만, 초기에는 그렇지 못함.
- 메모리 용량이 부족할 경우 프로그램 실행이 제한되거나, 여러 프로그램을 동시에 실행하지 못함.
→ 물리적 메모리보다 큰 주소 공간을 제공하고, 여러 프로그램을 동시 실행할 수 있도록 만들어준다.
● 작동 원리
- 실제 물리적 메모리 주소 대신 가상 주소(Virtual Address)를 사용하여 데이터를 읽고 쓴다.
- CPU가 가상 주소로 데이터를 접근하려 할 때, 주소 변환(Address Translation) 과정을 거쳐
가상 주소를 물리주소(Physical Address)로 변환
- 컴퓨터에서 실행되는 프로그램은 가상 주소를 통해 메모리에 접근
→ 실제 데이터는 물리 주소에 저장
- 가상 주소는 프로세스마다 고유의 메모리 공간을 제공하는 역할을 함
- 서로 다른 프로세스가 동일한 가상 주소를 사용하더라도 출동하지 않고 독립적으로 실행
- 변환 작업에는 메모리 관리장치(MMU: Memory Management Unit)에 의해 수행
Page & Page Table
● 가상 메모리 시스템에서 메모리 단위 = 페이지(Page)
○ Page : 가상 메모리와 물리 메모리를 일정한 크기로 나눈 단위
○ Page Table : 가상 주소와 물리 주소의 매핑 정보를 저장하는 테이블
- 각 페이지마다 가상 주소와 물리 주소의 대응 관계가 저장되어 있으며, 이를 통해 주소 변환

● 가상 메모리 시스템
- 메모리 공간의 효율성을 위해 사용되지 않는 페이지는 보조 기억 장치(SSD, HDD)에 임시 저장
→ 필요할 때만 메모리에 로드
○ 페이지 부재(Page Fault) :
- CPU가 접근하려는 가상 주소에 해당하는 페이지가 물리 메모리에 없는 경우
- 페이지 부재 발생 시 보조 기억 장치에서 해당 페이지를 메모리로 가져오는 작업을 수행
○ 스왑(Swap) :
- 메모리가 포화 상태인 경우, 더 이상 필요하지 않는 페이지를 보조 기억 장치로 내보내는 작업
가상 메모리를 사용하면 좋은 점과 비효율적인 것
● 좋은 점
- 효율적인 메모리 사용으로 물리적 메모리보다 큰 프로그램도 실행 가능
- 각 프로세스가 고유의 가상 주소 공간을 가지기 때문에,
다른 프로세스에 영향을 미치지 않고 안정적으로 실행이 가능하다.
- 페이지 테이블을 사용한 접근 제어로 프로세스 간 메모리 접근을 제한할 수 있다.
= 메모리 보호
● 비효율적인 것
- 페이지 부재가 빈번하면 디스크 I/O가 많아져 성능이 저하된다.
- 페이지 테이블을 유지하고 관리하는 데 추가적인 메모리와 연산이 필요하다.
- 물리 메모리의 작은 페이지 단위로 인해 CPU 캐시가 효율적으로 동작하지 않는다.
= Cahce Miss