银行家算法课程实习报告.docx

银行家算法课程实习报告.docx

ID:53827230

大小:55.25 KB

页数:6页

时间:2020-04-08

银行家算法课程实习报告.docx_第1页
银行家算法课程实习报告.docx_第2页
银行家算法课程实习报告.docx_第3页
银行家算法课程实习报告.docx_第4页
银行家算法课程实习报告.docx_第5页
资源描述:

《银行家算法课程实习报告.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实习题目:银行家算法设计实现【需求规格说明】对I/O系统的死锁资源的问题的解决主要的方法是银行家算法,单种资源的银行家算法和多种资源的银行家算法的解决思路一致,要求设计实现多种银行家算法,并要求所涉及的模型最少更够满足如下要求:(1)程序能够根据进程的请求进行判断,给出系统是否安全的的提示,如果安全,要求能够显示一组进程执行的安全序列;(2)能够根据需要,显示当前系统中各种资源的分配情况;【算法设计】(1)设计思想:1.首先初始化多总资源的总量All[n],及多个进程所需的这些资源的总量Max[i][j],和当前已分配的资源数Allocation[i][j],并得到这些进程还需资源量Need[

2、i][j],以及每种资源的剩余量Avaliable[n]等。2.检查一个状态是否安全:查找每个进程中未被满足的资源数是否小于或等于Avaliable[j],若是,则apply++。当该进程所有资源都被检查完后,若apply==资源种类,说明它可以获得所需的所有资源并运行结果,并将该进程的finish[i]=true,表示改进程运行完,在将该进程获得的资源加到Avaliable上,表示为目前可用资源数。最后将i=-1,表示重新执行上诉步骤,直到所有进程都被标记为结束。若apply!=资源种类,说明它不能获得所需的资源,不能运行,则坚持下一个进程。并重新执行上诉步骤,直到所有进程都被标记为结束,或

3、发生死锁,即找不到满足的进程。若所有进程都被标记为结束,则表示该状态是安全的;若发生死锁,则说明该状态不安全。(2)设计表示:下图为银行家算法中判断某一状态是否为安全的算法模块结构图:否是否是IsSafe()for循环判断每个进程是否能分配仍需的每种资源判断每个进程是否都标记结束该状态为安全,则输出安全的进程执行序列该状态不安全,发生死锁将该进程标记为运行结束,并将其资源释放出去该进程不能得到所需的所有资源,判断下一个进程(3)详细设计表示:下图为IsSave()函数主要的算法流程图:是是是是i

4、aliable[j]lse Apply=0; apply==NAvaliable[m]=Avaliable[m]+Allocation[i][m];Finish[i]=True;否I

5、源释放出来。当这些完成后,需要注意将i=-1,因为此时要重新查找每一个进程,而不是简单的执行下一个循环(会出现问题)。整个代码都将数组的大小暂定为100,因为一般资源及进程都不会超过100,且不能太大和太小。【用户手册】由于只是简单的win32程序,加ctrl+F5即可运行。其中需要按照提示输入资源种类、每种资源的最大数量、进程数量、及每个进程需要各种资源的总量、和已分配的资源数量,由这些数据进行初始化变量,继而调用showdata()可以显示资源总量、当前每种资源的剩余量、及每个进程所需每种资源的总量的矩阵、已分配每种资源的数量的矩阵、和每个进程还需的每种资源量的矩阵。最后调用IsSave(

6、)来判断该状态是否处于安全状态。【附录】主要代码实现:判断该状态是否为安全状态IsSave():intIsSafe()//安全性算法{inti,j,k=0,m,apply,Finish[100]={0};for(i=0;i

7、种资源都能被满足,则该进程被执行for(m=0;m

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

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

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