银行家算法
os银行家算法ABCDABCDp1p2p3p4
·
一 银行家算法作用: 动态防止进程死锁的算法
二 银行家算法步骤
第一步 判断是否存在一个安全序列,若存在一个安全序列则系统为安全的。
第二步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,值重复本题第二问步骤。
更多推荐
已为社区贡献1条内容
所有评论(0)