CPU를 사용하기 위한 작업들을 관리하는 것
스케줄러가 Dispatch 함으로써 프로세스가 CPU를 할당 받아 작업을 수행한다.
이때 스케줄링은 CPU를 할당하기 위해 결정하는 과정이라고 생각하면될 것 같다.
작업에 할당하는 CPU의 사용시간
Time Slice가 0이 된다면 CPU를 빼앗기게 된다.
작업마다 우선순위가 존재하는데 CPU를 사용하기 위해서는 대기 큐에서의 우선순위가 높은 순서부터 CPU를 할당받는다.
CPU를 받기위해 프로세스(작업) 들이 대기하는 큐
작업들이 대기하는 큐(queue
)와 그러한 큐들을 모아놓은 이진 배열(bitmap
) 으로 구성되어있다.
bitmap
은 이진 비트로 구성되어 작업 큐의 유무를 보관한다.
bitmap
요소의 값이 1이라면 큐가 존재하는 것이고 0 이면 존재하지 않는다.
이러한 bitmap
과 queue
는 각 CPU마다 두 개의 배열로 구성되어 있는데
각각 Active array
와 Expired array
라 한다.
Active array
는 말 그대로 현재 CPU가 스케줄하기 위해 대기하고 있는 작업들의 배열이다.
Expired array
는 완료되거나 timeslice
가 0인 작업들을 보관하게 되는 배열이다
bitmap
에서 우선순위에 따라 queue
가 있는지를 확인한다.queue
가 있다면 queue
에서 우선순위가 가장 높은 작업을 수행한다.queue
가 없다면 다음 bitmap
의 요소로 넘어간다.timeslice
가 0이된 작업은 Expired array
로 이동한다.만약 Active array의 작업이 모두 완료되어 비워지게 된다면
Expired array
와 Active array
를 교체하여 Expired array
에 timeslice
를 부여하여 다시 Active array
로 만들어 사용한다.
위 알고리즘의 시간 복잡도는 O(1) 이다.
고건 교수님 강의
https://olc.kr/course/course_online_view.jsp?id=35&cid=51