[운영체제] 쓰레싱(Thrashing)이란?

[운영체제] 쓰레싱(Thrashing)이란?


페이지 부재가 과도하게 발생하는 상황

주기억장치의 모든 페이지가 활발히 사용되고 있어서 어떤 페이지가 교체된 후 곧바로 반복적인 페이지 부재가 발생
프로세스의 실행보다 페이징을 위해 더 많은 시간이 소요
멀티 프로세싱을 계속 증가시키면 각각의 프로세스는 페이지 부재가 발생



쓰레싱의 원인

  • CPU 이용률이 떨어질 때 새로운 프로세스를 추가하여 멀티 프로그래밍 정도(degree)를 높이려 하기 때문
  • 멀티 프로그래밍 정도가 과도하게 높아지면
    • 프로세스의 프레임 개수 감소하고 페이지 부재 증가
    • 입출력 대기가 길어져서 CPU 이용율 감소
    • 새로운 프로세스를 시작
      • 페이지 부재 증가와 CPU 이용률 감소가 악순환됨


지역교환 알고리즘 or 우선순위 교환 알고리즘

지역교환 알고리즘하에서는 한 프로세스가 쓰레싱을 유발하더라도 다른 프로세스로부터 프레임을 뺏어 올 수 없으므로, 다른 프로세스는 쓰레싱으로부터 자유로울 수 있다.



쓰레싱 현상 방지 방법

  • 각 프로세스가 필요로 하는 최소한의 프레임 갯수를 보장해주어야 합니다.
  • CPU의 이용률을 높이고 쓰레싱현상을 방지하기 위해서는 다중 프로그래밍의 정도를 낮추어야 합니다.
    • 즉, 각 프로세스들에게 충분한 페이지 프레임을 할당할 수 있도록 해 주거나
    • 주기억 장치 내에 워킹 세트(Working set)을 제대로 유지하는 한 스레싱이 방지된다.
      • working set : 임의의 시점에 집중적으로 참조되는 페이지들을 모두 주기억장치에 적재시켜 프로세스로 하여금 페이지 부재를 거의 발생시키지 않도록 하는 set,
        이 기법은 프로세스가 현재 시간 이후에도 어느 정도 시간 동안은 이 집합에 속한 페이지들을 집중적으로 참조할 것이라는 지역성을 기반으로 한다
    • 구역성(locallity)을 이용한다.




댓글

이 블로그의 인기 게시물

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?

[Python] # -*- coding: utf-8 -*-를 쓰는 이유