프로세스 스케줄링
프로세스 스케줄링은 CPU를 사용하려고 하는 프로세스들 사이의 우선 순위를 관리하는 작업이다.
이 스케줄링은 처리율과 CPU 이용률을 증가시키고 오버헤드, 응답시간, 반환시간, 대기시간을 최소화시키기 위한 기법이다. 그리고 특정 프로세스가 적합하게 실행되도록 프로세스 스케줄링에 의해 프로세스 사이에서 CPU 교체가 일어난다.
프로세스 스케줄링 유형에는 선점형 스케줄링과 비선점형 스케줄링이 있다.
● 선점형 스케줄링 (Preemptive Scheduling) : 하나의 프로세스가 CPU를 차지하고 있을 때, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식이다.
<장점> : 비교적 빠른 응답이며 대화식 시분할 시스템에 적합하다.
<단점> : 높은 우선순위 프로세스들이 들어오는 경우 오버헤드가 발생
● 비선점형 스케줄링 (Non Preemptive Scheduling) : CPU를 할당받으면 작업 종료 후 CPU 반환 시까지 다른 프로세스는 CPU 점유가 불가능한 스케줄링 방식이다.
<장점> : 응답시간 예상이 용이하며 모든 프로세스에 대한 요구를 공정하게 처리한다.
<단점> : 짧은 작업을 수행하는 프로세스가 긴 작업 종료 시까지 대기한다.
각각 스케줄링의 알고리즘 유형에 대해 알아보겠다.
우선 선점형 스케줄링에는 RR, SRT, MLQ, MLFQ가 있고 비선점형 스케줄링에는 우선순위, 기한부 FCFS, SJF, HRN이 있다.
[선점형 스케줄링]
1) RR(라운드 로빈) : CPU 시간을 할당 (시분할)을 말하며 대기 중인 다음 프로세스로 넘어가는 기법이다.
2) SRT : 실행시간이 가장 짧은 프로세스를 먼저 수행하는 것이다.
3) MLQ(다단계 큐) : 여러개의 큐를 두고 어떤 프로세스가 들어오면 어디가 적합한지 판단하고 상위단계가 끝나야 하위단계를 수행하는 기법이다.
4) MLFQ(다단계 피드백 큐) : FCFS와 RR 혼합한 것으로 무조건 상위단계에 넣고 상위단계에서 수행못하여도 바로 다음 단계로 넘어가는 기법이다.
[비선점형 스케줄링]
1) 우선순위 : 말 그대로 우선순위에 따라 CPU를 할당하는 기법이다.
2) 기한부 : 작업들이 명시된 시간이나 기한 내에 완료되도록 계획하는 스케줄링 기법이다.
3) FCFS : 프로세스가 대기 큐에 도착한 순서에 따라 CPU를 할당하는 스케줄링 기법
4) SJF : SRT랑 비슷하며 프로세스가 도착하는 시점에 따라 그 당시 가장 작은 서비스 시간을 갖는 프로세스가 종료 시까지 자원을 점유하는 스케줄링 기법이다.
5) HRN : 현재 응답률이 가장 높은 것을 선택하는 스케줄링 기법이다.
이런 알고리즘들을 수행하게 되면 기아 현상이 발생한다. 기아현상이란 시스템 부하가 많아서 준비 큐에 있는 낮은 등급의 프로세스가 무한정 기다리는 현상이다. 기아현상을 해결하기 위해서 오랫동안 기다린 프로세스에게 우선순위를 높여주도록 처리하는 기법인 에이징(Aging)을 활용한다.
기아현상이 발생한 알고리즘 : SRT, MLQ, SJF, 우선순위
에이징을 활용한 알고리즘 ; MLFQ, HRN