计算机操作系统银行家算法实验报告材料

上传人:学**** 文档编号:196740684 上传时间:2021-09-22 格式:DOCX 页数:8 大小:106.64KB
返回 下载 相关 举报
计算机操作系统银行家算法实验报告材料_第1页
第1页 / 共8页
计算机操作系统银行家算法实验报告材料_第2页
第2页 / 共8页
计算机操作系统银行家算法实验报告材料_第3页
第3页 / 共8页
计算机操作系统银行家算法实验报告材料_第4页
第4页 / 共8页
计算机操作系统银行家算法实验报告材料_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《计算机操作系统银行家算法实验报告材料》由会员分享,可在线阅读,更多相关《计算机操作系统银行家算法实验报告材料(8页珍藏版)》请在金锄头文库上搜索。

1、精品word学习资料可编辑有用标准文案运算机操作系统试验报告一, 试验名称: 银行家算法二, 试验目的: 银行家算法是防止死锁的一种重要方法,通过编写一个简洁的银行家算法程序,加深明白有关资源申请,防止死锁等概念,并体会和明白死锁和防止死锁的具体实施方法;三, 问题分析与设计:1,算法思路:先对用户提出的请求进行合法性检查, 即检查请求是否大于需要的,是否大于可利用的;如请求合法,就进行 预支配,对支配后的状态调用安全性算法进行检查;如安全, 就支配;如担忧全,就拒绝申请,复原到原先的状态,拒绝申 请;2,银行家算法步骤: (1)假如 Requestior =Need,就转向步骤(2);否就,

2、认为出错,由于它所需要的资源数已超过它所宣布的最大值;(2) )假如 Requestor=Available, 就转向步骤( 3);否就,表示系统中尚无足够的资源,进程必需等待;(3) )系统摸索把要求的资源支配给进程Pi,并修改下面数据结构中的数值:Available=Available-Requesti;Allocation=Allocation+Request;文档大全名师归纳总结欢迎下载精品word学习资料可编辑有用标准文案Need=Need-Request;(4)系统执行安全性算法,检查此次资源支配后,系统是否处于安全状态;3,安全性算法步骤:(1)设置两个向量工作向量 Work ;

3、它表示系统可供应进程连续运行所需要的各类资源数目,执行安全算法开头时, Work=Allocation;布尔向量 Finish;它表示系统是否有足够的资源支配给进程,使之运行完成,开头时先做Finishi=false ,当有足够资源支配给进程时, 令 Finishi=true ;(2) )从进程集合中找到一个能中意下述条件的进程: Finishi=false Needor=Work如找到,执行步骤( 3);否就,执行步骤( 4);(3) )当进程 P 获得资源后,可顺当执行,直至完成,并释放出支配给它的资源,故应执行:Work=Work+Allocation;Finishi=true;转向步骤

4、( 2);文档大全名师归纳总结欢迎下载精品word学习资料可编辑有用标准文案(4) )假如全部进程的 Finishi=true, 就表示系统处于安全状态; 否就,系统处于担忧全状态;四. 程序源代码 :#include #define W 5/最大进程数 W=5 #define R 3/最大资源总数 =3int Available3;/可利用资源向量int Max53;/最大需求矩阵int Allocation53; /支配矩阵int Need53;/需求矩阵 int Request3;/进程请求向量void dispose()printf(请输入可利用资源向量Available(格式:a,b

5、,c)n); scanf(%d,%d,%d,&Available0,&Available1,&Available2);printf(请输入最大需求数 Max(格式:a,b,c)n); for(int j=0;j5;j+)printf(进程%d:n,j); scanf(%d,%d,%d,&Maxj0,&Maxj1,&Maxj2);printf(请输入支配数 Allocation(格式:a,b,c)n);文档大全名师归纳总结欢迎下载精品word学习资料可编辑有用标准文案for(j=0;j5;j+)printf(进程%dn,j);scanf(%d,%d,%d,&Allocationj0,&Alloc

6、ationj1,&Al locationj2);/输入 Max53,Available53,Allocation53 for(j=0;j5;j+)for(int i=0;i3;i+)Needji=Maxji-Allocationji;/求出 Need53main()printf(银行家算法n); dispose();printf(安全性检查 n);int Work3;/系统可供应进程连续运行所需的各类资源数char Finish5;/表示系统是否有足够的资源支配 for(int i=0;i5;i+)Finishi=f;for(int k=0;k3;k+) Workk=Availablek; i

7、nt q5;for(int x=0;x50;x+)printf(请输入一个序列 :n);文档大全名师归纳总结欢迎下载精品word学习资料可编辑有用标准文案scanf(%d,%d,%d,%d,%d,&q0,&q1,&q2,&q3,&q4); for(i=0;i5;i+)if(Needqi0=Work0)&(Needqi1=Work1)&(Needqi2=Work2)/比较 Needij与 Workjfor(k=0;k3;k+) Workk=Workk+Allocationqik; Finishi=t;if(Finish0=t)&(Finish1=t)&(Finish2=t)& &(Finish3

8、=t)&(Finish4=t)/通过 Finishi判定系统是否安全break; elseprintf(此序列不是安全序列,请重新输入一个序列.n);if(x=49)return 0;printf(这个系统安全 .n);文档大全名师归纳总结欢迎下载精品word学习资料可编辑有用标准文案int a;printf(请输入 Request 进程:n); scanf(%d,&a);printf(该进程 Request(a,b,c)n);scanf(%d,%d,%d,&Request0,&Request1,&Request2);/输入请求量 Request3if(Request0=Needa0)&(Re

9、quest1=Needa1)&(Req uest2=Needa2)/判定 Requesti=Needaiif(Request0=Needa0)&(Request0=Needa1)&( Request0=Needa2)/判定 Requesti=Availableaifor(int k=0;k3;k+)Availablek=Availablek-Requestk; Allocationak=Allocationak+Requestk;Needak=Needak-Requestk;/ 假如上述判定成功,就修改相应的Availablek,Allocationak,Needakprintf(资源支配成功 .n);elseprintf(资源支配失败 .n); return 0;文档大全名师归纳总结欢迎下载精品word学习资料可编辑有用标准文案elseprintf(资源支配失败 .n); return 0;程序截图:文档大全名师归纳总结欢迎下载精品word学习资料可编辑有用标准文案五.试验总结多个进程同时运行时,系统依据各类系统资源的最大需求和各类系统的剩余资源为进程支配安全序列,使得系统能快速且安全地运行进程,不至发生死锁;银行家算法是防止死锁的主要方法,其思路在很多方面都特殊值得我们来学习借鉴 ;文档大全名师归纳总结欢迎下载

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号