inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

ostep / 가상화 / CPU / 스케줄링 정책 (한글판 10장, 영문판 7장)

풀잎
0

들어가며

워크로드에 대한 가정

  1. 모든 작업은 같은 시간동안 실행됩니다.

  2. 모든 작업은 동시에 도착합니다.

  3. 각 작업은 시작되면 완료될 때까지 실행됩니다.

  4. 모든 작업은 CPU만 사용합니다.

  5. 각 작업의 실행 시간은 사전에 알려져 있습니다.

스케줄링 알고리즘 한 눈에 살펴보기

image

비선점형 스케줄링

가장 단순한 모델

모든 가정을 고려한 가장 단순한 모델에서 출발해보겠습니다.

가정 완화: 작업들의 실행 시간이 항상 같지는 않다면?

이전 모델에서 "모든 작업이 같은 시간동안 실행된다"라는 가정을 제거해보겠습니다.

가정 완화: 작업들이 모두 같은 시간에 도착하지는 않는다면?

책에서는 별도로 다루지 않았으므로 짧게 넘어가겠습니다. 이 경우에도 각 작업이 끝날 때마다 대기 중인 작업 중 가장 짧은 작업을 실행시키는 SJF 알고리즘이 최적의 알고리즘입니다.

아까전의 예시에서 시간이 각각 10, 10, 100인 작업들이 간발의 차로 100, 10, 10의 순서대로 도착한다고 가정해보겠습니다. 그렇다면 SJF 알고리즘을 적용하여도 최적의 평균 대기 시간은 $\frac{100 + 110 + 120}{3} = 110$이 되겠습니다.

선점형 스케줄링

들어가며

지금까지는 "작업이 시작하면 완료될 때까지 계속 실행된다"는 가정 하의 스케줄링 알고리즘에 대해서 살펴보았습니다. 이는 예전에 많이 사용했던 일괄 처리 시스템에서 유효하게 사용되었던 가정입니다. 이런 가정 하의 스케줄러를 비선점(non-preemptive) 스케줄러라고 합니다.

반면 현대 운영체제에서는 OS가 한 프로세스의 실행을 중단시키고 다른 프로세스에게 실행권을 넘길 수 있습니다. 구체적으로 말하면 스케줄러는 앞 장에서 다루었던 문맥 교환을 수행할 수 있습니다. 이렇게 한 작업을 중단시키고 다른 작업을 처리하는 스케줄러를 선점 스케줄러라고 하며, 현대 OS에서 사용하는 거의 모든 스케줄러는 선점 스케줄러입니다.

가정 완화: 작업이 완료되기까지 기다리지 않아도 된다면?

응답 시간을 최적화하는 알고리즘

나가며

이렇게 실행 시간이 사전에 알려져 있는 경우에 여러 가지 알고리즘을 학습하고 비교하였습니다. 하지만 현실에서는 작업의 실행 시간이 얼마인지 사전에 알고 있다는 가정은 비현실적입니다. 따라서 다음 장에서는 사전 지식 없이 반환 시간과 응답 시간을 모두 고려하는 알고리즘에 대해서 다루게 됩니다.

출처

시스템 · 운영체제 ostep

답변 0