操作系统实验二实验报告

上传人:公**** 文档编号:563750994 上传时间:2022-08-21 格式:DOC 页数:12 大小:496.50KB
返回 下载 相关 举报
操作系统实验二实验报告_第1页
第1页 / 共12页
操作系统实验二实验报告_第2页
第2页 / 共12页
操作系统实验二实验报告_第3页
第3页 / 共12页
操作系统实验二实验报告_第4页
第4页 / 共12页
操作系统实验二实验报告_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《操作系统实验二实验报告》由会员分享,可在线阅读,更多相关《操作系统实验二实验报告(12页珍藏版)》请在金锄头文库上搜索。

1、实验二实验报告实验源码:#include stdio.h#include #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;/ 定义 False / 定义 True / 各进程所需各类资源的最大需求/ 系统可用资源/

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

3、i+)printf( %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 = Avalia

4、blej - Requestj; Allocationij = 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);printf( Work Need Allocation Work+Allocation Finishn);printf(PCB ); / 显示作业名称

5、for(j = 0;j 4;j+) for(i = 0;i N;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( )

6、; for(d = 0;d N;d+) printf(%d ,Allocationid);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; A

7、llocationij = Allocationij - Requestj; Needij = Needij + 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 请输入要求分配的资源进

8、程号 scanf(%d,&i);printf(n 请输入进程 %d 申请的资源 for(j = 0;j N;j+)printf(%c:,namej); scanf(%d,&Requestj);for (j = 0;j Needij) 出错/ 如果安全,输出成功/ 输出运行进程数组(0 - %d):,M - 1);/ 输入须申请的资源号 :n,i);/ 输入需要申请的资源/ 判断申请是否大于需求,若大于则printf(n 进程 %d 申请的资源大于它需要的资源 ,i); printf( 分配不合理,不予分配! n);ch = n;break; else if(Requestj Avaliable

9、j)/ 判断申请是否大于当前资源,若大于则/ 出错,i);printf(n 进程 %d 申请的资源大于系统现在可利用的资源 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

10、= 0;i n;i+)printf( 资源 %d 的名称 :,i + 1);scanf(%s,&ming);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 请 输 入 各 进

11、程 已 经 申 请 的 资 源 量 ( %d * %d 矩 阵)Allocatio n:n,m, n);for(i = 0;i m;i+) for(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;实验结果截图:运行程序:输入相应数据并完成首次自检:进程1请求资源Request(1,0,2)进程4请求资源Request(3,3,0)进程0请求资源Request(0,2,0)”E:作业廉作条统实验finished、shiyane2De 匕 ugshiyaner2.exe音输入竽求分配的密源进桎

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号