프레임 할당(Allocation of Frames)의 목표는 페이지를 어떻게 프레임에 할당해야 효율적으로 할당할지 결정하는 것이 주된 목표이다.
일반적으로 메모리에 올라가는 프로세스가 증가할수록 CPU의 이용률은 증가한다. 하지만 일정 범위를 넘어서면 빈번하게 page in/out 작업이 일어난다. 이 때문에 I/O 시간이 증가하면서 이용률이 감소한다.
이처럼 I/O 작업 시간이 증가하면서 CPU의 이용률이 감소하는 현상을 쓰레싱(Thrashing)이라 부른다.
위 그림은 쓰레싱(Thrashing)현상을 그래프로 나타내는 그림이다. 프로세스가 증가하는 초반에는 CPU의 이용률이 증가하지만, 프로세스의 증가함에 따라 page in/out 작업 또한 증가한다. page in/out 작업이 일어나는 동안 프로세스는 대기 상태로 전환되기 때문에 CPU의 이용률은 감소하게 된다.
이러한 쓰레싱 현상을 극복하는 방법으론 아래와 같다.
Global replacement보단 local replacement 방식을 사용하여 쓰레싱을 극복하는 방법이다. (local replacement 또한 메모리 사용 효율이 떨어지는 단점이 있다.)
프로세스당 충분한/적절한 수의 프레임(메모리)을 할당하여 쓰레싱을 극복하는 방법이다.
쓰레싱(Thrashing)현상을 극복하기 위해서는 충분한/적절한 프레임의 수를 결정해야 하는데 프레임의 할당 방법에 따라 조금 다르다.
일단 프레임의 할당은 정적(static)과 동적(dynamic)으로 나뉜다.
균등 할당 (Equal allocation)
모든 프로세스에게 똑같은 수의 프레임을 할당하는 방식이다. (프로세스 크기에 따라 비효율적)
비례 할당 (Proportional allocation)
프로세스의 크기에 따라 프레임을 할당하는 방식이다. 프로세스의 크기가 크더라도 해당 프로세스의 모든 기능을 사용하는 것이 아니기 때문에 비효율적이다.
1. 작업 집합 모델(Working Set Model)
시간대별로 사용한 페이지를 나열해 봤을 때, 특정 시간에 페이지의 일정 범위를 참조하는 것을 지역성(Locality)이라고 부른다. 지역성이 확인되면 특정 시간에 사용할 페이지의 개수만큼 프레임을 할당할 수 있다. 하지만 해당 방법은 프로세스를 미리 수행해봐야 한다는 큰 단점이 존재한다.
이러한 지역성(Locality)의 단점을 보완하고자 나온 개념이 Working Set이다. Locality는 페이지의 사용을 예측하는 방법이었지만, Working Set은 페이지의 사용을 되돌아보는 방법이다.
현재 시간을 기준으로 일정 시간 전에 사용되었던 페이지의 집합 Working Set Window: △(델타)을 확인하여 woriking set size를 구한다.
woriking set size의 크기가 곧 할당해야 할 프레임의 수 이다.
2. Page Fault Frequency(PFF)
PFF는 페이지 부재 빈도를 조절하는 방법이다. 페이지 부재가 적당한 범위 기준 내에서(상한선 아래, 하한선 위) 발생하도록 유지하는 방식이다.
상한선 보다 많은 페이지 부재가 발생하면 프레임을 더 많이 할당해주고, 하한선보다 적게 페이지 부제가 발생하면 할당된 프레임을 회수하여 줄인다.