논리 주소를 물리 주소로 변환해주며 메모리 보호나 캐시 관리 등 CPU가 메모리에 접근하는 것을 총 관리해주는 하드웨어
메모리의 공간이 한정적이기 때문에, 사용자에게 더 많은 메모리를 제공하기 위해 가상 메모리라는 개념이 등장했다. 이 가상 메모리의 논리 주소를 가지고 실제 데이터가 담겨 있는 곳에 접근하기 위해서는 빠른 주소 변환이 필요한데, 이를 MMU가 도와준다.
프로세스는 독립적인 메모리 공간을 가져야 하고, 자신의 공간만 접근해야 한다.따라서 MMU는 한 프로세스에게 합법적인 주소 영역을 설정하고, 잘못된 접근이 오면 trap을 발생시키며 보호한다.
프로세스의 접근 가능한 합법적인 메모리 영역(x
)은 base <= x < base+limit
이 된다.따라서 이 영역 밖에서 접근을 요구하면 trap을 발생시킨다.
안전성을 위해 base와 limit 레지스터는 사용자 모드에서는 직접 변경할 수 없도록 커널 모드에서만 수정 가능하도록 설계되었다.
실제 메모리의 사이즈보다 더 큰 사이즈의 메모리를 프로세스에 할당한 상황
가상 메모리를 사용하면 실제 메모리 사이즈보다 더 큰 사이즈의 메모리를 사용하는 것 처럼 보일 수 있다.하지만 과할당 상황에는 사용자를 속인 것을 들킬만한 상황이 존재한다.
프로세스 실행 도중 페이지 폴트 발생하면, 페이지 폴트를 발생시킨 페이지 위치를 디스크에서 찾는다.이 때, 메모리의 빈 프레임에 페이지를 올려야 하는데, 모든 메모리가 사용중이라 빈 프레임이 없는 상황이 발생한다.
이러한 과할당을 해결하기 위해선, swapping 기법을 통해 빈 프레임을 확보하여 페이지 교체가 이루어져야 한다.swapping 기법은 프로세스 하나를 swap out
하고, 이 공간을 빈 프레임으로 활용한다.
페이지를 swap out해서 빈 프레임을 확보하는 것
페이지 교체가 이루어지면 아무일이 없던것 처럼 프로세스를 계속 수행시켜주면서 사용자가 알지 못하도록 해야한다.이 때, 아무일도 일어나지 않은 것처럼 하려면 페이지 교체 당시 오버헤드를 최대한 줄여야 한다.
빈 프레임이 없는 상황에서 victim 프레임을 비울 때와 원하는 페이지를 프레임으로 올릴 때 두 번의 디스크 접근이 이루어진다.페이지 교체가 많이 이루어지면, 이러한 입출력 연산이 많이 발생하게 되면서 오버헤드 문제가 발생하게 된다.
set
상태 : 해당 페이지 내용이 디스크 상의 페이지 내용과 달라졌다는 뜻으로 디스크에 기록해야한다.clear
상태 : 디스크 상의 페이지 내용과 메모리 상의 페이지가 정확히 일치하는 상황으로 디스크에 기록할 필요가 없다.비트를 활용해 디스크에 기록하는 횟수를 줄이면서 오버헤드에 대한 수를 최대 절반으로 감소시키는 방법이다.