-
大小: 8KB文件类型: .cpp金币: 1下载: 0 次发布日期: 2021-05-17
- 语言: C/C++
- 标签:
资源简介
(1) 简单的交互界面
(2) 能显示当前系统资源的剩余情况和占用情况
(3) 能输入每个进程的最大资源要求
模拟利用银行家算法为进程的若干次资源请求分配资源
(4) 输入本次资源要求;
(5) 按银行家算法为进程分配资源,本次分配是否成功要显示出来(要能处理各种情况:可以满足这次请求、由于资源不够不能满足这次请求、由于可能产生不安全不能满足这次请求、请求不合理拒绝请求等)
(6) 作业撤销时要回收资源
代码片段和文件信息
//5.源程序代码
#include
#include
#include
#include
//定义全局变量
const int x=10y=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 ij; //i表示进程,j表示资源
int nm; //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<<“输入进程的数量: “;//从此开始输入有关数据
cin>>n;
cout<<“输入资源种类数: “;
cin>>m;
cout< cout<<“............................................“< for (j=0; j {
cout<<“ 输入资源 “< cin>>Available[j]; //输入数字的过程...
Work[j]=Available[j]; //初始化Work[j],它的初始值就是当前可用的资源数
}
cout< cout<<“............................................“< for (i=0; i {
cout<<“ 输入进程 “< for (j=0; j {
cin>>Allocation[i][j];
}
cout< Finish[i]=0;//初始化Finish[i]
}
cout< for (i=0; i { cout<<“ 输入进程 “< for (j=0; j {
cin>>Max[i][j];
if(Max[i][j]>=Allocation[i][j]) //若最大需求大于已分配,则计算需求量
Need[i][j] = Max[i][j]-Allocation[i][j];
else
Need[i][j]=0;//Max小于已分配的时候,此类资源已足够不需再申请
}
cout< }
cout< }
//安全性算法函数
void safe()
{
l=0;
for (i=0; i { //i++
if (Finish[i]==0)
{ //逐个查找Finish[i]==0的进程 条件一
counter=0; //记数器
for (j=0; j {
if (Work[j]>=Need[i][j]) counter=counter+1;//可用大于需求,记数
}
if(counter==m) //i进程的每类资源都符合Work[j]>=Need[i][j] 条件二
{
p[l]=i; //存储安全序列
Finish[i]=1; //i进程标志为可分配
for (j=0; j Work[j]=Work[j]+Allocation[i][j]; //释放资源
l=l+1; //记数现在有L个进程是安全的,当L=N时说明满足安全序列
i= -1; //从第一个进程开始继续寻找满足条件一二的进程
}
}
}
}
//显示当前状态函数
void show() //函数show输出当前资源分配情况
{
int ij; //局部变量
int All[y]; //各种资源的总数量
int L1; //局部变量L1
cout<<“当前的状态为:“< cout<<“各种资源的总数量:“< for (j=0;j {
cout<<“ 资源“< All[j]=Available[j]; //总数量=可用的+已分配的
for (i=0;i cout< }
cout< for (j=0;j cout<<“ 资源“<
评论
共有 条评论