이번에는 정보처리기사 필기 과목인 운영체제의 스케쥴링에 관해 알아보기로 해요.
스케쥴링
어느 작업이 CPU를 사용할 것인지 결정하는 작업
문맥 교환(Context Switching) 작업을 통해 프로세스는 이전에 수행했던 상태에서 수행할 수 있습니다.
좋은 스케쥴링
CPU 사용 효율이 높게 스케쥴링합닌다.
우선 순위가 높은 프로세스를 먼저 수행하고 처리합니다.
문맥 교환에 들어가는 오버헤드를 최소화합니다.
작업을 요청하였을 때 반응하는 데 걸리는 응답 시간(Response Time)을 최소화합니다.
프로세스를 시작하여 실행을 완료하는 데 걸리는 반환 시간(Trun Around Time)을 최소화합니다.
무한정 대기하는 작업이 발생하지 않게 합니다.
비선점형(Non Preemptive) 스케쥴링
CPU를 점유하는 작업이 있을 때 다른 프로세스는 강제로 CPU를 점유할 수 없습니다.
일괄 처리 방식의 스케쥴링입니다.
중요하지 않은 작업이 CPU를 점유하고 있을 때 중요한 작업이 대기하는 상황이 발생합니다.
FIFO, SJF, HRN, 우선순위 등의 스케쥴링 방법이 있습니다.
FIFO(First In First Out)
먼저 대기하는 작업을 먼저 CPU를 사용하게 하는 방법으로 가장 단순합니다.
FCFS(First Come First Service)라고도 부릅니다.
SJF(Shortest Job First)
실행 시간이 짧은 작업을 먼저 CPU를 사용하게 하는 방법입니다.
탐욕 기법에 의해 평균 대기 시간을 최소로 해주는 스케쥴링 기법입니다.
실행 시간이 긴 프로세스는 무한 대기 상태가 발생할 수 있습니다.
HRN(Highest Response Rate Next)
대기 시간과 실행 시간을 혼합하여 어느 작업을 CPU를 사용할 지 결정하는 방법입니다.
HRN 값 = (대기 시간 + 실행 시간) / 실행 시간
우선순위(Priority)
우선순위가 높은 작업이 먼저 CPU를 사용하게 하는 방법입니다.
우선순위가 낮은 작업은 무한 대기 상태가 발생할 수 있습니다.
선점형(Preemptive) 스케쥴링
CPU를 점유하는 작업이 있을 때 우선 순위가 높은 프로세스는 강제로 CPU를 점유할 수 있습니다.
시분할 시스템에 사용하는 스케쥴링입니다.
잦은 문맥 교환에 오버헤드가 발생합니다.
Round Robin, SRT, 다단계 큐, 다단계 피드백 큐 등의 알고리즘이 있습니다.
Round Robin
대기 큐를 사용하여 먼저 대기한 작업이 먼저 CPU를 사용합니다.
CPU를 사용할 수 있는 시간(Quantum)동안 CPU를 사용한 후에 다시 대기 큐에 배치하여 대기합니다.
Quantum이 작으며 작업 시간이 작은 프로세스에 유리합니다.
SRT(Shortest Remaining Time)
현재 실행 중인 프로세스의 남은 시간과 대기 큐에 프로세스의 실행 시간이 가장 짧은 프로세스가 CPU를 사용합니다.
다단계 큐(Multi Level Queue)
프로세스의 우선 순위에 따라 대기하는 큐를 다르게 배정합니다.
다단계 피드백 큐(Multi Level Feedback Queue)
다단계 큐 방식에서 오래 대기한 프로세스가 높은 레벨의 대기 큐로 이동합니다.