使用RAG进行死锁检测

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

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

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

如果我们分析图表,那么我们可以发现图表中存在一个循环,因为系统满足所有四种死锁条件。

分配矩阵

分配矩阵可以通过使用系统的资源分配图来形成。 在分配矩阵中,将为每个分配的资源分配一个条目。 例如,在下面的矩阵中,因为R3被分配给P1,所以在P1之前和R3之下进行输入。

请求矩阵

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

Avial =(0,0,0)

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

我们无法满足使用可用资源的至少一个进程的需求,因此当在图中检测到一个循环时,系统就会被锁定,如前所述。


上一篇:避免死锁

下一篇:死锁检测和恢复

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程