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

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

举报
开通vip

操作系统实验报告--C语言实现银行家算法操作系统实验报告--C语言实现银行家算法 C语言实现银行家算法程序设计实验报告 实 验 报 告 C语言实现银行家算法程序设计实验报告 C语言实现银行家算法程序设计实验报告 C语言实现银行家算法程序设计实验报告 C语言实现银行家算法程序设计实验报告 C语言实现银行家算法程序设计实验报告 C语言实现银行家算法程序设计实验报告 附录3 程序源代码: #include <stdio.h> #include <stdlib.h> #include <conio.h>...

操作系统实验报告--C语言实现银行家算法
操作系统实验 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 --C语言实现银行家算法 C语言实现银行家算法程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 实验报告 实 验 报 告 C语言实现银行家算法程序设计实验报告 C语言实现银行家算法程序设计实验报告 C语言实现银行家算法程序设计实验报告 C语言实现银行家算法程序设计实验报告 C语言实现银行家算法程序设计实验报告 C语言实现银行家算法程序设计实验报告 附录3 程序源代码: #include <stdio.h> #include <stdlib.h> #include <conio.h> # define m 50 int no1; //进程数 int no2; //资源数 int r; int allocation[m][m],need[m][m],available[m],max[m][m]; char name1[m],name2[m]; //定义全局变量 void main() { void check(); void print(); int i,j,p=0,q=0; char c; int request[m],allocation1[m][m],need1[m][m],available1[m]; printf("**********************************************\n"); printf("* 银行家算法的设计与实现 *\n"); printf("**********************************************\n"); printf("请输入进程总数:\n"); scanf("%d",&no1); printf("请输入资源种类数:\n"); scanf("%d",&no2); printf("请输入Max矩阵:\n"); for(i=0;i<no1;i++) for(j=0;j<no2;j++) scanf("%d",&max[i][j]); //输入已知进程最大资源需求量 printf("请输入Allocation矩阵:\n"); for(i=0;i<no1;i++) for(j=0;j<no2;j++) scanf("%d",&allocation[i][j]); //输入已知的进程已分配的资源数 for(i=0;i<no1;i++) for(j=0;j<no2;j++) need[i][j]=max[i][j]-allocation[i][j]; //根据输入的两个数组计算出need矩阵的值 C语言实现银行家算法程序设计实验报告 printf("请输入Available矩阵\n"); for(i=0;i<no2;i++) scanf("%d",&available[i]); //输入已知的可用资源数 print(); //输出已知条件 check(); //检测T0时刻已知条件的安全状态 if(r==1) //如果安全则执行以下代码 { do{ q=0; p=0; printf("\n请输入请求资源的进程号(0~4):\n"); for(j=0;j<=10;j++) { scanf("%d",&i); if(i>=no1) { printf("输入错误,请重新输入:\n"); continue; } else break; } printf("\n请输入该进程所请求的资源数request[j]:\n"); for(j=0;j<no2;j++) scanf("%d",&request[j]); for(j=0;j<no2;j++) if(request[j]>need[i][j]) p=1; //判断请求是否超过该进程所需要的资源数 if(p) printf("请求资源超过该进程资源需求量,请求失败~\n"); else { for(j=0;j<no2;j++) if(request[j]>available[j]) q=1; //判断请求是否超过可用资源数 if(q) printf("没有做够的资源分配,请求失败~\n"); else //请求满足条件 { for(j=0;j<no2;j++) { available1[j]=available[j]; C语言实现银行家算法程序设计实验报告 allocation1[i][j]=allocation[i][j]; need1[i][j]=need[i][j]; //保存原已分配的资源数,仍需要的资源数和可用的资源数 available[j]=available[j]-request[j]; allocation[i][j]+=request[j]; need[i][j]=need[i][j]-request[j]; //系统尝试把资源分配给请求的进程 } print(); check(); //检测分配后的安全性 if(r==0) //如果分配后系统不安全 { for(j=0;j<no2;j++) { available[j]=available1[j]; allocation[i][j]=allocation1[i][j]; need[i][j]=need1[i][j]; //还原已分配的资源数,仍需要的资源数和可用的资源数 } printf("返回分配前资源数\n"); print(); } } }printf("\n你还要继续分配吗,Y or N ?\n"); //判断是否继续进行资源分配 c=getche(); }while(c==‘y’||c==‘Y’); } } void check() //安全算法函数 { int k,f,v=0,i,j; int work[m],a[m]; bool finish[m]; r=1; for(i=0;i<no1;i++) finish[i]=false; // 初始化进程均没得到足够资源数并完成 for(i=0;i<no2;i++) work[i]=available[i];//work[i] 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示可提供进程继续运行的各类资源数 k=no1; C语言实现银行家算法程序设计实验报告 } do{ for(i=0;i<no1;i++) { if(finish[i]==false) { f=1; for(j=0;j<no2;j++) if(need[i][j]>work[j]) f=0; if(f==1) //找到还没有完成且需求数小于可提供进程继续运行的资源数的进程 { finish[i]=true; a[v++]=i; // 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 安全序列号 for(j=0;j<no2;j++) work[j]+=allocation[i][j]; //释放该进程已分配的资源 } } } k--; //每完成一个进程分配,未完成的进程数就减1 }while(k>0); f=1; for(i=0;i<no1;i++) //判断是否所有的进程都完成 { if(finish[i]==false) { f=0; break; } } if(f==0) //若有进程没完成,则为不安全状态 { printf("系统处在不安全状态~"); r=0; } else { printf("\n系统当前为安全状态,安全序列为:\n"); for(i=0;i<no1;i++) printf("p%d ",a[i]); //输出安全序列 } C语言实现银行家算法程序设计实验报告 void print() //输出函数 { int i,j; printf("\n"); printf("*************此时刻资源分配情况 *********************\n"); printf("进程名/号 | Max | Allocation | Need |\n"); for (i = 0; i < no1; i++) { printf(" p%d/%d ",i,i); for (j = 0; j < no2; j++) {printf("%d ",max[i][j]);} for (j = 0; j < no2; j++) {printf(" %d ",allocation[i][j]);} for (j = 0; j < no2; j++) {printf(" %d ",need[i][j]);} printf("\n"); } printf("\n"); printf("各类资源可利用的资源数为:"); for (j = 0; j < no2; j++) {printf(" %d",available[j]);} printf("\n"); } (程序结束) C语言实现银行家算法程序设计实验报告 附录 4 程序运行调试结果: 1、 程序初始化 2、检测系统资源分配是否安全结果 C语言实现银行家算法程序设计实验报告 C语言实现银行家算法程序设计实验报告
本文档为【操作系统实验报告--C语言实现银行家算法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_983143
暂无简介~
格式:doc
大小:22KB
软件:Word
页数:7
分类:互联网
上传时间:2017-10-06
浏览量:64