Skip to content

2016年 408 操作系统 第 25 题

操作系统2016年选择题2分

题目

系统中有 3 个不同的临界资源 R1、R2 和 R3,被 4 个进程 p1、p2、p3 及 p4 共享。各进程对资源的需求为:p1 申请 R1 和 R2,p2 申请 R2 和 R3,p3 申请 R1 和 R3,p4 申请 R2。若系统出现死锁,则处于死锁状态的进程数至少是( )。

错因

A

把"至少"理解成了"理论极限"——但死锁需要循环等待,1 个进程根本形成不了环。它要么持有所有要的资源(不死锁),要么等某个资源(要等待,得有别的进程持有它);都不构成"循环等待"这条死锁必要条件。

B

2 个进程能形成最简单的循环(A 持 R1 等 R2,B 持 R2 等 R1)。但本题里任意两个进程能不能形成这种环?看一下:p1(R1,R2)+ p2(R2,R3)→ 它们交集是 R2,可能 p1 持 R1 等 R2、p2 持 R2 等 R3 → 但 p2 等的 R3 不被 p1 持有,环没闭合。要让环闭合还需要 p3。两个进程在本题资源结构下形不成死锁环

D

4 个全卷进去太多了——p4 只申请 R2 一种资源,它要么拿到 R2 跑完、要么一直等 R2。即使 p1 p2 p3 形成了死锁,p4 只是在那等 R2(被卷进等待但不构成死锁的核心循环),死锁的"必要"进程不需要 p4。

总解析

死锁的四条件之一是循环等待:必有一个进程链 P1→P2→...→Pn→P1,每个进程持有下一个所需的资源。判断"最少几个进程死锁"等价于"在该资源分配关系图上能形成的最短环长度"。

资源需求关系

进程申请资源
p1R1, R2
p2R2, R3
p3R1, R3
p4R2

找最短循环等待

  • 2 个进程:要形成环必须两个进程互相等对方持有的资源。比如 p1 等 p2 的资源、p2 等 p1 的资源——p1 想要 R1 R2,p2 想要 R2 R3,要形成"p1 持 X 等 p2 的 Y、p2 持 Y 等 p1 的 X"的对称关系,p1 p2 共同关心的资源只有 R2 一种,对称关系建不起来(你等我我等你,但同一种资源只能有一个持有者,无法对称)。其他两对(p1-p3 共关心 R1,p2-p3 共关心 R3)同理。2 个进程不行

  • 3 个进程:p1、p2、p3 形成环:

进程持有等待
p1R1R2(被 p2 持有)
p2R2R3(被 p3 持有)
p3R3R1(被 p1 持有)

环闭合 → 3 个进程死锁 ✓。p4 即使一起在等 R2 也只是被波及,不算死锁的必要进程(p4 只要 R2 一种资源,它没"持有"任何资源给别人等,环和它无关)。

通用结论:n 个不同资源分布到进程时,最短死锁环长度 = 进程间能形成的循环等待最小长度。本题刚好凑齐 3 进程 3 资源的标准三循环。

最终答案是 C

最后更新:

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

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