Thrashing
- 가용 물리 메모리가 충분하지 않거나, 시스템에 적절하지 않은 페이지 교체 알고리즘으로 인해 swap in/out만 발생하면서 실제 프로그램들이 제대로 수행하지 못하는 상황
* 페이지 폴트 발생 -> 페이지 교체(swap in/out) 발생 -> 다시 즉각적으로 페이지 폴트 발생 (반복...)
- A process is spending more time paging than executing
- 심지어 CPU 활용이 떨어지면서 더 많은 프로세스를 자꾸 수행시키게 만들게 하는 악순환(다중 프로그래밍 정도를 더 높임)이 반복되어 페이지 폴트도 그 만큼 더 많이 발생
- 페이징 시스템에서 꼭 피해야만 하는 문제
- woking set 도입을 통해 극복
Working Set 방식으로 해결
- 한 프로세스가 원할하게 수행되기 위해 필요한 최소한의 페이지들의 집합
- working set은 어떻게 구하나?
- 지역성을 고혀하여 만든 모델이다. 따라서 필요한 부분을 집중적으로 참조하는 부분을 구해야 한다.
- Delta(window size)를 지정하여 검사한다.
- 특정 시점의 윈도우 크기내 참조되는 페이지 종류들과 다른 시점의 참조되는 페이지들을 검사한다.
- 그리고 이 중 중복을 제외하고 유니크한 페이지들이 working set이다. 이 페이지들의 갯수가 working set 크기이다.
- 한 프로세스의 working set은 해당 프로세스가 가장 자주 참조하는 페이지라는 의미이므로 이 페이지들을 고정적으로 메모리에 상주시키는 방식으로 쓰레싱을 방지할 수 있다.
- 또한 각 프로세스의 모든 Working set의 합이 가용한 시스템의 총 프레임 수보다 크냐 작냐를 판단하여 수행 프로세스 수를 조절하는 방식으로로 쓰레싱을 방지할 수 있다.
- 만약 크다면, 일부 프로세스의 수행을 중단시킨다.
- 그렇지 않다면 다른 새로운 프로세스도 수행 가능케 한다.