如何找到死锁存在与否?

时间:2015-10-14 14:18:02

标签: process operating-system synchronization computer-science deadlock

考虑具有4种资源R1(3个单位),R2(2个单位),R3(3个单位),R4(2个单位)的4种系统。使用非抢占式资源分配策略。在任何给定的情况下,如果不能完全满足请求,则不会受理。如果独立执行,则三个进程P1,P2,P3按如下方式请求资源。

bld(rule='cmd ${SRC} ${TGT}', source='input.txt', target='output.txt')
Process P1:

t=0: requests 2 units of R2

t=1: requests 1 unit of R3

t=3: requests 2 units of R1

t=5: releases 1 unit of R2 and 1 unit of R1.

t=7: releases 1 unit of R3

t=8: requests 2 units of R4

t=10: Finishes  
Process P2:

t=0: requests 2 units of R3

t=2: requests 1 unit of R4

t=4: requests 1 unit of R1

t=6: releases 1 unit of R3

t=8: Finishes   

如果所有三个进程从时间t = 0开始并发运行,则以下哪一项语句为TRUE?

  1. 所有流程都将完成,没有任何死锁

  2. 只有P1和P2处于死锁状态

  3. 只有P1和P3处于死锁状态

  4. 所有三个进程都将处于死锁状态

1 个答案:

答案 0 :(得分:0)

我查看了请求和可用资源,所有进程都完成了,没有死锁。

  • 在t = 3时,进程P1必须等待,因为它没有获得所需的资源,但是当P3释放时,它在t = 5时被分类。不能进行“循环等待”“等待”
  • 下一次等待P1是在t = 8时它请求R4中的2,并且当P3在t = 9结束时进行排序。与上面相同,没有“循环等待” “等等”可以发生。

除此之外,所有请求都立即被授予。