Search

[운영체제] Trashing

Tags
Operating System
Date
2023/12/05

개요

운영체제를 공부하면서 느꼈던 건 “소프트웨어의 전반적인 흐름을 중요하는데 매우 중요한 지식” 이라는 점입니다. 따라서 이에 대한 내용을 다 같이 공유하고 싶어 “도움이 되었으면 좋겠어요” 시리즈를 시작하게 되었습니다.

1. Trashing이란?

Trashing은 메모리 영역에 접근할 때 메모리에 Page Fault가 높은 것을 의미합니다.
Trashing이 발생하는 과정은 다음과 같습니다.
1.
프로세스가 점점 많아짐에 따라 비어 있는 프레임의 수가 감소한다.
2.
특정 시점에서 동작 중인 프로세스가 요구하는 메모리가 가용 가능한 물리 메모리보다 많아진다.
3.
Page Fault가 발생하고 Page in/out을 처리하는 동안 CPU는 사용하지 않게 된다.
4.
CPU 사용률 (Utilization)이 낮아짐에 따라 CPU Scheduler는 이를 한가하다고 판단하여 더 많은 프로세스를 실행하려고 한다.
5.
악순환이 반복된다.
위 그래프를 보시면 특정 시점에 trashing이 발생하고 사용률이 급격하게 떨어지는 것을 확인할 수 있습니다.

2. Trashing의 근본적인 원인

사실 Trashing은 모든 프로세스가 하나의 물리적 메모리 공간을 공유하기 때문에 발생하게 됩니다.
위 말을 이해하기 위해서는 Global ReplacementLocal Replacement를 이해해야 합니다.
Global Replacement
process selects a replacement frame from the set of all frames.
Local Replacement
each process selects the victim frame from only its own set of allocated frames
간단하게 요약해서 두 Replacement 기법의 차이는 자신의 프로세스에 할당된 프레임 내에서 해결하냐, 전체적인 프레임 세트에서 해결하냐의 차이입니다.
그렇다면 Local ReplacementPage Falut를 해결할 수 있을까요?
해결할 수 없습니다. 예를 들어, 시스템의 메모리가 부족한 순간에 어떤 한 프로세스는 메모리를 많이 확보하고 있다 하더라도, 메모리를 확보하지 못한 다른 프로세스에서 Page Fault가 지속적으로 발생할 수 있기 때문입니다.

3. Trashing을 해결하는 법

Working Set
Trashing을 해결하기 위해서는 Working Set 이라는 개념을 도입해야 합니다,
Working Set은 어느 시점에 특정 프로세스가 접근하는 페이지 들의 집합입니다. 쉽게 말해서 프로세스의 작업을 구성할 때 자주 참조되는 페이지를 묶어서 처리한다고 생각하면 됩니다. (이 때 지역성의 원리가 사용됩니다)
하지만 Working set의 전체 프레임이 할당된 페이지 프레임보다 크다면 여전히 Trashing이 발생하게 됩니다.
Page Fault Frequency (PFF)
이는 프로세스의 Page Fault Rate를 주기적으로 조사하고 해당 값에 근거하여 각 프로세스에 할당되는 프레임 양을 동적으로 예측하는 알고리즘입니다.
현재 페이지 부재와 직전 페이지 부재 사이의 시간을 관찰하여 상한 값(upper bound)을 초과하거나 하한 값(lower bound) 미만이 되면 운영체제가 메모리에 올라가 있는 프로세스의 수를 조절합니다.