[운영체제] Thrashing

지니🧸·2023년 4월 7일
0

CS 저장소

목록 보기
16/48

🪺 Thrashing

  • 프로세스가 원활하게 수행되기 위해서는 일정 수준 이상의 페이지 프레임을 물리적 메모리에 할당받아야 함
  • 프로세스가 동작하는데 필요한 최소한의 프레임을 받지 못하면 성능 문제 발생

Thrashing:

  • 프로세스가 집중적으로 사용하는 페이지들의 집합이 메모리에 한꺼번에 적재되지 못하여 페이지 부재율(page fault)가 많이 발생하고
  • CPU 이용률이 급격히 떨어지는 현상
    • CPU 이용률이 낮다: 메모리에 올라와있는 프로세스의 수가 너무 적어 프로세스가 모두 I/O 작업을 함으로써 준비 큐가 비는 경우 발생
    • CPU 이용률이 낮으면 운영체제는 메모리에 올라가는 프로세스의 수를 늘림
      • 다중 프로그래밍의 정도, Multi-Programming Degree (MPD): 메모리에 동시에 올라가있는 프로세스의 수
  • 심각한 성능 저하 초래

발생 원인

  • CPU 이용률이 낮으면 운영체제는 MPD를 높임
  • MPD가 과도하게 높아지면 프로세스에 할당되는 메모리의 양이 감소
  • 프로세스가 원활하게 수행하려면 필요한 최소한의 페이지 프레임들이 있음
  • 각 프로세스는 수행에 필요한 최소한의 페이지 프레임도 할당 받지 못하게 되어 페이지 부재가 빈번히 발생
  • 페이지 부재가 발생하면 스왑 영역에서 해당 페이즈를 메모리로 가져오기 위해 디스크 I/O 작업 발생 > 문맥 교환 > 다른 프로세스에게 CPU 이양
  • 다른 프로세스 역시 할당 받은 메모리 양이 지나치게 적으면 페이지 부재가 발생
  • 또 다른 프로세스에게 CPU 할당
  • 결국 준비큐의 모든 프로세스에게 CPU가 한차례씩 할당되었는데도 모든 프로세스가 다 페이지 부재를 발생시켜 시스템은 페이지 부재를 처리하느라 분주해짐 & CPU 이용률 저하
  • 운영체제는 메모리에 올라와있는 프로세스의 수가 적어 이러한 현상이 발생했다 판단 > MPD를 높이기 위해 또 다른 프로세스를 메모리에 추가
    • 프로세스당 할당된 프레임의 수가 더욱 더 감소
    • 페이지 부재 더욱 더 빈번히 발생
    • 프로세스들은 서로의 페이지를 교체 > 스왑인/스왑아웃 지속적 발생
    • 결국 CPU는 대부분의 시간에 일을 하지 않게 됨

🪺 Thrashing 발생 시 완화 방법

  • 다중프로그래밍 정도를 낮춤
  • 프로세스들에 충분히 큰 페이지 프레임을 할당
  • 프로세스들이 가질 수 있는 페이지 프레임 수를 늘림
  • 지역 교환/우선순위 교환 알고리즘 사용

🪺 Thrashing 방지하는 방법

워킹셋 알고리즘

지역성 집합: 프로세스가 일정시간 동안 집중적으로 특정 주소 영역을 참조하는 경향
워킹셋 알고리즘: 지역성 집합이 메모리에 동시에 올라갈 수 있도록 보장하는 메모리 관리 알고리즘

  • 워킹셋: 한꺼번에 메모리에 올라가야하는 페이지들의 집합
  • 프로세스의 워킹셋을 구성하는 페이지들이 한꺼번에 올라갈 수 있는 메모리 공간이 있을 때만 동작
  • 그렇지 않으면 기존 메모리에 존재하는 페이지를 디스크로 스왑아웃시켜 공간 확보
    • MPD 조절
    • 스레싱 방지
  • 워킹셋 윈도우: 한꺼번에 메모리에 올라가야할 페이지들의 집합 결정하는데 사용
    • 시각 t에서 윈도우의 크기만큼 전에 참조된 점 사이에 참조된 페이지들의 집합
    • 워킹셋 윈도우의 크기 조절 > 워킹셋 크기 조절
      • 프로세스가 메모리를 필요해 할 때는 많이 할당
      • 적게 필요할 때는 적게 할당
      • 동적인 프레임 할당

페이지 부재 빈도 알고리즘

페이지 부재율을 주기적으로 조사 & 이에 따라 각 프로세스에 할당할 메모리 양을 동적으로 조절
시스템이 정한 상한값/하한값을 벗어나면 운영체제가 메모리에 올라가있는 프로세스의 수 조절


참고:

profile
우당탕탕

0개의 댓글