CS

가상 메모리

Hyeon_E 2023. 11. 7. 13:29

메모리

프로그램과 프로글매 수행에 필요한 데이터 및 코드를 저장하는 장치

메모리는 크게 내부 기억장치주기억장치외부 기억장치보조 기억장치로 분류

 

가상메모리

가상메모리는 메모리 관리 기법의 하나로, 컴퓨터 시스템에 실제로 이용 가능한 기억 자원을 이상적으로 추상화하여 사용자들에게 매 우 큰 메모리로 보이게 만드는 것을 말함

실제 메모리보다 많아 보이게 하는 기술로 어떤 프로세스가 실행될 때 메모리에 해당 프로세스 전체가 올라가지 않더라도 실행이 가능하다는 점에 착안하여 고안됨

애플리케이션이 실행될 때 실행에 필요한 일부분만 메모리에 올라가며 애플리케이션의 나머지는 디스크에 남게 됨

즉, 디스크가 RAM의 보조 기억장치(backing store)처럼 작동하는 것임

결국 빠르고 작은 기억장치(RAM)을 크고 느린 기억장치(디스크)와 병합하여 하나의 크고 빠른 기억장치(가상 메모리)처럼 동작하게 하는 것

 

가상적으로 주어진 주소를 가상 주소(virtual address) 또는 논리 주소(logical address)라고 하며 실제 메모리 상에서 유효한 주소를 물리 주소(physical address) 또는 실주소(real address)라고 함

가상 주소의 범위를 가상주소 공간, 물리 주소의 범위를 물리 주소 공간이라고 함

 

가상 주소 공간은 메모리 관리 장치(MMU)에 의하여 물리주소로 변환되며 이 덕분에 프로그래머는 가상 주소 공간에서 프로그램을 짜게 되어 프로그램이나 데이터가 주 메모리상에 어떻게 존재하는지를 의식할 필요가 없음

대부분의 현대적 아키텍처와 운영 체제는 가상 메모리 기능을 제공하며 각 응용 프로그램에 더 적합한 메모리 관리를 위해 어도비 포토샵과 같은 일부 응용 프로그램은 스스로 가상 메모리를 관리하기도 함

 

MMU

메모리 관리 장치(Memory Managment Unit, MMU)는 CPU가 메모리에 접근하는 것을 관리하는 컴퓨터 하드웨어 부품

가상 메모리 주소를 실제 메모리 주소로 변환하며 메모리 보호, 캐시 관리, 버스 중재 등의 역할을 담당함

간단한 8비트 아키텍처에서는 뱅크 스위칭(마이크로프로세서의 주소 공간보다 많은 메모리를 활용하기 위해 개발된 기술)을 담당하기도 함

 

여기서 핵심은 가상 메모리를 구현하기 위해서는 MMU를 갖추고 있어야만 하는 것인데 MMU는 가상주소를 물리적인 주소로 변환하고 메모리를 보호하는 기능을 수행하기 때문

MMU를 사용하게 되면 CPU가 각 메모리에 접근하기 이전에 메모리 주소 번역 작업이 수행됨

그러나 메모리를 일일이 가상 주소에서 물리적 주소로 번역하게 되면 작업 부하가 너무 높아지므로 MMU는 RAM을 여러 부분(페이지, pages)로 나누어 각 페이지를 하나의 독립된 항목으로 처리

페이지 및 주소 번역 정보를 기억하는 작업이 메모리 구현하는데 있어 결정적인 차이

 

가상 메모리 등장 배경

초창기 컴퓨터에서는 사용 가능한 RAM의 용량이 가장 큰 실행 애플리케이션의 주소 공간보다 커야 했음

그렇지 않을 경우 "메모리 부족" 오류에 의해 해당 애플리케이션을 실행할 수 없는 문제가 발생

 

이후 컴퓨터에서는 프로그래머가 애플리케이션의 일부분만 기억장치에 올려 실행하도록 지정할 수 있게 하는 오버레이 기법을 사용하여 메모리 부족 문제를 해결하고자 했으나 이 역시 전반적인 메모리 부족 문제를 해결할 수 없었음

오버레이를 사용하는 프로그램은 그렇지 않은 프로그램보다는 메모리를 덜 사용했지만 애초에 시스템이 프로그램을 위한 충분한 메모리를 갖추고 있지 않은 경우에는 결국 똑같은 메모리 부족 오류가 발생

 

오버레이 기법에서 더 발전한 가상 메모리 기법은 애플리케이션을 실행하는 데 얼마나 많은 메모리가 필요한지에 집중하지 않고 대신 애플리케이션을 실행하는 데 최소한 얼마만큼의 메모리가 필요한가에 집중하여 문제를 해결하고자 함

이렇게 접근하는 방식이 가능한 이유는 메모리 접근은 순차적이고 지역화되어 있기 때문

 

가상메모리 기법에서 애플리케이션의 일부분만 메모리(기억장치)에 올려지며 메모리에 올라가지 않는 나머지는 보조 기억장치(디스크)에 올라감. 즉 가상 메모리의 핵심은 보조 기억장치