본문 바로가기
반도체 그 다음 학문/운영체제 (OS)

운영체제 Allocation of Frames ( Global Allocation, Local Allocation, Fixed Allocation, Priority Allocation )

by 전컴반 2022. 6. 8.
반응형
Allocation of Frames

 

page fault가 발생했을 때 frame을 몇 개를 할당해야 할까에 대해 알아보자.

 

그전에 먼저 Global Allocation, Local Allocation의 차이점에 대해 알아야 한다.

 

Global Frame Replacement는 우선순위가 높은 프로세스에 빈 frame이 없을 때 우선순위가 낮은 프로세스의 빈 frame을 뺏어서 사용 가능하다. 즉 시스템에 존재하는 모든 frame을 같이 사용하는 것과 같다.

하지만 이렇게 되면 낮은 우선순위의 프로세스가 뺏긴 부분의 frame을 다시 필요로 할 때 이미 정보가 바꿨기 때문에 page fault를 발생시킨다. 이에 시간이 많이 소요된다. 즉 이런 정책을 쓰는 시스템은 프로세스의 동작 시간이 매우 가변적이게 된다.

 

 

 Local Frame Replacement는 주어진 frame에서 다 사용해야 한다. 우선순위가 고려되지 않기 때문에 프로그램을 실행한다면 동일한 성능을 보장해준다. 하지만 남은 frame이 있을 텐데 줄 수 없으니 낭비가 되기도 한다. 

 

일반적으로 Global Replacement가 성능이 더 좋아서 사용한다.

 


 

원래의 주제였던 frame의 할당에 대해 각각 프로세스들이 page fault 발생했을 때 필요한 최소한의 Frame 수가 어떻게 될까? 

우린 하나의 frame만 할당하면 된다고 생각하는데 사실 이런 경우는 거의 없다.

 

예를 들어 Mov 명령어를 실행할 때 page fault가 발생했다면 frame을 할당하는데, mov %rax, 0xff라고 한다면 메모리의 접근이 1개 이상이 필요하다. %rax에서, 0xff에서도 발생할 수 있기 때문이다.

 

또 최대한의 frame 할당 수는 시스템마다 또 다르다. 만약 많이 할당해준다면 또 다른 새로운 프로그램의 page fault 확률이 올라갈 것이다. (빈 frame이 적기 때문에)

 

이런 식으로 최소와 최대를 지정하여 frame의 할당이 필요한다. 비록 제조사마다 다르게 할당해주지만, 대표적으로 할당해주는 2가지 방법에 대해 간단히 알아보자

 

1. Fixed Allocation ( = Equal Allocation )

- 고정 크기로 할당해주는 것이다.

예를 들어 100개의 frame이 있는데 5개의 프로세스가 page fault를 발생했다면 각각 동일하게 20개씩 할당해준다.

 

2. Priority Allocation ( = Proportional Allocation )

- 프로세스 사이즈에 비례해서 할당해준다.

예를 들어 frame이 62개가 있는데 프로그램이 2개가 있다고 하면 각각 어떻게 할당할까?

P1의 사이즈 = 10

P2의 사이즈 = 127

프로세스에게 할당해주는 계산은 아래와 같다.

 

해당 프로세스 사이즈 / (전체 프로세스 사이즈) * frame의 수

 

이에 P1의 할당 frame은 ( 10 / (10 + 127) ) * 62 = 4

P2의 할당 frame은 ( 127 / (10 + 127) ) * 62 = 57과 같이 된다.

 

반응형

댓글