티스토리 뷰

운영체제

[운영체제] 프레임 할당

Hani_Levenshtein 2021. 1. 23. 22:47

프로세서가 일을 많이 하려면 메모리에 있는 프로세스의 수가 많아야 합니다.

하지만 프로세스의 수와 프로세서의 이용률이 반드시 비례하는 것만은 아닙니다.


Thrashing

프로세스의 수가 많아진다는 것은 한 프로세스가 차지하는 프레임이 줄어듦을 의미합니다.

때문에 원하는 Page가 메모리에 없는 Page Fault가 자주 일어나게 됩니다.

Page Fault에 의한 Page Replacement를 하는 동안 프로세서가 일을 못하기 때문에 결국 프로세서 이용률이 떨어집니다.

 

이러한 문제를 Thrashing이라고 하는데, 각 프로세스마다 가질 수 있는 프레임을 설정하여 해결할 수 있습니다.

프로세스마다 자신이 쓰기에 충분한 메모리 용량을 할당받는다면 Page Fault의 빈도가 줄어들 것입니다.


Static Allocation

정적 할당은 프로세스가 메모리에 올라가기 전에 해당 프로세스가 얼마나 프레임을 차지할지 정해놓는 것입니다.

 

메모리 용량을 프로세스의 수로 나눠서 균등하게 가져갈 수도 있고, 프로세스의 용량에 비례하여 메모리 용량을 차지하는 방식도 존재합니다. 하지만 정적 할당 방식은 Page의 사용 여부를 고려하지 않는다는 명확한 단점이 존재합니다.


Dynamic Allocation

동적 할당은 정적 할당과는 달리 프로세스를 실행할 때 Page의 사용을 고려하여 프레임을 할당하는 방식입니다.

동적 할당은 크게 Working Set Model와 Page Fault Frequency 방식이 존재합니다.

 

-Working Set Model

프로세서가 특정 시점에 특정 Page를 자주 참조한다는 Locality를 이용한 방식입니다. 

일정 시간 안에 참조된 적이 있는 Page들을 메모리에 남겨두어 Page Fault를 방지합니다.

 

-Page Fault Frequency

Page Fault Frequency 방식은 Page Fault의 발생 빈도를 보고 프레임을 할당하는 방식입니다.

 

프로세스에 할당된 프레임의 수가 커질수록 Page Fault의 발생 빈도는 낮아집니다.

Page Fault의 발생 빈도가 일정 이상으로 커지면 프레임을 더 할당하여 Page Fault의 비율을 낮춥니다.

반대로 Page Fault의 발생 빈도가 일정 이하로 낮아지면 프레임을 회수하여 자원을 다른 곳에 쓸 수 있게 만들어 줍니다.


 

Page Size

메모리가 크다면 Page Size도 키우는 게 낫습니다.

Internal Fragmentation도 커지겠지만 무시할만하며,

Page의 수가 줄어 Page Table의 크기를 줄일 수 있으며,

Size가 클수록 Page에 원하는 정보가 들어있을 확률이 많습니다.

물론 Page에 원하지 않는 정보가 포함될 확률도 커지지만 Page Fault에 의해 SSD를 방문하는 것보다 낫습니다.

'운영체제' 카테고리의 다른 글

[운영체제] 가상 메모리  (0) 2021.01.23
[운영체제] 세그멘테이션  (0) 2021.01.15
[운영체제] 메모리와 페이징  (0) 2021.01.01
[운영체제] 교착상태  (0) 2020.12.26
[운영체제] 프로세스 동기화  (0) 2020.12.24
댓글