Operating System——圖解操作系統中的資源分配圖(RAG)

操作系統中的資源分配圖(RAG)

  就像銀行家的算法,使用就像分配、請求之類的表格,所有這些東西都可以用來了解系統的狀態。類似地,如果你想理解系統的狀態而不是使用那些表,實際上表很容易表示和理解,但是你仍然可以在圖中表示相同的信息。這個圖稱爲資源分配圖(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的狀態,我們要構造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,循環是死鎖的必要條件,但不是唯一條件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章