Virtual Memeory 기법은 운영체제가 관여하여 주소를 변환한다.

Demand Paging 이라는 건 요청이 있으면 그 페이지를 메모리에 올리겠다는 것.
이렇게 하면 장점은 다음과 같다.

Invalid의 의미는 페이지가 물리적 메모리에 없는 경우에, 위 그림에서 A, C, F는 물리적 메모리 위에 올라와 있음. 반면 나머지 페이지들은 물리적 메모리에 올라와있지 않고 Backing store에 내려가 있다. 이런 건 Invalid로 표시되어 있다.
프로그램을 구성하는 페이지는 A부터 F까지다. G하고 H는 사용이 안되는 페이지다. 사용이 안되는 페이지도 Invalid로 표시된다. 페이지가 메모리 위에 올라가면 Invalid가 Valid로 바뀌게 된다.
page table을 보고 Invalid면 페이지가 메모리에 없다는 이야기다. 페이지를 일단 디스크에서 메모리로 올려야 한다. I/O 작업! 사용자 프로세스가 할 수 없는 일.
Invalid인 페이지에 대해서는 page fault라는 현상이 발생한다. 요청한 페이지가 메모리에 없는 경우를 page fault라고 한다. 이럴 때 CPU는 자동적으로 운영체제에 넘어가게 된다. page fault trap이라는 소프트웨어 인터럽트.



디스크 접근은 굉장히 오래 걸림. page fault가 얼마나 나느냐에 따라서 메모리 접근하는 시간이 크게 좌우가 된다.

어떤 페이지를 쫓아내고 새로운 페이지를 올릴 것인가. 이것이 replacement. replacement algorithm 은 가급적 page falut 비율이 낮아지도록 해야한다.


page fault가 가장 적은 알고리즘. 미래를 다 예측한 것을 기반으로 수행되는 알고리즘. 실제 시스템에서 사용될 수는 없음. 가장 먼 미래에 참조되는 페이지를 쫓아낸다. 아무리 좋은 알고리즘도 이보다 좋을 수는 없다.

FIFO 알고리즘은 먼저 메모리에 들어온 페이지를 쫓아낸다. 메모리 프레임을 늘려줬는데도 page fault가 증가할 수 있다.

제일 오래 전에 사용된 페이지를 쫓아낸다. 미래를 모르고 과거를 기반으로 판단한다.

과거 참조 횟수가 많았던 페이지는 쫓아내지 말자. 가장 참조가 적은 페이지를 쫓아내자.


