Skip to content

2015年 408 操作系统 第 26 题

操作系统2015年选择题2分

题目

若系统 S1 采用死锁避免方法,S2 采用死锁检测方法。下列叙述中,正确的是( )。

Ⅰ、S1 会限制用户申请资源的顺序,而 S2 不会 Ⅱ、S1 需要进程运行所需的资源总量信息,而 S2 不需要 Ⅲ、S1 不会给可能导致死锁的进程分配资源,而 S2 会

错因

A

承认了 Ⅱ Ⅲ 都不要,却选了错误的 Ⅰ。把"避免方法限制申请顺序"误记成了避免方法的特征——但限制申请顺序属于"死锁预防"(破坏循环等待条件),不是避免。避免方法(如银行家)允许任意顺序申请,只是临时拒绝那些会让系统进入不安全状态的分配请求。把"预防"和"避免"两个概念合并是常见误记。

C

同样把 Ⅰ 选进去了——再次混淆"预防 vs 避免"。死锁预防是事前结构上杜绝(破坏 4 条件之一,比如资源有序分配),银行家避免是事中动态判断(每次分配前算一下安不安全),两者机制完全不同。

D

把三条全选,等于完全没区分预防/避免/检测。Ⅰ 错(限制顺序是预防),Ⅱ Ⅲ 都对——把错的也勾上是没有具体梳理每个机制的工作方式所致。

总解析

死锁四种应对策略要分清:

策略时机做什么需要的信息
预防设计期破坏 4 条件之一(如限制申请顺序、一次性分配等)静态约束
避免 S1每次分配前算一下分配后系统是否仍处于"安全状态"——不安全就拒绝分配每个进程的最大资源需求(总量)
检测 S2运行时定期查看看现在是不是已经死锁了(找资源分配图的环)当前的资源分配情况
解除检测到死锁后剥夺资源 / 撤销进程 / 回滚

逐条核对:

  • Ⅰ S1 限制申请顺序、S2 不限制 → ✗
    限制申请顺序是死锁预防的手段(破坏循环等待),不是避免。S1 用银行家算法时,进程可以任意顺序申请,只是某次申请会因"会进不安全状态"被拒。S2 不限制顺序也对,但两者都不限制,所以这条说"S1 限制"是错的。

  • Ⅱ S1 需要资源总量、S2 不需要 → ✓
    银行家算法的核心数据是 Max 矩阵(每个进程最大需求量)+ Allocation + Need + Available;没有 Max,就算不了"进程未来还要多少、分了之后能不能保持安全"。检测算法只看当前状态(已分配 + 已请求),不需要 Max。

  • Ⅲ S1 不分配可能导致死锁的资源、S2 会 → ✓
    避免的本质就是事前拒绝——分配前模拟一遍,如果会进入不安全状态就直接不给。检测策略允许"先分配再说",等真死锁了再查、再解除——所以 S2 确实可能给出导致死锁的分配。

正确的是 Ⅱ Ⅲ。

最终答案是 B

最后更新:

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

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