操作系统 使用RAG进行死锁检测

操作系统 使用RAG进行死锁检测

如果在资源分配图中形成了一个循环,并且所有的资源都只有一个实例,那么系统就会发生死锁。

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

以下例子包含了三个进程P1,P2,P3和三个资源R2,R2,R3。每个资源都只有一个实例。

操作系统 使用RAG进行死锁检测

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

分配矩阵

分配矩阵可以通过使用系统的资源分配图来形成。在分配矩阵中,每个被分配的资源都会有一个条目。例如,在下面的矩阵中,我们在P1前面和R3下面的位置做了一个条目,因为R3被分配给了P1。

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)

无论是系统中都没有可用的资源,也没有一个进程将要释放。每个进程至少需要一个资源才能完成,因此它们将持续保持住它们。

我们无法使用现有资源来满足至少一个进程的需求,因此系统已经发生了死锁,就像我们在图中检测到循环时一样。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程