Skip to content

2017年 408 操作系统 第 23 题

操作系统2017年选择题2分

题目

假设 4 个作业到达系统的时刻和运行时间如下表所示。

作业达到时刻 t运行时间
J103
J213
J312
J431

系统在 t=2 时开始作业调度。若分别采用先来先服务和短作业优先调度算法,则选中的作业分别是( )。

错因

A

把 FCFS 选成 J2——可能漏看 J1(t=0 来),以为 J2(t=1 来)是最早的。但 t=2 开始调度时,J1 J2 J3 都已到达且在就绪队列里,最早的是 J1,FCFS 必选 J1。把 J2 当成最早是没仔细看 t=2 时刻就绪队列的全员到达情况。

B

FCFS 选 J1 对了,但 SJF 选 J4 错——J4 在 t=2 时还没到达(J4 到达时刻 t=3)。SJF 只在已到达的作业里选,t=2 时只有 J1 J2 J3 三个候选,不能选未来的 J4。把 J4 列入候选是没考虑"调度只能在当前可见的作业里挑"这一基本约束。

C

两个都错:FCFS 选 J2(漏 J1)+ SJF 选 J4(提前预知未来)。两条错误叠加。

总解析

关键点:作业调度只能从当前已经到达的就绪作业里选。t = 2 时已到达的作业:

作业到达时刻已到达?(t=2 时)运行时间
J103
J213
J312
J43✗ 未到1

t = 2 时就绪队列:J1, J2, J3(J4 还没到,不参与本次调度)。

FCFS(先来先服务):选最早到达的。

作业到达时刻
J10(最早)
J21
J31

→ FCFS 选 J1

SJF(短作业优先):选运行时间最短的。

作业运行时间
J13
J23
J32(最短)

→ SJF 选 J3

反向验证:选 J4 错在哪里?J4 到达时刻是 t = 3,t = 2 调度时它还没出现在就绪队列——调度算法不能"看未来",只能从已知队列里挑。

最终答案是 D

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数