《银行家算法的模拟实现》—实验报告

《银行家算法的模拟实现》—实验报告

ID:47765634

大小:175.06 KB

页数:13页

时间:2019-11-11

《银行家算法的模拟实现》—实验报告_第1页
《银行家算法的模拟实现》—实验报告_第2页
《银行家算法的模拟实现》—实验报告_第3页
《银行家算法的模拟实现》—实验报告_第4页
《银行家算法的模拟实现》—实验报告_第5页
《银行家算法的模拟实现》—实验报告_第6页
《银行家算法的模拟实现》—实验报告_第7页
《银行家算法的模拟实现》—实验报告_第8页
《银行家算法的模拟实现》—实验报告_第9页
《银行家算法的模拟实现》—实验报告_第10页
资源描述:

《《银行家算法的模拟实现》—实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《银行家算法的模拟实现》--实验报告题目:银行家算法的模拟实现专业:班级:组员:指导老师:一、实验目的死锁会引起计算机工作僵死,因此操作系统中必须防止。本实验的目的在于让学生独立的使用高级语言编写和调试一个系统动态分配资源的简单模拟程序,了解死锁产生的条件和原因,并采用银行家算法有效地防止死锁的发生,以加深对课堂上所讲授的知识的理解。二、实验内容模拟实现银行家算法实现死锁避免。要求:初始数据(如系统在T0时刻的资源分配情况、每一种资源的总数量)从文本文件读入,文件中给出最大需求矩阵Max、分配矩阵Allocation,在程序中求得需求矩阵Need和

2、可利用资源向量Available。三、实验分析过程1、整个银行家算法的思路。先对用户提出的请求进行合法性检查,再进行预分配,利用安全性检查算法进行安全性检查。1)进程一开始向系统提出最大需求量. 2)进程每次提出新的需求(分期贷款)都统计是否超出它事先提出的最大需求量. 3)若正常,则判断该进程所需剩余剩余量(包括本次申请)是否超出系统所掌握的 剩余资源量,若不超出,则分配,否则等待2、算法用到的主要数据结构和C语言说明。(1)、可利用资源向量INTAVAILABLE[M]M为资源的类型。(2)、最大需求矩阵INTMAX[N][M]N为进程的数量。

3、(3)、已分配矩阵INTALLOCATION[N][M](4)、还需求矩阵INTNEED[N][N](5)、申请各类资源数量intRequest[x];//(6)、工作向量intWork[x];(7)、intFinish[y];//表示系统是否有足够的资源分配给进程,0为否,非0为是3、银行家算法(主程序)(1)、系统初始化。输入进程数量,资源种类,各进程已分配、还需求各资源数量,各资源可用数量等(2)、输入用户的请求三元组(I,J,K),为进程I申请K个J类资源。(3)、检查用户的请求是否小于还需求的数量,条件是K<=NEED[I,J]。如果条件

4、不符则提示重新输入,即不允许索取大于需求量(4)、检查用户的请求是否小于系统中的可利用资源数量,条件是K<=AVALIABLE[I,J]。如果条件不符则申请失败,阻塞该进程,重新进行进程动态资源申请(使用goto语句)(5)、进行资源的预分配,语句如下:AVALIBLE[I][J]=AVALIBLE[I][J]-K;ALLOCATION[I][J]=ALLOCATION[I][J]+K;NEED[I][J]=NEED[I][J]-K;(6)、系统调用安全性检查算法(checksafe()函数)进行检查,如果检查通过,则不用回收,否则进行回收,进程资

5、源申请失败进入等待。4、安全性检查算法(checksafe()子函数)(1)、设置两个临时变量。FINISH[N]记录进程模拟执行的结束状态,初值为0,如果可以模拟执行结束,则可设为1,也可设为其它非零值以表示执行的先后次序。WORK[M]记录模拟执行中资源的回收情况,初值为AVAILABLE[M]的值。(2)、在进程中查找符合以下条件的进程。条件1:FINISH[I]=0条件2:NEED[I][J]〈=WORK[J](3)、如果查找成功则进行资源的模拟回收,语句如下:WORK[J]=WORK[J]+ALLOCATION[I][J];FINISH[

6、I]=1或查找到的顺序号(4)、如果查找不成功,则检查所有进程的FINISH[],如果有一个为0,则系统不为0,返回不成功标志。否则返回成功标志。四、系统流程图开始输入资源数m,及各类资源总数,初始化Available向量输入进程数n,i=1输入进程i的最大需求向量max。i≤nmax≤资源总数提示错误重新输入i加1任选一个进程作为当前进程输入该进程的资源请求量Request调用银行家算法,及安全性算法,完成分配,或并给出提示该进程的Need向量为0该进程已运行结束Need矩阵为0所有进程运行都结束结束NYYNNY初始化need矩阵NY五、程序源代

7、码#include#include#includeconstunsignedshortc=3;//资源类数constunsignedshortt=5;//进程数voidprint();//用于打印输出表格的函数voidinput();//用于输入的函数voidtryfenpei(inti);//试分配函数;voidrefenpei(inti);//恢复数据函数voidchecksafe(ints);//安全检测函数inttemp[t];intwork[c];//定义初始化数组intnee

8、d[t][c],request[c],available[c];intmax[t][c]={3,5,7,9,11,6,8,

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

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

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