实验2 银行家算法
实验2 银行家算法(2学时) 一、实验目的
理解银行家算法,掌握进程安全性检查的方法及资源分配的方法。
二、实验内容
编写程序实现银行家算法,并验证程序的正确性。
三、实验要求
编制模拟银行家算法的程序,并以下面给出的例子验证所编写的程序的正确性。
例子:某系统有A、B、C、D 4类资源共5个进程(P0、P1、P2、P3、P4)共享,各进程对资源的需求和分配情况如下
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
所示。
已占资源 最大需求数
进程
A B C D A B C D
P0 0 0 1 2 0 0 1 2
P1 1 0 0 0 1 7 5 0
P2 1 3 5 4 2 3 5 6
P3 0 6 3 2 0 6 5 2
P4 0 0 1 4 0 6 5 6
现在系统中A、B、C、D 4类资源分别还剩1、5、2、0个,请按银行家算法回答下列问题:
(1)现在系统是否处于安全状态,
(2)如果现在进程P1提出需求(0、4、2、0)个资源的请求,系
统能否满足它的请求,
#include
//#include
#include
using namespace std;
#define Maxprocess 50 /*最大进程数*/ #define Maxresource 100 /*最大资源数*/ int Available[Maxresource]; /*可用资源数组*/ int MAX[ Maxprocess][Maxresource]; /*最大需求矩阵*/ int Allocation[ Maxprocess][Maxresource]; /*分配矩阵*/ int need [Maxprocess][Maxresource]; /*需求矩阵*/ int Request[Maxprocess][Maxresource]; /*进程需要资源数*/ bool finish[Maxprocess]; /*系统是否有足够的资源分配*/
int p[Maxprocess]; /*记录序列*/ int m,n; /*m个进程,n个资源*/
void Init();/*初始化算法*/
bool Safe(); /*安全性算法*/
void Bank(); /*银行家算法*/
int main()
{
Init();
Safe();
Bank();
return 1;
}
void Init() /*初始化算法*/
{
int i,j;
cout<<"请输入进程的数目:"; /*m个进程,n个资源*/
cin>>m;
cout<<"请输入资源的种类数:";
cin>>n;
cout<<"请输入每个进程最多所需的各资源数,按照"<>MAX[i][j];
cout<<"请输入每个进程已分配的各资源数,也按照"<>Allocation[i][j];
need[i][j]=MAX[i][j]-Allocation[i][j];
if(need[i][j]<0)
{
cout<<"您输入的第"<>Available[i];
}
}
void Bank() /*银行家算法*/ {
int i,cusneed;
char again;
while(1)
{
cout<<"请输入要申请资源的进程号(注:第1个进程号为0,依次类
推)"<>cusneed;
cout<<"请输入进程所请求的各资源的数量"<>Request[cusneed][i];
}
for(i=0;ineed[cusneed][i])
{
cout<<"您输入的请求数超过进程的需求量!请重新输入!"<Available[i])
{
cout<<"您输入的请求数超过系统有的资源数!请重新输入!"<>again;
if(again=='y'||again=='Y')
{
continue;
}
break;
}
}
bool Safe() /*安全性算法*/
{
int i,j,k,l=0;
int Work[Maxresource];
for(i=0;iWork[j])
{
break;
}
}
if(j==n)
{
finish[i]=true;
for(k=0;k";
}
}
cout<<""<
本文档为【实验2 银行家算法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。