操作系统实验银行家算法C语言实现.docx

上传人:豆**** 文档编号:28519577 上传时间:2022-07-28 格式:DOCX 页数:4 大小:13.48KB
返回 下载 相关 举报
操作系统实验银行家算法C语言实现.docx_第1页
第1页 / 共4页
操作系统实验银行家算法C语言实现.docx_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《操作系统实验银行家算法C语言实现.docx》由会员分享,可在线阅读,更多相关《操作系统实验银行家算法C语言实现.docx(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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为是/*函数声明*

2、void init();/.创建进程,资源种类与分配等,初始化函数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的资源可利用

3、量n,i);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 Ne

4、edji=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+

5、) Worki=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=

7、0; 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) /进程可以执行,释放该进程的所有资源

8、for (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(); /调用银行家算法函数【精品文档】第 4 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