콘텐츠로 이동

스래싱 (Thrashing)

Jan 27, 2026

스래싱(Thrashing)은 프로세스가 실제 작업보다 페이징에 더 많은 시간을 소비하는 현상입니다. 멀티프로그래밍 수준을 높이면 CPU 활용률이 증가하지만, 어느 시점을 넘으면 급격히 감소합니다.

  1. CPU 활용률 낮음 → OS가 멀티프로그래밍 수준 증가
  2. 새 프로세스가 기존 프로세스의 프레임 빼앗음 (Global replacement)
  3. 프레임 부족한 프로세스들이 페이지 폴트 발생
  4. 폴트 처리를 위해 다른 프로세스 프레임 빼앗음 → 연쇄 반응
  5. 모든 프로세스가 paging device 큐에서 대기
  6. Ready queue 비어감 → CPU 활용률 더 감소 → 악순환
CPU utilization
│ ╭──── 최적점
│ ╱ ╲
│ ╱ ╲
│ ╱ ╲ thrashing
│ ╱ ╲
│ ╱ ╲
└───────────────────────→
degree of multiprogramming

프로세스는 locality에서 locality로 이동하며 실행됩니다. 현재 locality를 담을 프레임이 충분하면 페이지 폴트가 거의 발생하지 않습니다.

page numbers
│ ┌───┐ ┌───┐
34 │ │ │ │ │
30 │ │ │ │ │
26 │ │ │ │ │
22 │ ───┘ │ │ │
18 │ └────────┘ └───
└──────────────────────────→ execution time
locality A locality B

1. Working-Set Model: Δ(델타) 윈도우 내 참조된 페이지 집합 = Working Set. 각 프로세스에 Working Set 크기만큼 프레임을 할당하고, 총 요구가 가용 프레임을 초과하면 프로세스를 suspend합니다.

2. Page-Fault Frequency (PFF): 페이지 폴트 빈도를 직접 모니터링하여, 상한선 초과 시 프레임 추가 할당, 하한선 미달 시 프레임 회수합니다.

page-fault rate
│ increase frames
│ ─────────────── upper bound
│ ─────────────── lower bound
│ decrease frames
└──────────────────────→
number of frames

3. Local Replacement: 한 프로세스의 스래싱이 다른 프로세스에 직접 전파되지 않도록 합니다.

해결책장점단점
Local replacement스래싱 격리메모리 활용도 감소
Working-set이론적으로 우수구현 복잡, 오버헤드
PFF직접적 제어반응 시간 지연 가능
메모리 추가근본적 해결비용

충분한 물리 메모리 확보가 최선의 방법입니다. 스마트폰부터 서버까지, working set을 메모리에 유지할 수 있도록 설계하는 것이 중요합니다.