操作系统试验报告C语言实现银行家算法

上传人:痛*** 文档编号:135531448 上传时间:2022-08-15 格式:DOC 页数:25 大小:586.50KB
收藏 版权申诉 举报 下载
操作系统试验报告C语言实现银行家算法_第1页
第1页 / 共25页
操作系统试验报告C语言实现银行家算法_第2页
第2页 / 共25页
操作系统试验报告C语言实现银行家算法_第3页
第3页 / 共25页
资源描述:

《操作系统试验报告C语言实现银行家算法》由会员分享,可在线阅读,更多相关《操作系统试验报告C语言实现银行家算法(25页珍藏版)》请在装配图网上搜索。

1、WORD格式整理版实验报告题目名称C语言实现银行家算法院系信息科学与工程 学院班级完成时间指导老师本次实验 成绩组长联系电话邮件地址qq/com组员(姓名,学号)主要任务程序算法的编写、实现、运行调试组员(姓名,学号)主要任务实验报告的完成组员(姓名,学号)主要任务实验报告的完成组员(姓名,学号)银行家算法原理:主 要 原 理 及 所 参 考 的 资 料(我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。为保证资金的安全,银行家规定:(1)当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客 ;包括 实 验

2、 内 容 及 条 件 )(2) 顾客可以分期贷款,但贷款的总数不能超过最大需求量;(3) 当银行家现有的资金不能满足顾客尚需的贷款数额 时,对顾客的贷款可推迟支付 ,但总能使顾客在有限的时间里 得到贷款;(4) 当顾客得到所需的全部资金后,一定能在有限的时间里归还所有的资金操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时, 要测试该进程对资源的最大需求量,如果系 统现存的资源可以满足它的最大需求量则按当前的申请量分 配资源,否则就推迟分配。当进程在执行中继续申请资源时, 先测试该进程本次申请的资源数是否超过了该资源所剩余的 总量。若超过则拒绝分配资源,若能满足则按当前的申请量分

3、配资源,否则也要推迟分配。主要参考书:计算机操作系统第三版西安电子科技大学出版社汤子瀛主编算法流程图:附录1 -银行家算法流程图主 要 算 法附录2 -安全性算法流程图流 程 图 和 具/、 体 实 验 步 骤主 要 算 法 流 程 图 和 具/、 体 实 验 步 骤实验步骤:一银行家算法进程i发出请求资源申请, 如果Request j=needi,j, 转向步骤(2),否则认为出错, 因为他所需要的资源数已经超过它所宣布的最大值。如果:Request ijv=availablei,j,转向步骤(3),否则表示尚无足够资源,进程i需等待。(3) 若以上两个条件都满足,则系统试探着将资源分配给申

4、请的进程,并修改下面数据结构中的数值:Availablei,j= Availablei,j- Request j;Allocatio nij= Allocatio n ij+ Request j;needij= n eedij- Request j;(4) 试分配后,执行安全性检查,调用check()函数检查此次资源分配后系统是否处于安全状态。若安全,才正式将资源分配给进 程;否则本次试探分配作废,恢复原来的资源分配状态,让该进程等待。 用dowhile循环语句实现输入字符y/n判断是否继续进行 资源申请。二.安全性检查算法(check()函数)(1)设置两个向量:程序源代码及 调试结果附录3

5、 -程序源代码附录4 -程序运行调试结果实 验 心 得本次实验我负责程序的编写方面,虽然基础一般,但是我仍 然坚持花了三天的时间终于把程序拿下,这是让自己很欣慰的事, 本次实验不仅让我对银行家算法有了更深入的理解,并且还让我 的编程能力得到了较大提高,希望能有更多这样的机会,借此较 好的锻炼自己,从而更好的掌握和运用自己的专业知识,提高能 力水平。本次实验相对于 c基础并不好的我有一定的难度,所以我在程序方面所做的较少。而对银行家算法了解的比较透彻,在程序设计的原理和流程 图方面做的工作较多,本次实验我学到的东西好多,也知道自己在很多方 面的不足,虽然我给自己的发展方向定位为硬件方向,但是对C

6、语言还是要进一步的学习。优质.参考.资料附录2安全性算法流程图调用结束附录3程序源代码:#i nclude #i nclude #in elude vconi o.h# defi ne m 50int no1; /进程数int no2; /资源数int r;int allocati on mm, needmm,availablem,maxmm;定义全局变量char n ame1m, name2m;/void mai n()void check();void prin t();int i,j,p=O,q=O;char c;int requestm,allocati on 1mm, need1mm

