[F-Lab 모각코 챌린지] 56일차 - 스케줄러 종류
F-Lab 모각코 챌린지 56일차 - 스케줄러 종류. 선점형 스케줄링과 비선점형 스케줄링에 대해 정리하였습니다. 각 스케줄링 방식의 알고리즘들도 간략하게 설명하였습니다.
![[F-Lab 모각코 챌린지] 56일차 - 스케줄러 종류](/content/images/size/w1200/2023/07/f_lab_mogacko-9-6.png)
스케줄러 종류
선점형 스케줄링 (Preemptive Scheduling)
선점 방식으로 동작하는 스케줄링 알고리즘을 뜻한다
- 하나의 프로세스가 자원을 차지하고 있을 때, 다른 작업이 먼저 점유하고 있던 프로세스를 중지시키고 강제로 점유 할 수 있다
- 실시간 응답, Deadline 응답 환경 등 우선순위가 높은 프로세스를 빠르게 처리해야 할 때 유용하다
- 비교적 응답이 빠르다는 장점. 하지만 응답 시간을 예측하기 힘들 수 있다
알고리즘들
- 라운드 로빈(RR: Round Robin)
55일차에서 소개 하였다 - 가장 짧은 남은 시간 우선(?)(SRT: Shortest Remaining Time First)
- 가장 짧은 시간이 소요되는 프로세스를 먼저 수행
- 남은 시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 프로세스가 선점됨.
- 상대적으로 우선순위가 낮은 프로세스가 계속해서 대기할 수도 있음(기아 현상: Starvation) - 다단계 큐(MLQ: Multi Level Queue)
- 여러개의 큐를 사용하는 스케줄링 알고리즘
- 각 큐는 자신만의 스케줄링 알고리즘을 가진다. (ex: queue1: RR, queue2: SRT...)
- 프로세스를 몇 가지 카테고리로 분류하여 서로 다른 종류의 작업을 다루는 데 적합
- 대표적인 단점으로는 프로세스가 한 번 큐에 할당되면 다른 큐로 이동할 수 없다는 것 - 다단계 피드백 큐(MLFQ: Multi Level Feedback Queue)
- MLQ 의 단점을 해결하기 위해 만들어졌다
- MLQ 의 장점을 모두 가지고 있으며, 프로세스가 큐 간에 이동이 가능하다
협력형 스케줄링 (Non-preemptive Scheduling)
프로세스가 자신의 자원을 양보하는 방식으로 동작하는 스케줄링 알고리즘
- 하나의 프로세스가 자신의 자원을 양보(yield) 할 때 까지 다른 프로세스는 자원의 점유가 불가능한 스케쥴링 방식
- 짧은 작업을 수행하는 프로세스가 긴 작업을 수행하는 프로세스의 양보 까지 대기 해야 할 수 있다 (콘베이어 벨트 현상: Conveyor Belt effect)
- 처리 시간의 편차가 적은 특정 프로세스 환경에 용이
알고리즘들
- FCFS(First-Come, First-Served)
55일차 에서 소개하였다 - hortest Job Next (SJN) 또는 Shortest Job First (SJF)
- 프로세스 중에서 가장 실행 시간이 짧은 프로세스를 먼저 실행.
- 평균 대기 시간을 최소화하는데 효과적이나, 실행 시간을 미리 알아야 하고, 실행 시간이 긴 프로세스가 기아 현상에 빠질 수 있다. - Priority Scheduling
- 각 프로세스에 우선 순위를 부여하고, 우선 순위가 가장 높은 프로세스를 먼저 실행한다.
- 시스템의 요구 사항에 따라 우선 순위를 동적으로 조정할 수 있다 - Deadline Scheduling
- 각 작업에 대해 주어진 기한을 고려하여 스케줄링한다.
- 기한이 가장 빠른 작업을 우선적으로 처리한다
- 실시간 시스템에서 유용하다 - Direct Acyclic Graph (DAG) Scheduling
- 작업 간의 의존성을 고려하여 스케줄링한다.
- 작업 간 의존성이 있는 경우, 의존성을 충족하는 순서로 작업을 실행한다.