《2022年操作系统银行家算法》由会员分享,可在线阅读,更多相关《2022年操作系统银行家算法(7页珍藏版)》请在金锄头文库上搜索。
1、淮海工学院计算机科学系实 验 报 告 书课 程 名 : 操作系统原理A题目:银行家算法班级:学号:姓名:评语:成绩:指导教师:批阅时间:年月日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 操作系统原理A 实验报告- 1 - 操作系统原理实验银行家算法实验报告1 目的与要求 : 1)本实验目的是通过使用银行家算法实现系统资源的分配和安全性检查模拟,提高学生对操作系统资源分配功能的深刻理解,并培养学生对操作系统开发的兴趣与应用能力
2、;2)实验前必须认真阅读和理解银行家算法的基本原理和实现方法;3)独立使用C或 VC+ 编程语言编写银行家算法模拟程序;4)按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果)5)于 2013 年 11 月 1 日以前提交本次实验报告(含电子和纸质报告,由学习委员以班为单位统一打包提交) 。 2 实验内容或题目1)设计五个进程 P0,P1,P2,P3,P4共享三类资源 A,B,C的系统, A,B,C的资源总数量分别为 10,5,7。 (参考书上用例)2)并行进程可动态地申请资源和释放资源(程序交互输入申请或释放资源数量),系统按各进程的申请动态地
3、分配资源。3) 每当进程动态申请资源或释放资源时,模拟程序应能及时显示或打印各个进程在此时刻的资源分配表、系统可用资源量和安全序列等资源分配信息和安全检查信息。4)本次实验内容(项目)的详细说明以及要求请参见实验指导书。 3 实验步骤与源程序#include using namespace std; #define False 0 #define True 1 #define M 5 / 总进程数#define N 3 / 总资源数int maxMN=7,5,3,3,2,2,9,0,2,2,2,2,4,3,3; /系统可用资源数int availableN=10,5,7; /M 个进程已经得到
4、N 类资源的资源量int allocationMN=0,1,0,2,0,0,3,0,2,2,1,1,0,0,2; /M 个进程还需要N 类资源的资源量int needMN=7,5,3,3,2,2,9,0,2,2,2,2,4,3,3; int requestN=0,0,0; void showdata() int i,j; cout 系统可用的资源数为:endlendl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 操作系统原
5、理A 实验报告- 2 - cout 资源 A: available0 资源 B: available1 资源 C: available2; coutendl; coutendl; cout Max Allocation Needendl; cout A B C A B C A B Cendl; for(j=0;jN;j+) for (i=0;iM;i+) availablej=availablej-allocationij; for (i=0;iM;i+) coutPi: ; for (j=0;jN;j+) coutneedij ; for (j=0;jN;j+) cout allocatio
6、nij ; for (j=0;jN;j+) cout needij-allocationij ; needij=needij-allocationij; coutendl; coutendl; int isSecurity() int Finish10=False; int Work10,temp10; int i,j,k,z=0,flag; for(j=0;jN;j+) Workj=availablej; for(i=0;iM;i+) flag=0; for(j=0;jN;j+) if(Finishi=False &needij=Workj) flag+; if(flag=N) for(k=
7、0;kN;k+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 操作系统原理A 实验报告- 3 - Workk+=allocationik; Finishi=True; tempz=i; z+; i=-1; else break; if(Finishi=False & i=M-1) cout系统不安全 !n; return -1; break; else if(Finishi=True & i=M-1) break; cout
8、 存在安全序列:; for(z=0;zM;z+) coutPtempz+1 ; cout系统处于安全状态endl; return 0; int free(int i) int j; for(j=0;jN;j+) availablej+=allocationij; allocationij=0; return 1; int restoredata(int i) int j,flag; for (j=0;jneedij) coutavailablej) cout 对不起,当前系统可用资源不够,请等待!; return -1; break; 名师资料总结 - - -精品资料欢迎下载 - - - -
9、- - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - 操作系统原理A 实验报告- 4 - for (j=0;jN;j+) availablej=availablej-requestj; /可用资源减少allocationij=allocationij+requestj;/所得资源增加needij=needij-requestj; /仍需资源减少 flag=isSecurity(); if(flag0) cout 分配不成功,请重新操作!; for (j=0;jN;j+)/把资源恢复成分配之前
10、的状态 availablej=availablej+requestj; allocationij=allocationij-requestj; needij=needij+requestj; return 0; void main() showdata(); isSecurity(); while(1) coutendl; int i; cout 请输入您要申请分配的进程号:; cini; cout 请输入您要为该进程分配的资源:; for(int j=0;jrequestj; restoredata(i-1); 4 测试数据与实验结果(可以抓图粘贴)名师资料总结 - - -精品资料欢迎下载
11、- - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - 操作系统原理A 实验报告- 5 - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - 操作系统原理A 实验报告- 6 - 5 结果分析与实验体会名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -