1、第 1 页 共 17 页 课程设计:课程设计:银行家算法设计银行家算法设计 目录目录 一.设计目的: 2 二.设计内容: 2 三设计过程 . 2 实现功能 . 2 添加功能 . 3 设计思路 . 3 算法和流程图 3 四操作界面截图及分析 . 5 五.设计总结: 8 附录:各程序主要函数及注释 9 设计的函数 12 check 检查安全性函数 .12 主函数 15 第 2 页 共 17 页 一.设计目的: 本设计的目的是通过编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的 条件,并采用适当的算法,有效地防止和避免死锁地发生。 二.设计内容: 编制银行家算法通用程序,并检测所给状态的
2、系统安全性。 设进程 I 提出请求 RequestN,则银行家算法按如下规则进行判断。 (1)如果 RequestNAvailable,则进程 i 进入等待资源状态,返回。 (3)假设进程 i 的申请已获批准,于是修改系统状态: Available=Available-Request Allocation=Allocation+Request Need=Need-Request (4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复 原状,进程等待。 第 4 页 共 17 页 2.2.安全性检查安全性检查 (1)设置两个工作向量 Work=Available;Finish
3、M=False 开始 输入数据 提出请求 Request Requestji; if(i=M)coutRequestj; 第 14 页 共 17 页 if(RequestjNEEDij) /若请求的资源数大于进程还需要 i类资源的资源量 j coutflag; / /主函数主函数 void main() /主函数 int i=0,j=0,p; coutM; coutN; coutALL_RESOURCEi; coutMAXij; if (MAXijALL_RESOURCEj) 第 16 页 共 17 页 coutALLOCATIONij; if (ALLOCATIONijMAXij) coutendl“占有资源超过了声明的最大资源,请重新输入“MAXij); /初始化资源数量, for (j=0;jN;j+) p=ALL_RESOURCEj; for (i=0;iM;i+) p=p-ALLOCATIONij;/减去已经被占据的资源 AVAILABLEj=p;/计算出剩余各类可利用资源总数 Availablej if(AVAILABLEj0) AVAILABLEj=0; for (i=0;iM;i+) for(j=0;jN;j+) 第 17 页 共 17 页 NEEDij=MAXij-ALLOCATIONij;/计算出剩余各进程还需要的各个资 源数 Needi