1 / 12
文档名称:

操作系统之银行家算法检测死锁.docx

格式:docx   大小:78KB   页数:12页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

操作系统之银行家算法检测死锁.docx

上传人:蓝天 2022/7/2 文件大小:78 KB

下载得到文件列表

操作系统之银行家算法检测死锁.docx

文档介绍

文档介绍:操作系统实验
利用银行家算法避免死锁
实验报告
一、 实验题目:利用银行家算法避免死锁
二、 实验内容:编程实现银行家算法,要求能够输入资源数和作业数,输出进程的安全 状况。若进程安全,输出安全序列。
三、 实验目的:> #define False 0 #define True 1 using namespace std;
intMax[100][100]={0};//#进程所需各类资源的最大需求;
int Available[ 100]={0}; 〃系统可用资源;
char name[100]={0}; //资源的名称;
int Allocation[100][100]={0};//系统已分配资源;
int Need[100][100]={0}; 〃还需要资源
int Request[100]={0}; 〃请求资源向量;
int temp[100]={0}; 〃存放安全序列;
int Work[100]={0}; //存放系统可提供资源;
int M=100; 〃作业的最大数
intN=100; 〃资源的最大数
void showdata()//显示资源矩阵
(
int i,j;
cout«"系统可用资源[Available]: "«endl;
for(i=0;i<N;i++)
cout«name[i]«"
cout«endl;
for(j=0;j<N;j++)
cout«Avaliable[j]«"〃显示可分配的资源
cout«endl;
cout«n Max Allocation Needn«endl;
cout«"进程名
for (j=0;j<3;j++)//MAX ALLOCATION NEED 共列
(
for (i=0;i<N;i++)
{
cout«name[i]«"
}
cout«"
)
cout«endl;
for(i=0;i<M;i++)(
cout«" "«i«" ”;〃输出进程名
for(j=0;j<N;j++)
cout«Max[i][j]«" ";//输出最大
cout«"
for(j=0;j<N;j++)
cout«Allocation[i][j]«"〃输出已分配
cout«"
for(j=0;j<N;j++)
cout«Need[i][j]«n 〃输出需求
cout«endl;
int changedata(int i)〃 进行资源分配;
intj;
for (j=O;j<M;j++)〃对每个作业进行银行家算法分配
(
Available [j ]= Available [j ] -Request |j ];
Allocation [i][j ]=Allocation[i] [j ] +Request[j];
Need[i] [j]=Need[i] [j]-Request[j];
}
return 1;
}
int safe()//安全性算法
(
int k=0,m,apply,Finish [ 100]={0};
intj;
for(int i=0;i<N;i++)
(
Work[i]=Avaliable[i];
}
for (int i=0;i<M;i++)
(
apply=0;
for (int j=O;j<N;j++)
(
if (Finish[i]==False&&Need[i][j]<=Work[j])(
apply++;//经过验证之后apply会增加到和资源数相等
if (apply==N) (
for(m=0;m<N ;m++)
Work[m]=Work[m]+Allocation[i] [m] ;//# 放可用资源
Finish[i]=True;〃 置 安全
temp[k]=i;//记录安全进程名
i=-l;//让i跳出资源层循环时回到初始状态
k++;〃安全序列下标前进位
}
)
)
)
for(int i=O;i<M;i++){
if(Finish[i] ==False) {
cout«n系统不安全;”《endl;〃系统不安全;
return -1;
)
}
cout«"系统是安全的!"«endl;//如果安全输出成功;
cout«"分配的序列:”;
for(int i=O;i<M;i++) {〃输出运行进程数组;
cout«temp[i];
if(i<M-l) cout«"->";
}
cout«endl;
return 0;
void share。//判定申请资源
(
char ch;
int i=0,j=0;
ch='y';
cout«n