银⾏家算法
在避免[死锁]的⽅法中,所施加的限制条件较弱,有可能获得令⼈满意的系统性能。在该⽅法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可以避免发⽣[死锁]。
银⾏家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。它是最具有 代表性的避免[死锁]的算法。
设进程cusneed提出请求REQUEST [i],则银⾏家算法按如下规则进⾏判断。
(1)如果REQUEST [cusneed] [i]<= NEED[cusneed][i],则转(2);否则,出错。
(2)如果REQUEST [cusneed] [i]<= AVAILABLE[i],则转(3);否则,等待。
(3)系统试探分配资源,修改相关数据:
AVAILABLE[i]-=REQUEST[cusneed][i]; ALLOCATION[cusneed][i]+=REQUEST[cusneed][i];
NEED[cusneed][i]-=REQUEST[cusneed][i];
(4)系统执⾏安全性检查,如安全,则分配成⽴;否则试探险性分配作废,系统恢复原状,进 程等待。
Last updated