天天看點

銀行家算法之安全性算法1. 安全性算法過程描述2. 流程圖3. 例子4. 代碼實作5. 運作截圖

<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-&gt;P1-&gt;P3

銀行家算法之安全性算法1. 安全性算法過程描述2. 流程圖3. 例子4. 代碼實作5. 運作截圖

Wu_Being部落格聲明:本人部落格歡迎轉載,請标明部落格原文和原連結!謝謝!

《銀行家算法——安全性檢查子算法》:

<a href="http://blog.csdn.net/u014134180/article/details/52762186">http://blog.csdn.net/u014134180/article/details/52762186</a>

銀行家算法之安全性算法1. 安全性算法過程描述2. 流程圖3. 例子4. 代碼實作5. 運作截圖

如果你看完這篇博文,覺得對你有幫助,并且願意付贊助費,那麼我會更有動力寫下去。

繼續閱讀