银行家算法
一? 銀行家算法作用: 動態防止進程死鎖的算法
二? 銀行家算法步驟
第一步 判斷是否存在一個安全序列,若存在一個安全序列則系統為安全的。
第二步1請求資源 判斷 Request <= Need Request <= Available
第三步 假定可以分配資源 并修改 Available Allocation Need
第四步 再利用安全性算法檢查此刻系統是否安全 并且得出一個安全序列,若得出來一個安全序列則系統是安全的,可以將申請的資源分配給它。
三 例題
?(1)
| MAX | ALL | NEED | ||||||||||
| p1 | 0 | 0 | 1 | 2 | 0 | 0 | 1 | 2 | 0 | 0 | 0 | 0 | 
| p2 | 1 | 7 | 5 | 0 | 1 | 0 | 0 | 0 | 0 | 7 | 5 | 0 | 
| p3 | 2 | 3 | 5 | 6 | 1 | 3 | 5 | 4 | 1 | 0 | 0 | 2 | 
| p4 | 0 | 6 | 5 | 2 | 0 | 6 | 3 | 2 | 0 | 0 | 2 | 0 | 
| p5 | 0 | 6 | 5 | 6 | 0 | 0 | 1 | 4 | 0 | 5 | 4 | 0 | 
Available:A 1 B 5 C 2 D 0? 剩余 1,5,2,0
(2)判斷Need<Available
| Work | All | Need | Work+All | Y/N | ||||||||||||
| (p1)1 | 5 | 2 | 0 | 0 | 0 | 1 | 2 | 0 | 0 | 0 | 0 | 1 | 5 | 3 | 2 | Y | 
| (p4)1 | 5 | 3 | 2 | 0 | 6 | 3 | 2 | 0 | 0 | 2 | 0 | 1 | 11 | 6 | 4 | Y | 
| (p2)1 | 11 | 6 | 4 | 1 | 4 | 2 | 0 | 0 | 7 | 5 | 0 | 2 | 11 | 6 | 4 | Y | 
| (p3)2 | 11 | 6 | 4 | 1 | 3 | 5 | 4 | 1 | 0 | 0 | 2 | 3 | 14 | 11 | 8 | Y | 
| (p5)3 | 14 | 11 | 8 | 0 | 0 | 1 | 4 | 0 | 5 | 4 | 0 | 3 | 14 | 12 | 12 | Y | 
存在安全序列 p1 p4 p2?p3 p5
(3)??
Available : 1,1 ,0,0
| Work | All | Need | Work+All | Y/N | ||||||||||||
| (p1)1 | 5 | 2 | 0 | 0 | 0 | 1 | 2 | 0 | 0 | 0 | 0 | 1 | 5 | 3 | 2 | Y | 
| (p4)1 | 5 | 3 | 2 | 0 | 6 | 3 | 2 | 0 | 0 | 2 | 0 | 1 | 11 | 6 | 4 | Y | 
| (p2)1 | 11 | 6 | 4 | 1 | 4 | 2 | 0 | 0 | 3 | 3 | 0 | 2 | 15 | 8 | 4 | N | 
| (p3) | ||||||||||||||||
| (p5) | 
系統不能滿足他的請求
四 : 本題思路:若能列出一個進程運行序列 則為安全。
第1問??列出表格?寫出Max(最大需求量) All(占有) Need(需求)。
第2問
第一步? 列出第二個表格 Work(正在運行的進程) All(占有)Need (需求) W+A(結束進程后釋放的) 。
第二步 判斷?Need與Available大小關系,若Need<Available則可以進行下一步 以此內推找出可以完整進行下去的進程序列。?
第3問? ? ?第一步 先判斷Requester跟 Need ,Available關系? ?若R<=Available并且R<=Need? 進行下一步。
第二步 變換新建表格中的?Need, All,值重復本題第二問步驟。
總結
 
                            
                        - 上一篇: 【ASP.NET】swfuplod图片上
- 下一篇: Viterbi算法(维特比算法)
