软件设计师 · 高频练习

短作业优先 SJF 和最短剩余时间 SRTF 有什么区别?

中级 单选题 第 858 题 中等 软件设计师操作系统进程调度SJFSRTF抢占式调度
题目

进程 P1 正在运行,预计还需 8ms 完成。此时新到达进程 P2 只需 3ms。关于 SJF 与 SRTF 调度,下列说法正确的是()。

A 非抢占式SJF通常让P1继续;SRTF可抢占P1并先运行P2
B SJF和SRTF都必须立即抢占P1
C SJF必须抢占,SRTF一定不抢占
D 两种算法都只按进程到达先后顺序调度
题目类型:原创高频练习题 用途:用于帮助理解软件设计师相关考点和答案解析,不等同于官方真题。
正确答案
A
答案解析

通常所说的 SJF 是非抢占式短作业优先,当前进程一旦获得 CPU 会运行到完成或主动阻塞;SRTF 是其抢占式版本,比较当前进程剩余时间与新到达进程预计时间,P2 的 3ms 更短,因此可以抢占 P1。

选项分析

A

正确。SJF通常非抢占,SRTF按剩余时间重新比较并允许短进程抢占。

B

错误。非抢占式SJF不会仅因更短进程到达就强制抢占当前进程。

C

错误。两者的抢占属性正好说反。

D

错误。只按到达先后是FCFS,不是SJF或SRTF。

本题为什么容易错

只记“短的先”会漏掉决定性条件:比较发生在什么时候。SJF通常在CPU可重新分配时比较,SRTF在新进程到达等调度点也会比较剩余时间。

先看结论

简短答案

短作业优先 SJF 和最短剩余时间 SRTF 有什么区别,正确答案是 A(非抢占式SJF通常让P1继续;SRTF可抢占P1并先运行P2)。通常所说的 SJF 是非抢占式短作业优先,当前进程一旦获得 CPU 会运行到完成或主动阻塞;SRTF 是其抢占式版本,比较当前进程剩余时间与新到达进程预计时间,P2 的 3ms 更短,因此可以抢占 P1。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
非抢占式SJF通常让P1继续;SRTF可抢占P1并先运行P2 本题正确答案 正确。SJF通常非抢占,SRTF按剩余时间重新比较并允许短进程抢占。 看到题干核心场景时优先联想到它
SJF和SRTF都必须立即抢占P1 本题干扰项 错误。非抢占式SJF不会仅因更短进程到达就强制抢占当前进程。 看到该词不要急着选,先判断是否真正解决题干问题
SJF必须抢占,SRTF一定不抢占 本题干扰项 错误。两者的抢占属性正好说反。 看到该词不要急着选,先判断是否真正解决题干问题
两种算法都只按进程到达先后顺序调度 本题干扰项 错误。只按到达先后是FCFS,不是SJF或SRTF。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • SJF和SRTF都必须立即抢占P1:错误。非抢占式SJF不会仅因更短进程到达就强制抢占当前进程。
  • SJF必须抢占,SRTF一定不抢占:错误。两者的抢占属性正好说反。
  • 两种算法都只按进程到达先后顺序调度:错误。只按到达先后是FCFS,不是SJF或SRTF。
复习

知识点详解

SJF在已知或估计运行时间的前提下,选择服务时间最短的就绪作业,理论上有利于降低平均等待时间,但通常不抢占当前运行进程。SRTF每次选择剩余处理时间最短者,新短进程到达时可能抢占。实际系统难以精确知道未来CPU突发长度,常用历史行为估计,并通过老化等机制缓解饥饿。

备考速记

SJF等CPU空下来再选短的,SRTF随时比较谁剩得更短。

SJF 在抢占式调度场景中的作用

SJF在本题中的核心价值,是解决“进程 P1 正在运行,预计还需 8ms 完成。此时新到达进程 P2 只需 3ms。关于 SJF 与 SRTF 调度,下列说法正确的是()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 给出到达时间与服务时间,画SJF或SRTF甘特图。
  • 计算平均等待时间、周转时间和带权周转时间。
  • 判断哪种调度算法可能造成长作业饥饿。
SJF 在软件设计师软考中的考法

软考选择题通常不会只考概念定义,还会把SJF放到抢占式调度场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。

解题思路

先看算法名字里的“剩余”。SRTF每当新进程到达都可以重新比较,眼前还有8ms,新来的只要3ms,自然换人。非抢占式SJF只在CPU重新空闲时选最短者,P1已经上场,就先让它继续。

考点定位

SJF 选择预计运行时间最短的就绪作业,通常非抢占;SRTF 持续选择剩余时间最短的进程,是抢占式算法。二者都依赖对运行时间的估计,并可能使长作业饥饿。

易错提醒

  • 把SRTF中的remaining忽略,错误比较进程最初总运行时间。
  • 认为抢占式调度一定能降低每个进程的等待时间。
  • 忘记连续到来的短进程可能让长进程长期得不到CPU。

备考提示

  • 画时间轴时,每逢进程到达先判断算法是否允许抢占,再比较剩余时间。
  • 把FCFS、SJF、SRTF、RR按选择依据和是否抢占做一张对照表。

你可能还想了解

  • SJF为什么通常是非抢占式?
  • SRTF在什么情况下发生抢占?
  • SJF和SRTF为什么可能导致长作业饥饿?
  • SRTF时间轴如何计算平均等待时间?

本文小结

SJF通常是非抢占式算法,当前P1继续运行;SRTF会比较剩余时间,P2只需3ms而P1还需8ms,因此可以抢占P1。两者的关键区别是是否持续比较并允许抢占。