스래싱(thrashing)
- 일반적으로 하나의 프로세스는 실행을 위하여 몇 개의 페이지 프레임만을 할당 받음
- 어떤 프로세스가 어느 정도의 프레임을 갖고 있지 않다면, 페이지 부재가 발생하게 되어 프레임 안에 있는 사용 중인 어떤 페이지를 교체하여야 하는데, 이러한 페이지 부재가 계속적으로 발생되어 프로세스가 수행되는 시간보다 페이지 교체에 소비되는 시간이 더 많아지는 경우
- 가상 기억 장치 시스템에서, 프로그램이 접근한 페이지나 세그먼트를 디스크에서 주기억 장치로 올려놓기 위한 페이지 부재가 너무 자주 일어나 프로그램의 처리 속도가 급격히 떨어지는 상태
- 다중 프로그래밍의 정도가 높아짐에 따라 CPU의 효율성은 어느 한계에 도달할 때까지 증가하나 그 한계 이상 높아지면, 스래싱이 발생하여 효율이 급격히 감소함을 보여줌
구역성(locality)
- 스래싱을 방지하기 위하여 한 프로세스가 효율적인 수행을 위하여 제공받아야 할 프레임의 수를 알아야 함
-> 작업세트(working set) 기법
- 구역성이란 ‘프로세스가 기억장치 내의 모든 정보를 균일하게 참조하는 것이 아니라 국부적인 부분만을 집중적으로 참조한다’는 것을 의미
시간 구역성(temporal locality)
- 최근에 참조된 기억장소가 가까운 장래에도 계속 참조될 가능성이 높음을 의미
- 예 : 순환(looping), 서브루틴, 스택, 카운팅(counting)과 집계(totaling)에 사용되는 변수
공간 구역성(spatial locality)
- 하나의 기억장소가 참조되면 그 근처의 기억장소가 계속 참조되는 경향이 있음을 의미
- 예 : 배열 수행, 순차 코드의 실행(sequential code execution), 프로그래머들이 관련된 변수들을 서로 서로 근처에 선언하는 경향이 있는 경우 등에 나타남
작업세트(working set)
- 작업세트 : 프로세스에 의해 자주 참조되는 페이지들의 집합체
- 하나의 프로세스가 효율적으로 실행되기 위해서는 그 프로세스의 작업세트가 주기억장치 내에 존재하여야 함
- 그렇지 않으면 스래싱이라는 현상이 발생할 수 있음
- 새로운 프로세스를 현재의 작업세트에 첨가시키는 결정은 새 프로세스를 위한 작업세트를 수용할 만한 실기억 공간의 여유가 있는가에 달려 있음
- 처음 시작되는 프로세스인 경우에는 시스템이 그 프로세스의 작업세트 크기를 알 수 없으므로 대충 짐작하여 책정
- 작업세트는 프로세스가 수행되는 동안 때로는 페이지들이 삭제되기도 하고 추가되기도 할 뿐 아니라, 프로세스가 거의 다른 작업세트로의 전이가 일어난 경우에는 많은 변화가 발생
페이지 부재율
- 페이지 부재율의 상한과 하한을 정해 놓고 페이지 부재율이 상한을 넘으면 그 프로세스에게 다른 프레임을 더 할당해 주고, 하한보다 낮으면 그 프로세스로부터 프레임을 회수
-> 이렇게 함으로써 직접적으로 스레싱을 방지하면서 페이지 부재율을 측정하고 조절