题目
某计算机系统中有3个进程P1,P2和P3,3类资源r1、r2和r3。其中r1和r3每类资源只有1个,r2资源有2个,假设系统当前的资源分配[1]如下:((P1,r1),(P2,r3),(r2,P1),(r1,P2),(r2,P2),(r3,P3)),如果进程P3申请一个r2类资源,那么系统将进入( )状态。A 无死锁[2]B 死锁C 活锁D 饥饿
某计算机系统中有3个进程P1,P2和P3,3类资源r1、r2和r3。其中r1和r3每类资源只有1个,r2资源有2个,假设系统当前的资源分配[1]如下:{(P1,r1),(P2,r3),(r2,P1),(r1,P2),(r2,P2),(r3,P3)},如果进程P3申请一个r2类资源,那么系统将进入( )状态。
A 无死锁[2]
B 死锁
C 活锁
D 饥饿
题目解答
答案
解答:
正确答案是 B 死锁。
解释:
当前系统资源[3]分配情况:
P1 占用:r1, r2
P2 占用:r1, r2, r3
P3 占用:r3
P3 申请一个 r2 资源,但所有 r2 资源都被 P1 和 P2 占用,且 P1 和 P2 都持有 P3 所需的 r1 或 r3 资源。 因此,P3 无法获得 r2 资源,同时 P1 和 P2 也无法释放它们持有的 r1 或 r3 资源,从而导致了死锁。
死锁的四个必要条件:
互斥条件:一个资源只能被一个进程使用。
持有和等待条件:一个进程持有至少一个资源,并且在等待获取被其他进程持有的资源。
不可剥夺条件:一个进程已经获得的资源,在未完成使用之前,不能被其他进程强行剥夺。
环路等待条件:系统中存在一个闭环的进程序列,每个进程都等待着下一个进程所持有的资源。
在这个题目中,所有四个条件都满足,导致了死锁状态。
解析
考查要点:本题主要考查死锁的判定条件,需要结合资源分配情况,分析是否满足死锁的四个必要条件。
解题核心思路:
- 明确当前资源分配情况,判断各进程占用的资源。
- 分析进程P3申请r2资源后的资源依赖关系,是否存在环路等待。
- 验证是否满足互斥条件、持有和等待条件、不可剥夺条件、环路等待条件。
破题关键点:
- 资源分配矛盾:注意题目中资源数量限制(r1、r3各1个,r2有2个),结合分配列表推导各进程实际占用。
- 环路形成:若P3申请r2导致进程间形成资源等待环,则必然死锁。
当前资源分配情况
根据题目给出的分配列表{(P1,r1),(P2,r3),(r2,P1),(r1,P2),(r2,P2),(r3,P3)},解析各进程占用的资源:
- P1:占用r1(通过
(P1,r1))和r2(通过(r2,P1))。 - P2:占用r3(通过
(P2,r3))和r2(通过(r2,P2)),但(r1,P2)表示P2试图占用r1,这与r1只有一个且已被P1占用矛盾。此处题目存在描述错误,实际应为P2占用r2的第二个实例。 - P3:占用r3(通过
(r3,P3)),但r3已被P2占用,矛盾。实际应为P3未占用资源。
P3申请r2后的依赖关系
- P3申请r2:所有r2资源已被P1和P2占用,需等待释放。
- 资源依赖环:
- P3需要r2,但r2被P1和P2占用。
- P1持有r1,可能被其他进程(如P2)等待。
- P2持有r3,而P3可能后续需要r3。
- 形成环:P3→P1→P2→P3。
死锁条件验证
- 互斥条件:资源r1、r2、r3均为互斥资源。
- 持有和等待:P3持有r3(假设题目无误),同时等待r2;P1和P2持有其他资源。
- 不可剥夺:资源无法被强行剥夺。
- 环路等待:P3→P1→P2→P3形成环。