IT/CS

[CS] 쓰레싱(Thrashing) 이란?

어린이개발자 2025. 4. 19. 21:45

쓰레싱에 대한 개념, 발생 원인, 이를 방지하기 위한 메모리 관리 전략에 대해 정리하고자 한다.

 

1. 개념

- 운영체제에서 과도한 페이지 교체가 발생하면서, 실제 작업은 거의 수행되지 않고 대부분의 시간과 자원이 페이지 교체에 소비되는 현상으로, 주로 가상 메모리를 사용하는 시스템에서 발생한다.

 

2.  발생 원인

- 과도한 다중 프로그래밍

  > 너무 많은 프로세스를 동시에 실행시키면 각 프로세스가 필요한 만큼의 메모리 확보를 하지 못한다.

  > 그 결과 페이지 결함이 빈번하게 발생하고, 디스크 I/O 가 증가하면서 성능이 저하된다.

- Working Set 크기보다 적은 프레임 할당

  > 각 프로세스는 일정 시간 동안 자주 참조하는 Working Set 이 있는데, 이 크기보다 적은 메모리를 할당 받으면 계속해서 페이지 교체가 발생한다.

- 지역성(Locality) 의 위반

  > 프로그램은 일반적으로 특정 시간 동안 제한된 메모리 영역에만 접근하는 경향이 있는데, 이를 무시한 스케줄링이나 메모리 할당으로 인해 발생할 수 있다.

 

3. 메모리 관리 전략

- Working Set Model 적용

  > 프로세스마다 현재 시간 동안 실제로 자주 사용하는 페이지 수를 추적하고, 이 Set 을 기준으로 프레임을 할당하여 필요한 만큼의 메모리를 보장한다.

- 페이지 결함률(Page Fault Rate) 모니터링

  > 각 프로세스의 페이지 결함률을 측정하여, 일정 임계값 이상이면 프레임을 추가로 할당하고 너무 낮으면 일부 회수함으로써 시스템 전체 자원을 효율적으로 분배한다.

- 다중 프로그래밍 수준 조절

  > 시스템에서 동시에 실행되는 프로세스 수를 제한하여, 각 프로세스에 충분한 메모리를 할당하도록 조정한다.

- 프레임 할당 전략 개선

  > 고정 할당 방식 보다는 동적 할당 방식을 통해 시스템 상황에 맞게 유연하게 메모리를 할당한다.

- 스왑 공간 최적화

  > 디스크 I/O 속도를 향상시키거나, SSD 와 같은 빠른 저장 매체를 사용하여 페이지 교체 시 성능 저하를 줄인다.