死鎖避免—銀行家演算法
數據結構描述
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。
Need=Max-Allocation
再根據題目所給的信息,我們可以得出可利用資源矢量 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 是正確的,這裡就不贅述了。