- 35
- 0
- 约7.29千字
- 约 7页
- 2018-03-08 发布于河南
- 举报
银行家算法及结果
#include iostream.h
#include stdio.h
#include stdlib.h
#include string.h
//定义全局变量
const int x=10,y=10; //常量,便于修改
int Available[x]; //各资源可利用的数量
int Allocation[y][y]; //各进程当前已分配的资源数量
int Max[y][y]; //各进程对各类资源的最大需求数
int Need[y][y]; //尚需多少资源
int Request[x]; //申请多少资源
int Work[x]; //工作向量,表示系统可提供给进程继续运行所需的各类资源数量
int Finish[y]; //表示系统是否有足够的资源分配给进程,1为是
int p[y]; //存储安全序列
int i,j; //i表示进程,j表示资源
int n,m; //n为进程i的数量,m为资源j的种类数
int l=0; //l用来记录有几个进程是Finish[i]=1的,当l=n是说明系统状态是安全的
int counter=0;
//函数声明
void chushihua(); //初始化函数
void safe(); //安全性算法
void show(); //函数show,输出当前状态
void bank(); //银行家算法
void jieshu(); //结束函数
void chushihua()
{
cout输入进程的数量: ;//从此开始输入有关数据
cinn;
cout输入资源种类数: ;
cinm;
coutendl输入各种资源当前可用的数量( m 种): endl;
for (j=0; jm; j++)
{
cout输入资源 j 可利用的数量Available[j]: ;
cinAvailable[j]; //输入数字的过程...
Work[j]=Available[j]; //初始化Work[j],它的初始值就是当前可用的资源数
}
coutendl输入各进程当前已分配的资源数量Allocation[n][m]: endl;
for (i=0; in; i++)
{
for (j=0; jm; j++)
{
cout 输入进程 i 当前已分配的资源 j 数量: ;
cinAllocation[i][j];
}
coutendl;
Finish[i]=0;//初始化Finish[i]
}
coutendl输入各进程对各类资源的最大需求Max[n][m]: endl;
for (i=0; in; i++)
{
for (j=0; jm; j++)
{
cout 输入进程 i 对资源 j 的最大需求数: ;
cinMax[i][j];
if(Max[i][j]=Allocation[i][j]) //若最大需求大于已分配,则计算需求量
Need[i][j] = Max[i][j]-Allocation[i][j];
else
Need[i][j]=0;//Max小于已分配的时候,此类资源已足够不需再申请
}
coutendl;
}
coutendl初始化完成endl;
}
//安全性算法函数
void safe()
{
l=0;
for (i=0; in;i++)
{ //i++
if (Finish[i]==0)
{ //逐个查找Finish[i]==0的进程 条件一
counter=0; //记数器
for (j=0; jm; j++)
{
if (Work[j]=Need[i][j]) counter=counter+1;//
}
您可能关注的文档
最近下载
- 《合肥市新场景规模化应用示范行动方案(2025—2027年)》.pdf
- 标准化审查报告.doc VIP
- (新版)初级民航安全检查员资格考试题库大全-上(单选题汇总) .pdf VIP
- 2023初中毕业上卫校要多少分分数很高吗 .pdf VIP
- (新版)初级民航安全检查员资格考试题库大全-下(多选、判断题汇总).docx VIP
- H3C认证GB0-510 H3CNE-Security网络安全工程师考试题库及答案.docx VIP
- 索尼SW7600GR中文说明书.pdf
- 华三认证考试H3CNE安全 GB0-510 安全工程师考试题库(含答案).docx VIP
- 钢结构厂房水电安装施工组织方案.docx VIP
- 第1课+おじぎ+课文注音讲义 高中日语人教版第一册.docx VIP
原创力文档

文档评论(0)