Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

第五十八章:先来先服务与最短任务优先

复习

  • 调度需要在响应、吞吐量和公平之间取舍。

TL;DR

  • 先来先服务简单公平,却会让短任务排在长任务后面。
  • 最短任务优先可缩短平均等待,却需要预知任务长度并可能造成饥饿。

正文

  先来先服务按到达顺序运行。它很容易理解,却会产生“车队效应”:一个长计算任务排在最前,后面很多只需几毫秒的任务也得等它完成。

  最短任务优先改为先运行预计最短的任务,平均等待时间常会更小。但系统往往不知道一个程序还要跑多久;而且不断到来的短任务可能让长任务永远排不到,称为饥饿。

  交互系统通常不能等任务完成才换人,需要一种能主动轮流的方案。

思考题

最短任务优先为何不一定公平?

小结

  • FCFS 容易出现长任务堵住短任务。
  • SJF 改善平均等待,却有预测和饥饿问题。

思考题答案(仅供参考)

  若短任务持续到来,长任务会不断被排到后面,即使它早已等待很久。

协议

本文采用 CC BY-NC-SA 4.0 协议发布。