안 쓰던 블로그

라운드 로빈 본문

Network

라운드 로빈

proqk 2016. 4. 19. 02:31
반응형

스케줄링의 한 방법인 라운드 로빈을 소개하려고 한다.


우선순위 스케줄링의 단점은 순위가 낮은 프로세스들은 무작정 대기를 해야돼서 CPU를 계속 기다리고만 있는 상태가 되는 것이다.

그것을 보안하기 위해 나온게 바로 라운드 로빈 기법이다.


라운드 로빈 스케줄링은 프로세스가 하나 끝날 때까지 CPU를 가지고 있는게 아니라, 할당된 시간만큼 돌아가며 처리하는 방식이다.

이렇게 하면 우선순위가 낮은 프로세스도 공평하게 실행될 수 있다.

라운드 로빈은 라운드 로빈 DSN, 리눅스 등을 포함한 대부분의 시스템에서 사용하고 있는 방식이다.



[라운드 로빈의 개념]



1. 준비상태인 프로세스 A, B, C, D가 있다.

2. A가 선점되어 시간할당향만큼 CPU를 사용한다.



3. 할당된 시간이 끝난 A가 준비상태로 쫓겨난다.

4. 다음으로 대기하고 있던 B가 실행된다.

(반복)



[문제 예시]

다음 프로세스들의 평균 반환시간과 평균 대기시간을 구하시오. CPU 실행시간의 단위는 ms이다. 


 프로세스

도착시간 

실행시간 

P1 

P2 

P3 

   

시간할당량 



P1 

P2 

P3 

P1 

11 

P2 

13 

P1 

15 


도착시간이 가장 빠른 P1이 제일 먼저 실행되었다.

실행시간이 8이지만 시간할당량이 3이므로 3만큼 실행뒤에 대기상태로 쫓겨나게 된다.

P2도 같은 방법으로 3만큼 실행되었고, P3는 실행시간이 2밖에 안되므로 시간할당량을 다 못채우고 끝나버렸다.

P3가 끝나자 대기상태에 있던 P1의 순서가 다시 돌아와서 실행되었다.

P2의 실행시간은 5인데 아까 3만큼 실행했으므로 이번턴에는 2만 실행하면 된다.

P1은 아직 실행시간이 2만큼 남아있기 때문에 순서가 돌아왔다.

P1을 끝내고 모든 프로세스가 끝난다.


평균 반환시간: P1(15)+P2(12)+P3(6)=15+12+6=33/3=11

(반환시간: 프로세스가 끝난 시간-도착시간)


평균 대기시간: P1(7)+P2(7)+P3(4)=7+7+4=18/3=6

(대기시간: 프로세스가 끝난 시간-도착 시간-실행시간) 

반응형
Comments