[CS] Thrashing

지영·2023년 6월 16일
0

CS

목록 보기
23/77

Thrashing이란,

메모리 영역에 접근하게 될 때, 메모리에 페이지 부재(Page fault)율이 높은 것

프레임을 충분히 할당 받지 못한 프로세스가 활발하게 사용되는 페이지들의 집합을 가진다면 페이지 폴트가 발생한다.
이 때, 페이지 폴트가 발생하므로 페이지 교체가 이루어지는데, 모든 페이지가 활발히 사용되므로 어떤 페이지가 교체되건 다시 페이지 교체가 바로 필요하게 된다.

반복적인 페이지 폴트로 과도한 페이징 작업을 하게 되며 결과적으로 Thrashing이 발생함.

왜 발생하는가

  • 다중 프로그래밍 정도가 높아짐에 따라 CPU 이용률이 높아짐.

  • CPU 이용률이 최대값에 도달했을때, 다중 프로그래밍의 정도가 그 이상으로 더 커지면 쓰레싱이 발생하고, CPU 이용률은 급격히 떨어짐
    +) 왜 CPU이용률이 떨어질까 🧐: 다중 프로그래밍 정도가 너무 올라가면 한 프로세스가 사용할 수 있는 페이지 수가 적어지면서 페이지 폴트의 발생률이 높아짐 -> CPU 사용량 줄어듬

  • 운영체제는 CPU 이용률을 감시하면서, CPU 이용률이 너무 낮아지면 새로운 프로세스를 시스템에 더 추가해서 다중 프로그래밍 정도를 높임. 이 때 전역 페이지 교체 알고리즘을 사용하여 어떤 프로세스의 페이지인지에 대한 고려없이 교체를 수행

  • CPU 이용률은 계속 떨어지게 됨

방지하는 방법

각 프로세스가 필요로 하는 최소한의 프레임의 적절한 개수를 보장한다.

  • 너무 적은 프레임 할당 -> 페이지 폴트 증가
  • 너무 많은 프레임 할당 -> 페이지 폴트 줄어들지만 메모리 낭비 -> 시스템 성능 저하

프레임의 개수를 정하고 할당하는

1. 정적 할당

프로세스 실행 초기에 프레임을 나누고 그 크기를 고정

  • 균등 할당 방식
    프로세스 크기와 상관없이 사용 가능한 프레임이 모든 프로세스에 동일하게 할당
    문제점 : 크기가 큰 프로세스의 경우에는 프레임 부족으로 페이지 폴트 발생, 크기가 작은 프로세스는 메모리 낭비
  • 비례 할당 방식
    프로세스 크기에 비례하여 프레임을 할당
    문제점 : 프로세스가 실행 중에 필요로 하는 프레임을 유동적으로 반영하지 못함
    동영상 프레이어 같은 경우, 프로그램 자체는 작지만 재생한 동영상 크기에 따라 더 큰 메모리가 필요할 수 있음 -> 문제 발생

2. 동적 할당

프로세스 실행 중에 어떨 때는 많은 프레임이 필요하기도 하고 어떨 때는 적은 프레임만으로 작동하기도 하는데, 이렇게 시시각각 변화하는 프레임 수 요청을 수용하는 방식

  • 워킹셋
    - 지역성 이론을 바탕으로, 가장 최근에 접근한 프레임이 이후에도 또 참조될 가능성이 높다는 가정으로 출발함.
    - 주 참조되는 워킹 셋을 주기억장치에 상주시킴으로써 페이지 부재 및 페이지 교체 현상을 줄인다
    - 시간이 지남에 따라 자주 참조하는 페이지들의 집합이 변화하기 때문에 워킹 셋은 시간에 따라 바뀌게 된다
    문제점 : 프로세스에 프레임을 얼마나 할당해야 하는지는 모름. 프로세스의 성능을 높일 뿐, 스레싱 문제를 해결하지는 못함
  • 페이지 폴트 빈도 사용
    페이지 폴트 비율의 상한선, 하한선을 설정하고 상한선 초과시 프레임을 초과하고 반대로 하한선 밑일 때는 할당한 프레임을 회수함
profile
꾸준함의 힘을 아는 개발자가 목표입니다 📍

0개의 댓글