版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include <stdio.h> /本实验中使用到的库函数#include <stdlib.h>#include <string.h>int max53; /开始定义银行家算法中需要用到的数据int allocation53;int need53;int available3;int request53;char *finish5;int safe5;int n,i,m;int k=0;int j=0;int work3;int works53;void line() /美化程序,使程序运行时更加明朗美观printf("-n");vo
2、id start() /表示银行家算法开始line();printf(" 银行家算法模拟n");line();void end() /表示银行家算法结束line();printf(" 银行家算法模拟结束,谢谢使用n");line();void input() /输入银行家算法起始各项数据for (n=0;n<5;n+)printf("请输入进程P%d的相关信息:n",n);printf("Max:");for (m=0;m<3;m+)scanf("%d",&maxnm);pr
3、intf("Allocation:");for (m=0;m<3;m+)scanf("%d",&allocationnm);for (m=0;m<3;m+)neednm=maxnm-allocationnm;printf("请输入系统可利用资源数Available:");for (m=0;m<3;m+)scanf("%d",&availablem);void output() /输出系统现有资源情况line();printf("资源情况 Max Allocation Ne
4、ed Availablen");printf("进程 A B C A B C A B C A B Cn");line();for(n=0;n<5;n+)printf("P%d%9d%3d%3d%5d%3d%3d%6d%3d%3d",n,maxn0,maxn1,maxn2,allocationn0,allocationn1,allocationn2,needn0,needn1,needn2);if (n=0)printf("%6d%3d%3dn",available0,available1,available2);els
5、eprintf("n");line();void change() /当Requesti,j<=Availablej时,系统把资源分配给进程Pi,Availablej和Needi,j发生改变for (m=0;m<3;m+)availablem-=requestim;allocationim+=requestim;needim-=requestim;void outputsafe() /输出安全序列的资源分配表printf("该安全序列的资源分配图如下:n");line();printf("资源情况 Work Need Allocat
6、ion Work+Allocation Finishn");printf("进程 A B C A B C A B C A B Cn");line();for(n=0;n<5;n+)printf("P%d%9d%3d%3d%5d%3d%3d%5d%3d%3d%6d%3d%3d%12sn",safen,workssafen0,workssafen1,workssafen2,needsafen0,needsafen1,needsafen2,allocationsafen0,allocationsafen1,allocationsafen2,wo
7、rkssafen0+allocationsafen0,workssafen1+allocationsafen1,workssafen2+allocationsafen2,finishn);line();int check() /安全性算法printf("开始执行安全性算法n");for (m=0;m<3;m+) /数组work和finish初始化workm=availablem;for (n=0;n<5;n+)finishn="false"safen=0;k=0;for (m=0;m<5;m+)for (n=0;n<5;n+)if
8、(strcmp(finishn,"false")=0 && needn0<=work0 && needn1<=work1 && needn2<=work2) /查找可以分配资源但尚未分配到资源的进程safek=n; /以数组safek记下各个进程得到分配的资源的顺序workssafek0=work0;workssafek1=work1;workssafek2=work2;work0+=allocationn0; /进程执行后释放出分配给它的资源work1+=allocationn1;work2+=alloca
9、tionn2;finishn="ture" /finishn变为1以示该进程完成本次分k+;for (m=0;m<5;m+) /判断是否所有进程分配资源完成if (strcmp(finishm,"false")=0)printf("找不到安全序列,系统处于不安全状态。n");return 0; /找不到安全序列,结束check函数,返回0else if (m=4) /此处m=4表示所有数组finish的所有元素都为tureprintf("找到安全序列P%d->P%d->P%d->P%d->P%d
10、,系统是安全的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("数据确认无误,
11、算法继续。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;n<3;n+)scanf("%d",&r
12、equestin);for (;requesti0>needi0 | requesti1>needi1 | requesti2>needi2;) /若请求向量大于需求资源,则认为是输入错误,要求重新输入printf("数据输入有误,请重试!n请输入进程P%d的请求向量Request%d:",i,i);for(n=0;n<3;n+)scanf("%d",&requestin);if(requesti0<=available0 && requesti1<=available1 &&
13、requesti2<=available2) /判断系统是否有足够资源提供分配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;m<3;m+) /恢复
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国华电集团有限公司华电辽宁能源有限公司校园招聘(第二批)笔试备考试题及答案解析
- 2026湖南株洲市石峰区事业单位公开招聘高层次人才考试参考试题及答案解析
- 人教版八年级英语下册Unit 1 Section B课时基础知识训练(附答案)
- 流动性风险2026年租赁合同协议
- 跨境电商2026年商品合规协议协议
- 2026云南华清教育集团招聘笔试模拟试题及答案解析
- 大学心理学社会认知理论应用与团队沟通效能提升的课题报告教学研究课题报告
- 高中物理实验教学中误差分析的方法与精度提升课题报告教学研究课题报告
- 2026年宁德职业技术学院单招职业倾向性考试题库及1套完整答案详解
- 2026年宁夏财经职业技术学院单招综合素质考试题库及参考答案详解1套
- 2026年湖南汽车工程职业学院单招职业技能考试题库及答案解析
- 船载危险货物申报员和集装箱装箱现场检查员从业行为规范(试行)2026
- 测绘应急保障方案
- 2026年春节后复工复产安全培训第一课
- 2026年部编版新教材语文小学三年级下册教学计划(含进度表)
- 2026年贵州毕节织金县事业单位招聘工作人员拟聘用易考易错模拟试题(共500题)试卷后附参考答案
- 出租车司机服务规范培训教材
- 大疆社招在线测评题库
- 安责险业务发展培训课件
- GB/T 8642-2025热喷涂抗拉结合强度的测定
- 《机械基础(第七版)》课件(上)
评论
0/150
提交评论