死鎖避免—銀行家演算法

數據結構描述

1. 可利用資源矢量 Available:含有 m 個元素的數組,其中的每一個元素代表一類可用的資源數目。

2. 最大需求矩陣 Max:定義了系統中 n 個進程中的每一個進程對 m 類資源的最大需求(Max[i,j]=K 表示進程 i 需要 R_j 類資源的最大數目為 K)

3. 分配矩陣 Allocation:定義了系統中每一類資源當前已分配給每一進程的資源數

4. 需求矩陣 Need:表示每個進程還需要的各類資源數

關係

Need=Max-Allocation

演算法步驟

銀行家演算法執行流程

判斷系統是否處於安全狀態

在2012年曾考了一道尋找安全序列的題目。

解析:在確定安全序列之前,我們需要知道需求矩陣Need的值。一般Need的值題目不會直接給出,需要根據題目的已知條件來進行計算。

Advertisements

這道題目中,我們可以通過分配矩陣Allocation最大需求矩陣Max來求出Need。

分配矩陣Allocation

最大需求矩陣Max

Need=Max-Allocation

需求矩陣Need

再根據題目所給的信息,我們可以得出可利用資源矢量 Available的值為[2,3,3]。然後我們將Need矩陣中的每一行依次與Available進行比較,可以發現只有P1,P3,P4符合條件。由於選項中沒有P4,我們將注意力放在P1和P3上。

當進入安全序列的第一個元素為P1時,將P1所佔用的資源[4,0,3]釋放,Available的值變為[6,3,6]。在選項B中緊接著P1被放入安全序列的值為P0,我們可以發現P0此時並不符合放入安全序列的條件,B選項錯誤。

Advertisements

按照同樣的方法,我們可以證明選項 D 是正確的,這裡就不贅述了。

Advertisements

你可能會喜歡