銀行家算法


目的:避免死鎖的產生。

算法思想:

       1、假分配檢測:Request < Need

                            Request < Available

       2、安全序列檢測算法

 

實例列舉:

  某系統有R1,R2,R3共3中資源,在T0時刻P0,P1,P2,P3和P4這5個進程對資源的占用和需求情況如下表1,此時系統的可用資源向量為(3,3,2)。試問:

1、T0時刻系統是否存在安全序列?

2、P1請求資源:P1發出請求向量Request(1,0,2),系統是否接受該請求?請使用銀行家算法檢查

3、P4請求資源:P4發出請求向量Request(3,3,0),系統按銀行家算法檢查.

4、P0請求資源:P0發出請求向量Request(0,2,0),系統按銀行家算法檢查.

      表1 T0時刻的資源分配表

  MAX Allocation Need Available
P0            7 5 3         0 1 0         7 4 3          3 3 2        
P1 3 2 2     2 0 0 1 2 2       
P2 9 0 2 3 0 2 6 0 0  
P3 2 2 2  2 1 1   0 1 1  
P4 4 3 3 0 0 2 4 3 1  

 

an:

  1、T0時刻系統是否存在安全序列?

    Available > Need1 ----> 可用資源分配給P1,直到P1進程執行完成,然后Available = Available + Allocation1 = (5,3,2)

           Available > Need3 -----> 可用資源分配給P3,直到P3進程執行完成,然后Available = Available + Allocation3 = (7,4,3)

    Available> Need4.....

        得到安全序列為:P1,P3,P4,P2,P0

  2、P1請求資源:P1發出請求向量Request(1,0,2),系統是否接受該請求?請使用銀行家算法檢查

   第一步(假分配檢查):把Request分配給P1,必須滿足Request要小於Available,Request要小於Need。

                       Request(1,0,2)< Available(3,3,2)

                       Request(1,0,2)< Need(1,2,2)

        因為滿足第一步檢查,進入第二層檢查(安全序列檢查)。

   第二步(安全序列檢查):建立安全性檢查表

  Work   Need Allocation   Work+Allocation   Finish
P1 2 3 0 0 2 0 3 0 2    
           
           
           
           

  如果 Work > Need ,那么執行Work+Allocation,得到:                

  Work   Need Allocation   Work+Allocation   Finish
P1   2 3 0 0 2 0     3 0 2  5 3 2  true
  5 3 2            
           
           
           

   找到Need<Work的進程,如果沒有找到這樣的進程而進程集合沒有執行,則算法返回,得到不存在安全序列結果,否則繼續執行該算法。

   這里我們找到了P3進程。修改安全序列檢查表:

  Work   Need Allocation   Work+Allocation   Finish
P1   2 3 0 0 2 0     3 0 2  5 3 2  true
P3 5 3 2     0 1 1   2 1 1  7 4 3  true
  7 4 3        
           
           

  這樣一直執行到所有的進程到完成,以完成該安全序列檢查表:

  Work   Need Allocation   Work+Allocation   Finish
P1   2 3 0 0 2 0     3 0 2  5 3 2  true
P3 5 3 2     0 1 1 2 1 1  7 4 3  true
P4 7 4 3 4 3 1 0 0 2  7 4 5  true
P0 7 4 5 7 4 3 0 1 0  7 5 5  true
P2 7 5 5 6 0 0 3 0 2 10 5 7  true

      這樣就找到了整個安全序列為:P1,P3,P4,P0,P2

    3、4小問也是同樣的解題過程。這里不贅述...

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM