<a href="#1-%E5%AE%89%E5%85%A8%E6%80%A7%E7%AE%97%E6%B3%95%E8%BF%87%E7%A8%8B%E6%8F%8F%E8%BF%B0">安全性算法過程描述</a>
<a href="#2-%E6%B5%81%E7%A8%8B%E5%9B%BE">流程圖</a>
<a href="#3-%E4%BE%8B%E5%AD%90">例子</a>
<a href="#4-%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0">代碼實作</a>
<a href="#5-%E8%BF%90%E8%A1%8C%E6%88%AA%E5%9B%BE">運作截圖</a>
(1) 設定兩個向量:① 工作向量Work:它表示系統可提供給程序繼續運作所需的各類資源數量的多少,它含有m個元素,在執行安全算法開始時,Work = Available;② Finish:它表示系統是否有足夠的資源配置設定給程序,使之運作完成。開始時先做Finish[i]= false;當有足夠資源配置設定給程序時, 再令Finish[i]= true。
(2) 從程序集合中找到一個能滿足下述條件的程序:
① Finish[i]= false; ② Need[i,j]≤ Work[j];
如果找到,那麼,執行步驟(3);否則,執行步驟(4)。
(3) 當程序Pi獲得資源後,可順利執行,直至完成,并釋放出配置設定給它的資源,故應執行:
(4) 如果所有程序的Finish[i]= true都滿足, 則表示系統處于安全狀态;否則,系統處于不安全狀态。
Created with Raphaël 2.1.0開始STEP1:設定工作向量Work和FinishSTEP2:找到一個滿足條件程序PiSTEP3:執行程序Pi,釋放資源STEP4:all Finish[i]=trueOutput:securable...結束Output:not securableyesnoyesno
如果目前資源配置設定如下表:
程序
最大需求Max
已配置設定Allocation
可用Available
P1
10
5
3
P2
4
2
P3
9
安全序列:P2->P1->P3
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwcDNyMTMwEDM5ADMxYTMwIzLcRXZu5ibkN3Yuc2bsJmLn1Wavw1LcpDc0RHaiojIsJye.jpg)
Wu_Being部落格聲明:本人部落格歡迎轉載,請标明部落格原文和原連結!謝謝!
《銀行家算法——安全性檢查子算法》:
<a href="http://blog.csdn.net/u014134180/article/details/52762186">http://blog.csdn.net/u014134180/article/details/52762186</a>
如果你看完這篇博文,覺得對你有幫助,并且願意付贊助費,那麼我會更有動力寫下去。