第五十八章:先来先服务与最短任务优先
复习
- 调度需要在响应、吞吐量和公平之间取舍。
TL;DR
- 先来先服务简单公平,却会让短任务排在长任务后面。
- 最短任务优先可缩短平均等待,却需要预知任务长度并可能造成饥饿。
正文
先来先服务按到达顺序运行。它很容易理解,却会产生“车队效应”:一个长计算任务排在最前,后面很多只需几毫秒的任务也得等它完成。
最短任务优先改为先运行预计最短的任务,平均等待时间常会更小。但系统往往不知道一个程序还要跑多久;而且不断到来的短任务可能让长任务永远排不到,称为饥饿。
交互系统通常不能等任务完成才换人,需要一种能主动轮流的方案。
思考题
最短任务优先为何不一定公平?
小结
- FCFS 容易出现长任务堵住短任务。
- SJF 改善平均等待,却有预测和饥饿问题。
思考题答案(仅供参考)
若短任务持续到来,长任务会不断被排到后面,即使它早已等待很久。
协议
本文采用 CC BY-NC-SA 4.0 协议发布。