操作系统实验银行家算法C语言实现(共7页)

上传人:20022****wzdgj 文档编号:54410063 上传时间:2022-02-14 格式:DOCX 页数:7 大小:219.63KB
收藏 版权申诉 举报 下载
操作系统实验银行家算法C语言实现(共7页)_第1页
第1页 / 共7页
操作系统实验银行家算法C语言实现(共7页)_第2页
第2页 / 共7页
操作系统实验银行家算法C语言实现(共7页)_第3页
第3页 / 共7页
资源描述:

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

1、精选优质文档-倾情为你奉上#include#include#include#define a 10#define b 10 /*银行家算法中的数据结构*int Availablea; /.各资源可利用的数量int Maxbb; /.各进程对各类资源的最大需求数int Allocationbb; /.各进程当前已分配的资源数量int Needbb; /.尚需多少资源/*int Requesta; /.申请多少资源int Worka; /.工作向量,表示系统可提供给进程继续运行所需的各类资源数量int Finishb; /.表示系统是否有足够的资源分配给进程,1为是/*函数声明*void init

2、();/.创建进程,资源种类与分配等,初始化函数int banker();/.银行家分配算法 void safe(); /.判断算法的安全性/*/*过程中定义的全局变量*int i,j,x,y,l,counter=0;int p; /记录是哪个进程正在申请资源int qb; /存储安全序列/*/*创建进程*void init()/初始化 printf(输入当前进程量:n); scanf(%d,&x);printf(输入资源的种类数目:n); scanf(%d,&y);printf(*输入各种资源当前可用的数量*n);for( i=0;iy;i+)printf(请输入资源%d的资源可利用量n,i

3、);scanf(%d,&Availablei);Worki=Availablei; /初始化Worki,它的初始值就是当前可用的资源数printf(请输入每个进程申请到的资源n);for( j=0;jx;j+)for(i=0;iy;i+)printf(请输入进程%d的申请到的资源%d:n,j,i);scanf(%d,&Allocationji);Finishj=0;/初始化Finishjprintf(请输入每个进程需要的最大的资源数目:n);for(j=0;jx;j+)for(i=0;i=Allocationji) /根据 需求量=需要最大资源数目-已分配数目,计算需求量need Needji

4、=Maxji-Allocationji; else Needji=0;/资源充足,不需要再申请printf(初始化完成n);/安全性算法函数void safe() l=0; for (j=0; jy;j+) if (Finishj=0) /逐个查找Finishj=0的进程 条件一 counter=0; /记数器for (i=0; i=Needji) counter=counter+1;/可用大于需求,记数 if(counter=x) /i进程的每类资源都符合Worki=Needji 条件二 ql=j; /存储安全序列Finishj=1; /i进程标志为可分配for (i=0; ix;i+) W

5、orki=Worki+Allocationji; /释放资源l=l+1; /记数,现在有L个进程是安全的,当L=N时说明满足安全序列 j= -1; /从第一个进程开始继续寻找满足条件一二的进程 /*银行家算法* int banker()/.银行家分配算法 printf(请输入请求资源的进程n); scanf(%d,&p); printf(n请输入此进程请求各种资源的个数n); for(i=0;iNeedpi)/申请量不能超过需求量printf(申请量超过需求量出错;!请重新输入!n);else if(RequestiAvailablei) printf(资源不充足,目前可用资源只有%d,进程要

6、等待!,Availablei); Finishp=0; /该进程等待return 0; while(RequestiNeedpi|RequestiAvailablei); for (i=0; ix; i+) Availablei=Availablei-Requesti;Allocationpi=Allocationpi+Requesti;Needpi=Needpi-Requesti;Worki=Availablei; /改变Avilable、Allocation、Need的值 /判断银行家算法的安全性if(lx) l=0;printf(试分配不成功,不与分配,恢复原状态!); for (i=0

7、; ix; i+) Availablei = Availablei+Requesti; Allocationpi = Allocationpi-Requesti; Needpi = Needpi+Requesti; Worki = Availablei; for (j=0; jy; j+) Finishj=0; /进程置为未分配状态else l=0; printf(n申请资源成功!n);for(i=0;ix;i+) if(Needpi=0); else /有一种资源还没全部申请到,该进程还处于就绪态 l=1; /判断标志 break; if(l!=1) /进程可以执行,释放该进程的所有资源 f

8、or (i=0;ix;i+) Availablei=Availablei+Allocationpi; Allocationpi=0; printf(有需求资源,执行后将释放其所有拥有资源!); l=0; /归零printf(安全序列为:n); printf(进程%d,q0); /输出安全序列,考虑显示格式,先输出第一个 Finish0=0; for (i=1; iy; i+) printf( 进程%d,qi); Finishi=0; /重新将所有进程置为未分配状态 printf( nnn); return 0; void main()printf(n*n);printf(n 银行家算法模拟 n);printf(n*n);init();/safe(); /判断当前状态的安全性if(ly)printf(找不到安全序列,拒绝申请n);else int m;printf(当前序列是安全的,安全序列为:n);printf(进程%dn,q0);Finishm=0;for(m=1;mx;m+)printf(进程%dnn,qm);Finishm=0;banker(); /调用银行家算法函数专心-专注-专业

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