가상 메모리와 MMU
1. 배경 지식
1.1 가상 메모리(Virtual Memory)
가상 메모리는 실제 컴퓨터에 있는 메인 메모리(RAM) 보다 더 큰 메모리가 있는 것처럼 보이게 하는 기술로, 이를 통해 개발자는 물리적인 메모리 크기에 제약받지 않고 프로그램을 만들 수 있다.
가상 주소(Virtual Address) : CPU 가 프로세스를 실행하면서 사용하는 주소이다. 이 주소는 논리적이며, 실제 RAM 주소와는 다르다.
물리 주소(Physical Address) : RAM 에 있는 실제 주소이다.
가상 메모리는 이러한 가상 주소를 물리 주소로 변환하여 실제 메모리에 접근하는 원리로 동작한다.
1.2 MMU(Memory Management Unit)
MMU 는 가상 주소를 물리 주소로 변환하는 하드웨어 장치이다. 이 장치는 CPU 와 RAM 사이에 위치한다.
역할 : CPU 가 가상 주소를 보내면, MMU 는 운영체제가 관리하는 페이지 테이블을 사용하여 해당 가상 주소에 대응하는 물리 주소를 찾아서 RAM 에 접근한다.
페이지 테이블(Page Table) : 가상 주소와 물리 주소의 매핑 정보를 저장하는 테이블이다. 페이지 테이블은 각 프로세스마다 고유하게 존재하며, 운영체제가 관리한다.
1.3 실제 저장 방법과 순서
가장 메모리 시스템에서 프로세스가 데이터를 저장하고 사용하는 과정은 다음과 같다.
프로그램 실행과 가상 주소 생성
운영체제가 프로세스를 실행하면, 해당 프로세스에 독립적인 가상 주소 공간이 할당된다.
프로세스는 메모리에 데이터를 저장하거나 읽을 때, 이 가상 주소 공간의 주소를 사용한다.
예를 들어, CPU 가 "가상 주소 100번에 있는 데이터를 읽어와라" 라는 명령을 내린다.
MMU 주소 변환
CPU 는 명령에 포함된 가상 주소(100번)를 MMU 로 찾아낸다.
MMU 는 해당 프로세스의 페이지 테이블을 참조한다. 페이지 테이블에는 "가상 주소 100번이 물리주소 500 번에 매핑되어 있다" 라는 정보가 있다.
MMU 는 이정보를 바탕으로 가상 주소 100번을 물리 주소 500번으로 변환한다.
물리 메모리 접근
MMU 는 변환된 물리주소(500번) 을 RAM 에 보낸다.
RAM 은 물리주소 500번에 접근하여 해당 데이터를 읽어와서 CPU 로 전달한다.
이 과정을 통해 프로세스는 실제 물리 메모리가 어디에 있는지 모르고도 데이터를 사용할 수 있다.
페이지 폴트(Page Fault) : 만약 MMU 가 페이지 테이블을 참조했는데, 해당 가상 주소에 대응하는 데이터가 현재 RAM 에 없는 경우(하드디스크에 저장된 경우), 운영체제는 페이지 폴트라는 예외를 발생시킨다. 운영체제는 하드디스크에서 필요한 데이터를 RAM 으로 가져와 페이지 테이블을 업데이트한 후, 다시 프로세스를 실행시켜 정상적인 접근이 이루어지도록 한다.
2.
Last updated