资源描述:
《计算机操作系统 -银行家算法 -vc源程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验报告2课程计算机操作系统实验名称银行家算法第1页班级11计本学号105032011130姓名风律澈实验日期:2013年11月4日报告退发(订正、重做)一、实验目的模拟银行家算法,用银行家算法实现资源分配二、实验内容已知进程{P0,P1,P2,P3,P4},有三类系统资源A、B、C的数量分别为10、5、7,在T0时刻的资源分配情况如下图所示:(1)若进程P1请求资源,发出请求向量Request1(1,0,2),编写程序用银行家算法判断系统能否将资源分配给它;(2)若进程P3提出请求Request(1,1,2),用银行家算法程序验证系统
2、能否将资源分配给它。三、实验环境VS2008,window7操作系统四、实验步骤://fuction.h//////辅助函数////////~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~///*使用说明:拷贝函数,用来初始化work,使之与avialable一致*/voidcopy(intwork[3],intavailable[3]){for(inti=0;i<3;i++){work[i]=available[i];}}/*使用说明:检查n
3、eed<=work,如果全部成立,返回1,否则返回0*/intcheck_need_work(inti,intwork[3],intneed[5][3]){for(intj=0;j<3;j++){if(need[i][j]>work[j])return0;}return1;}/*使用说明:用来寻找尝试分配用的进程i,两个条件均满足时即可回收,*//*只要其中一个不满足则不考虑,每个i都无法满足时返回-1表示找不到这种程序*/intfind(boolfinish[5],intwork[3],intneed[5][3]){for(inti=
4、0;i<5;i++){if(finish[i]==false&&check_need_work(i,work,need)==1){returni;}}return-1;}/*使用说明:用来检查是否所有序列都可以满足true*/intanalyze_finish(boolfinish[5]){for(inti=0;i<5;i++){if(finish[i]==false)return0;}return1;}voidrequest(int&i,int&j1,int&j2,int&j3){//////输入基本信息//////cout<<"此次
5、申请的进程名:";cin>>i;cout<<"请求向量A:";cin>>j1;cout<<"请求向量B:";cin>>j2;cout<<"请求向量C:";cin>>j3;};//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~////////分析申请需求//voidanalyze_need(inti,intj1,intj2,intj3,intneed[5][3],int&state){if(j1>need[i][0]
6、
7、j2>need[i
8、][1]
9、
10、j3>need[i][2]){cout<<"wrong:progress"<available[0]
11、
12、j2>available[1]
13、
14、j3>available[2]){cout<<"progress"<
15、//////尝试分配//voidtry_give(inti,intj1,intj2,intj3,intneed[5][3],intallocation[5][3],intavailable[3]){//处理available//available[0]=available[0]-j1;available[1]=available[1]-j2;available[2]=available[2]-j3;//处理allocation//allocation[i][0]=allocation[i][0]+j1;allocation[i][1]=
16、allocation[i][1]+j2;allocation[i][2]=allocation[i][2]+j3;//处理need//need[i][0]=need[i][0]-j1;need[i][1]=