📜  使用RAG进行OS死锁检测

📅  最后修改于: 2020-12-14 09:27:17             🧑  作者: Mango

使用RAG进行死锁检测

如果在所有资源都具有单个实例的资源分配图中形成一个循环,则系统将死锁。

在具有多实例资源类型的资源分配图的情况下,循环是死锁的必要条件,但不是充分条件。

以下示例包含三个进程P1,P2,P3和三个资源R2,R2,R3。所有资源均具有单个实例。

如果我们分析该图,则可以发现在图中形成了一个循环,因为该系统满足了所有四个死锁条件。

分配矩阵

可以通过使用系统的资源分配图来形成分配矩阵。在分配矩阵中,将为分配的每个资源创建一个条目。例如,在下面的矩阵中,由于R3被分配给了P1,所以en输入在P1的前面,在R3的下面。

Process R1 R2 R3
P1 0 0 1
P2 1 0 0
P3 0 1 0

请求矩阵

在请求矩阵中,将为每个请求的资源创建一个条目。如以下示例所示,P1需要R1,因此将在P1的前面和R1的下面进行输入。

Process R1 R2 R3
P1 1 0 0
P2 0 1 0
P3 0 0 1

Avial =(0,0,0)

我们既没有系统中可用的任何资源,也没有要发布的流程。每个过程至少需要一个资源才能完成,因此它们将持续持有每个过程。

我们无法使用可用资源满足至少一个过程的需求,因此,如我们在图中检测到周期时所确定的那样,系统陷入僵局。