스케쥴링은 운영체제가 프로세스에 자원을 할당하는 것을 말한다. 컴퓨터에는 여러 프로세스가 돌아가기 때문에 적절한 방법으로 자원을 분배하여 할당한다.
스케쥴링은 선점형(Preemptive) 그리고 비선점형(Non-Preemptive)으로 나뉜다.
선점형은 이미 프로세스가 자원을 할당받았을 때 우선순위 높은 다른 프로세스가 자원을 뺐을 수 있는 방식을 말한다.
비선점형은 다른 프로세스가 뺐을 수 없는 방식을 말한다. 한번 할당된 자원은 작업이 끝날 때까지 유지된다.
선점형 스케쥴링
1.
Round-Robin
모든 프로세스에 똑같은 시간을 할당한다. 시간 안에 작업을 완료하지 못하면 취소 후 마지막으로 보내고 다음 프로세스를 처리한다.
P(x)를 프로세스 P, 실행 시간 x 그리고 제한 시간을 50ms으로 가정하고 A(100), B(30), C(20) 순으로 요청했다면 B(30), C(20), A(100) 순으로 자원을 할당한다.
2.
SRT(Shortest Remaining Time First)
프로세스 시간이 짧은 것부터 자원을 할당한다. 단, 처리 중간에라도 더 짧은 프로세스가 생겼다면 취소하고 더 짧은 프로세스를 처리한다.
P(x)를 프로세스 P, 실행 시간 x라고 가정하고 A(10), B(20) 순으로 요청하면 A(10), B(20) 순으로 자원을 할당한다. 이 때 C(5) 프로세스가 새롭게 생기면 프로세스 A 작업을 중단하고 프로세스 C를 처리한다.
비선점형 스케쥴링
1.
FIFO(First In First Out)
자료구조 큐와 같은 방식이며 먼저 요청한 프로세스부터 자원을 할당한다.
A, B, C 순서대로 요청을 했다면 자원 할당도 A, B, C 순서대로 이루어진다.
2.
SJF(Shortest Job First)
프로세스 실행 시간이 가장 짧은 것부터 자원을 할당한다.
P(x)를 프로세스 P, 실행 시간 x라고 가정하고 A(20), B(10), C(30) 순으로 요청했다면
B(10), A(20), C(30) 순으로 자원을 할당한다.
3.
우선순위(Priority)
프로세스마다 우선순위를 설정하고 급한 것부터 처리하는 방법이다. 우선순위가 같다면 FIFO 방법을 사용한다.
P(x)를 프로레스 P, 우선순위 x라고 가정하고 A(2), B(3), C(1) 순으로 요청했다면 C(1), A(2), B(3) 순으로 자원을 할당한다.