운영체제

운영체제 scheduling proportional share

cheesecrust1008 2023. 3. 12. 16:10

앞에서 살펴본 mlfq 같은 경우에는 performance 와 fair 중에서 perfomance 에 집중한다고 할 수 있다.

 

이번에는 fair에 집중해 보자, 

 

fair인 공정함에 초점을 맞춘 proportional share 비례배분이 있다. 

 

이는 비율을 지켜서 그에 따라서 cpu 를 실행하는 것인데, 그러한 스케줄의 예로는 lottery scheduling 이 있다. 

 

이는 각각의 프로세스에 ticket 을 배부한 후에 랜덤으로 수를 뽑아서 그 티켓을 가지고 있는 프로세스를 실행하는 방법이다.

 

이때, 티켓을 배부 할 때에, 비율에 맞추어서 티켓의 개수를 정해서 배부한다. 

 

이 lottery scheduling 에는 여러 메커니즘이 있는데, 

 

1. ticket currency

 - 프로세스 안에서 지역 화폐를 발행하더라도 global 적으로 티켓의 분배를 해야한다.

2. ticket transfer

 - 급하게 빠르게 처리할 프로세스가 있으면 티켓을 빌려준다.

3. ticket inflation

 - 일시적으로 빠르게 처리할 일 이 있으면 티켓을 더 발행해서 실행 확률을 높인다.

(이때에는 각 프로세스 끼리릐 신뢰간계가 있어야 한다)

 

lottery 의 이점은 굉장희 유연하게 프로세스를 추가하고, 삭제할 수 있다.

 

하지만, random한 요소에 의존하기 때문에, 계속 같은 결과를 낼 수 없다. 

 

따라서 계속 일정한 결과를 낼 수 있도록 바꾼것이 stride scheduling 이다. 

 

stride 는 보폭이라는 뜻으로 얼마나 실행하였는지를 판단하여 배분한다. 이 보폭은 전체 티켓을 가지고 있는 티켓으로 나누어서 구한다. 

 

이때의 쟁점은 중간에 프로세스가 추가 되었을 때에 초기 값을 무엇을 주어야 하는지다.

 

그 이유는 만약에 0 을 주게 된다면, 초반에는 계속 새로들어온 프로세스만이 실행 될 것이기 때문이다. 

 

따라서 voo-doo 아주 잘 요령 껏 정해야 한다는 문제가 있다.

 

----------------------------------------------------------------------------------------------------------------------

 

cfs 

 

이는 linux 에서 사용하고 있는 방식으로 stride 방식에서 진화한 방식이다. 

 

여기서는 stride 방식의 pass 를 virtual run time 이라고 한다. 

 

그리고 이 방식의 특징은 프로세스를 넘길때에 time out interrupt 를 거는데, 이 시간 설정을 프로세스가 시작할 때 해준다는 것이다.

 

그런데 이 시간을 정하는 방식을 처음에는 n 등분으로 나누었었는대, 이에 가중치를 준다.

 

그리고 보폭값 또한 가중치를 주어서 설정한다. 

 

그리고 이때의 프로세스들이 저장되어있는 자료구조는 트리의 형식이다. 

 

그 이유는 삭제와 삽입을 할 때에 트리가 다른 리스트 등의 자료구조보다 빠르기 때문이다.

 

그리고 이 방식에서는 중간에 프로세스가 삽입 될 때에 그때의 값들, 다른 프로세스들의 pass 값들 중에서 가장 작은 값으로 맞추어 준다.

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

운영체제 adress translation  (0) 2023.03.12
운영체제 address space  (0) 2023.03.12
운영체제 MLFQ  (0) 2023.03.11
운영체제 schedule intro  (0) 2023.03.11
운영체제 LDE  (0) 2023.03.11