스케줄링
- 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업
- 대기 시간은 최소화하고 최대한 공평하게 처리하는 것을 목적으로 함
스케줄링의 종류
- 선점(preemptive) 스케줄링
- 비선점(non-preemptive) 스케줄링
선점 스케줄링
- 하나의 프로세스가 CPU를 차지하고 있을 때, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식
- 비교적 응답이 빠르다는 장점이 있지만, 처리 시간을 예측하기 힘들고 높은 우선순위 프로세스들이 계속 들어오는 경우 오버헤드 초래
라운드 로빈(Round Robin)
- 프로세스마다 같은 크기의 CPU 시간을 할당 (시간 할당량 / Time Slice / Quantum) - 보통 10 ~ 100ms 정도
- 프로세스가 할당된 시간 내에 처리완료 못하면 준비 큐 리스트의 가장 뒤로 보내지고, CPU는 대기중인 다음 프로세스로 넘어감
- 균등한 CPU 점유 시간을 보장하며, 시분할 시스템에 사용
SRT(Shortest Remaining Time First)
- 가장 짧은 시간이 소요되는 프로세스를 먼저 수행
- 남은 시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 프로세스가 점령됨
다단계 큐(Multi Level Queue)
- 작업들을 여러 종류 그룹으로 분할, 여러 개의 큐를 이용하여 상위 단계 작업이 선점
- 각 큐는 자신만의 독자적인 스케쥴링을 가짐
다단계 피드백 큐 (Multi Level Feedback Queue)
- 입출력 위주와 CPU 위주인 프로세스의 특성에 따라 큐마다 서로 다른 CPU 시간 할당량 부여
- FCFS와 라운드 로빈 기법혼합
- 새로운 프로세스는 높은 우선순위를 가지지만 프로세스의 실행 시간이 길어질 수록 점점 낮은 우선순위 큐로 이동하며, (이 때, 우선 순위가 낮을 수록 시간할당량을 크게 줌으로써 보완 가능) 마지막 단계에서 FCFS 방식을 적용
- 유연성 뛰어남, turnaround 시간과 response time에 최적화
비선점 스케줄링
- 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법
- 프로세스가 CPU를 할당 받으면 해당 프로세스가 완료될 때까지 CPU를 사용하지 않음
우선순위(Priority)
- 각 프로세스 별로 우선순위가 주어지고, 우선순위에 따라 CPU 할당
- 우선순위가 같을 경우 FCFS 적용
- 설정, 자원 상황등에 따른 우선순위를 선정해 주요/긴급 프로세스에 대한 우선처리 가능
기한부(Deadline)
- 작업들이 명시된 기간이나 기한 내에 완료되도록 계획
FCFS 스케줄링 (First Come First Serve Scheduling)
- CPU를 먼저 요청한 프로세스가 먼저 CPU를 배정 받는 스케줄링 방법
- 프로세스가 대기 큐에 도착한 순서에 따라 CPU 할당
SJF(Shortest Job First)
- 프로세스가 도착하는 시점에 따라 그 당시 가장 작은 서비스 기간을 갖는 프로세스가 종료 시 까지 선점
- 준비 큐 작업중 가장 짧은 작업부터 수행하므로 평균 대기시간 최소
- CPU 요구시간이 긴 작업과 짧은 작업간의 불평등이 심하여, CPU 요구시간이 긴 프로세스는 기아 현상발생
HRN(Highest Response Ratio Next)
- 대기 중인 프로세스 중 현재 Response Ratio가 가장 높은 것을 선택
- (Response Ratio = (대기시간 + 서비스시간) / 서비스시간)
- 대기시간이 긴 프로세스일 경우 우선순위가 높아짐
- 긴 작업과 짧은 작업 간의 지나친 불평등을 해소할 수 있음
참고: https://eun-jeong.tistory.com/17