考虑到进程和资源的数量,如何确定是否可能出现死锁

时间:2018-06-13 08:29:03

标签: operating-system deadlock

  

考虑一个有三个进程和三个相同资源的系统。每个进程最多需要两个资源。在这个系统中是否可能出现死锁?

我的理解是,如果四个条件同时存在,则死锁是可能的: 相互排斥,保持和等待,没有先发制人和循环等待。

如果为每个进程分配了一个资源,那么将保留所有三个资源。没有可用的资源。

如何证明无法实现死锁,以及如何计算可用于使系统死锁的资源数量?

2 个答案:

答案 0 :(得分:2)

在这种情况下,诀窍是评估 CIRCULAR WAIT 条件并查看它是否成立。 3个流程和3个相同的资源。让我们给每个人一个。剩余 0 资源,但尚未完成任何流程要求(,因为每个需要2 ),这意味着每个进程都在等待其他进程释放资源< / strong>即可。满足循环等待条件。因此,给定方案可能导致死锁。

假设我们有 n 流程和 m 相同的资源,最大需求为 d1,d2,d3 ...... dn。

如果 m&gt; (d1-1)+(d2-1)+(d3-1)......(dn-1)。 ,然后它的无死锁

否则会导致死锁

答案 1 :(得分:1)

考虑一个由n共享m个相同类型资源的系统 流程。流程只能在a处请求和发布资源 时间。当且仅当所有最大需求的总和<1时,系统才是无死锁的。 M + N。

例如: 系统有3个进程共享4个资源。如果每个流程最多需要2个单元,那么:

要使系统无死锁,请为每个进程分配一个少于其最大需求的进程。如果我们留下一个或多个资源,那么就没有死锁。

为每个进程分配1个资源(最多需要-1)。

已分配资源= 1 + 1 + 1 = 3

我们仍然留下1个资源以避免死锁。

因此永远不会发生死锁。