Skip to content

2014年 408 操作系统 第 30 题

操作系统2014年选择题2分

题目

在页式虚拟存储管理系统中,采用某些页面置换算法,会出现 Belady 异常现象,即进程的缺页次数会随着分配给该进程的页框个数的增加而增加。下列算法中,可能出现 Belady 异常现象的是( )。

I. LRU 算法

II. FIFO 算法

III. OPT 算法

错因

B

把 Ⅰ LRU 误以为也会 Belady 异常。其实 LRU 是栈算法——栈算法的性质保证了"页框越多、内存中持有的页只增不减",所以缺页次数单调不增,理论上不会出现 Belady。把 LRU 当成 FIFO 那样按顺序换出是常见误识。

C

把 OPT 也算进去了。OPT(最佳置换)按"未来最长时间不用"换出,同样满足栈算法性质——缺页率绝对不会因为页框增加而变差。OPT 的本质是上界最优,把它和 FIFO 归在一起说明没区分"按到达时间换"和"按未来访问换"。

D

把 LRU 排除却把 OPT 选进去——可能是把 OPT 误以为是"按某种历史信息预测"所以会出现意外。但 OPT 的"按未来最长不用"是数学上的最优,无论页框多少都给出最少缺页次数,结构上不可能 Belady。

总解析

Belady 异常:增加页框反而让缺页次数变多。能不能出现这种异常,看算法是不是"栈算法"。

栈算法性质:在任何时刻,n 个页框时驻留的页集合是 (n+1) 个页框时驻留页集合的子集。也就是"页框越多,内存里能装下的页是上次的超集"。这种算法绝不可能 Belady

算法选择换出谁是栈算法吗?可能 Belady?
Ⅰ LRU最近最久未用不会
Ⅱ FIFO最早进入内存的不是("先到先走",跟"近期使用"无关,加一框后驻留集会变)
Ⅲ OPT未来最长时间不用的不会

速记:LRU、OPT 是栈算法(因为换出依据"使用时间序",加页框只会让"留得久"的页活得更久);FIFO 不是栈算法(按"入场顺序"换,加页框可能让原本被留住的"老但常用"页提前被换)。

经典 Belady 反例(FIFO,页面序列 1,2,3,4,1,2,5,1,2,3,4,5):

  • 3 个页框:9 次缺页
  • 4 个页框:10 次缺页

页框反而多了一个、缺页却变多了——这就是 Belady。

最终答案是 A

最后更新:

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

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