进程调度
一个 CPU 只能同时运行一个进程,就绪进程却可能有多个。调度器在决策点选出下一个运行者。本课让同一组四个进程分别使用 FCFS、SJF、Round Robin,直接比较甘特图和等待时间。
如同一个收银台面对不同大小的购物车:可按到达顺序服务、优先小车,或每人处理固定数量后排回队尾。任务相同,排队规则改变体验。
进程调度如何工作
就绪队列保存已到达且等待 CPU 的进程;CPU 每次执行一个;甘特图记录每段时间由谁占用。调度策略决定派发时谁离开队列。
FCFS(先来先服务)取队首,按到达顺序执行完本次 CPU burst,不抢占。
SJF(短作业优先)从已就绪进程中选 burst 最短者。本课是非抢占式:长任务开始后,新到短任务不会夺走 CPU;长度相同优先较早到达者。
Round Robin(时间片轮转)取队首,最多运行一个时间片。默认 quantum=2,滑块范围 1–4。剩余工作在片内做完就结束,否则抢占并排回队尾。片内到达者及边界时到达者先入队,被抢占者随后入队。
周转时间为完成时刻减到达时刻。等待时间为周转减 burst,本课没有阻塞 I/O,所以这部分都是就绪等待。
固定输入:P1 在 t=0 到达、burst=5;P2 在 t=1、burst=3;P3 在 t=2、burst=1;P4 在 t=3、burst=2。长任务先来,三个短任务随后到达。
逐步演示
默认 FCFS:
- t=0 只有 P1,就运行
[0,5]。P2、P3、P4 在 t=1、2、3 到达并排队。P1 在 5 完成,周转5−0=5,等待5−5=0。 - P2 运行
[5,8],周转8−1=7,等待7−3=4。 - P3 运行
[8,9],周转 7,等待 6,只做一单位工作却等六单位。 - P4 运行
[9,11],周转 8,等待 6。
甘特图为 P1[0,5] P2[5,8] P3[8,9] P4[9,11]。平均等待 (0+4+6+6)/4=4.00,平均周转 (5+7+7+8)/4=6.75。短任务被长 burst 挡住,是队列中的护航效应。
切到 SJF,P1 已开始,仍先运行到 5。此时就绪任务长度为 P2=3、P3=1、P4=2,按短到长执行:P1[0,5] P3[5,6] P4[6,8] P2[8,11]。P3、P4 各等 3,P2 等 7,平均等待 3.25,平均周转 6.00。
Round Robin、quantum=2 的七个片段为:P1[0,2] P2[2,4] P3[4,5] P1[5,7] P4[7,9] P2[9,10] P1[10,11]。
t=2 时 P3 恰好到达,先于被抢占的 P1 入队。P3 在 5 完成、等 2;P4 在 9 完成、等 4;P2 在 10 完成、等 6;P1 分三次运行,在 11 完成、等 6。平均等待 4.50,平均周转 7.25,但四个进程在 t=7 时都已获得首次 CPU 服务。
同一进程在队列、CPU 和甘特图中保持颜色。等待计数在排队时增长,轮转时 CPU 框下的时间片条随本片已用时间增长,填满即被抢占。
如何比较策略
| 策略 | 平均等待 | 平均周转 |
|---|---|---|
| FCFS | 4.00 | 6.75 |
| SJF | 3.25 | 6.00 |
| Round Robin,片长 2 | 4.50 | 7.25 |
本输入 SJF 平均值最好。所有作业同时可用、长度已知时,非抢占的短到长顺序能最小化平均等待;有交错到达时,不能直接把这一证明套到每个贪心 SJF 日程。真实系统还必须估计 burst,短任务持续到来可能饿死长任务。
轮转在此例平均值最差,却让就绪任务轮流获得服务。有限队列、有限时间片且调度继续前进时,可以限制每轮等待,不需要预知 burst。交互系统重视首次响应与公平性,实际策略还会加入优先级等规则。FCFS 按到达顺序公平,但长 burst 会挡住后面的短任务。
边界情况
- 队列空、还有未来到达者时,时钟前进到下次到达,甘特图绘制空闲段。默认输入无空闲。
- 剩余工作恰等于时间片时,本片结束即完成,不再抢占回队。
- 到达与时间片结束同刻时,本课先入队新进程,再放回被抢占者。不同教材可能采用不同约定。
- SJF 长度相同,较早到达者优先。
常见错误
- 混淆等待与周转。FCFS 中 P3 周转 7、等待 6,差值是 burst=1。
- 认为 SJF 普遍最好。此处平均值更低,但最优证明有同时可用等条件,还需预知长度并面对饥饿。
- 认为时间片越小越好。片长 1 会增加切换次数。本模型切换免费,真实系统需付切换和缓存等成本,响应收益要与开销权衡。
模型范围
单 CPU、CPU 密集型作业、已知 burst、零切换成本,让派发规则可见。生产系统还有真实切换开销、burst 估计、多级反馈队列、优先级与老化、每核负载均衡。本课不把简化策略直接当成生产调度器。