使用RAG進行死鎖檢測


如果在資源分配圖中形成一個迴圈,其中所有資源都有單個範例,則系統將死鎖。

在具有多範例資源型別的資源分配圖的情況下,週期是死鎖的必要條件,但不是充分條件。

以下範例包含三個進程P1,P2,P3和三個資源R2,R2,R3。 所有資源都有單個範例。

如果我們分析圖表,那麼我們可以發現圖表中存在一個迴圈,因為系統滿足所有四種死鎖條件。

分配矩陣

分配矩陣可以通過使用系統的資源分配圖來形成。 在分配矩陣中,將為每個分配的資源分配一個條目。 例如,在下面的矩陣中,因為R3被分配給P1,所以在P1之前和R3之下進行輸入。

請求矩陣

在請求矩陣中,將為每個請求的資源輸入一個條目。 如以下範例所示,P1需要R1,因此在P1之前和R1之下進行輸入。

Avial =(0,0,0)

我們既沒有系統中的任何資源,也沒有將要發布的進程。 每個進程至少需要一個資源才能完成,因此他們將持續保持每一個資源。

我們無法滿足使用可用資源的至少一個進程的需求,因此當在圖中檢測到一個迴圈時,系統就會被鎖定,如前所述。