操作系统实验二(银行家算法)实验报告.docx

上传人:时光煮雨 文档编号:11749957 上传时间:2021-09-03 格式:DOCX 页数:13 大小:275.40KB
返回 下载 相关 举报
操作系统实验二(银行家算法)实验报告.docx_第1页
第1页 / 共13页
操作系统实验二(银行家算法)实验报告.docx_第2页
第2页 / 共13页
操作系统实验二(银行家算法)实验报告.docx_第3页
第3页 / 共13页
操作系统实验二(银行家算法)实验报告.docx_第4页
第4页 / 共13页
操作系统实验二(银行家算法)实验报告.docx_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《操作系统实验二(银行家算法)实验报告.docx》由会员分享,可在线阅读,更多相关《操作系统实验二(银行家算法)实验报告.docx(13页珍藏版)》请在三一文库上搜索。

1、实验二实验报告实验源码:#include stdio.h#include / 定义 False/ 定义 True#include #define False 0#define True 1int Max100100 = 0;int Avaliable100 = 0;char name100 = 0;int Allocation100100 = 0;int Need100100 = 0;int Request100 = 0;int temp100 = 0;int Work100 = 0;int M = 100;int N = 100;/ 各进程所需各类资源的最大需求/ 系统可用资源/ 资源的名称

