三、处理机调度(第29-38题)
第29题
下列关于处理机调度层次的叙述中,正确的是( )。
A. 低级调度(进程调度)运行频率最高,且是三级调度中唯一必不可少的一级 B. 高级调度(作业调度)运行频率最高,批处理系统中可省略低级调度 C. 中级调度(内存调度)必不可少,任何系统都必须配置 D. 三级调度的运行频率相同
答案:A
考点定位:三、处理机调度——调度的层次(高级调度/中级调度/低级调度),难度★☆☆☆☆,三级调度的名称与职责是国企笔试和互联网笔试中反复出现的送分考点。
【结论】 选 A。低级调度即进程调度,每次进程切换时都要发生,是三级调度中运行频率最高、也是唯一必不可少的一级。
【逐项辨析】
- A 正确——进程调度在每次进程切换时都要发生,运行频率最高。
- B 错误——高级调度(作业调度)只在作业进入系统时执行一次,运行频率最低。
- C 错误——中级调度只在内存紧张、需要进行对换时才触发,频率介于高级与低级之间。
- D 错误——三级调度的触发频率差别明显,并不相同。
【知识点】 处理机调度按层次分三级。高级调度又称作业调度、长程调度,决定把外存上哪个作业调入内存并为其创建进程,运行频率最低。中级调度又称内存调度、中程调度或对换调度,负责进程在内存与外存之间的对换,目的是提高内存利用率与系统吞吐量。低级调度又称进程调度、短程调度,负责从就绪队列中选出一个进程并把处理机分配给它,是运行频率最高的一级。三级中只有低级调度是必不可少的:批处理系统三级齐全,分时与实时系统通常只配置低级调度。
| 级别 | 别名 | 操作对象 | 主要职责 | 运行频率 | 是否必需 |
|---|---|---|---|---|---|
| 高级调度 | 作业调度 / 长程调度 | 作业 | 外存 -> 内存,创建进程 | 最低 | 批处理系统需要 |
| 中级调度 | 内存调度 / 中程调度 / 对换调度 | 进程 | 内存 <-> 外存对换 | 中等 | 可选 |
| 低级调度 | 进程调度 / 短程调度 | 进程(就绪队列) | 分配处理机 | 最高 | 必需 |
【推导过程】 三级调度的位置与频率:
外存 内存 CPU
作业 --[高级调度]--> 挂起/就绪 --[中级调度]--> 就绪队列 --[低级调度]--> 运行
(最低频) (中频) (最高频, 每次切换都发生)【记忆锚点】 口诀——“高级管作业、中级管对换、低级管 CPU;频率最低高级、最高低级,缺谁不能缺低级”。
【易混对比】
| 对比项 | 高级调度 | 低级调度 |
|---|---|---|
| 操作对象 | 作业 | 进程 |
| 触发时机 | 作业提交进入系统 | 每次进程切换 |
| 频率 | 最低 | 最高 |
| 是否必需 | 批处理系统中需要 | 任何系统都必需 |
换种问法:“中级调度与页面置换有何区别?”——中级调度对换的是整个进程,页面置换换的是单个页面,后者属内存管理。与第 30 题(抢占式与非抢占式)连考。
【自测】 在分时系统中,通常只需要配置哪一级调度?为什么?
答:只需配置低级调度(进程调度)。分时系统作业直接进入内存,无需作业调度;内存足够时也无需对换,因此只保留从就绪队列挑进程、分配 CPU 的进程调度。〈出处:国网真题库同型题〉
【易错提醒】 ①高级调度的操作对象是作业,低级调度的操作对象是进程,两者不要混淆;②中级调度也叫对换调度,与内存管理中的对换技术直接相关;③问“频率最高”答低级调度,问“必不可少”答的仍是低级调度。
【知识关联】 本题考点:处理机调度。与第 29–38 题;面试:如何设计调度器?
【拓展延伸】 变式:算平均周转/等待时间。CFS/实时调度是 Linux 对照。(本题答案 A,以题干选项为准)
第30题
下列关于进程调度方式的叙述中,正确的是( )。
A. 非抢占式调度中,进程一旦获得处理机就必须一直运行到该进程结束 B. 抢占式调度中,当优先级更高的进程到达时,可以剥夺当前运行进程的处理机 C. 时间片轮转算法属于非抢占式调度算法 D. 抢占式调度的调度开销一定小于非抢占式调度
答案:B
考点定位:三、处理机调度——进程调度的时机与方式(抢占式与非抢占式),难度★☆☆☆☆,该考点在国企笔试中几乎每年以概念判断形式出现。
【结论】 选 B。抢占式调度允许更高优先级的进程到达时剥夺当前运行进程的处理机,这正是抢占式最典型的表现。
【逐项辨析】
- A 错误——非抢占式进程在运行中因申请 I/O 等原因进入阻塞态时会主动让出处理机,并非“必须运行到结束”。
- B 正确——准确刻画了抢占式调度的核心特征:可被剥夺处理机。
- C 错误——时间片轮转在时间片用完时强行切换进程,属于抢占式调度。
- D 错误——抢占式需要频繁保存与恢复现场,开销通常大于非抢占式。
【知识点】 按能否剥夺处理机,进程调度分两种方式。非抢占式:进程一旦被选中就占用处理机,直到它运行结束或主动进入阻塞态才重新调度,实现简单、切换少,但响应慢、实时性差。抢占式:允许在更高优先级进程到达、时间片用完、或更紧迫的进程出现时强行剥夺当前进程的处理机,响应快、实时性好,代价是切换频繁、系统开销更大。常见的抢占原则有优先权原则、短进程优先原则与时间片原则。
| 维度 | 非抢占式 | 抢占式 |
|---|---|---|
| 让出处理机的时机 | 运行结束或主动阻塞 | 更高优先级到达 / 时间片用完 |
| 实现复杂度 | 简单 | 复杂 |
| 切换开销 | 小 | 大 |
| 响应性与实时性 | 差 | 好 |
| 典型场景 | 早期批处理系统 | 分时、实时、通用操作系统 |
【推导过程】 两种方式的执行时序:
非抢占式: P1 一旦运行就不被打断
P1 [======================] P2 [==========]
跑完或主动阻塞才让出
抢占式: 高优先级进程到达即剥夺
P1 [======] P2(高优先级到达) [========] P1 继续运行
^ 被剥夺, P1 回到就绪队列【记忆锚点】 口诀——“非抢占:跑到底或自己让;抢占:到点让或被人抢”。注意“非抢占”不等于“必须跑完”,阻塞也是让出。
【易混对比】
| 调度算法 | 属于抢占式? | 抢占触发条件 |
|---|---|---|
| 先来先服务 FCFS | 否 | 不抢占 |
| 短作业优先 SJF(非抢占版) | 否 | 不抢占 |
| 时间片轮转 RR | 是 | 时间片用完 |
| 高优先级优先(抢占版) | 是 | 更高优先级进程到达 |
换种问法:“时间片轮转中把时间片设为无穷大,算法会退化成什么?”——退化为先来先服务 FCFS(非抢占式)。与第 29 题(调度层次)连考。
【自测】 下列时刻中,不属于引起进程调度(切换)时机的是? A. 进程从运行态转为阻塞态 B. 进程从运行态转为就绪态(时间片用完) C. 更高优先级进程变为就绪态 D. 进程正在内核临界区中执行原子操作
答:D。为保证内核数据结构一致,进程在内核临界区或原子操作期间不允许被切换;A、B、C 都是典型的调度时机。〈出处:408 真题同型题〉
【易错提醒】 ①非抢占式不等于“必须跑完”,阻塞是常见的让出处理机的原因;②时间片轮转、高优先级抢占都属于抢占式;③抢占式换来的是响应速度,代价是额外的切换开销。
【知识关联】 本题考点:处理机调度。与第 29–38 题;面试:如何设计调度器?
【拓展延伸】 变式:算平均周转/等待时间。CFS/实时调度是 Linux 对照。(本题答案 B,以题干选项为准)
第31题
下列关于先来先服务(FCFS)调度算法的叙述中,正确的是( )。
A. 先来先服务算法有利于短作业,能使平均周转时间最短 B. 先来先服务算法是一种抢占式调度算法 C. 先来先服务算法实现简单,但对短作业不利,有利于长作业和 CPU 繁忙型作业 D. 先来先服务算法总是选择服务时间最短的作业投入运行
答案:C
考点定位:三、处理机调度——先来先服务 FCFS 算法的特点,难度★☆☆☆☆,调度算法中最基础也最高频的概念题。
【结论】 FCFS 按作业进入就绪队列的先后顺序分配处理机,是非抢占式算法,因此利于长作业与 CPU 繁忙型作业、不利于短作业,选 C。
【逐项辨析】
- A 错在“有利于短作业,能使平均周转时间最短”——这恰恰是 SJF 的标签;FCFS 让先到的长作业占住处理机,后面的短作业被迫久等,平均周转时间反而偏大。
- B 错在“抢占式”——FCFS 一旦把处理机交给队首作业,就一直运行到结束或主动阻塞,不会因新作业到达而剥夺它。
- C 正确——“实现简单”是优点,“对短作业不利、有利于长作业和 CPU 繁忙型作业”是它最典型的缺点与特点。
- D 错在“服务时间最短”——按服务时间长短挑选作业的是 SJF, FCFS 只看到达先后,完全不看服务时间。
【知识点】 FCFS 的完整画像:
| 维度 | FCFS 的表现 |
|---|---|
| 选择依据 | 进入就绪队列的先后顺序(到达时间) |
| 抢占性 | 非抢占式 |
| 优点 | 实现最简单、无饥饿、对长作业与 CPU 繁忙型作业友好 |
| 缺点 | 对短作业不利,平均周转时间偏大;无法保证响应时间 |
| 适用 | 批处理系统;不适合分时系统与实时系统 |
关键结论:平均周转时间最短的算法是 SJF 而不是 FCFS;FCFS 的“护航效应”(convoy effect)指一个长作业堵在队首,让后面所有短作业陪跑。
【推导过程】 设作业 A(到达 0,服务 7)、B(到达 1,服务 3)、C(到达 2,服务 1),单位分钟。
FCFS 甘特图 (按到达先后)
时间 0 1 2 3 4 5 6 7 8 9 10 11
|--------- A (7) ---------|---- B (3) ----|- C(1) -|
0 7 10 11| 作业 | 到达 | 服务 | 开始 | 完成 | 周转 = 完成 - 到达 | 带权 = 周转 / 服务 |
|---|---|---|---|---|---|---|
| A | 0 | 7 | 0 | 7 | 7 | 1.00 |
| B | 1 | 3 | 7 | 10 | 9 | 3.00 |
| C | 2 | 1 | 10 | 11 | 9 | 9.00 |
平均周转时间 = (7 + 9 + 9) / 3 ≈ 8.33 分钟,平均带权周转时间 ≈ 4.33。 若改用非抢占式 SJF,顺序变为 A(0 - 7)、C(7 - 8)、B(8 - 11),平均周转时间 = (7 + 6 + 10) / 3 ≈ 7.67,平均带权 ≈ 3.44。可见短作业 C 的带权周转时间从 9.00 降到 6.00, FCFS 对短作业的伤害一目了然。
【记忆锚点】 口诀——“先来先服务,长工吃香短工哭”;一句话抓 FCFS 的两个“不”:不抢占、不看服务时间。对比 SJF 记“短工吃香长工饿”。
【易混对比】
| FCFS | SJF | |
|---|---|---|
| 选择依据 | 到达先后 | 服务时间最短 |
| 抢占性 | 非抢占 | 非抢占 / 抢占(SRTN) |
| 对短作业 | 不利 | 有利 |
| 对长作业 | 有利 | 不利,可能饥饿 |
| 平均周转时间 | 偏大 | 最短 |
| 典型毛病 | 护航效应 | 饥饿 |
换个问法:“哪种算法会使平均带权周转时间最小?” 答案仍是 SJF。与第 32 题(SJF 的优缺点与饥饿)连考,与第 36 题(SJF 平均周转时间的定量计算)连考。
【自测】 三个作业到达与服务时间:A(0, 2)、B(1, 6)、C(2, 3)。采用 FCFS 与采用非抢占式 SJF,平均周转时间各是多少?
答:FCFS 顺序 A、B、C,完成时刻 2、8、11,周转时间 2、7、9,平均 = 18 / 3 = 6.00 分钟;SJF 顺序 A(0 - 2)、C(2 - 5)、B(5 - 11),周转时间 2、3、10,平均 = 15 / 3 = 5.00 分钟。〈出处:408 真题同型题〉
【易错提醒】 ①排序依据是“到达(进入队列)的先后”,不是服务时间长短。②“有利于长作业、不利于短作业”是 FCFS 的标签,与 SJF 正好相反。③FCFS 不会产生饥饿,但响应时间无法保证,不能用于分时系统。
【知识关联】 本题考点:处理机调度。与第 29–38 题;面试:如何设计调度器?
【拓展延伸】 变式:算平均周转/等待时间。CFS/实时调度是 Linux 对照。(本题答案 C,以题干选项为准)
第32题
下列关于短作业优先(SJF)调度算法的叙述中,正确的是( )。
A. 短作业优先算法的平均等待时间最短,但可能导致长作业长期得不到调度而产生饥饿 B. 短作业优先算法有利于长作业而不利于短作业 C. 短作业优先算法在任何情况下都不会产生饥饿现象 D. 短作业优先算法中,后到达的短作业可以抢占正在运行的长作业,因此它属于抢占式算法
答案:A
考点定位:三、处理机调度——短作业优先 SJF 算法的特点与饥饿问题,难度★★☆☆☆,国企笔试与互联网笔试中调度算法部分的高频判断题。
【结论】 SJF 在服务时间已知时能让平均等待时间与平均周转时间最短,但源源不断的短作业会使长作业长期得不到调度而产生饥饿,选 A。
【逐项辨析】
- A 正确——前半句给出 SJF 的最大优点,后半句点出它的致命缺点,二者正好构成一对矛盾。
- B 错在把方向说反了:SJF 有利于短作业、不利于长作业,与 FCFS 恰好相反。
- C 错在“任何情况下都不会”——只要短作业持续到达,长作业的等待时间就没有上界,饥饿是真实存在的。
- D 错在两处:描述的是抢占式 SJF(即最短剩余时间优先 SRTN);“后到达的短作业抢占”这一现象只对 SRTN 成立,对本题讨论的非抢占式 SJF 不成立。
【知识点】 SJF 的完整画像:
| 维度 | 非抢占式 SJF | 抢占式 SJF(SRTN) |
|---|---|---|
| 选择依据 | 就绪队列中服务时间最短者 | 剩余服务时间最短者 |
| 抢占性 | 非抢占 | 抢占 |
| 平均等待时间 | 最短(理论最优) | 允许抢占时最优 |
| 饥饿风险 | 有 | 更大 |
| 现实障碍 | 服务时间难以预知,只能用历史数据估计 | 同左,且切换开销更大 |
理论结论:在“服务时间已知、不计切换开销、所有作业同时到达”的理想条件下,SJF 使平均等待时间最小。现实中的替代方案是最高响应比优先 HRRN,用响应比把等待时间也纳入考量,从而兼顾长短作业。
【推导过程】 设 A(到达 0,服务 7)、B(到达 2,服务 4)、C(到达 4,服务 1)、D(到达 5,服务 4),单位分钟。
非抢占式 SJF 甘特图
时间 0 1 2 3 4 5 6 7 8 9 10 11 12 16
|------ A (7) ------|C(1)|-- B (4) --|-- D (4) --|
0 7 8 12 16
^ C 在 t=4 到达, 但 A 未结束不能抢占| 作业 | 到达 | 服务 | 开始 | 完成 | 周转 = 完成 - 到达 | 带权 = 周转 / 服务 |
|---|---|---|---|---|---|---|
| A | 0 | 7 | 0 | 7 | 7 | 1.00 |
| C | 4 | 1 | 7 | 8 | 4 | 4.00 |
| B | 2 | 4 | 8 | 12 | 10 | 2.50 |
| D | 5 | 4 | 12 | 16 | 11 | 2.75 |
平均周转时间 = (7 + 4 + 10 + 11) / 4 = 8.00 分钟,平均带权周转时间 = (1.00 + 4.00 + 2.50 + 2.75) / 4 ≈ 2.56。 对照 FCFS(A、B、C、D): 完成时刻 7、11、12、16,平均周转 = (7 + 9 + 8 + 11) / 4 = 8.75 分钟,大于 SJF 的 8.00,直接印证“SJF 平均周转时间最短”。 饥饿演示:若在 A 运行期间不断有服务时间为 1 的作业到达,每次调度都选最新的短作业,原队列中的 B、D 会被无限期推迟。
【记忆锚点】 口诀——“短作业优先,平均周转最短;长作业挨饿,响应比来救”。把 SJF 与 HRRN 配成一对:SJF 只看服务时间(会饿死长作业),HRRN 把等待时间折进响应比(不会饿死)。
【易混对比】
| FCFS | 非抢占式 SJF | 抢占式 SJF(SRTN) | HRRN | |
|---|---|---|---|---|
| 排序依据 | 到达先后 | 服务时间 | 剩余服务时间 | 响应比 |
| 抢占 | 否 | 否 | 是 | 否 |
| 饥饿 | 无 | 有 | 有 | 无 |
| 平均周转 | 偏大 | 最短 | 更短 | 接近 SJF |
换个问法:“把 SJF 改造成抢占式后,名称与优缺点如何变化?” 答:称为最短剩余时间优先 SRTN,平均周转更优但切换开销与饥饿风险都上升。与第 31 题(FCFS 特点)连考,与第 35 题(HRRN 响应比计算)连考。
【自测】 某系统采用非抢占式 SJF。作业 P1(0, 8)、P2(1, 4)、P3(2, 2)、P4(3, 1)。求执行顺序与平均周转时间。
答:t = 0 只有 P1,故 P1 先运行 0 - 8;此后就绪的 P4(1)、P3(2)、P2(4) 按服务时间升序依次运行 8 - 9、9 - 11、11 - 15。周转时间 P1 = 8、P4 = 9 - 3 = 6、P3 = 11 - 2 = 9、P2 = 15 - 1 = 14,平均 = (8 + 6 + 9 + 14) / 4 = 9.25 分钟。〈出处:408 真题同型题〉
【易错提醒】 ①“平均等待时间最短”成立的前提是服务时间已知且不计抢占开销。②饥饿问题同样出现在静态优先级调度中,可用老化技术缓解。③注意区分非抢占式 SJF 与抢占式 SRTN,后者才有“剩余时间”概念。
【知识关联】 本题考点:处理机调度。与第 29–38 题;面试:如何设计调度器?
【拓展延伸】 变式:算平均周转/等待时间。CFS/实时调度是 Linux 对照。(本题答案 A,以题干选项为准)
第33题
下列关于时间片轮转(RR)调度算法的叙述中,正确的是( )。
A. 时间片越小,系统的进程切换开销越小 B. 时间片过大时,时间片轮转算法退化为短作业优先算法 C. 时间片轮转算法属于非抢占式调度算法 D. 时间片过小会使进程切换过于频繁、系统开销增大,时间片过大则退化为先来先服务
答案:D
考点定位:三、处理机调度——时间片轮转 RR 算法(时间片过大与过小的影响),难度★★☆☆☆,分时系统相关题目的必考点。
【结论】 RR 靠时钟中断强行剥夺处理机,是抢占式算法;时间片过小使切换开销激增,时间片过大则退化为 FCFS,选 D。
【逐项辨析】
- A 错在“越小...开销越小”——时间片越小切换越频繁,上下文保存与恢复的开销随之增大。
- B 错在退化对象——时间片过大时每个进程一次就能跑完,算法退化为先来先服务 FCFS,而不是短作业优先 SJF。
- C 错在抢占性——RR 正是依靠时钟中断打断进程,是典型的抢占式算法。
- D 正确——一句话把“过小”与“过大”两个方向的后果都点全了,是本考点的标准表述。
【知识点】 RR 的规则与参数取舍:
| 维度 | 说明 |
|---|---|
| 就绪队列 | 按到达先后排队,新进程与被抢占进程一律入队尾 |
| 调度单位 | 一个时间片 q |
| 抢占机制 | 时间片用完产生时钟中断,剥夺处理机 |
| q 过小 | 切换频繁,上下文开销占比升高,有效算力下降 |
| q 过大 | 一个时间片内多数进程可完成,退化为 FCFS,响应变差 |
| 经验取值 | 略大于一次典型交互所需时间,并使多数进程在一个 q 内完成 |
响应时间与开销是一对矛盾:q 越小响应越快、开销越大;q 越大开销越小、响应越慢。分时系统的目标是在可接受开销下让用户感觉不到等待。
【推导过程】 设 q = 2 分钟,A(到达 0,服务 4)、B(到达 0,服务 3)、C(到达 0,服务 2),到达顺序 A、B、C。
RR 甘特图 (q = 2)
时间 0 1 2 3 4 5 6 7 8 9
|--A--|--B--|--C--|--A--|--B--|
0 2 4 6 8 9时间片轮转时序表
| 时段 | 运行者 | 剩余需求 | 队列(队首→队尾) | 说明 |
|---|---|---|---|---|
| 0 - 2 | A | 4 → 2 | B, C, A | A 用完 q,入队尾 |
| 2 - 4 | B | 3 → 1 | C, A, B | B 用完 q,入队尾 |
| 4 - 6 | C | 2 → 0 | A, B | C 完成,时刻 6 |
| 6 - 8 | A | 2 → 0 | B | A 完成,时刻 8 |
| 8 - 9 | B | 1 → 0 | — | B 完成,时刻 9 |
| 作业 | 到达 | 服务 | 开始 | 完成 | 周转 | 带权 |
|---|---|---|---|---|---|---|
| A | 0 | 4 | 0 | 8 | 8 | 2.00 |
| B | 0 | 3 | 2 | 9 | 9 | 3.00 |
| C | 0 | 2 | 4 | 6 | 6 | 3.00 |
平均周转时间 = (8 + 9 + 6) / 3 ≈ 7.67 分钟。注意 C 的完成时刻(6)早于 A(8),但 C 的开始时刻(4)晚于 A(0)——RR 保证的是“人人有机会”,不保证先到先完。
【记忆锚点】 口诀——“轮转靠时钟,人人有片用;片小开销大,片大成先来先服务”。把 q 的两端极端值记成一对:q → 0 时系统几乎全在做切换,q → ∞ 时就是 FCFS。
【易混对比】
| RR | FCFS | 多级反馈队列 | |
|---|---|---|---|
| 抢占 | 是(时钟中断) | 否 | 是 |
| 队列数 | 1 个 | 1 个 | 多个,优先级递减 |
| 时间片 | 统一 | 无 | 逐级加倍 |
| q 取极端值 | 退化为 FCFS | — | 退化为优先级 + FCFS |
换个问法:“RR 算法中若把时间片设为无穷大,等价于哪个算法?” 答:FCFS。与第 31 题(FCFS 是非抢占式)连考,与第 37 题(多级反馈队列)连考。
【自测】 采用 RR 调度,q = 1 分钟,A(到达 0,服务 3)、B(到达 0,服务 2)、C(到达 0,服务 1),到达顺序 A、B、C,求各作业完成时刻与平均周转时间。
答:执行序列为 A(0 - 1)、B(1 - 2)、C(2 - 3 完成)、A(3 - 4)、B(4 - 5 完成)、A(5 - 6 完成)。完成时刻 C = 3、B = 5、A = 6,平均周转时间 = (6 + 5 + 3) / 3 ≈ 4.67 分钟。〈出处:国网真题库同型题〉
【易错提醒】 ①RR 是抢占式,抢占的触发者是时钟中断而非更高优先级进程。②时间片大小与响应时间、系统开销是一对矛盾,需要折中。③“退化为 FCFS”常被改成“退化为 SJF”来设错。
【知识关联】 本题考点:时间片取舍(太小→切换占比高,太大→退化为 FCFS)。与第 29–38 题调度算法簇连考;国网/软考常以「RR 与时间片大小」出单选。
【拓展延伸】 变式:给出场景选分时/实时/批处理。工程上桌面偏分时,工控偏实时。(本题答案 D,以题干选项为准)
第34题
下列关于优先级调度与“老化”技术的叙述中,正确的是( )。
A. “老化(aging)”是指逐渐提高等待时间较长进程的优先级,以避免低优先级进程长期得不到服务 B. 采用静态优先级的系统中,进程优先级会随等待时间增加而自动提高 C. 老化技术能减少进程切换次数,从而降低系统开销,因此被广泛采用 D. 优先级调度算法只能采用抢占方式
答案:A
考点定位:三、处理机调度——优先级调度与老化(aging)技术,难度★★☆☆☆,饥饿与老化是互联网笔试和国企笔试偏爱的对比考点。
【结论】 老化指随进程在就绪队列中等待时间的增加而逐步提高其优先级,使低优先级进程最终也能被调度,选 A。
【逐项辨析】
- A 正确——“提高等待时间较长进程的优先级”是手段,“避免低优先级进程长期得不到服务”是目的,定义与目的都对。
- B 错在“静态优先级...自动提高”——静态优先级的定义就是创建时确定、运行期间不变;会随等待时间变化的是动态优先级,而“变化的原因”恰恰就是老化,二者不能混为一谈。
- C 错在因果倒置——老化需要周期性地重算优先级,是增加而非降低系统开销。
- D 错在“只能采用抢占方式”——优先级调度既可以是抢占式(新到的高优先级进程立即抢占),也可以是非抢占式(等当前进程结束再比较)。
【知识点】 优先级调度的分类与老化:
| 分类维度 | 类型 | 特点 |
|---|---|---|
| 优先级是否可变 | 静态优先级 | 创建时确定,运行期不变,开销小,易饥饿 |
| 动态优先级 | 随等待时间或运行情况变化,灵活,开销大 | |
| 是否可抢占 | 抢占式 | 高优先级到达立即剥夺 |
| 非抢占式 | 当前进程结束或阻塞后才重新比较 |
老化的完整定义:系统周期性地检查就绪进程的等待时间,等待越久的进程优先级提升越多,直至被调度。它是饥饿的通用解药,与死锁无关。同类思路还有 HRRN 的响应比,本质也是把等待时间折算进优先级。
【推导过程】 设 P1(静态优先级 4,长时间运行)、P2(静态优先级 2)、P3(静态优先级 1) 同时到达。老化规则:每等待 3 分钟有效优先级 +1,运行中的进程不老化,并列时保持运行中的进程。
| 时刻 | P1(运行中) | P2(等待) | P3(等待) | 决策 |
|---|---|---|---|---|
| 0 | 4 | 2 | 1 | P1 继续运行 |
| 3 | 4 | 3 | 2 | P1 继续运行 |
| 6 | 4 | 4 | 3 | P2 与 P1 并列,按规则保持 P1 |
| 9 | 4 | 5 | 4 | P2 反超 P1,触发抢占 |
老化下的有效优先级变化 (每等待 3 分钟 +1)
t=0 t=3 t=6 t=9
P1(运行) 4 4 4 4 <- 不老化, 停在静态值
P2(等待) 2 3 4 5 <- 第 9 分钟反超, 拿到处理机
P3(等待) 1 2 3 4 <- 继续追赶, 最终也会被调度老化的价值是给等待时间设一个隐式上界:只要 P1 一直运行,等待者迟早会反超它;代价是长作业被反复抢占,整体周转时间可能变差。
【记忆锚点】 口诀——“等得越久,升得越高;老化的本质是给等待时间付利息”。再配一句:“运行的不升,等待的升”——抓住这一点就不会把老化与静态优先级搞混。
【易混对比】
| 老化 | 静态优先级 | HRRN 的响应比 | |
|---|---|---|---|
| 作用对象 | 等待时间 | 创建时属性 | 等待时间 + 服务时间 |
| 是否改变优先级 | 是,周期性提升 | 否 | 是,每次调度重算 |
| 解决什么问题 | 饥饿 | — | 兼顾长短作业,避免饥饿 |
| 代价 | 周期性重算 | 无 | 每次调度重算 |
换个问法:“老化能消除饥饿吗?会不会带来新的问题?” 答:能消除饥饿(等待者终会反超);但会频繁抢占正在运行的长作业,使平均周转时间变差、切换开销上升。与第 32 题(SJF 的饥饿)连考,与第 35 题(响应比公式)连考。
【自测】 系统采用动态优先级调度,初始优先级 A = 3、B = 1(数值越大越优先),老化规则为每等待 2 分钟优先级 +1。A 需要运行 10 分钟且不老化,问 B 最迟在第几分钟能获得处理机?
答:第 6 分钟(离散步进口径,与本题推导过程一致:每等满 2 分钟优先级才 +1,且并列时保持运行中的进程)。B 的有效优先级 = 1 + (t ÷ 2 取整),t = 4 时为 3、与 A 并列仍由 A 运行,t = 6 时为 4、反超 A 触发抢占,B 才获得处理机。若把老化当作连续增长、解 1 + t / 2 > 3 得 t > 4,则结论是“第 5 分钟”,属另一种口径。〈出处:大厂面试高频〉
【易错提醒】 ①静态优先级与动态优先级的区别在于运行期间是否变化。②老化解决的是饥饿问题,与死锁无关。③“等待越久优先级越高”是老化,“优先级越高时间片越短”是多级队列的做法,不要混为一谈。
【知识关联】 本题考点:处理机调度。与第 29–38 题;面试:如何设计调度器?
【拓展延伸】 变式:算平均周转/等待时间。CFS/实时调度是 Linux 对照。(本题答案 A,以题干选项为准)
第35题
某系统采用高响应比优先(HRRN)调度算法。作业 A、B、C 的到达时刻与服务时间(单位:分钟)如下:A 到达 0,服务 6;B 到达 2,服务 2;C 到达 4,服务 4。时刻 0 时只有 A 就绪,A 运行至时刻 6 结束,此时系统重新调度,则作业 B 的响应比是( )。 A. 3.0 B. 2.0 C. 1.5 D. 4.0
答案:A
考点定位:三、处理机调度——高响应比优先 HRRN 的响应比计算,难度★★☆☆☆,国企笔试中调度算法部分最常出现的简单计算题。
【结论】 响应比 = (等待时间 + 服务时间) / 服务时间,时刻 6 时 B 的等待时间为 4 分钟,响应比 = (4 + 2) / 2 = 3.0,选 A。
【逐项辨析】
- A 正确——B 于时刻 2 到达、时刻 6 被计算,等待 4 分钟,代入公式得 (4 + 2) / 2 = 3.0。
- B 错在公式记成“等待时间 / 服务时间”一类:4 / 2 = 2.0,漏掉了分子里的服务时间(等价于忘了公式中的 +1)。
- C 错在张冠李戴——1.5 是作业 C 的响应比:C 于时刻 4 到达,等待 2 分钟,(2 + 4) / 4 = 1.5,不是 B 的。
- D 错在把“等待时间 4 分钟”直接当成了响应比,响应比是无量纲的比值,不是时间。
【知识点】 HRRN 的完整定义:
| 维度 | 说明 |
|---|---|
| 公式 | 响应比 R = (等待时间 W + 服务时间 S) / S = 1 + W / S |
| 决策时机 | 每次调度时对所有就绪作业计算 R,选 R 最大者 |
| 抢占性 | 非抢占式,当前作业必须运行结束 |
| 综合性质 | S 越小 R 越大,体现 SJF 的短作业优先 |
| W 越大 R 越大,体现 FCFS 的先到先服务,且不会饥饿 | |
| 代价 | 每次调度都要重算所有就绪作业的响应比,开销较大 |
理解要点:R = 1 + W / S 中的那个“1”正是“服务时间自身被计入周转”的体现,所以 R 的物理含义就是带权周转时间。W = 0 时 R 取最小值 1,因此响应比永远不小于 1。
【推导过程】 A(到达 0,服务 6)、B(到达 2,服务 2)、C(到达 4,服务 4),单位分钟。
HRRN 甘特图 (非抢占式, A 先运行到结束)
时间 0 1 2 3 4 5 6 7 8 9 10 11 12
|--------- A (6) ---------|-- B (2) --|---- C (4) ----|
0 6 8 12响应比逐步计算表(每次调度前重算一次):
| 决策时刻 | 就绪作业 | 等待时间 W | 服务时间 S | 响应比 R = (W + S) / S | 选中 |
|---|---|---|---|---|---|
| 0 | A | 0 | 6 | (0 + 6) / 6 = 1.00 | A |
| 6 | B | 6 - 2 = 4 | 2 | (4 + 2) / 2 = 3.00 | B |
| 6 | C | 6 - 4 = 2 | 4 | (2 + 4) / 4 = 1.50 | — |
| 8 | C | 8 - 4 = 4 | 4 | (4 + 4) / 4 = 2.00 | C |
| 作业 | 到达 | 服务 | 开始 | 完成 | 周转 = 完成 - 到达 | 带权 = 周转 / 服务 |
|---|---|---|---|---|---|---|
| A | 0 | 6 | 0 | 6 | 6 | 1.00 |
| B | 2 | 2 | 6 | 8 | 6 | 3.00 |
| C | 4 | 4 | 8 | 12 | 8 | 2.00 |
平均周转时间 = (6 + 6 + 8) / 3 ≈ 6.67 分钟,平均带权周转时间 = (1.00 + 3.00 + 2.00) / 3 = 2.00。 注意一个漂亮的性质:作业被选中时算出的响应比,恰好等于它最终的带权周转时间(B 的 R = 3.00,带权周转时间也是 3.00)。这不是巧合——R = (W + S) / S 正是“完成时刻 - 到达时刻”除以服务时间。
【记忆锚点】 口诀——“响应比 = 1 + 等 / 服,短作业优先不吃亏,长作业等久了也能上”。把 R 的三个关键值记住:刚到达时 R = 1(最小),等待越久 R 越大,R 越大越先被调度。
【易混对比】
| HRRN | SJF | FCFS | |
|---|---|---|---|
| 依据 | 响应比 R | 服务时间 S | 到达先后 |
| 是否饥饿 | 否 | 是(长作业) | 否 |
| 抢占 | 否 | 否 / 是 | 否 |
| 额外开销 | 每次重算 R | 需预知 S | 无 |
| 平均周转 | 接近 SJF | 最短 | 偏大 |
换个问法:“HRRN 中如果所有作业同时到达,它会退化成什么算法?” 答:所有 W 都相等,R 只由 S 决定,于是退化为 SJF。与第 32 题(SJF 与饥饿)连考,与第 34 题(老化也是给等待时间加权)连考。
【自测】 某系统采用 HRRN。作业 A(到达 0,服务 4)、B(到达 1,服务 3)、C(到达 2,服务 5)。求调度顺序与平均周转时间。
答:t = 0 只有 A,运行 0 - 4。t = 4 时重算:B 的 W = 3, R = (3 + 3) / 3 = 2.00;C 的 W = 2, R = (2 + 5) / 5 = 1.40,故选 B,B 运行 4 - 7。t = 7 时 C 运行 7 - 12。周转时间 A = 4、B = 7 - 1 = 6、C = 12 - 2 = 10,平均 = (4 + 6 + 10) / 3 ≈ 6.67 分钟。〈出处:国网真题库同型题〉
【易错提醒】 ①分子是“等待时间 + 服务时间”,即从到达至完成的整个周转时间,不要漏掉服务时间。②等待时间的起点是作业的到达时刻,不是上次调度时刻。③HRRN 是非抢占式,A 未运行结束时不能打断它。
【知识关联】 本题考点:处理机调度。与第 29–38 题;面试:如何设计调度器?
【拓展延伸】 变式:算平均周转/等待时间。CFS/实时调度是 Linux 对照。(本题答案 A,以题干选项为准)
第36题
有四个作业 A、B、C、D 同时到达(到达时刻均为 0),它们的服务时间分别为 2、4、1、3(单位:分钟)。采用短作业优先(SJF)调度算法,则这四个作业的平均周转时间是( )分钟。 A. 4.25 B. 5.0 C. 6.25 D. 7.5
答案:B
考点定位:三、处理机调度——SJF 调度下平均周转时间的计算,难度★★☆☆☆,周转时间与平均周转时间的定量计算是国企笔试中几乎必考的题型。
【结论】 周转时间 = 完成时刻 - 到达时刻,四个作业同时到达故周转时间等于完成时刻;按 SJF 顺序 C、A、D、B 得完成时刻 1、3、6、10,平均周转时间 = 20 / 4 = 5.0 分钟,选 B。
【逐项辨析】
- A 错在无对应调度顺序——4.25 低于任何一种排列的平均周转时间(服务时间 1、2、3、4 的全排列取值区间为 5.0~7.5,SJF 的 5.0 已是最小值),只能来自计算错误,不对应任何执行顺序。
- B 正确——SJF 顺序为 C(1)、A(2)、D(3)、B(4),完成时刻 1、3、6、10,平均 (1 + 3 + 6 + 10) / 4 = 5.0 分钟。
- C 错在算成了 FCFS——按到达先后 A、B、C、D 执行,完成时刻 2、6、7、10,平均 (2 + 6 + 7 + 10) / 4 = 6.25 分钟。
- D 错在算成了“长作业优先”——顺序 B、D、A、C 的完成时刻为 4、7、9、10,平均 (4 + 7 + 9 + 10) / 4 = 7.5 分钟。
【知识点】 三个必背指标:
| 指标 | 公式 | 说明 |
|---|---|---|
| 周转时间 | 完成时刻 - 到达时刻 | 含等待 + 执行,是用户感受到的总时长 |
| 带权周转时间 | 周转时间 / 服务时间 | 无量纲,≥ 1;短作业通常较大 |
| 平均周转时间 | Σ 周转时间 / n | 衡量调度算法优劣的核心指标 |
辅助指标:等待时间 = 周转时间 - 服务时间;响应时间 = 首次获得处理机时刻 - 提交时刻。 核心定理:在服务时间已知、不计切换开销、所有作业同时到达的条件下,SJF 使平均周转时间与平均等待时间同时达到最小。证明思路是“短作业先做,则每个短作业的完成时刻都提前,长作业的完成时刻不受影响”。
【推导过程】 A(服务 2)、B(4)、C(1)、D(3),到达时刻均为 0。
SJF 甘特图 (按服务时间升序 C -> A -> D -> B)
时间 0 1 2 3 4 5 6 7 8 9 10
|C|---- A ----|---- D ----|-------- B --------|
0 1 3 6 10| 作业 | 到达 | 服务 | 开始 | 完成 | 周转 = 完成 - 到达 | 带权 = 周转 / 服务 |
|---|---|---|---|---|---|---|
| C | 0 | 1 | 0 | 1 | 1 | 1.00 |
| A | 0 | 2 | 1 | 3 | 3 | 1.50 |
| D | 0 | 3 | 3 | 6 | 6 | 2.00 |
| B | 0 | 4 | 6 | 10 | 10 | 2.50 |
平均周转时间 = (1 + 3 + 6 + 10) / 4 = 20 / 4 = 5.0 分钟 平均带权周转时间 = (1.00 + 1.50 + 2.00 + 2.50) / 4 = 7.00 / 4 = 1.75
对照 FCFS(A、B、C、D):
| 作业 | A | B | C | D | 平均 |
|---|---|---|---|---|---|
| 完成时刻 | 2 | 6 | 7 | 10 | — |
| 周转时间 | 2 | 6 | 7 | 10 | 6.25 |
SJF 的 5.0 < FCFS 的 6.25,差距全部来自短作业 C:它在 FCFS 下被 A、B 挡到第 7 分钟才完成,周转时间 7;在 SJF 下第 1 分钟就完成,周转时间 1。
【记忆锚点】 口诀——“同时到达看顺序,短作业排前面;周转就是完成减到达,带权再除服务时间”。做这类题的三步固定动作:先排序 → 再逐项累加服务时间得完成时刻 → 最后求和除以作业数。
【易混对比】
| 周转时间 | 带权周转时间 | 等待时间 | |
|---|---|---|---|
| 公式 | 完成 - 到达 | 周转 / 服务 | 周转 - 服务 |
| 量纲 | 分钟 | 无(比值) | 分钟 |
| 最小可能值 | 服务时间 | 1(等待为 0 时) | 0 |
| 谁的数值更大 | 长作业 | 短作业 | 长作业 |
换个问法:“把到达时刻改成 A 到达 0、B 到达 1、C 到达 2、D 到达 3,SJF 结果如何变化?” 此时必须考虑非抢占性:t = 0 只有 A 就绪,A 先运行,结果与 FCFS 相同,平均周转时间变成 6.25 分钟——到达时刻错开会让 SJF 的优势消失。与第 32 题(SJF 原理)连考,与第 35 题(HRRN)连考。
【自测】 四个作业同时到达,服务时间分别为 3、6、2、4 分钟,采用 SJF,求平均周转时间与平均带权周转时间。
答:顺序为 2 → 3 → 4 → 6,完成时刻 2、5、9、15,平均周转时间 = (2 + 5 + 9 + 15) / 4 = 7.75 分钟;带权周转时间分别为 1.00、1.67、2.25、2.50,平均带权周转时间 = 7.42 / 4 ≈ 1.86。〈出处:408 真题同型题〉
【易错提醒】 ①周转时间的终点是“完成时刻”,不是“开始时刻”。②到达时刻均为 0 时周转时间数值上等于完成时刻,不要重复减到达时刻。③SJF 的平均周转时间最短,若算出 6.25 说明算成了 FCFS。
【知识关联】 本题考点:处理机调度。与第 29–38 题;面试:如何设计调度器?
【拓展延伸】 变式:算平均周转/等待时间。CFS/实时调度是 Linux 对照。(本题答案 B,以题干选项为准)
第37题
下列关于多级反馈队列调度算法的叙述中,正确的是( )。
A. 多级反馈队列调度算法中,队列优先级越高时间片越短;新进程先进入最高优先级队列末尾,若一个时间片内未完成则转入下一级队列末尾,最后一级队列内采用时间片轮转 B. 多级反馈队列调度算法中,队列优先级越高时间片越长,以加快长作业的处理速度 C. 多级反馈队列调度算法中,所有队列的时间片长度都相同,只是优先级不同 D. 多级反馈队列调度算法中,进程的优先级在运行期间不能动态调整
答案:A
考点定位:三、处理机调度——多级反馈队列调度算法,难度★★☆☆☆,国企笔试中考查“综合多种算法优点”的高频概念题。
【结论】 多级反馈队列把就绪队列分成多级,优先级越高时间片越短;新进程进最高优先级队列队尾,一个时间片内未完成就降入下一级队尾,最低一级内部按时间片轮转,选 A。
【逐项辨析】
- A 正确——把时间片方向(高优先级短)、入队位置(最高级队尾)、降级规则(未完成则下移一级)和末级策略(轮转)四个要点全部说对。
- B 错在“优先级越高时间片越长”——方向说反了;而且长作业恰恰应当被放到低优先级、长时间片的队列里。
- C 错在“所有队列时间片相同”——各级时间片长度不同,通常按倍数逐级递增(如 1、2、4、8)。
- D 错在“优先级不能动态调整”——进程会随执行情况在各队列间移动,优先级本身就是动态变化的。
【知识点】 多级反馈队列的四条规则:
| 规则 | 内容 |
|---|---|
| 1 分级 | 设 N 个就绪队列,优先级 Q1 > Q2 > ... > QN,时间片 q1 < q2 < ... < qN |
| 2 入队 | 新进程一律进入 Q1 队尾 |
| 3 降级 | 在 Qᵢ 内用完时间片仍未完成,转入 Qᵢ₊₁ 队尾 |
| 4 调度 | 只有 Q1 ... Qᵢ₋₁ 全空时才调度 Qᵢ;末级 QN 内部按 RR 轮转 |
综合性质:短作业与交互型进程在 Q1 就能完成,响应最快(体现 SJF 与优先级调度的优点);长作业逐级下沉后获得越来越长的时间片,切换开销低(体现 FCFS 的优点);末级轮转保证没有进程被饿死(体现 RR 的优点)。因此它被公认为通用性最好的调度算法,代价是实现复杂、参数 qᵢ 与 N 难调。UNIX、Windows 等系统的调度器都带有它的影子。
【推导过程】 设三级队列 Q1(q = 1)、Q2(q = 2)、Q3(q = 4, RR)。进程 P1(服务 6)、P2(服务 3)、P3(服务 1) 同时在 t = 0 到达。
队列流转图
新进程
|
v
+-----------+
| Q1 q=1 |---- 用完 1 个时间片未完成 ----> Q2 队尾
+-----------+ |
^ v
| +-----------+
高优先级先调度 | Q2 q=2 |--- 用完未完成 ---> Q3 队尾
+-----------+ |
v
+-----------------------+
| Q3 q=4, 按 RR 轮转 |
+-----------------------+
规则: Q1 非空时绝不调度 Q2/Q3; Q2 非空时绝不调度 Q3| 时段 | 运行 | 所属队列 | 剩余需求 | 动作 | Q1 | Q2 | Q3 |
|---|---|---|---|---|---|---|---|
| 0 - 1 | P1 | Q1 | 6 → 5 | 未完成,降入 Q2 队尾 | P2,P3 | P1 | — |
| 1 - 2 | P2 | Q1 | 3 → 2 | 未完成,降入 Q2 队尾 | P3 | P1,P2 | — |
| 2 - 3 | P3 | Q1 | 1 → 0 | 完成(时刻 3) | — | P1,P2 | — |
| 3 - 5 | P1 | Q2 | 5 → 3 | 未完成,降入 Q3 队尾 | — | P2 | P1 |
| 5 - 7 | P2 | Q2 | 2 → 0 | 完成(时刻 7) | — | — | P1 |
| 7 - 10 | P1 | Q3 | 3 → 0 | 完成(时刻 10) | — | — | — |
| 作业 | 到达 | 服务 | 开始 | 完成 | 周转 | 带权 |
|---|---|---|---|---|---|---|
| P1 | 0 | 6 | 0 | 10 | 10 | 1.67 |
| P2 | 0 | 3 | 1 | 7 | 7 | 2.33 |
| P3 | 0 | 1 | 2 | 3 | 3 | 3.00 |
平均周转时间 = (10 + 7 + 3) / 3 ≈ 6.67 分钟。注意最短的 P3 虽然最后一个被首次调度,却最先完成——这正是“高优先级短时间片”带来的快速响应。
【记忆锚点】 口诀——“队列越高片越短,新来先进第一级;跑不完就往下掉,掉到底了轮流跑”。把三级参数记成“1、2、4”:优先级从高到低,时间片 1、2、4 逐级加倍。
【易混对比】
| 多级反馈队列 | 单纯优先级调度 | 时间片轮转 RR | |
|---|---|---|---|
| 队列数 | 多个,优先级递减 | 1 个 | 1 个 |
| 时间片 | 逐级递增 | 无 | 统一 |
| 优先级 | 动态(随队列移动) | 静态或动态 | 无 |
| 饥饿 | 末级轮转,基本无 | 可能 | 无 |
| 开销 | 大 | 中 | 中 |
换个问法:“多级反馈队列中,一个进程为什么可能被多次降级?” 答:它每次用完当前级的时间片仍未结束,就再降一级,直到末级。与第 33 题(RR 的时间片取舍)连考,与第 34 题(优先级与老化)连考。
【自测】 两级反馈队列:Q1 时间片 1, Q2 时间片 3 且按 RR。进程 P1(服务 4)、P2(服务 2) 同时在 t = 0 到达。求各进程完成时刻与平均周转时间。
答:t = 0 时 Q1 = [P1, P2]。P1 运行 0 - 1(剩 3)降入 Q2;P2 运行 1 - 2(剩 1)降入 Q2;Q1 空后调度 Q2, Q2 = [P1(3), P2(1)]。P1 运行 2 - 5 完成(时刻 5);P2 运行 5 - 6 完成(时刻 6)。平均周转时间 = (5 + 6) / 2 = 5.5 分钟。〈出处:国网真题库同型题〉
【易错提醒】 ①“高优先级队列时间片短”要记牢,这是保证短作业与交互进程快速响应的关键。②进程通常只降不升是简化描述,部分实现允许等待过久时提升优先级。③多级反馈队列不是单一算法,而是 FCFS、RR、优先级调度的结合体。
【知识关联】 本题考点:处理机调度。与第 29–38 题;面试:如何设计调度器?
【拓展延伸】 变式:算平均周转/等待时间。CFS/实时调度是 Linux 对照。(本题答案 A,以题干选项为准)
第38题
下列关于实时调度算法 RMS 与 EDF 的叙述中,正确的是( )。
A. 速率单调(RMS)算法中,任务的周期越长,其优先级越高 B. 最早截止期优先(EDF)算法中,距截止期越近的任务优先级越高,属于动态优先级调度算法 C. 最早截止期优先(EDF)算法属于静态优先级算法,任务优先级在系统运行前就已确定 D. 速率单调(RMS)算法只适用于非周期任务,不能调度周期任务
答案:B
考点定位:三、处理机调度——实时调度算法(EDF 最早截止期优先 / RMS 速率单调),难度★★☆☆☆,国企与互联网笔试中实时调度部分最高频的算法对比考点。
【结论】 EDF 按任务的截止期动态赋优先级,距截止期越近优先级越高,属动态优先级算法;RMS 按周期静态赋优先级,周期越短优先级越高,选 B。
【逐项辨析】
- A 错在关系说反了——RMS 中周期越短(执行频率越高,即“速率”越大)的任务优先级越高,而不是周期越长越高。
- B 正确——EDF 的核心机制就是比较各任务当前距截止期的远近,最近者优先;优先级随任务推进不断重排,是典型的动态优先级算法。
- C 错在“静态优先级”——优先级在运行前固定的算法是 RMS 而不是 EDF,该选项把两个算法的属性对调了。
- D 错在“只适用于非周期任务”——RMS 恰恰是面向周期任务提出的经典算法,要求任务周期性到达、执行时间可预知。
【知识点】 两种实时调度算法的完整对照:
| 维度 | RMS(速率单调) | EDF(最早截止期优先) |
|---|---|---|
| 优先级依据 | 周期 p: p 越小优先级越高 | 截止期 d: d 越近优先级越高 |
| 优先级类型 | 静态,运行前固定 | 动态,每次调度重算 |
| 任务类型 | 周期任务 | 周期任务与非周期任务均可 |
| 抢占 | 通常抢占式 | 抢占式 |
| 可调度充分条件 | U ≤ n × (2^(1/n) - 1) | U ≤ 1 |
| n = 2 时的上界 | 2 × (2^(1/2) - 1) ≈ 0.828 | 1.000 |
| n → ∞ 时的上界 | ln 2 ≈ 0.693 | 1.000 |
| 实现开销 | 小(优先级只需算一次) | 大(每次调度都要比较截止期) |
其中 U = Σ(Cᵢ / pᵢ) 为处理器利用率,Cᵢ 为第 i 个任务的执行时间,pᵢ 为周期。结论:EDF 的利用率上限更高(可达 100%),但开销更大;RMS 开销小,但上界只有约 0.69。注意“U ≤ 上界”是充分条件而非必要条件,超过上界不一定失败,需要精确的可调度性分析。
【推导过程】 设两个周期任务:T1(周期 4,执行 1),T2(周期 6,执行 4),均在 t = 0 首次释放。利用率 U = 1/4 + 4/6 ≈ 0.917,已超过 RMS 在 n = 2 时的上界 0.828。
RMS (静态: T1 恒优先)
时间 0 1 2 3 4 5 6
|T1|-------- T2 --------|---T1|--T2--|
0 1 4 5 6
EDF (动态: 谁截止期近谁先)
时间 0 1 2 3 4 5 6
|T1|-------- T2 -----------|--T1--|
0 1 5 6截止期与优先级对照表(决策时刻 t = 4,此时 T1 刚释放新实例):
| 任务 | 周期 | 本实例截止期 | 剩余执行时间 | RMS 判定 | EDF 判定 |
|---|---|---|---|---|---|
| T1 | 4 | 8 | 1 | 高(周期短) | 低(截止期 8 较远) |
| T2 | 6 | 6 | 1 | 低(周期长) | 高(截止期 6 更近) |
| 调度结果 | — | — | — | 运行 T1 | 运行 T2 |
| 时刻 | 事件 | T1 剩余 | T2 剩余 | RMS 选谁 | EDF 选谁 |
|---|---|---|---|---|---|
| 0 | T1、T2 释放(截止期 4、6) | 1 | 4 | T1 | T1 |
| 1 | T1 完成,T2 继续 | 0 | 4 | T2 | T2 |
| 4 | T1 释放(截止期 8) | 1 | 1 | T1 | T2 |
| 5 | 被选者完成 | T1: 0 / T2: 1 | T1: 1 / T2: 0 | T2 运行至 6 完成 | T1 运行至 6 完成 |
这张表就是 EDF 与 RMS 最本质的区别:在 t = 4 这一刻两个算法给出了相反的决策。RMS 只看周期(静态),永远优先 T1;EDF 看截止期(动态),因为 T2 的截止期 6 比 T1 的 8 更近,所以先跑 T2。
【记忆锚点】 口诀——“速率单调看周期,周期越短越优先;最早截止期看钟点,谁先到期谁先上”。再记一句判性质的话:“周期静态、截止动态”——RMS 是静态优先级,EDF 是动态优先级。
【易混对比】
| RMS | EDF | |
|---|---|---|
| 优先级依据 | 周期(速率) | 截止期 |
| 静态 / 动态 | 静态 | 动态 |
| 优先级何时确定 | 系统运行前一次算好 | 每次调度时重算 |
| 利用率上界 | n × (2^(1/n) - 1),约 0.69 | 1 |
| 适用任务 | 周期任务 | 周期 + 非周期 |
| 一句话区别 | 越“急”的周期任务越优先 | 越“近”的截止期越优先 |
换个问法:“若某实时系统 U = 0.9 且 n = 3, RMS 一定失败吗?” 答:不一定——0.9 > 3 × (2^(1/3) - 1) ≈ 0.780,超过的是充分条件上界,需进一步做精确分析才能判定;而 EDF 在 U ≤ 1 时一定可调度。与第 33 题(时间片与响应时间)连考,与第 37 题(多级反馈队列的综合设计)连考。
【自测】 某实时系统有两个周期任务:T1(周期 5,执行 2),T2(周期 8,执行 2),均在 t = 0 释放。求处理器利用率,并用 RMS 与 EDF 分别判断优先级。
答:U = 2/5 + 2/8 = 0.4 + 0.25 = 0.65;RMS 在 n = 2 时的上界为 2 × (2^(1/2) - 1) ≈ 0.828, 0.65 ≤ 0.828,故 RMS 可调度。RMS 下 T1(周期 5 更短)优先级高于 T2;EDF 下 t = 0 时 T1 截止期 5、T2 截止期 8,也是 T1 优先,但此后需按当时截止期重新比较。〈出处:408 真题同型题〉
【易错提醒】 ①RMS 与周期的关系是“周期越短、优先级越高”,记忆时抓住“速率高”这一含义。②区分静态与动态优先级:RMS 静态,EDF 动态。③实时调度中任务的正确性不仅取决于结果,还取决于是否在截止期内完成。
【知识关联】 本题考点:可调度性判据(RMS 按周期、EDF 按截止时刻)。与第 29–38 题调度算法簇连考;国网/软考常考「EDF 与 RMS 谁更宽松」。 【拓展延伸】 变式:给出场景选分时/实时/批处理。工程上桌面偏分时,工控偏实时。(本题答案 B,以题干选项为准)