📜  操作系统中的资源分配图 (RAG)

📅  最后修改于: 2021-09-27 22:42:26             🧑  作者: Mango

由于银行家的算法使用某种表,如分配、请求,可用所有这些来了解系统的状态。同样,如果你想了解系统的状态而不是使用那些表,实际上表很容易表示和理解它,但是你甚至可以在图中表示相同的信息。该图称为资源分配图 (RAG)

因此,资源分配图向我们解释了系统在进程和资源方面的状态。比如有多少资源可用,分配了多少,每个进程的请求是什么。一切都可以用图表来表示。拥有图表的优点之一是,有时可以通过使用 RAG 直接看到死锁,但随后您可能无法通过查看表格知道这一点。但是如果系统包含大量进程和资源,则表格更好,如果系统包含更少的进程和资源,则图表更好。
我们知道任何图都包含顶点和边。所以 RAG 也包含顶点和边。在 RAG 中,顶点有两种类型 –

1.进程顶点——每个进程都会被表示为一个进程顶点。一般来说,进程会用一个圆圈来表示。
2. 资源顶点——每个资源都将被表示为一个资源顶点。它也是两种类型——

  • 单实例类型资源——表示为一个盒子,盒子里面会有一个点。所以点的数量表示每种资源类型有多少个实例。
  • 多资源实例类型资源——也表现为一个盒子,盒子里面会有很多点。

现在来到 RAG 的边缘。 RAG 中有两种类型的边缘 –

1. 分配边缘 –如果您已经将资源分配给进程,则称为分配边缘。
2. 请求边缘——这意味着将来进程可能需要一些资源来完成执行,这称为请求边缘。

因此,如果进程正在使用资源,则会从资源节点向进程节点绘制一个箭头。如果进程正在请求资源,则会绘制从进程节点到资源节点的箭头。

示例 1(单实例 RAG) –

如果资源分配图中存在一个循环,并且循环中的每个资源只提供一个实例,那么进程将处于死锁状态。例如,如果进程P1持有资源R1,进程P2持有资源R2,进程P1在等待R2,进程P2在等待R1,那么进程P1和进程P2就会陷入死锁。

这是另一个示例,它显示进程 P1 和 P2 获取资源 R1 和 R2,而进程 P3 正在等待获取这两个资源。在这个例子中,没有死锁,因为没有循环依赖。
所以单实例资源类型中的循环是死锁的充分条件。

示例 2(多实例 RAG) –

从上面的例子来看,不能说RAG是处于安全状态还是处于不安全状态。所以要看这个RAG的状态,我们来构造分配矩阵和请求矩阵。

  • 进程总数为三个; P1、P2&P3资源总数为2个; R1 和 R2。

    分配矩阵——

  • 要构建分配矩阵,只需转到资源并查看它分配给哪个进程。
  • R1 分配给 P1,因此在分配矩阵中写入 1,类似地,R2 分配给 P2 和 P3,其余元素只写入 0。

    请求矩阵 –

  • 为了找出请求矩阵,您必须进入流程并查看输出边缘。
  • P1 正在请求资源 R2,因此在矩阵中写入 1,类似地,P2 请求 R1,其余元素写入 0。

    所以现在可用资源是 = (0, 0)。

    检查死锁(安全与否)——

    高-1

    所以,这个RAG没有死锁。即使有一个循环,仍然没有死锁。因此在多实例资源循环中不是死锁的充分条件。

    上面的例子与前面的例子相同,只是进程 P3 请求资源 R1。
    所以表格变成如下所示。

    所以,可用资源是=(0, 0),但需求是(0, 1), (1, 0) 和(1, 0)。所以你不能满足任何一个需求。因此,它陷入了僵局.

    因此,多实例资源类型图中的每个循环都不是死锁,如果必须有死锁,则必须有一个循环。因此,对于具有多实例资源类型的RAG,循环是必要的死锁的条件,但不充分。

GATE CS 角问题
练习以下问题将帮助您测试您的知识。所有问题都在前几年的 GATE 或 GATE 模拟测试中提出。强烈建议您练习它们。

  1. GATE CS 2009,问题 60
  2. GATE CS 2014(第 1 组),问题 65

参考 –
A. Silberschatz、P. Galvin、G. Gagne,“操作系统概念(第 8 版)”,Wiley India Pvt.有限公司