2、/ 系统已分配资源/ 还需要资源/ 请求资源向量/ 存放安全序列/ 存放系统可提供资源/ 作业的最大数为 100/ 资源的最大数为100/ 显示资源矩阵void showdata()int i,j;printf(n 此时刻的资源分配情况为: n);Need Avaliablen);/ 显示表头printf(MaxAllocationprintf(PCB);/ 显示作业名称for(j = 0;j 4;j+)for(i = 0;i N;i+) printf(%c ,namei);printf( );printf(n);/ 显示当前作业资源分配情况for(i = 0;i M;i+) printf(

3、%d,i);for(j = 0;j N;j+)printf(%d ,Maxij);printf( );for(j = 0;j N;j+)printf(%d ,Allocationij);printf( );for(j = 0;j N;j+)printf(%d ,Needij);if(i = 0)printf( );for (j = 0;j N;j+)printf(%d ,Avaliablej);printf(n);/ 进行资源分配int changdata(int i)int j;for (j = 0;j M;j+) Avaliablej = Avaliablej - Requestj;All

4、ocationij = Allocationij + Requestj;Needij = Needij - Requestj;return 1;/ 安全性算法int safe()int i,d,k = 0,m,h,s,apply,Finish100 = 0;int j;int flag = 0;for(i = 0;i N;i+)Worki = Avaliablei;printf( 安全性检查n);Work+Allocationprintf(WorkNeed AllocationFinishn);printf(PCB);/ 显示作业名称for(j = 0;j 4;j+)for(i = 0;i N

5、;i+)printf(%c ,namei);printf( );printf(n);/ 显示当前作业资源分配情况for(i = 0;i M;i+)apply = 0;for(j = 0;j N;j+)if (Finishi = False & Needij = Workj)apply+;if(apply = N) printf( %d,i);for(d = 0;d N;d+)printf(%d ,Workd);printf( );for(d = 0;d N;d+)printf(%d ,Needid);printf( );for(d = 0;d N;d+)printf(%d ,Allocatio

6、nid);printf( );for(m = 0;m N;m+) Workm = Workm + Allocationim; printf(%d ,Workm);/ 变分配数Finishi = True;tempk = i;printf();printf(true );printf(n);i = -1;k+;flag+;for(i = 0;i M;i+)if(Finishi = False)for(j = 0;j N;j+)Avaliablej = Avaliablej + Requestj;Allocationij = Allocationij - Requestj;Needij = Nee

7、dij + Requestj;printf(n 系统进入不安全状态!此时系统不分配资源! n);/ 不成功系统不安全return 0;printf(n 此时系统是安全的 !n);/ 如果安全,输出成功printf( 安全序列为:);for(i = 0;iM;i+)/ 输出运行进程数组printf(%d,tempi);if(i );printf(n);return 0; / 利用银行家算法对申请资源对进行判定 void share()char ch;int i = 0,j = 0;ch = y;printf(n 请输入要求分配的资源进程号(0 - %d):,M - 1);scanf(%d,&i)

8、;/ 输入须申请的资源号printf(n 请输入进程%d 申请的资源 :n,i);for(j = 0;j N;j+) printf(%c:,namej);scanf(%d,&Requestj);/ 输入需要申请的资源for (j = 0;j Needij)/ 判断申请是否大于需求,若大于则出错printf(n 进程 %d 申请的资源大于它需要的资源 ,i);printf( 分配不合理,不予分配! n);ch = n; break; else if(Requestj Avaliablej) / 判断申请是否大于当前资源,若大于则/ 出错printf(n 进程 %d 申请的资源大于系统现在可利用的

9、资源 ,i);printf( 分配出错,不予分配! n);ch = n;break;if(ch = y) changdata(i);/ 根据进程需求量变换资源showdata();/ 根据进程需求量显示变换后的资源safe();/ 根据进程需求量进行银行家算法判断/ 主函数int main()int t = 1,i,j,number,choice,m,n,flag;char ming;printf(n 请首先输入系统可供资源种类的数量:);scanf(%d,&n);N = n;for(i = 0;i n;i+)printf( 资源 %d 的名称 :,i + 1);scanf(%s,&ming)

10、;namei = ming;printf( 资源的数量:);scanf(%d,&number);Avaliablei = number;printf(n);printf( 请输入作业的数量:);scanf(%d,&m);M = m;printf(n 请输入各进程的最大需求量( %d * %d 矩阵 )Max:n,m,n);for(i = 0;i m;i+)for(j = 0;j n;j+)scanf(%d,&Maxij);doflag = 0;printf(n 请输入各进程已经申请的资源量( %d * %d 矩阵 )Allocation:n,m,n);for(i = 0;i m;i+)for(

11、j = 0;j Maxij)flag = 1;Needij = Maxij - Allocationij;if(flag)printf(n 申请的资源大于最大需求量,请重新输入! nn);while(flag);showdata();/ 显示各种资源safe();/ 用银行家算法判定系统是否安全while(1)if(t = 1)printf(n 利用银行家算法预分配资源 n);share();t = 0;else break;printf(n 是否继续银行家算法?(按 1 键继续,按其它任意键退出):);scanf(%d,&t);printf(n);return 1;实验结果截图:运行程序:E

12、:作业操作系统实验XfinishedshiyanerNDebugshiyanErZExe 一 口晴苜先输入系统可供贲源种类的数童、输入相应数据并完成首次自检:tE:作业彳生系统卖睑f i n i 5 hedsh i y a n e r2De bu g s h i yei 口 e2 .exe -请输入作业的数量需请输入各进程的最大需求量(5 * 3矩阵【加乂上7 S 3,2 29 0 2情输入各进程已经申请的资源量,5 -3矩阵”(UncaHomS 0 1 a2 0 e3 0 2匕时刻的资源分配情况为:Max Allocation Needflualiable ft B C 3 3 2CBABC

13、ABCABC4安全性检查WorkNps1Allocat iunF7 3-0-2-4利用银行家算法预分配资源请输入要求分配的资源进程号-4:进程1请求资源Request(1,0,2):i n i s hedshiya n e r2De b ugs h i y a n e 2exe-请输入要求分配的资源进程号3-4=1 请输入进程1申请的贲源;CBABCABC ABC匕时刻的资源分配情况为: Max Allocation Heed07 5 30 107 4 34304 3 1安全性检查NeedAllocationn r c07 4 37 4 30 1 0Work+flllocation ABC 5

14、 3 2 7 4 3 ? 5 3 10 H 5 10 5 7FinishtruetruetruetruetrueE:作业骐作系统实验f i n i shedshiya n e r2De bugsh iyane r2,exe 一OualTableABC2 3 0此时叁统是安全的,安全序列为 n一3-2-4是否续银行家算法?(按1键续,按其它任意键退出八微软拼音简捷半:进程4请求资源Request(3,3,0):进程0请求资源Request(0,2,0):E:作业.作系统实验finishedshiyaner2Debugshiyaner2.exe”请输入要求分配的资源进程号。-4:0 情输入进程。申请的资源:n:0|B:2|c:0微软拼音简捷半:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1