下载此文档

银行家算法陈德利.docx


文档分类:IT计算机 | 页数:约12页 举报非法文档有奖
1/12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/12 下载此文档
文档列表 文档介绍
陕西师范大学《操作系统》课程设计报告
设计题目:银行家算法的实现
姓名:韩晓宇
学号:41012168
银行家算法分析、设计与
int Request[100]={0};//请求资源向量
int temp[100]={0};//存放安全序列
int Work[100]={0};//存放系统可提供资源
int M=100;//作业的最大数为100
int N=100;//资源的最大数为100
void showdata()//显示资源矩阵
{
int i,j;
int MM;//设定MM值,为输出对齐
if(N==1||N==2||N==4)MM=16;
else if(N==3||N==5)MM=15;
else if(N==6)MM=18;
else MM=14;
cout<<endl;
cout<<setiosflags(ios_base::right)//右对齐输出
<<setw(MM*2-8)<<"Max"
<<setiosflags(ios_base::right)
<<setw(MM)<<"Allocation"
<<setiosflags(ios_base::right)
<<setw(MM)<<"Need"
<<setiosflags(ios_base::right)
<<setw(MM)<<"Avaliable"<<endl;
cout<<setiosflags(ios_base::right)
<<setw(MM-8)<<"进程名";
for(j=0;j<4;j++)
for(i=0;i<N;i++)
cout<<setiosflags(ios_base::right)
<<setw(MM/N)<<name[i];
cout<<endl;
for(i=0;i<M;i++){
cout<<setiosflags(ios_base::right)
<<setw(MM-9)<<"P"<<i;
for(j=0;j<N;j++)
cout<<setiosflags(ios_base::right)
<<setw(MM/N)<<Max[i][j];
for(j=0;j<N;j++)
cout<<setiosflags(ios_base::right)
<<setw(MM/N)<<Allocation[i][j];
for(j=0;j<N;j++)
cout<<setiosflags(ios_base::right)
<<setw(MM/N)<<Need[i][j];
if(i==0)
for (j=0;j<N;j++)
cout<<setiosflags(ios_base::right)
<<setw(MM/N)<<Avaliable[j];//输出分配资源
cout<<endl;
}
}
int changdata(int i)//进行资源分配
{
int j;
for (j=0;j<M;j++) {
Avaliable[j]=Avaliable[j]-Request[j];
Allocation[i][j]=Allocation[i][j]+Request[j];
Need[i][j]=Need[i][j]-Request[j];
}
return 1;
}
int ifsafe()//安全性算法
{
int i,k=0,m,apply,Finish[100]={0};
int j;
int flag=0;
Work[0]=Avaliable[0];
Work[1]=Avaliable[1];
Work[2]=Avaliable[2];
for(i=0;i<M;i++){
apply=0;
for(j=0;j<N;j++){
if (Finish[i]==False&&Need[i][j]<=Work[j]){
apply++;
if(apply==N){
for(m=0;m<N;m++)
Work[m]=Work[m]+Allocation[i][m];//更新分配数

银行家算法陈德利 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数12
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wz_198614
  • 文件大小66 KB
  • 时间2022-03-14
最近更新