【作業系統】銀行家演算法
銀行家演算法
是一種用來避免作業系統死鎖出現的有效演算法,所以在引入銀行家演算法的解釋之前,有必要簡單介紹下死鎖的概念。
死鎖:是指兩個或兩個以上的程式在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程式稱為死鎖程式。
死鎖的發生必須具備以下四個必要條件:
1)互斥條件:指程式對所分配到的資源進行排它性使用,即在一段時間內某資源只由一個程式佔用。如果此時還有其它程式請求資源,則請求者只能等待,直至佔有資源的程式用畢釋放。
2)請求和保持條件:指程式已經保持至少一個資源,但又提出了新的資源請求,而該資源已被其它程式佔有,此時請求程式阻塞,但又對自己已獲得的其它資源保持不放。
3)不搶佔條件:指程式已獲得的資源,在未使用完之前,不能被剝奪,只能在使用完時由自己釋放。
4)迴圈等待條件:指在發生死鎖時,必然存在一個程式——資源的環形鏈,即程式集合{P0,P1,P2,···,Pn}中的P0正在等待一個P1佔用的資源;P1正在等待P2佔用的資源,……,Pn正在等待已被P0佔用的資源。
避免死鎖演算法中最有代表性的演算法就是Dijkstra E.W 於1968年提出的銀行家演算法,銀行家演算法是避免死鎖的一種重要方法,防止死鎖的機構只能確保上述四個條件之一不出現,則系統就不會發生死鎖。
為實現銀行家演算法,系統必須設定若干資料結構,同時要解釋銀行家演算法,必須先解釋作業系統安全狀態和不安全狀態。
安全序列:是指一個程式序列{P1,…,Pn}是安全的,即對於每一個程式Pi(1≤i≤n),它以後尚需要的資源量不超過系統當前剩餘資源量與所有程式Pj (j < i )當前佔有資源量之和。
安全狀態:如果存在一個由系統中所有程式構成的安全序列P1,…,Pn,則系統處於安全狀態。安全狀態一定是沒有死鎖發生。
不安全狀態:不存在一個安全序列。不安全狀態不一定導致死鎖。
資料結構:
1)可利用資源向量Available
是個含有m個元素的陣列,其中的每一個元素代表一類可利用的資源數目。如果Available[j]=K,則表示系統中現有Rj類資源K個。
2)最大需求矩陣Max
這是一個n×m的矩陣,它定義了系統中n個程式中的每一個程式對m類資源的最大需求。如果Max[i,j]=K,則表示程式i需要Rj類資源的最大數目為K。
3)分配矩陣Allocation
這也是一個n×m的矩陣,它定義了系統中每一類資源當前已分配給每一程式的資源數。如果Allocation[i,j]=K,則表示程式i當前已分得Rj類資源的 數目為K。
4)需求矩陣Need
這也是一個n×m的矩陣,用以表示每一個程式尚需的各類資源數。如果Need[i,j]=K,則表示程式i還需要Rj類資源K個,方能完成其任務。
下面是三者之間的關係:
Need[i,j]=Max[i,j]-Allocation[i,j]
銀行家演算法:
設Request(i)是程式Pi的請求向量,如果Request(i)[j]=k,表示程式Pi需要K個R(j)型別的資源。當Pi發現資源請求後系統將進行下列步驟
(1)如果Request(i)[j] <= Need[i,j],邊轉向步驟2),否則認為出錯,因為它所請求的資源數已超過它所宣佈的最大值。
(2)如果Request(i)[j] <= Available[i,j],便轉向步驟3),否則,表示尚無足夠資源,Pi需等待。
(3)系統試探著把資源分配給程式Pi,並需要修改下面資料結構中的數值;
Available[j] = Available[j] - Request(i)[j];
Allocation[i,j] = Allocation[i,j] + Request(i)[j];
Need[i,j] = Need[i,j] - Request(i)[j];
相關文章
- [作業系統]銀行家演算法作業系統演算法
- 作業系統實驗:銀行家演算法(C語言)作業系統演算法C語言
- 【作業系統】銀行家演算法實現(C語言)作業系統演算法C語言
- 用java語言,模擬實現作業系統的銀行家演算法。Java作業系統演算法
- 銀行家演算法演算法
- 用銀行家演算法實現系統資源分配薦演算法
- 作業系統綜合題之“銀行家演算法,畫出試分配後的資源分配狀態圖”作業系統演算法
- 作業系統綜合題之“銀行家演算法,計算各資源總數和Need還需要數量”作業系統演算法
- 四捨五入之銀行家演算法演算法
- 作業系統cmd演算法作業系統演算法
- 作業系統常見演算法作業系統演算法
- 作業系統排程演算法作業系統演算法
- 作業系統(1)——作業系統概述作業系統
- 作業系統(一):作業系統概述作業系統
- 作業系統之排程演算法作業系統演算法
- 軟體工程作業--ATM自助銀行服務系統軟體工程
- 作業系統(二):作業系統結構作業系統
- 【作業系統】作業系統綜述(一)作業系統
- 作業系統 作業5作業系統
- 主宰作業系統的經典演算法作業系統演算法
- 作業系統1—作業系統概論(上)作業系統
- 作業系統2—作業系統概論(下)作業系統
- 《作業系統》作業系統
- 作業系統作業系統
- [作業系統]作業系統
- 作業系統: Unix作業系統演進簡史作業系統
- 計算機作業系統|作業系統引論計算機作業系統
- 各個作業系統的 作業系統日誌作業系統
- Dominate【作業系統的經典演算法】作業系統演算法
- 【作業系統】4.程序排程演算法作業系統演算法
- 作業系統-1.1_2作業系統四個特徵作業系統特徵
- 計算機作業系統教程 2 作業系統概述計算機作業系統
- NodeOS作業系統作業系統
- Windows作業系統Windows作業系統
- 作業系統原理作業系統
- 作業系統概念作業系統
- 作業系統期末複習——四大演算法作業系統演算法
- 作業系統常用的排程演算法總結作業系統演算法