스케줄링


1. 스케줄링이란?

CPU의 응답 시간을 최소화하고 처리율을 극대화시키기 위한 프로세스 처리 방식을 말한다. 대기 시간은 최소화하고 최대한 공평하게 처리하는 것을 목적으로 한다.



2. 비선점, 선점 스케줄링

쉬운 이해를 위해 비유를 들어보자. 백장미 학원은 무조건 출석한 순서대로 학생을 봐준다. 다음날 아무리 중요한 시험이 있는 학생이라도 이미 앞의 순서 학생을 봐주기로 한 선생님께 자신을 먼저 봐달라고 우길 수 없다. 이런 것처럼 비선점 스케줄링은 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법을 말한다.

반면, 들장미 병원에서는 환자들을 순서대로 접수해도, 응급실에 실려온 환자가 가장 먼저 의사의 치료를 받는다. 선점 스케줄링은 우선순위가 높은 프로세스를 빠르게 처리한다. 오늘 공부할 라운드 로빈 스케줄링도 선점 스케줄링에 해당한다.



3. 시분할 시스템

선점 스케줄링은 대화식 시분할 시스템에 사용된다.

시분할은 왜 욕하는 것 같지 같은 시간을 여러 개로 쪼개어 병행 작업을 할 때 사용된다.

예를 들어, 한 사용자가 입력할 때, 컴퓨터는 그 입력을 기다리는 동안 다른 사용자의 요청을 처리한다. 각 사용자는 마치 자신만이 그 컴퓨터를 사용한다고 착각하지만 사실을 여러 사용자가 그 컴퓨터를 사용하고 있다.(예시 출처: 위키백과) 영화 her의 사만다가 생각난다.





라운드 로빈 스케줄링



1. 라운드 로빈

시분할 시스템(Time Sharing System)을 위해 고안된 방식이다. CPU에게 할당된 총 프로세스들의 작업 시간을 여러 개로 쪼갠다. 이 하나의 시간을 타임 슬라이스 혹은 타임 퀀텀이라고 한다. 각 프로세스는 할당된 시간만 실행한 후 우선 순위가 맨 뒤로 밀려난다.

도커 스웜의 한 서비스 내에서 로드밸런싱을 할 때는 각 태스크들이 라운드로빈 방식으로 스케줄링된다.



2. 어떻게 돌아가는지 확인해보기

아래와 같이 프로세스가 할당되었다고 하자.


프로세스 A B C
실행시간 20 6 4


각 타임슬라이스에서 라운드로빈 방식의 프로세스 처리는 아래처럼 이루어진다. 타임 슬라이스는 5초라고 하자.

인덱스 1에서 A는 주어진 시간 내 작업을 처리하지 못해 C 다음으로 우선순위가 밀려난다. C의 타임슬라이스가 끝나고 난 뒤 4번 인덱스에서 다시 시작된다. 5번 인덱스에서 나머지 B 프로세스도 끝나고 나서야, 6번 인덱스부터 남은 타임슬라이스에서는 계속 A가 작업을 실행한다.


인덱스 타임 슬라이스 작업 남은 시간
1 0 ~ 5초 A 15초
2 5 ~ 10초 B 1초
3 10 ~ 14초 C
4 14 ~ 19초 A 10초
5 19 ~ 20초 B
6 20 ~ 25초 A 5초
7 25 ~ 30초 A