가상 메모리 페이지 교체(Page Replacement)

By 01/11/2018OS Concept

가상 메모리 페이지 교체(Page Replacement)

 

 

페이지 부재율에서 각 페이지는 처음 그 페이지가 접근될 때 한번만 페이지 부재가 발생한다고 가정하였다. 하지만 전체 10페이지 중 실제 5페이지만 사용하는 프로세스가 있다면 요구 페이징을 통해 전혀 사용되지 않을 5페이지를 적재하는데 필요한 입/출력을 피할 수 있다. 또한 다중 프로그래밍 정도를 높여서 프로세스 수를 2배로 늘릴 수 있다. 즉 40프레임이 있다면 10개의 페이지가 전부 필요했다면 4개의 프로세스만이 수행 될 수 있었지만(10개 중 5개가 사용되지 않으므로)실제로는 8개의 프로세스를 실행 할 수 있다.

 

 

다중 프로그램 정도를 더 올리면 메모리 과할당(over allocation)이 발생 한다. 시스템 메모리는 프로그램 페이지를 저장하는 용도 외에 입/출력을 위한 버퍼도 상당한 양의 메모리를 사용한다. 이는 메모리 할당 알고리즘의 부담을 증가시키기 때문에 얼마만큼을 할 것인지는 매우 중요하다.

 

과할당은 사용자 프로세스가 실행중에 페이지 부재가 발생한다. 운영체제는 필요한 페이지가 디스크 어디에 위치하고 있는지 알아내지만 빈 프레임이 없음(모든 메모리가 사용중)을 발견한다. 이 시점에 운영체제는 사용자 프로세스를 종료 또는 사용자 프로세스가 페이징 시스템에서 실행되고 있음을 알게 해서는 안된다. 하지만 이는 좋은 방법이 아니기 때문에 운영체제는 프로세스 하나를 스왑 아웃하여 그 프로세스의 프레임들을 해제하고 다중 프로그래밍 정도를 낮출 수 있다. 이와 같은 문제를 해결하기 위해 페이지 교체가 사용 된다.

 

페이지 교체는 빈 프레임이 없다면 현재 사용되고 있지 않는 프레임을 찾아서 비워 버린다. 프레임의 내용은 스왑 공간에 쓰고 그 페이지가 메모리에 더 이상 존재하지 않다는 것을 나타내기 위해 페이지 테이블(모든 다른 테이블들)을 변화시킴으로써 프레임을 비어있게 한다. 비워진 프레임은 페이지 부재를 발생시킨 프로세스에서 사용한다.

 

빈 프레임이 없는 경우 디스크를 두 번 접근한다. 이와 같은 상황에서는 페이지 부재 처리시간이 두 배 소요되며 실제 접근시간도 증가한다. 이러한 오버헤드는 변경 비트를 사용하여 감소 시킬 수 있다.변경 비트가 확인되면 피이지 내용이 원래 디스크 상의 그 페이지 내용과 다르다는 것을 알 수 있어 현재 내용을 디스크에 기록한다. 이 기법은 읽기 전용 페이지에도 적용된다.

 

페이지 교체는 요구 페이징의 기본이다. 이를 통해 논리적 메모리와 물리적 메모리 간의 분리가 완성되며 이 기법으로 인해 적은 물리 메모리로 많은 가상 메모리를 제공 할 수 있다.

 

요구 페이징 시스템은 두 가지 중요한 문제를 해결해야 하는데 프레임 할당 알고리즘과 페이지 교체 알고리즘이다. 여러 프로세스가 존재하는 경우 각 프로세스에 얼마나 많은 프레임을 할당 해야 하는지, 어떤 페이지를 교체 해야하는지 결정해야 한다. 디스크의 비용이 큰 것을 감안하면 효율적인 알고리즘을 선택하여 시스템 성능을 높일 수 있다.

 

일반적으로 페이지 부재율(page fault rate)이 가장 낮은 것을 선정한다. 특정 메모리 참조 나열에 대해 알고리즘을 적용하여 페이지 부재 발생 횟수를 계산하여 평가 한다. 이러한 메모리 주소의 나열을 참조열(reference string)이라 부른다. 참조열은 인공적으로 생성할 수도 있고 주어진 시스템을 추적하여 메모리 참조 시의 주소를 기록할 수도 있다.

 

페이지 부재 횟수를 알려면 페이지 교체 알고리즘 외에도 이 프로세스가 현재 사용할 수 있는 페이지 프레임의 수를 알아야 한다. 프레임의 수가 많으면 페이지 부재 횟수가 감소한다. 물론 물리 메모리를 추가하면 프레임의 수는 증가한다.

 

 

[참고자료]

Operating System Concepts

 

operationsystem, 운영체제, 운영체제구조, 컴퓨터구조, OSConcept, 가상메모리, 페이지교체, 페이지부재, pagefault, 변경비트, sqlmvp, SQL Angeles