Skip to content

2014年 408 操作系统 第 23 题

操作系统2014年选择题2分

题目

下列调度算法中,不可能导致饥饿现象的是( )。

错因

B

被"静态"两个字误导,以为优先数固定就稳定。但优先数不变才是饥饿的导火索——低优先级进程永远排在高优先级后面,只要高优先级进程不停涌进来,低优先级就一直等不到 CPU。动态优先数(老化机制)才能避免这种长期等待。

C

直觉上"短作业优先"听着挺公平,但它的偏向是短作业,不是公平。如果系统里源源不断来短作业(在线服务的小请求型场景就是这样),夹在队列里的长作业会一直被插队的短作业压着,永远轮不到。非抢占式只是不打断当前进程,新到的还是排队,长作业仍然会饿死。

D

抢占式 SJF 比非抢占式更"贪"——一旦来了个更短的作业,正在跑的较长作业还会被立刻打断让位。长作业被频繁中断 + 永远排在短作业后面,饥饿现象比 C 更严重。

总解析

饥饿:进程长期得不到所需资源(这里是 CPU),被反复跳过。判断一个调度算法会不会饥饿,关键看:它的选择规则是否对某类进程持续不利

算法选择规则谁会被持续不利?饥饿?
时间片轮转 RR轮流来,每人一个时间片没人——谁都迟早轮到不会
静态优先数优先级值高的先低优先级进程,被新涌入的高优先级进程不断压着
非抢占式 SJF当前结束后挑最短的长作业,被源源不断的短作业插队
抢占式 SJF来更短的就抢,挑最短的长作业,比 C 更糟(运行中也会被打断)

判定原则:轮转类算法(人人都能轮到一个固定时间片)天然不饿优先级 / 长短决定调度的算法都可能让"运气差的那一类"等到天荒地老。

时间片轮转给每个进程的 CPU 时间是配额式的——只要进程在就绪队列里,转一圈就一定会被选到一次,新进程也只是排到队尾,不会插队。

最终答案是 A

最后更新:

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

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