实验二银行家算法.docx

实验二银行家算法.docx

ID:57643559

大小:164.75 KB

页数:9页

时间:2020-08-29

实验二银行家算法.docx_第1页
实验二银行家算法.docx_第2页
实验二银行家算法.docx_第3页
实验二银行家算法.docx_第4页
实验二银行家算法.docx_第5页
资源描述:

《实验二银行家算法.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验二银行家算法一、目的:加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。要求编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用银行家算法,有效地防止和避免死锁的发生。二、内容:银行家算法是避免死锁的一种重要方法,本实验要求编写和调试一个简单的银行家算法程序。用银行家算法实现资源分配。三、编程思想:首先分析银行家算法的数据结构,分析可利用资源向量Available、最大需求矩阵Max、分配矩阵Allocation、需求矩阵Need、进程申请资源的关系,由所学知识可知;Need[i,j]=Max

2、[I,j]-Allocation[i,j];当进程申请资源的时候;a)Requesti>Need[i]。这种情况表示该进程的资源需求已超过系统所宣布的最大值,出错。b)Requesti=Need[i]。这种情况表示该进程现在对他所需的全部资源一次申请完成。c)Requesti〉Need[i]。这种情况表示该进程现在对它所需资源再进行部分的申请,剩余的资源以后再次申请。当进程pi发出资源请求后;a)如果Requesti<=Need[i],转向步骤b,否则显示为出错,因为所需的资源数超过事先要求的最大值。b)Requesti<=Available,便

3、转向步骤三,否则则表示尚无足够资源,pi需等待。c)假如系统将资源分配给pi则:Available=Available-RequestiAllocation[i]=Allocation[i]+RequestiNeed[i]=Need[i]-Request安全性算法检查(1)设置向量:工作向量Work,它表示系统可提供给进程继续运行所需的各类资源数目,在执行安全性算法开始时,Work[]=Available[]。Finish[],它表示系统是否有足够的资源分配给每个进程,使之运行完成。开始时先做Finish[i]=0;当有足够的资源分配给进程时,再

4、令Finish[i]=1。(2)在进程中查找符合以下条件的进程:条件1:Finish[i]=0;条件2:need[i][j]<=Work[j]若找到,则执行步骤(3)否则,执行步骤(4)(3)当进程获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:Work[j]=Work[j]+Allocation[i][j];Finish[i]=1;gotostep2;(4)最后循环检查是否所有的Finish[i]=1都满足,如果是,则返回1表示系统处于安全状态,否则,返回0表示系统处于不安全状态。一、运行结果五、出现的问题及相应的解决办法问

5、题相应的解决办法调试时一直显示工作空间定义错误在代码中我们输入的是一维数组,应该是二维数组调试时显示重复定义,本来是没什么错误的但两者放置在一起的话,会造成编译错误,去掉后一个“int”就可以运行成功调试时显示请求分配资源有错误在代码中另外增加安全性算法的程序,最后才出现如上面的结果。一、小结;通过本次实验基本理解了银行家算法实现资源分配和安全性检查模拟,对操作系统资源分配功能有了一定的了解,理解银行家算法的基本原理和实验方法,流程图可能画的有点不尽如人意,中间也曾一度想过放弃,但最后也可以说是尽力最大努力了,至少很锻炼人,很磨练人,有的时候动手

6、实践确实要比干枯的听讲好的多。输入AvaliableNeedRequestAllocation开始一、算法流程图重新输入noRequest[i]≤Need[i]yesno等待下一次Request[i]≤Available[i]Available=Available-Request[i]Allocation=Allocation+Request[i]Need[i]=Need[i]-Request[i]yesWork=AvaliabeFinish=falsenoFinish[i]=false&&Need[i]<=work[i]Finish=false

7、yesnoWork=work+AllocationyesNosafesafeFinish[i]=true一、C语言代码#include#defineN5//进程个数#defineM3//资源种类数voidprint();intcheck_safe();intcheck_distribution(int*p,intk);charprocessnema[N];//进程名intRequest[M];//请求向量intFinish[N];//标记某一个进程是否可以执行intWork[N][M];//初始为Available[][],随寻

8、找安全序列而变化,防止安全序列未找到而丢了初始状态的值intAvailable[M];//资源清单--系统中现有各资源空闲个数intWo

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。