RAG是操作系统中Resource Allocation Graph的缩写。 RAG是一种有向图,可以用图片的形式表示系统的状态。死锁可以用有向图 (RAG) 更精确地描述。
图(V,E)由一组顶点组成,这些顶点可以划分为两种不同类型的节点:-
- 处理顶点 –
它们代表流程并绘制为一个圆圈,例如,{P1, P2, P3.....Pn}
- 资源顶点 –
这些顶点代表资源,画成一个正方形,里面有点,代表资源的实例,例如,{R1, R2, R3.....Rn}
绘制资源分配图是为了查看进程和资源之间的分配关系。在这里,进程在一个圆圈内表示,而资源在一个正方形内表示,其中的点表示资源实例的数量。
RAG 有两种类型的边,一种表示分配,另一种表示进程对资源的等待。
- 如果箭头的尾部连接到资源的实例,而箭头连接到进程,则资源被分配给进程。
- 如果箭头的尾部连接到进程而头部指向资源,则进程正在等待资源。
如果 RAG 包含一个循环,则系统处于死锁状态,否则不会。
RAG的特点:
- 图示——
RAG 是系统状态的图形表示 - 死锁检测——
使用RAG,我们可以很容易地检测到系统是否处于死锁状态。 - 资源信息——
RAG 包含资源及其实例的所有信息,无论它们是空闲的还是正在被任何其他进程使用。 - 流程信息 –
RAG 告诉我们哪些进程持有哪些资源以及它正在请求哪些资源。
RAG的优点:
- 它在死锁检测中非常有用。
- 它在银行家算法中被广泛使用。
- 它是一个系统的图形表示。
- 有时我们只需看一眼图表就可以判断系统是否处于死锁状态。
- 通过 RAG 了解资源分配所需的时间更少。
RAG的缺点:
- 当我们的进程和资源较少时,RAG 很有用。
- 对于大量资源或进程,最好将数据存储在表中而不是 RAG。
- 如果有大量的资源或进程,那么图表将难以理解并且会变得复杂。