Skip to content

FCFS 先来先服务调度

考情分析

FCFS 是最简单的调度算法,常作为其他算法的对比基准出现。在 408 真题中多用于计算题的对比场景。属于 🔥🔥 中高频考点。

排队买饭,先来的先打——公平是公平,但如果排在第一个的人点了满汉全席,后面只想买瓶水的人也只能干等。FCFS 就是这个逻辑。

算法规则

先来先服务(First Come First Served):按照进程到达就绪队列的先后顺序分配 CPU。

  • 只有非抢占式一种实现
  • 先到达的进程先执行,执行完毕后下一个进程才能开始

调度示例

进程到达时间服务时间
P107
P224
P341
P454

Gantt 图:

时间: 0   2   4   5   7   11  12  16
      ├───────────────┤───────┤──┤───────┤
            P1            P2   P3   P4
进程完成时间周转时间带权周转时间等待时间
P177-0=77/7=1.000
P21111-2=99/4=2.255
P31212-4=88/1=8.007
P41616-5=1111/4=2.757
平均8.753.504.75

交互可视化

加载可视化中...

优缺点分析

优点缺点
算法简单,易于实现短作业等待时间可能很长
公平(不会饥饿)护航效应(Convoy Effect)

护航效应

当一个长作业先到达时,后面的短作业都必须等待它执行完毕。就像一辆大卡车堵住了后面的小轿车——即使小轿车只需要几秒钟通过。

从上面的例子可以看到:P3 只需要 1 个单位的服务时间,但它的带权周转时间高达 8.00

适用场景

  • 适合长作业为主的场景
  • 短作业不友好
  • 常用于作业调度(高级调度),较少用于进程调度

考研高频考点

  • 🔥🔥🔥 给定进程到达时间和服务时间,计算各指标(必考基础)
  • 🔥🔥 护航效应的概念
  • 🔥 FCFS 是非抢占式算法,不会导致饥饿

FCFS 对短作业不友好,那能不能让短作业先执行?下一篇看 SJF 短作业优先调度。

真题练习

相关真题(1题)

2017Q23选择题2分

FCFS vs SJF:FCFS选最先到达的J1,SJF选运行时间最短的J3