전 포스팅에 이어서,

이제 scheduling policy의 새로운 평가 기준을 제시한다.

response time(응답시간)은 '(처음 스케줄 되는 시각) - (작업이 도착한 시각)'으로 정의된다.

 

이전에 살펴봤던 여러 policy들은 응답시간의 측면에서 아주 나쁜 방법이다.

 

응답시간을 단축시키는 방법으로는 Round-Robin (RR) 방식이 있다.

RR은 한 작업을 정해진 time slice (혹은 scheduling quantum) 만큼만 실행하고 실행 큐의 다음 작업으로 전환한다.

이러한 이유로 RR은 time slicing 기법이라고도 불린다.

time slice는 timer interrupter의 배수의 값이어야 한다.

만약 time slice 값이 너무 작다면 context switching에 소요되는 시간의 비율이 커지게 될 것이다.

적당한 값을 설정하는 것이 중요하다.

물론 RR은 이전에 살펴봤던 policy들과 다르게 fairness에 초점을 둔 algorithm으로, 반환시간의 관점에서 봤을 때 그리 좋은 algorithm은 아니다. (어쩌면 FIFO 보다도 더 안 좋다!)

 

이번엔 작업이 CPU만 사용하는 것이 아니라 입출력 작업도 수행하는 경우를 생각해보자.

해당 작업은 입출력이 진행되는 동안 CPU를 사용하지 않는다.

이 점을 잘 활용해야 한다!

다음 두개의 그림을 보면 이해가 쉽다.

 

작업 A가 입출력을 진행하는 동안 CPU는 아무런 작업도 진행하지 않고 시간을 버리고 있는 것을 볼 수 있다.

 

이것은 STCF의 관점으로 이해할 수 있다.

A의 CPU를 활용하는 작은 작업들을 각각 독립적인 작업으로 생각하는 것이다.

A가 먼저 시스템에 도착해서 10ms 실행 후에 입출력 작업이 수행된다. 그 때에는 작업 B밖에 없으므로 B가 수행된다.

t=20ms 일때 다시 10ms짜리 작업 A의 소작업이 발생하고 이것이 실행된다. 그 후 입출력이 진행되고 다시 B가 수행된다 ..... (계속)

 

핵심은, By treating each CPU burst as a job, the scheduler makes sure processes that are "interactive" get run frequently. While those interactive jobs are performing I/O, other CPU-intensive jobs run, thus better utilizing the processor.

 

 

 

 

+ Recent posts