Thrashing 이란 page fault가 시스템의 허용 수준을 넘어갈 정도로 발생하는 것을 의미한다. 따라서 프로세스가 페이지를 swapping 하는 것만으로도 busy 상태에 빠지는 것이다.
Thrashing은 OS의 착각을 일으키기 매우 쉬운 현상이다. page fault가 너무 많이 발생해서, page swapping 만 일어난다면 그 시간동안 CPU는 계속해서 놀고 있는 것이다. 따라서 cpu utilization이 낮아졌다고 판단한 OS는 CPU에게 일을 시키기 위해 더 많은 프로세스를 생성한다. 따라서 page fault로 시스템이 마비되어 있는 상태에서 프로세스는 계속해서 생성되니, cpu utilizaion이 아예 바닥까지 떨어져 버리는 것이다.
그렇다면 어떻게 paging을 해서 thrashing이 발생하지 않도록 해야 하는가?
프로세스의 프레임 독점을 방지하기 위해 하나의 프로세스에 너무 많은 프레임이 할당되지 않도록 지역성을 잘 활용해야 한다.
Working set model이란 OS가 메모리를 관리할 때 지역성을 고려하는 모델을 의미한다.
working-set window
: 고정된 수의 페이지 참조로 정의된다.
( Example : 10,000 instructions )
WSS ( Working set size of Process P )
: 최근 동안 process P가 참조한 페이지의 숫자를 의미한다.
- 가 너무 작으면, 전체 지역성을 포괄하지 못함.
- 가 너무 크면, 여러 지역성을 포괄하게 됨.
- = , 전체 프로그램을 포함하게 됨.
= WSS total demand frames
If, D > m => Trashing
Trashing이 발생하지 않도록, 허용 가능한 page-fault frequency 를 설정하고, local replacement policy를 사용해야 한다.
IF, Page Fault Rate too low
: processes loses frame
IF, PAge Fault Rate too high
: prcesses gain frame