避免死鎖


在避免死鎖的情況下,如果系統的結果狀態不會導致系統中的死鎖,那麼將會授予對任何資源的請求。系統的狀態將持續檢查安全和不安全的狀態。

為了避免死鎖,進程必須告訴OS,進程可以請求完成其執行的最大資源數量。

最簡單和最有用的方法指出,流程應宣告它可能需要的每種型別的最大資源數量。 死鎖避免演算法檢查資源分配,以便永遠不會有迴圈等待條件。

安全和不安全的狀態

系統的資源分配狀態可以由可用資源和已分配資源的範例以及進程所需資源的最大範例來定義。

下面顯示了隨機時間記錄的系統狀態。

已分配資源

仍然需要的資源

E = (7 6 8 4)  
P = (6 2 8 3)  
A = (1 4 0 1)

上表和向量E,P和A描述了系統的資源分配狀態。 系統中有4個進程和4個型別的資源。 表1 顯示了分配給每個進程的每個資源的範例。

表2顯示了每個流程仍然需要的資源範例。 向量E表示系統中每個資源的總範例。

向量P表示已分配給進程的資源範例。 向量A表示未使用的資源的數量。

如果系統可以分配所有進程請求的所有資源而不進入死鎖,則系統的狀態稱為安全

如果系統不能滿足所有進程的請求,那麼系統的狀態稱為不安全

死鎖避免方法的關鍵在於當對資源進行請求時,只有在結果狀態也是安全狀態的情況下才能批准請求。