算法的实现
一、初始化
由用户输入数据,分别对可利用资源向量矩阵 AVAILABLE、最大需求
矩阵 MAX、分配矩阵 ALLOCATION、需求矩阵 NEED 赋值。
二、银行家算法
在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系
统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统
始终都处于安全状态,便可以避免发生死锁。
银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分
配。它是最具有代表性的避免死锁的算法。
设进程 cusneed 提出请求 REQUEST [i],则银行家算法按如下规则进行
判断。
(1)如果 REQUEST [cusneed] [i]<= NEED[cusneed][i],则转(2);否
则,出错。
(2)如果 REQUEST [cusneed] [i]<= AVAILABLE[cusneed][i],则转
(3);否则,出错。
(3)系统试探分配资源,修改相关数据:
AVAILABLE[i]-=REQUEST[cusneed][i];
ALLOCATION[cusneed][i]+=REQUEST[cusneed][i];
NEED[cusneed][i]-=REQUEST[cusneed][i];
(4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,
系统恢复原状,进程等待。