我不确定如何正确检测死锁。我的书为五个进程P0到P4和三个资源类型A,B和C提供了这个表。资源A有七个实例,资源类型B有两个实例,资源类型C有六个实例。这是时间T0的资源分配状态:
Allocation Request Available
A B C A B C A B C
P0 0 1 0 0 0 0 0 0 0
P1 2 0 0 2 0 2
P2 3 0 3 0 0 0
P3 2 1 1 1 0 0
P4 0 0 2 0 0 2
它继续说明系统没有处于死锁状态,但没有为解决问题的技术提供太多细节。任何人都可以为我分解它,以便我可以轻松地按照步骤尝试类似的问题吗?
我试图理解这个问题:
P0有1个资源B且不需要资源。 P0放弃其资源
A B C A B C A B C
P0 0 0 0 0 0 0 0 1 0
P1 2 0 0 2 0 2
P2 3 0 3 0 0 0
P3 2 1 1 1 0 0
P4 0 0 2 0 0 2
P1有2个资源A,需要2个资源A和C.资源不足。 P2有3个资源A和C,不需要资源。 P2放弃其资源。
A B C A B C A B C
P0 0 0 0 0 0 0 3 1 3
P1 2 0 0 2 0 2
P2 0 0 0 0 0 0
P3 2 1 1 1 0 0
P4 0 0 2 0 0 2
希望我到目前为止走上正轨。
答案 0 :(得分:0)
当您处理状态为“有A,需要B”而某些其他进程处于“有B,需要A”时,会发生死锁。
如果我正确地读你的桌子,那么这将表明一个僵局:
Allocation Request Available
A B C A B C A B C
P0 0 1 0 1 0 0 0 0 0
P1 2 0 0 2 1 2
P0有资源B,需要资源A,没有更多资源A可用 P1有两个资源A,需要源B,没有更多的B可用。
在更多资源A或B可用之前,无法解决死锁。这意味着P0或P1必须放弃他们的一些分配(或P2 +做同样的事情)。