블링블링 범블링

[OS 22장] 메모리 관리 - 프레임 할당 본문

Technology/오퍼레이팅 시스템

[OS 22장] 메모리 관리 - 프레임 할당

뻠스키 2018. 4. 17. 17:58


 

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



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


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


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



Comments