Thrashing

k_bell·2024년 6월 15일
0

운영체제

목록 보기
10/15
post-thumbnail

Thrashing 이란 page fault가 시스템의 허용 수준을 넘어갈 정도로 발생하는 것을 의미한다. 따라서 프로세스가 페이지를 swapping 하는 것만으로도 busy 상태에 빠지는 것이다.

Thrashing은 OS의 착각을 일으키기 매우 쉬운 현상이다. page fault가 너무 많이 발생해서, page swapping 만 일어난다면 그 시간동안 CPU는 계속해서 놀고 있는 것이다. 따라서 cpu utilization이 낮아졌다고 판단한 OS는 CPU에게 일을 시키기 위해 더 많은 프로세스를 생성한다. 따라서 page fault로 시스템이 마비되어 있는 상태에서 프로세스는 계속해서 생성되니, cpu utilizaion이 아예 바닥까지 떨어져 버리는 것이다.

그렇다면 어떻게 paging을 해서 thrashing이 발생하지 않도록 해야 하는가?

  • Locality
    : 프로세스가 실행되면서 특정 메모리를 참조하면 일정 기간동안은 현재 참조하는 메모리 또는 근처에 있는 메모리를 계속 참조하는 현상을 말한다. 따라서 현재 지역성에 해당하는 일부 페이지만 할당하여, 각 프로세스가 필요로 하는 충분한 크기를 "일부"로 축소해야 한다.

프로세스의 프레임 독점을 방지하기 위해 하나의 프로세스에 너무 많은 프레임이 할당되지 않도록 지역성을 잘 활용해야 한다.

Working - Set Model

Working set model이란 OS가 메모리를 관리할 때 지역성을 고려하는 모델을 의미한다.

  • δ\delta \equiv working-set window
    : 고정된 수의 페이지 참조로 정의된다.
    ( Example : 10,000 instructions )

  • WSSi_i ( Working set size of Process Pi_i )
    : 최근 δ\delta 동안 process Pi_i가 참조한 페이지의 숫자를 의미한다.

    • δ\delta 가 너무 작으면, 전체 지역성을 포괄하지 못함.
    • δ\delta 가 너무 크면, 여러 지역성을 포괄하게 됨.
    • δ\delta = \infty, 전체 프로그램을 포함하게 됨.

DD = \sum WSSi_i \equiv total demand frames

If, D > m => Trashing

Page - Fault Frequency (PFF)

Trashing이 발생하지 않도록, 허용 가능한 page-fault frequency 를 설정하고, local replacement policy를 사용해야 한다.

  • IF, Page Fault Rate too low
    : processes loses frame

  • IF, PAge Fault Rate too high
    : prcesses gain frame

0개의 댓글

관련 채용 정보