操作系统实验报告银行家算法Word文件下载.docx

上传人:b****5 文档编号:16327418 上传时间:2022-11-22 格式:DOCX 页数:13 大小:222.42KB
下载 相关 举报
操作系统实验报告银行家算法Word文件下载.docx_第1页
第1页 / 共13页
操作系统实验报告银行家算法Word文件下载.docx_第2页
第2页 / 共13页
操作系统实验报告银行家算法Word文件下载.docx_第3页
第3页 / 共13页
操作系统实验报告银行家算法Word文件下载.docx_第4页
第4页 / 共13页
操作系统实验报告银行家算法Word文件下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

操作系统实验报告银行家算法Word文件下载.docx

《操作系统实验报告银行家算法Word文件下载.docx》由会员分享,可在线阅读,更多相关《操作系统实验报告银行家算法Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。

操作系统实验报告银行家算法Word文件下载.docx

//资源的名称

intAllocation[100][100]={0};

//系统已分配资源

intNeed[100][100]={0};

//还需要资源

intRequest[100]={0};

//请求资源向量

inttemp[100]={0};

//存放安全序列

intWork[100]={0};

//存放系统可提供资源

intM=100;

//作业的最大数为100

intN=100;

//资源的最大数为100

voidshowdata()//显示资源矩阵

{

inti,j;

cout<

<

"

系统目前可用的资源[Avaliable]:

endl;

for(i=0;

i<

N;

i++)

name[i]<

"

;

for(j=0;

j<

j++)

Avaliable[j]<

//输出分配资源

MaxAllocationNeed"

进程名"

for(j=0;

3;

}

M;

i++){

Max[i][j]<

Allocation[i][j]<

Need[i][j]<

}

intchangdata(inti)//进行资源分配

{

intj;

for(j=0;

j++){

Avaliable[j]=Avaliable[j]-Request[j];

Allocation[i][j]=Allocation[i][j]+Request[j];

Need[i][j]=Need[i][j]-Request[j];

return1;

 

intsafe()//安全性算法

inti,k=0,m,apply,Finish[100]={0};

intflag=0;

Work[0]=Avaliable[0];

Work[1]=Avaliable[1];

Work[2]=Avaliable[2];

Work[3]=Avaliable[3];

Work[4]=Avaliable[4];

for(i=0;

i++){

apply=0;

j++){

if(Finish[i]==False&

&

=Work[j]){

apply++;

if(apply==N){

for(m=0;

m<

m++)

Work[m]=Work[m]+Allocation[i][m];

//变分配数

Finish[i]=True;

temp[k]=i;

i=-1;

k++;

flag++;

if(Finish[i]==False){

系统不安全"

//不成功系统不安全

return-1;

系统是安全的!

//如果安全,输出成功

分配的序列:

i++){//输出运行进程数组

temp[i];

if(i<

M-1)cout<

->

return0;

voidshare()//利用银行家算法对申请资源对进行判定

charch;

inti=0,j=0;

ch='

y'

cout<

请输入要求分配的资源进程号(0-"

M-1<

):

cin>

>

i;

//输入须申请的资源号

请输入进程"

申请的资源:

for(j=0;

name[j]<

:

Request[j];

//输入需要申请的资源

if(Request[j]>

Need[i][j])//判断申请是否大于需求,若大于则出错

{

进程"

申请的资源大于它需要的资源"

分配不合理,不予分配!

ch='

n'

break;

else{

Avaliable[j])//判断申请是否大于当前资源,若大于则

{//出错

进程"

申请的资源大于系统现在可利用的资源"

分配出错,不予分配!

if(ch=='

){

changdata(i);

//根据进程需求量变换资源

showdata();

//根据进程需求量显示变换后的资源

safe();

//根据进程需求量进行银行家算法判断

voidaddresources(){//添加资源

intn,flag;

请输入需要添加资源种类的数量:

cin>

n;

flag=N;

N=N+n;

for(inti=0;

名称:

name[flag];

数量:

Avaliable[flag++];

showdata();

safe();

voiddelresources(){//删除资源

charming;

inti,flag=1;

请输入需要删除的资源名称:

do{

ming;

if(ming==name[i]){

flag=0;

if(i==N)

该资源名称不存在,请重新输入:

while(flag);

for(intj=i;

N-1;

name[j]=name[j+1];

Avaliable[j]=Avaliable[j+1];

N=N-1;

voidchangeresources(){//修改资源函数

for(inti=0;

Avaliable[i]<

输入系统可用资源[Avaliable]:

Avaliable[0]>

Avaliable[1]>

Avaliable[2];

经修改后的系统可用资源为"

for(intk=0;

k<

k++)

name[k]<

Avaliable[k]<

voidaddprocess(){//添加作业

intflag=M;

M=M+1;

请输入该作业的最打需求量[Max]"

Max[flag][i];

Need[flag][i]=Max[flag][i]-Allocation[flag][i];

intmain()//主函数

inti,j,number,choice,m,n,flag;

*****************资源管理系统的设计与实现*****************"

请首先输入系统可供资源种类的数量:

N=n;

资源"

i+1<

的名称:

name[i]=ming;

资源的数量:

number;

Avaliable[i]=number;

请输入作业的数量:

m;

M=m;

请输入各进程的最大需求量("

*"

n<

矩阵)[Max]:

Max[i][j];

请输入各进程已经申请的资源量("

矩阵)[Allocation]:

Allocation[i][j];

if(Allocation[i][j]>

Max[i][j])

flag=1;

Need[i][j]=Max[i][j]-Allocation[i][j];

if(flag)

申请的资源大于最大需求量,请重新输入!

\n"

//显示各种资源

//用银行家算法判定系统是否安全

while(choice)

**************银行家算法演示***************"

1:

增加资源"

2:

删除资源"

3:

修改资源"

4:

分配资源"

5:

增加作业"

0:

离开"

*******************************************"

请选择功能号:

choice;

switch(choice)

{

case1:

addresources();

break;

case2:

delresources();

case3:

changeresources();

case4:

share();

case5:

addprocess();

case0:

choice=0;

default:

请正确选择功能号(0-5)!

return1;

3.给出实验输入数据及运行结果。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1