


已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.计算机操作系统实验报告一、实验名称: 银行家算法二、实验目的: 银行家算法是避免死锁的一种重要方法,通过编写一个简单的银行家算法程序,加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。三、问题分析与设计:1、算法思路 :先对用户提出的请求进行合法性检查,即检查请求是否大于需要的,是否大于可利用的。若请求合法,则进行预分配,对分配后的状态调用安全性算法进行检查。若安 全,则分配;若不安全,则拒绝申请,恢复到原来的状态,拒绝申请。2、银行家算法步骤: (1)如果 requestior =need,则转向步骤(2);否则,认为出错,因为它所需要的资源数已超过它所宣布的最大值。(2) )如果 requestor=available, 则转向步骤( 3);否则,表示系统中尚无足够的资源,进程必须等待。(3) )系统试探把要求的资源分配给进程pi,并修改下面数据结构中的数值:available=available-requesti; allocation=allocation+request;.need=need-request;(4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。3、安全性算法步骤:(1)设置两个向量工作向量 work 。它表示系统可提供进程继续运行所需要的各类资源数目,执行安全算法开始时,work=allocation;布尔向量 finish。它表示系统是否有足够的资源分配给进程,使之运行完成,开始时先做finishi=false ,当有足够资源分配给进程时,令 finishi=true 。(2) )从进程集合中找到一个能满足下述条件的进程: finishi=false needor=work如找到,执行步骤( 3);否则,执行步骤( 4)。(3) )当进程 p 获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:work=work+allocation; finishi=true;转向步骤( 2)。.(4) )如果所有进程的finishi=true, 则表示系统处于安全状态;否则,系统处于不安全状态。4、流程图:系统主要过程流程图银行家算法流程图安全性算法流程图四、实验代码:/#define m5/#define n3#include /本实验中使用到的库函数#include #include int max51;/开始定义银行家算法中需要用到的数据int allocation51; int need51;int available1; int request51; char *finish5; int safe5;int n,i,m; int k=0;.int j=0;int work1;int works51;void line()/美化程序,使程序运行时更加明朗美观printf(n);void start()/表示银行家算法开始line();printf(银行家算法开始n);printf(-死锁避免方法n); line();void end()/表示银行家算法结束line();printf(银行家算法结束,谢谢使用n); line();void input() /输入银行家算法起始各项数据for (n=0;n5;n+)printf(请输入进程p%d的相关信息:n,n); printf(max:);for (m=0;m1;m+)scanf(%d,&maxnm);printf(allocation:); for (m=0;m1;m+)scanf(%d,&allocationnm); for (m=0;m1;m+)neednm=maxnm-allocationnm;printf(请输入系统可利用资源数available:); for (m=0;m1;m+)scanf(%d,&availablem);void output() /输出系统现有资源情况line();printf(资源情况maxallocationneedavailablen); printf(进程aaaa n);line();for(n=0;n5;n+)printf(p%d%3d%3d%3d,n,maxn0,allocationn0,needn0); if (n=0)printf(%3d%3dn,available0);elseprintf(n);line();void change()/当 requesti,j=availablej时,系统把资源分配给进程 pi, availablej和 needi,j发生改变for (m=0;m1;m+)availablem-=requestim; allocationim+=requestim; needim-=requestim;void outputsafe()/输出安全序列的资源分配表printf(该安全序列的资源分配图如下:n); line();printf(资源情况workneedallocation work+allocation finishn);printf(进程aaaa n); line();for(n=0;n5;n+)printf(p%d%9d%3d%3d%5d%12sn,safen,workssafen0,needsaf en0,allocationsafen0,workssafen0+allocationsafen0,finishn);line();int check()/安全性算法printf(开始执行安全性算法n);for (m=0;m1;m+)/数 组 work 和 finish初始化workm=availablem; for (n=0;n5;n+)finishn=false; safen=0; k=0;for (m=0;m5;m+)for (n=0;n5;n+)if(strcmp(finishn,false)=0 & needn0=work0 )/查找可以分配资源但尚未分配到资源的进程safek=n; /以数组 safek记下各个进程得到分配的资源的顺序workssafek0=work0;work0+=allocationn0;/进程执行后释放出分配给它的资源finishn=ture; /finishn变为 1 以示该进程完成本次分k+;for (m=0;mp%d-p%d-p%d-p%d,系统是安全的n,safe0,safe1,safe2,safe3,safe4);j=1;outputsafe();/输出安全序列的资源分配表return 1;void main() /主程序开始start();for (;j=0;)/确认输入数据的正确性,若输入错误,重新输入input();printf(以下为进程资源情况,请确认其是否正确:n); output();printf(数据是否无误:n 正确:输入1n 错误:输入0n 请输入: );scanf(%d,&j);printf(数据确认无误,算法继续。n);if (check()=0)/若 check 函数返回值为0,表示输入的初始数据找不到安全序列,无法进行下一步,程序结束end();exit(0);for(;j=1;)/当有多个进程请求资源时,循环开始printf(请输入请求资源的进程i(0 、1、2、3、 4) : ); /输入发出请求向量的进程及请求向量scanf(%d,&i);printf(请输入进程p%d的请求向量request%d:,i,i); for(n=0;nneedi0;) /若请求向量大于需求资源,则认为是输入错误,要求重新输入printf(数据输入有误,请重试!n 请输入进程p%d的请求向量 request%d:,i,i);for(n=0;n1;n+)scanf(%d,&requestin);if(requesti0=available0) /判断系统是否有足够资源提供分配printf(系统正在为进程p%d分配资源n,i); change();/分配资源j=0;elseprintf(系统没有足够的资源,进程p%d需要等待。n,i);if (j=0)/j=0表示系统有足够资源分配的情况printf(当前系统资源情况如下:n); /输出分配资源后的系统资源分配情况output();if(check()=0)/若找不到安全系列,则之前的资源分配无效printf(本次资源分配作废,恢复原来的资源分配状态。 n);for (m=0;m1;m+)/恢复分配资源前的系统资源状态availablem+=requestim; allocationim-=requestim;needim+=requestim;output();/输出系统资源状态printf(是否还有进程请求资源?
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农发行益阳市桃江县2025秋招群面案例总结模板
- 农发行酒泉市瓜州县2025秋招笔试性格测试题专练及答案
- 农发行马鞍山市当涂县2025秋招数据分析师笔试题及答案
- 国家能源杭州市建德市2025秋招笔试综合知识题专练及答案
- 国家能源鸡西市梨树区2025秋招半结构化面试模拟30问及答案
- 分房协议书(15篇)
- 农村自建房屋买卖合同15篇
- 2025年安康市市本级就业见习岗位(458人)模拟试卷附答案详解(考试直接用)
- 巴彦淖尔市中石化2025秋招笔试模拟题含答案机械与动力工程岗
- 国家能源中山市2025秋招面试专业追问及参考化学工程岗位
- 中国企业供应链金融白皮书(2025)-清华五道口
- 医院常用消毒液的使用及配置方法
- 2022英威腾MH600交流伺服驱动说明书手册
- 分期支付欠薪协议书范本
- 2025年中国药典培训试题及答案
- Q-JJJ 9002-2025 铁路建设项目安全穿透式管理实施指南
- 2025年高校教师资格证之高等教育法规题库(综合题)
- 2025至2030中国数字PCR(dPCR)和实时PCR(qPCR)行业发展趋势分析与未来投资战略咨询研究报告
- 《海堤生态化设计技术指南(T-CHES 139-2024)》知识培训
- DB31/T 1013-2016城市轨道交通地下车站环境质量要求
- 2025-2030公务航空行业市场发展现状分析及竞争格局与投资价值研究报告
评论
0/150
提交评论