7、,available1m;printf(*n);prin tf(*银行家算法的设计与实现*n);printf(*printf(请输入进程总数:n);sea nf(%d,&n o1);printf(请输入资源种类数:n);sca nf(%d,&no 2);printf(”请输入 Max矩阵:n);for(i=0;i n o1;i+)for(j=0;j no 2;j+)scanf(%d,&maxij); /输入已知进程最大资源需求量printf(请输入 Allocation矩阵:n);for(i=0;i n o1;i+)for(j=0;j no 2;j+)scan f(%d,&allocatio

8、n ij); for(i=0;i n o1;i+)for(j=0;j no 2;j+)needij=maxij-allocationij; /算出need矩阵的值输入已知的进程已分配的资源数根据输入的两个数组计printf(”请输入 Available 矩阵 n);for(i=0;i no 2;i+)scan f(%d,&availablei);/输入已知的可用资源数prin t(); /输出已知条件check(); /检测T0时刻已知条件的安全状态if(r=1) /如果安全则执行以下代码doq=0;p=0;printf(n请输入请求资源的进程号(04) : n);for(j=0;j=n o1

9、)printf(输入错误,请重新输入:n);con ti nue;else break;prin tf(n请输入该进程所请求的资源数requestj:n);for(j=0;jv no 2;j+)sca nf(%d,&requestj);for(j=0;jn eedij) p=1;/判断请求是否超过该进程所需要的资源数if(p)printf(请求资源超过该进程资源需求量,请求失败! n);elsefor(j=0;javailablej) q=1;/判断请求是否超过可用资源数if(q)请求满足条件printf(没有做够的资源分配,请求失败!n);else/for(j=0;j no 2;j+)ava

10、ilable1j=availablej;allocati on 1ij=allocatio nij;n eed1ij=needij;/保存原已分配的资源数,仍需要的资源数和可用的资源数availablej=availablej-requestj;allocatio nij+=requestj;n eedij=n eedij-requestj;/系统尝试把资源分配给请求的进程prin t();check(); / 检测分配后的安全性if(r=o)/ 如果分配后系统不安全for(j=0;j no 2;j+)availablej=available1j;allocatio n ij=allocati

11、 on 1ij;n eedij=need1ij;/还原已分配的资源数,仍需要的资源数和可用的资源数printf(返回分配前资源数n);prin t();prin tf(n你还要继续分配吗? Y or N ?n);/判断是否继续进行资源分配c=getche();while(c=y|c=Y);void check() / 安全算法函数int k,f,v=O,i,j;int workm,am;bool fini shm;r=1;for(i=0;i n o1;i+)fini shi=false; /初始化进程均没得到足够资源数并完成for(i=0;i no 2;i+)worki=availablei;

12、/worki表示可提供进程继续运行的各类资源数k=no1;dofor(i=0;i n o1;i+)if(fini shi=false)f=1;for(j=0;jworkj)f=0;if(f=1)/找到还没有完成且需求数小于可提供进程继续运行的资源数的进程fini shi=true;av+=i; /记录安全序列号for(j=0;j0);f=1;for(i=0;i no1;i+)II判断是否所有的进程都完成if(fin ishi=false)f=0;break;if(f=0)/若有进程没完成,则为不安全状态printf(系统处在不安全状态!);r=0;elseprin tf(n系统当前为安全状态,

13、安全序列为:n);for(i=0;i n o1;i+)prin tf(p%d ,ai); /输出安全序列void prin t() / 输出函数int i,j;prin tf(n);prin tf(*止匕时刻资源分配情况*n);printf(进程名/号| Max |Allocatio n | Need |n);for (i = 0; i n o1; i+)printf( p%d/%d ,i,i);for (j = 0; j no 2; j+)pri ntf(%d ,maxij);for (j = 0; j no 2; j+)pri ntf( %d ,allocati on ij);for (j

14、 = 0; j no 2; j+)pri ntf( %d ,n eedij);prin tf(n);prin tf(n);printf(各类资源可利用的资源数为:);for (j = 0; j 1丄|1匕家J杲 守酉己,|青了兄WEitli K KMilt UMi JC K WWlOtJf逬程名/号:- Trw m -MaxB.L- m rr-;Allocation !Needp0/075301 0743pl/132 23 2020p2/2?0 23 2600p3/322 221 1011p4/44330 243直各类资源可利用的资源数为:2 3 0 你还要继续分配吗? oi* N ?nPress an key to con七:inuE

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!