问题 问答题

有5个并发执行的进程P1、P2、P3、P4、P5,它们共享5个资源R1、R2、R3、R4、R5。每个进程都需要得到两个资源后才能执行结束,但每次只申请一个资源,现把各进程申请的资源列如下表3.22所示。

表3.22 各进程资源申请情况
进程 第一次申请 第二次申请
P1 R1 R2
P2 R2 R3
P3 R3 R4
P4 R4 R5
P5 R5 R1
(1)在什么情况下会引起死锁为什么
(2)请你提出一种方案,使进程申请资源时受到适当的限制,从而避免可能引起的死锁。

答案

参考答案:这种分配方案会引起死锁。因为进程申请资源总数大于系统资源总数,而系统一次就把资源分配完毕,故进程再申请资源时,系统无资源分配。这样就导致每个进程都占有资源,但都因资源不够而处于等待状态。
现在提出一种方案:首先把系统的资源排序,然后再规定每个进程申请资源时,第二次申请资源的序号要大于第一次申请资源的序号,否则就要交出所占有的资源。执行此方案,第二次申请资源时,进程P5就要交出资源R5,系统则把R5分配给P4,这样进程P4因资源满足而投入运行,运行完后向系统交出其占有的所有的资源R4和R5,系统则把R4分配给P3,…,这样当进程P1交出其占有的所有的资源R1和R2后,系统再把资源R1和R5分配给P5,这样所有的进程都可以运行完,而不会发生死锁。

解析: 本题目死锁的必要条件及解决死锁的方法。

单项选择题
问答题 论述题