银行家算法的模拟【实验报告】_银行家算法实验报告
银行家算法的模拟【实验报告】由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“银行家算法实验报告”。
实验二
银行家算法的模拟
专业:信息管理与信息系统 学号:2014****** 姓名:陈* 实验日期:2016年12月20日
一、实验目的银行家算法是一种最具有代表性的避免死锁的算法。
要解释银行家算法,必须先解释操作系统的安全状态和不安全状态。所谓安全状态,是指系统能按照某种进程顺序{P1,P2,…,Pn}(称{P1,P2,…,Pn }序列为安全序列),来为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可以顺利完成。安全状态一定没有死锁发生。
如果系统无法找到这样一个安全序列,则称系统处于不安全状态。那么,什么是安全序列呢?
如果对每一个进程Pi(1
利用银行家算法,我们可以来检测CPU为进程分配资源的情况,决定CPU是否响应某进程的的请求并为其分配资源,从而很好避免了死锁的产生。通过编写一个模拟动态资源分配的银行家算法程序,进一步深入理解死锁、产生死锁的必要条件、安全状态等重要概念,并掌握避免死锁的具体实施方法
二、实验要求
用高级语言编写和调试一个动态资源分配(银行家算法)的模拟程序,以加深对避免死锁算法的理解。
三、实验方法内容
1.算法设计思路(流程图)2.算法中用到的数据结构 最大需求矩阵Max[][] 已分配矩阵Allocation[][] 仍需求矩阵Need[][]=Max[][]-Allocation[][] 可利用资源向量Available[] 申请各类资源向量Request[] 工作向量 work[] , Finish[]
3.主要模块(函数名)
(1)int getRequest();获取用户输入的进程和对应请求的资源(2)int checkNeed(int no)检查用户的请求是否大于还需要的资源(3)int checkAvailable()检查用户的请求是否大于现有的可利用的资源(4)int isSafe(int proNo)安全性算法,检查预分配资源后系统是否安全(5)int Bank(int proNo)银行家算法
四、实验结果
1.执行结果
2.结果分析
(1)当输入的进程请求的资源超过该进程还需要的资源时,该请求不合法;(2)当输入的进程请求的资源大于系统当前可利用的资源时,该请求不合法,需等待;
(3)当输入的进程请求合法,且分配资源后系统处于安全状态,则分配资源给该进程;
(4)当输入的进程请求合法,但分配资源后系统处于不安求状态,则不分配资源,需等待;
五、实验总结
(1)通过此次试验,我对死锁、产生死锁的必要条件、安全状态灯概念有了进一步的了解;
(2)通过银行家算法的模拟,掌握了避免死锁的具体实施方法;