쓰레싱(Thrashing)

김하영·2023년 6월 16일
0

운영체제

목록 보기
13/13

Thrashing이란?

메모리 영역에 접근할 때, 페이지 폴트율이 증가하여 CPU이용률이 급감하는 현상이다.

발생 이유

한번에 여러 프로그램을 실행할때, 물리메모리에서는 프로세스들이 필요로 하는 데이터를 올리기 위한 공간이 충분치 않다면 swap in, swap out하게 된다.

즉, 프로세스를 처리하는 시간보다 메모리에 적재되지 못한 페이지로 인해 페이지 교체에 드는 시간이 증가하기 때문이다.

프레임 할당 정도

스레싱은 각 프로세스에 프레임을 할당하는 정도와도 관련이 있다.
어떠한 프로세스에 너무 적은 프레임 할당하면 페이지 폴트가 자주 일어나게 될것이고
너무 많은 프레임을 할당하면 메모리가 낭비되어 전체적인 시스템에 영향을 끼치게 된다.

프레임 할당 정책(Thrasing 해결 방안)

1. 정적 할당

프로세스 실행 초기에 프레임 나누어준후 그 크기를 고정하는 방법으로, 균등할당방식과 비례할당 방식이 있다.

  • 균등 할당 방식 : 프로세스의 크기에 상관없이 모든 프로세스에게 동등하게 사용가능 프레임 할당

  • 균등 할당 방식 단점: 각 프로세스별로 필요로 하는 프레임의 개수가 다를 수 있는데, 필요량보다 많이 받으면 메모리 낭비, 적게 받으면 빈번한 페이지 폴트가 발생할 수 있다.

  • 비례 할당 방식 : 프로세스의 크기에 비례하여 프레임 할당하는 방식, 각 프로세스의 상황을 고려하여 분배하므로 균등 할당 방식의 단점이 개선됨

정적 할당 방식의 문제점

  • 프로세스가 실행중에 필요로 하는 프레임을 유동적으로 반영하지 못함
  • 사용하지 않는 메모리를 미리 확보하여 공간 낭비

2. 동적 할당

정적 할당 방식의 문제점을 개선한다.
작업 집합 모델 사용하는 방식과 페이지 부재 빈도를 사용하는 방식이 있다.

  • 작업 집합 모델 사용하는 방식(working set)
    • 지역성의 원리: 가장 최근에 접근한 프레임이 이후에도 참조될 가능성이 높다는 가정에서 시작함
    • 최근 일정 시간동안 참조된 페이지들을 집합으로 만들고, 이 집합에 있는 페이지들을 물리메모리에 유지
    • working set size : 물리 메모리에 유지할 페이지의 크기, 작업집합에 들어갈 최대 페이지 수
    • working set window : 현재 시점에 어느범위까지 페이지를 살펴볼 것인지, 이 크기에 따라 프로세스의 실행 성능이 달라짐
      (너무 크게 설정하면 필요 없는 페이지가 메모리에 남을 수 있고 너무 작게 설정하면 필요한 페이지가 스왑영역으로 옮겨질 수 있기 때문)
  • 작업 집합 모델 사용하는 방식 단점
    • 충분한 프레임을 할당하지 않으면 작업 집합에 있는 페이지를 물리 메모리에 유지하기 힘듬
    • 즉 프로세스의 성능을 높일 수 있으나, 스레싱 문제 해결은 못함!
    • (어떤 프레임을 물리 메모리에 유지해야 하는지는 알 수 있지만 프로세스에게 프레임을 얼마나 할당해야하는지는 알 수가 없음)
  • 페이지 부재 빈도 사용 방식 (page fault frequency)
    • 필요로 하는 프레임의 양을 동적으로 결정하는 방식
    • 페이지 부재 횟수를 기록하여 프로세스마다 페이지 부재 비율을 계산
    • 페이지 부재 상한선과 하한선을 설정하여, 상한선을 초과하면 프레임이 적다고 판단하여 프레임 할당량 늘려준다. 하한선보다 낮다면 할당한 프레임을 어느정도 회수한다.

참고자료

https://straw961030.tistory.com/155

https://velog.io/@anjaekk/OS-Thrashing

profile
백엔드 개발자로 일하고 싶어요 제발

0개의 댓글