Computer Science/Operating System
[OS] 가상 메모리
Dev_Green
2023. 8. 16. 23:16
메모리란?
- 프로그램과 프로그램 실행에 필요한 데이터 및 코드를 저장하는 장치
- 메모리의 종류
- 주기억 장치: RAM, register, cache memory
- 보조기억 장치: SSD, HDD
가상 메모리의 필요성
기존에는 프로그램이 실행되기 위해 프로그램 전체가 메모리에 로드되어야 했기 때문에, 메모리(RAM)의 용량은 가장 큰 애플리케이션의 용량보다 커야했다. 하지만 메모리의 접근은 순차적이고 지역화되어 있는 경향이 있기 때문에 전체를 로드하여 사용하는 것은 비효율적이었다.
가상 메모리는 이러한 물리적 메모리 용량의 한계를 극복하기 위해 개발된 기술이다. 프로세스를 실행할 때 필요한 최소한의 부분만 메모리에 로드하고 나머지는 보조기억장치(디스크)에 두는 것이다.
결과적으로 보다 적은 메모리 용량으로 프로그램을 실행할 수 있게 되고, 더많은 프로그램을 동시에 실행하기 위한 기술적 기반이 되었다.
가상 메모리
정리하자면 가상 메모리는
빠르고 작은 기억장치(RAM)과 크고 느린(디스크)를 병합하여 하나의 크고 빠른 기억 장치(가상 메모리)처럼 동작하게 하는 것이다.
이를 구현하기 위해서는 MMU(Memoery Management Unit)라는 메모리 관리 하드웨어가 필요하다.
MMU는 가상주소를 물리주소로 변환하는 기능을 수행한다. 이때 작업의 효율성을 높이기 위해 MMU는 가상 주소공간을 여러 부분(page)으로 나누어 관리한다. 그 가운데 일부는 실제 메모리 주소의 한 프레임에 대응된다. 여기서 현재 필요한 페이지만 메모리에 올리는 것은 demand paging이라고 한다.
Demand Paging
demand paging은 실제로 필요할 때 page를 메모리에 로드하는 것이다. 한번도 접근되지 않은 페이지는 메모리에 로드되지 않는다.