银行家算法
2017-04-02 15:17:04 0 举报
银行家算法是一种避免系统发生死锁的资源分配策略。它假设操作系统有足够的资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。
作者其他创作
大纲/内容
同意分配请求
请求被拒绝
true
available[i]-=request[i];可获取减少allocation[i]+=request[i];已分配增加need[i]-=request[i]需要的减少
false
所有进程finish=true
work=available;finish=false;
work+=allocation[i];finish[i]=true
request[i]available[i]请求的小于可获取
安全性算法结束
available[i]+=request[i];可获取加回allocation[i]-=request[i];已分配回滚need[i]+=request[i]需要的加回
银行家算法开始
初始化init()
系统不安全
退出程序
need[i]=work&&finish[i]==false
error
银行家算法结束
安全性算法safe()开始
提出请求request[i]
request[i]=need[i]请求的小于需求
安全输出序列
是否再次分配
safe();
0 条评论
下一页