如何在给定进程和资源数量的情况下确定是否存在死锁



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

我的理解是,如果四个条件同时成立,僵局是可能的: 相互排斥,持有等待,不抢占,循环等待。

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

如何证明死锁是不可能的,以及如何计算应该有多少资源可用才能使系统死锁自由?

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

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

如果m>(d1-1( + (d2-1( + (d3-1(......(dn-1(.,然后它的死锁自由

否则可能会导致死锁

考虑一个系统,其中 m 个相同类型的资源由 n 共享 过程。资源只能由进程在 时间。当且仅当所有最大需求的总和为

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

要使系统无死锁,请为每个进程分配比其最大需求少一个。这样做之后,如果我们剩下一个或多个资源,那么就不会有死锁。

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

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

我们仍然剩下 1 个资源来避免死锁。

所以僵局永远不会发生。

最新更新