1 / 7
文档名称:

银行家算法.doc

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

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

分享

预览

银行家算法.doc

上传人:xxj16588 2018/7/6 文件大小:58 KB

下载得到文件列表

银行家算法.doc

文档介绍

文档介绍:实验2 银行家算法(2学时)
一、实验目的
理解银行家算法,掌握进程安全性检查的方法及资源分配的方法。
二、实验内容
编写程序实现银行家算法,并验证程序的正确性。
三、实验要求
编制模拟银行家算法的程序,并以下面给出的例子验证所编写的程序的正确性。
例子:某系统有A、B、C、D 4类资源共5个进程(P0、P1、P2、P3、P4)共享,各进程对资源的需求和分配情况如下表所示。
进程
已占资源
最大需求数
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 "iostream"
using namespace std;
#define FALSE 0
#define TRUE 1
#define W 10
#define R 20
int M ; //总进程数
int N ; //资源种类
int ALL_RESOURCE[W];//各种资源的数目总和
int MAX[W][R]; //M个进程对N类资源最大资源需求量
int AVAILABLE[R]; //系统可用资源数
int ALLOCATION[W][R]; //M个进程已经得到N类资源的资源量
int NEED[W][R]; //M个进程还需要N类资源的资源量
int Request[R]; //请求资源个数
void showdata() //函数showdata,输出资源分配情况
{
int i,j;
cout<<" ALL:"<<endl;
cout<<" ";
for (j=0;j<N;j++)cout<<" 资源"<<j<<": "<<ALL_RESOURCE[j];
cout<<endl<<endl;
cout<<" AVALIABLE:"<<endl;
cout<<" ";
for (j=0;j<N;j++)cout<<" 资源"<<j<<": "<<AVAILABLE[j];
cout<<endl<<endl;
cout<<" NEED:"<<endl;
cout<<" 资源0"<<" 资源1"<<" 资源2"<<endl;
for (i=0;i<M;i++)
for (i=0;i<M;i++)
{
cout<<" 进程p"<<i<<": ";
for (j=0;j<N;j++)cout<<NEED[i][j]<<" ";;
cout<<endl;
}
cout<<endl;
cout<<" ALLOCATION: "<<endl;
cout<<" 资