OS 基础教程

进程管理

同步

死锁

内存管理

文件管理

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/os-deadlock-detection-using-rag.html

使用RAG进行死锁检测


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

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

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

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

分配矩阵

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

请求矩阵

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

Avial =(0,0,0)

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

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