스케줄링 정책 종류
- 비선점 스케줄링(Non-preemptive Scheduling) : 할당받을 자원을 스스로 반납할 때까지 사용한다.
- 장점 : Context Switching 부하가 적음
- 단점 : 우선순위가 낮은 프로세스를 처리하는 시간이 늘어나 평균 응답시간이 증가할 수 있음
- 선점 스케줄링(Preemptive Scheduling) : 타의에 의해 자원을 빼앗길 수 있음.
- 장점 : 응답성이 높으므로 real-time system, time-sharing system에 적합하다.
- 단점 : Context Switching 부하가 큼
- 정적(Static) 우선순위 : 프로세스 생성 시 결정된 우선 순위가 유지된다.
- 장점 : 구현이 쉬움. Context Switching이 덜 일어남
- 단점 : 시스템의 환경 변화에 대한 대응이 어려움
- 동적(Dynamic) 우선순위 : 프로세스의 상태 변화에 따라 우선순위를 변경한다.
- 장점 : 시스템 환경 변화에 대한 유연한 대응 가능
- 단점 : 구현이 복잡함
대표적인 스케줄러
- FCFS(First Com First Service) : 비선점 스케줄러로, Ready Queue에 먼저 도착한 프로세스를 먼저 처리한다.
- 자원을 효율적으로 사용할 수 있어 일괄 처리 시스템에 적합함
- 그러나 수행시간이 긴 프로세스가 먼저 도착하면 평균 응답시간이 길다는 단점이 있음
- RR(Round Robin) : 선점 스케줄러로, Ready Queue에 먼저 도착한 프로세스를 먼저 처리하지만, 자원 사용 시간(time quantum)을 활용하여 특정 프로세스의 자원 독점을 방지한다(할당된 시간이 지나면 자원을 반납하게 함).
- SJF(Shortest Job First) : 비선점 스케줄러로, 가장 실행 시간이 적은 프로세스를 먼저 처리한다.
- 평균 대기 시간을 줄일 수 있지만, 실행시간이 긴 스케줄러들은 기아가 될 수 있음.
- SRTF(Shortest Remaining Time First) : 선점 스케줄러로, 잔여 실행 시간이 더 적은 프로세스를 먼저 처리한다.
- SJF의 장점을 극대화했으나, 잔여 시간을 계속 추적해야하며, Preemption이 자주 일어나기 때문에 오버헤드가 증가할 수 있음
- Priority Scheduling : 각 프로세스에 지정된 우선순위를 기준으로 높은 우선순위를 가진 프로세스를 먼저 처리한다.
- 낮은 우선순위를 가진 프로세스는 기아가 될 수 있음(이는 일정 시간 이상 기다리면 프로세스의 우선순위를 높여주는 aging 방식으로 해결할 수 있음)