当前位置:首页 > 操作系统课程设计银行家算法
cout<<\请重新输入:\break; } }
}while(s<'0' || s>'9');
for(int i=0;i for(int j=1;j //===系统初始化函数=== void chushihua(){ //===系统初始化输入=== cout<<\程序开始,系统初始化输入 %%\ cout<<\========\ cout<<\请输入进程的数量: \从此开始输入有关数据 n=shuzi(n); cout<<\请输入资源种类数: \m=shuzi(m); cout< cout<<\输入资源 \可利用的数量Available[\Available[j]=shuzi(Available[j]); Work[j]=Available[j]; //初始化Work[j] // cout< //system(\清屏 cout< cout<<\请输入各进程当前已分配的资源数量Allocation[\\for (i=0; i cout<<\请输入进程 \当前已分配的资源 \数量: \Allocation[i][j]=shuzi(Allocation[i][j]); // cout< cout< Finish[i]=0;//初始化Finish[i] //break; } cout< cout<<\请输入各进程对各类资源的最大需求数Max[\\for (i=0; i cout<<\请输入进程 \对资源 \的最大需求数: \Max[i][j]=shuzi(Max[i][j]); if(Max[i][j]>=Allocation[i][j]) // Need[i][j] = Max[i][j]-Allocation[i][j]; //计算还需求量 else Need[i][j]=0;//最大需求量小于已分配量时还需求量为0,即此类资源已足够不需再申请 } cout< cout< //===安全性算法函数=== void safe(){ l=0; for (i=0; i if (Finish[i]==0){ //寻找Finish[i]==0的进程条件一 counter=0; //记数器 /* 算法一: for (j=0; j if (Work[j]>=Need[i][j]) //可用大于等于需求 counter=counter+1;//记数 } if(counter==m){… */ //算法二: for (j=0; j if (Work[j]>=Need[i][j]); //可用大于等于需求 else{ counter=1; break; } if(counter!=1){ //进程的每类资源量都符合条件Work[j]>=Need[i][j] 条件二 p[l]=i; //存储安全序列 Finish[i]=1; //标志为可分配 for (j=0; j Work[j]=Work[j]+Allocation[i][j]; //释放资源 } l=l+1; //记数,当L=N时说明满足安全序列,即都符合条件Work[j]>=Need[i][j] i= -1; //从第一个进程开始继续寻找满足条件一二的进程 } } i++; //for循环继续寻找 } } //===显示分配情况函数 === void showdata() //函数showdata,输出当前资源分配情况 { int i,j; //局部变量 int All[y]; //各种资源的总数量 int l2; //局部变量 l1, cout<<\========\ cout<<\系统当前状态如下:%%\cout<<\各种资源的总数量(all):\ for (j=0;j All[j]=Available[j]; //初始化先赋值加上可利用量 for (i=0;i All[j]+=Allocation[i][j]; //再加上每个进程已分配量计算J类资源总量 } cout< if ((j+1)%5==0 ) cout< cout< cout<<\系统目前各种资源可用的数为(available):\ for (j=0;j cout<<\资源\
共分享92篇相关文档