首页/操作系统/进程管理/FCFS 调度算法 🔗 在 Obsidian 中打开
操作系统 · 进程管理 · 调度算法

FCFS 调度算法

重要度 ★★★★ FCFS先来先服务非抢占式
速查
FCFS(先来先服务)最简单地按到达顺序调度,非抢占式。优点是公平简单;缺点是护航效应(长作业阻塞短作业),平均等待时间通常不是最优

核心概念

FCFS(先来先服务)是最简单的调度算法:按照进程到达就绪队列的先后顺序,先到达的先执行,直到完成或阻塞后才调度下一个。

算法特点

  • 非抢占式:一旦获得 CPU,进程将一直运行到完成或主动放弃。
  • 公平性:按照到达顺序服务,不会饿死任何进程。
  • 护航效应:多个短作业排在一个长作业后面,导致所有短作业等待时间很长。

性能分析

  • CPU 密集型进程有利:长时间占用 CPU。
  • I/O 密集型进程不利:频繁 I/O 阻塞后需要重新排队。
  • 平均等待时间通常较长,且不保证最短平均等待时间

关键性质

性质
算法类型非抢占式
选择依据到达时间
是否最优否(平均等待时间通常不是最小)
是否公平是(不会饿死)
护航效应有(长作业阻塞短作业)

常见考法

考法解题套路
计算平均等待时间按到达顺序排列,逐个计算完成时间、周转时间、等待时间
护航效应一个长作业在前,后面所有短作业都要等它完成
FCFS vs SJFFCFS 按到达时间,SJF 按执行时间;SJF 平均等待更短
是否公平FCFS 公平但不高效,SJF 高效但可能饿死短作业

易错点

必记
  1. ⚠️ FCFS 是非抢占式——进程一旦获得 CPU 就运行到完成或阻塞。
  2. ⚠️ FCFS 的平均等待时间不是最优的——SJF 更短。
  3. ⚠️ 护航效应(Convoy Effect):一个 CPU 密集型长作业后面跟着多个短作业,短作业等待被拉长。
  4. ⚠️ FCFS 对 I/O 密集型进程不公平——I/O 阻塞后回到队尾。
  5. ⚠️ FCFS 既可用于作业调度,也可用于进程调度。

记忆卡片

FCFS 核心思想?
先来先服务,按到达顺序调度。
抢占式还是非抢占式?
非抢占式——运行到完成或主动阻塞。
什么是护航效应?
长作业在前,后面短作业被迫等待,平均等待变长。
平均等待时间最优吗?
不是——SJF 更优。

交互动画 · FCFS 甘特图

第 0 步
就绪队列(先到先服务) P1 (3) P2 (6) P3 (4) P4 (4) CPU 甘特图(运行顺序) 03 913 17 P1(3) P2(6) P3(4) P4(4) 就绪队列:P1(3) · P2(6) · P3(4) · P4(4)(均 0 时刻到达)
点击「播放」或「下一步」:观察进程逐个出队运行,甘特图与等待时间逐步生成
第 1 步总览;第 2~6 步逐个运行;第 7 步平均等待/周转;第 8 步总结。
就绪 队头 / 运行 已完成出队
示意:括号内为服务时间;等待时间 = 开始时间 − 到达时间(假设均 0 时刻到达)。平均等待 = (0+3+9+13)/4 = 6.25。

相关知识点

scheduling-algorithm-comparison sjf-scheduling

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。