Operating System——图解操作系统中的资源分配图(RAG)

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

  就像银行家的算法,使用就像分配、请求之类的表格,所有这些东西都可以用来了解系统的状态。类似地,如果你想理解系统的状态而不是使用那些表,实际上表很容易表示和理解,但是你仍然可以在图中表示相同的信息。这个图称为资源分配图(RAG)。
  
  因此,资源分配图向我们解释了系统在过程和资源方面的状态。比如有多少资源可用,分配了多少,每个进程的请求是什么,一切都可以用图来表示。使用图表的优点之一是,有时可以通过使用RAG直接看到死锁,但是你可能无法通过查看表来了解死锁。但是,如果系统包含大量的流程和资源,则表更好;如果系统包含较少的流程和资源,则图更好。

  我们知道任何图形都包含顶点和边。

所以RAG也包含顶点和边,在RAG中,顶点有两种类型:

  1. 进程顶点:每个进程都将表示为一个进程顶点。通常,该进程将以圆圈表示。

  2. 资源顶点:每个资源将被表示为一个资源顶点。它也是有两种类型:

  • 单实例类型资源:它表示为一个框,在该框内将有一个点。因此,点的数量表示每种资源类型存在多少个实例。
  • 多资源实例类型资源:它也表示为一个框,在框内,将存在许多点。

在这里插入图片描述

现在是RAG的边。RAG中有两种类型的边:

  1. 分配边缘:如果您已经将资源分配给流程,则称为分配边缘。

  2. 请求边缘:这意味着将来进程可能需要一些资源来完成执行,这称为请求边缘。

在这里插入图片描述

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

扫描二维码关注公众号,回复: 10811275 查看本文章
示例1(单实例RAG)

在这里插入图片描述

  如果资源分配图中有一个循环,并且循环中的每个资源仅提供一个实例,那么进程将处于死锁状态。 例如,如果进程P1拥有资源R1,进程P2拥有资源R2,进程P1正在等待R2,进程P2正在等待R1,则进程P1和进程P2将处于死锁状态。

在这里插入图片描述

  这是另一个示例,其中显示了进程P1和P2在获取资源R1和R2的同时,进程P3正在等待获取这两个资源。 在此示例中,没有死锁,因为没有循环依赖性。
  因此,单实例资源类型中的循环是发生死锁的充要条件。

示例2(多实例RAG)

在这里插入图片描述

  从上面的示例中,不可能说出RAG处于安全状态或不安全状态。因此,要查看该RAG的状态,我们要构造allocation矩阵和request 矩阵。

在这里插入图片描述

  • 进程总数为三个;:P1,P2和P3;资源总数为两个:R1和R2
分配矩阵
  • 对于构造分配矩阵,只需转到资源,然后查看将其分配到哪个进程即可。

  • R1被分配给P1,因此在分配矩阵中写入1,类似地,R2也被分配给P2和P3,而对于其余元素,写入0即可

请求矩阵
  • 为了找出请求矩阵,你必须转到该过程并查看输出边缘。

  • P1正在请求资源R2,因此在矩阵中写入1,类似地,P2请求R1,其余元素则写入0。

因此,现在可用资源available=(0,0)

检查死锁(安全与否)

在这里插入图片描述

  因此,此RAG中没有死锁,即使有循环也没有死锁,因此在多实例资源循环中没有满足的死锁条件。

在这里插入图片描述

  除了请求资源R1的过程P3之外,上述示例与先前示例相同。

如下图表格所示:

在这里插入图片描述

  因此,可用资源Available=(0,0),但要求requirement=(0,1),(1、0)和(1,0)。无法满足任何一项要求,所以它处于死锁状态 。

  多实例资源类型图中的每个循环都不是死锁,但是如果必须有死锁,则必须有一个循环。

   所以,对于具有多实例资源类型的RAG,循环是死锁的必要条件,但不是唯一条件。

发布了72 篇原创文章 · 获赞 10 · 访问量 5840

猜你喜欢

转载自blog.csdn.net/weixin_44198992/article/details/105512997