본문 바로가기
운영체제

운영체제 25장 - 메모리 관리(12) : 프레임 할당 -

by ChocoPeanut 2017. 5. 14.

운영체제 25

- 프레임 할당 -

 

CPU의 이용률프로세스의 수는 어떤 관계를 가지고 있을까? CPU의 이용률이 높을수록 효율이 높다고 할 수 있다. 프로세스의 개수가 증가할수록 CPU의 이용률은 증가한다. 왜냐하면 프로세스의 수가 많아지면 적절하게 프로세스에 CPU를 할당할 수 있게 되고 이로 인해 CPU는 항상 일을 할 수 있게 된다. 하지만 앞에서 배운 요구 페이지 기법을 사용하게 되면 일정 범위 이상의 페이지가 메인 메모리에 올라오게 되면 CPU의 이용률이 감소하게 된다. 왜냐하면 페이지가 메인 메모리에서 가득 차 있게 되면 page-in/out을 통해 페이지 결함으로 CPU가 동작을 못 하는 시간이 늘어나기 때문이다. CPU가 동작을 못하는 시간이 늘어나면 당연히 이용률이 낮아지는 것을 의미하고 효율이 감소하게 된다. 이렇게 일정 범위를 넘어가면 CPU 이용률이 떨어지게 되는데 일정 범위를 넘는 부분을 Thrashing(쓰레싱) 이라고 한다. Thrashing을 극복하는 방법은 local 교체를 사용하는 방식이 좋다. 프로세스 당 충분한 수의 메모리를 할당하는 것이 Thrashing을 줄일 수 있다.



프레임은 메인 메모리를 페이지와 같은 크기로 나눈 공간이다. 앞에서 말했듯 프로세스 당 충분한 수의 메모리를 할당한다는 것은 적절한 프레임을 할당하는 것과 같다고 할 수 있다. 그래서 프로세스에 어떻게 프레임을 할당하는지에 대해 잘 판단할 필요가 있다. 프레임을 할당하는 방법에는 정적인 할당동적인 할당으로 나눌 수 있다. 정적 할당은 프로세스의 크기를 알기 때문에 이를 통해 프레임을 할당하는 방식이다. 정적 할당의 방식에도 균등 할당과 비례 할당으로 나눌 수 있다. 예를 들어 프레임의 수가 100개이고 메모리에 올리고자 하는 프로세스가 4개라고 가정을 해보자. 균등 할당의 경우 각 프로세스 당 동일한 프레임을 할당하는 것이다. 각 프로세스에 프레임을 25개씩 할당을 하여 사용하게 만드는 방식이다. 비례 할당은 프로세스의 크기에 따라 비례적으로 나누는 방식이다. 프로세스1이 프로세스2보다 크기가 크면 프레임을 조금 더 할당을 하게 되는 것이다.


하지만 프로세스마다 주요 사용하는 페이지가 다르다. 따라서 원래 프로세스의 크기와는 다르게 적용이 될 수도 있다. 이를 고려하여 프레임을 할당하는 방식이 동적 할당이다. 동적 할당에도 Working set modelPage-Fault Frequency 방식이 존재한다. Working set model 방식시간에 따라 주로 참조하는 페이지를 계산하여 이 값을 통해 프레임을 할당하는 것이다. CPU가 주소를 낼 때 시간을 측정하여 어떤 번지의 주소를 참조하는지를 측정한다. 조사한 주소를 Locality라고 한다. 각각의 시간에 Locality를 포함할 수 있는 프레임을 할당해주면 적절하게 메모리와 CPU를 사용할 수 있을 것이다. 그러나 이런 것은 동작을 한 후에 할 수 있는 것이지 미래를 알 수는 없다. 따라서 미래를 예측하는 방식을 사용하는데 그것이 Working set이다. Working set은 과거에 어떤 페이지가 사용되어 왔는지를 가지고 있는 데이터이다. 최근 얼마까지의 시간을 기준으로 할 것인가에 대한 값이 Working set window이다.


Page-Fault Frequency(PFF)는 말 그대로 Page fault인 페이지 결함의 발생 비율을 측정하여 프레임을 할당하는 방식이다. 할당된 프레임의 수와 페이지 결함이 일어나는 비율을 측정한다. 특정 프로세스에 대해 프레임 할당을 많이 해줄수록 페이지 결함이 적게 일어날 것이다. 이와 반대로 프레임 할당이 적으면 페이지 결함이 많이 일어나게 될 것이다. 그래서 PFF라는 방식은 페이지 결함에 대한 특정 상한선을 초과한 프로세스에는 더 많은 프레임을 할당하여 페이지 결함을 줄이고 페이지 결함이 거의 없는 하한선 이하의 프로세스에는 프레임을 회수하여 적절하게 페이지 결함이 일어나지 않게 조절을 하게 된다.