Skip to content

2013年 408 操作系统 第 32 题

操作系统2013年选择题2分

题目

下列关于银行家算法的叙述中,正确的是( )。

错因

A

把"预防"和"避免"混了。死锁预防:从结构上破坏死锁四条件之一(如不允许请求和保持、可剥夺、按序申请等),事前杜绝;死锁避免:每次资源分配前算一下"分配后系统是否还安全",不安全就拒绝。银行家算法属于"避免",它没有破坏任何死锁条件,是动态判断。

C

把"不安全"和"死锁"画等号——但不安全 ≠ 死锁。"不安全状态"指有可能发展成死锁,但不一定真的死锁——只要后续进程的资源请求顺序合适,仍可能避开死锁。安全状态是个充分非必要条件:安全 → 一定不死锁,但不安全 ≠ 一定死锁

D

银行家算法不破坏任何死锁四条件——它允许互斥、允许请求和保持、允许不剥夺、允许循环等待。它的工作机制是事前模拟:每次申请前算一下"如果给出去,剩下的进程还能按某顺序全跑完吗",能就给、不能就拒。条件没动,只是动态拒绝部分请求。

总解析

银行家算法的核心概念辨析:

概念含义
死锁预防从设计上破坏 4 条件之一,事前杜绝
死锁避免(银行家)每次分配前算"分配后还安不安全",不安全就拒绝;不破坏任何条件
安全状态存在某个进程序列让所有进程都能拿到全部资源跑完
不安全状态不存在这种序列;可能发展成死锁,但不一定真死锁

逐项核对

选项描述判定
A银行家可以预防死锁✗ 是避免不是预防——预防破坏 4 条件,银行家不破坏
B安全状态时一定无死锁进程 —— 安全状态的定义就是"存在让所有进程跑完的序列",意味着没人陷入循环等待
C不安全状态时一定有死锁✗ "不安全"只是有风险,没真正死锁;只有等到资源分配走入死局才算死锁
D破坏请求和保持✗ 银行家不破坏任何条件,只是动态拒绝某些请求

安全 vs 不安全 vs 死锁的关系

安全 ⊂ 无死锁 ⊂ {可能再分配}
不安全 = 不安全 = 有风险
死锁 = 不安全的子集(已经发生)

安全 → 必无死锁
不安全 → 不一定死锁(只是有风险)
死锁 → 必不安全

速记:安全和死锁是"非对称关系"——安全是充分否定死锁,但不安全不等于死锁。

最终答案是 B

最后更新:

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

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