银行家算法c(银行家算法c++代码)

2023-04-19 生活知识 By:admin

大家好,如果您还对银行家算法c不太了解,没有关系,今天就由本站为大家分享银行家算法c的知识,包括银行家算法c++代码的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

银行家算法C++描述

#include iostream

#include string

#define M 3 //资源的种类数

#define N 5 //进程的个数

void output(int iMax[N][M],int iAllocation[N][M],int iNeed[N][M],int iAvailable[M],char cName[N]); //统一的输出格式

bool safety(int iAllocation[N][M],int iNeed[N][M],int iAvailable[M],char cName[N]);

bool banker(int iAllocation[N][M],int iNeed[N][M],int iAvailable[M],char cName[N]);

int main()

{

int i,j;

//败纳春当前可用每类资源的资源数

int iAvailable[M]={3,3,2};

//系统中N个进程中的每一个进程对M类资源的最大需求

int iMax[N][M]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};

//iNeed[N][M]每一个进程尚需的各类资源数

//iAllocation[N][M]为系统中每一类资源当前已分配给每一进程的资源数

int iNeed[N][M],iAllocation[N][M]={{0,1,1},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};

//进程名

char cName[N]={'a','b','c','d','e'};

bool bExitFlag=true; //退出标记

char ch; //接收选择是否继续提出申请时传进来的值

bool bSafe; //存放安全与否的标志

//计算iNeed[N][M]的值

for(i=0;iN;i++)

for(j=0;jM;j++)

iNeed[i][j]=iMax[i][j]-iAllocation[i][j];

//输出初始值

output(iMax,iAllocation,iNeed,iAvailable,cName);

//判断当前状态是否安全

bSafe=safety(iAllocation,iNeed,iAvailable,cName);

//是否继续提出申请

while(bExitFlag)

{

cout"n""继续提出申请?ny为是;n为否。n";

cinch;

switch(ch)

{

case 'y':

//cout"调用银行家算法";

bSafe=banker(iAllocation,iNeed,iAvailable,cName);

if (bSafe) //安全,则输出变化后的数据

output(iMax,iAllocation,iNeed,iAvailable,cName);

break;

case 'n':

cout"退出。n";

bExitFlag=false;

break;

default:

cout"输入有误,请重新输入:n";

}

}

}

//输出

void output(int iMax[N][M],int iAllocation[N][M],int iNeed[N][M],int iAvailable[M],char cName[N])

{

int i,j;

cout"nt Max tAllocationt Need t Available"endl;

cout"tA B CtA B CtA B Ct A B C"endl;

for(i=0;iN;i++)

{

coutcName[i]"t";

for(j=0;jM;j++)

coutiMax[i][j]" ";

cout"t";

for(j=0;jM;j++)

coutiAllocation[i][j]" ";

cout"t";

for(j=0;jM;j++)

coutiNeed[i][j]" ";

cout"t";

cout茄困" ";

//Available只需要输出一次

if (i==0)

for(j=0;jM;j++)

coutiAvailable[j]" ";

coutendl;

}

}

//安全性算法,进行安全性检查;安全返回true,并察耐且输出安全序列,不安全返回false,并输出不安全的提示;

bool safety(int iAllocation[N][M],int iNeed[N][M],int iAvailable[M],char cName[N])

{

}

//定位ch对应的进程名在数组中的位置

//没找见返回-1,否则返回数组下标

int locate(char cName[N],char ch)

{

int i;

for(i=0;iN;i++)

if (cName[i]==ch) //找到

return i;

//未找到

return -1;

}

//提出申请,返回提出申请的进程名对应的下标

int request(char cName[N],int iRequest[M])

{

int i,loc;

char ch;

bool bFlag=true;

//判断输入的进程名是否有误

while(bFlag)

{

//输出进程名

for(i=0;iN;i++)

coutcName[i]"t";

//输入提出申请的进程名

cout"n输入提出资源申请的进程名:n";

cinch;

//定位ch对应的进程名在进程名数组中的位置

loc=locate(cName,ch);

//没找到,重新输入

if (loc==-1)

cout"n您输入的进程名有误!请重新输入";

//找到,退出循环

else

bFlag=false;

}

//输入提出申请的资源数

cout"输入申请各类资源的数量:n";

for(i=0;iM;i++)

ciniRequest[i];

//返回提出申请的进程名对应的下标

return loc;

}

bool banker(int iAllocation[N][M],int iNeed[N][M],int iAvailable[M],char cName[N])

{

}

这个是c++的 我的报告

银行家算法

Dijkstra(1965)提出了一种能够避免死锁的调度算法,称为银行家算法(banker's algorithm),这是6.4.1节中给出的死锁检测算法的扩展。该模型基于一个小城镇的银行家,他向一群客户分别承诺了一定的贷款额度。算法要做的是判断对请求的满足是禅春否会导致进入不安全状态。如果是,就拒绝请求;如果满足请求后系统仍然是安全的,就予以分配。在图6-11a中我们看到4个客户A、B、C、D,每个客户都被授予顷困一定数量的贷款单位(比如1单位是1千美元),银行家知道不可能所有客户同时都需要最大贷款额,所雀袭念以他只保留10个单位而不是22个单位的资金来为客户服务。这里将客户比作进程,贷款单位比作资源,银行家比作操作系统。

银行家算法的C语言程序

1.根或液据下面兆正给出的系统中资源分配情况,以及各个衫猜物进程的资源申请情况,通过银行家算法来判断各进程的资源请求能否满足(要求记录程序的运行过程)。 已分配的

c语言银行家算法安全性判别

把1作为参数传给yanzheng() yanzheng(int m)

然后验证函拦渗仔数里修改:

work=Avaliable;

i=m;

while(im)

 { 

  if (Finish[i]==falseNeed[i]=work)

  {

         work=work+Allocation[i];

   简汪      Finish[i]=true;

         anquan[k]=i;

         k++;

         i = 0;

   }

 喊冲  else

       i++;

 }

好了,文章到此结束,希望可以帮助到大家。

相关推荐

无脑症(无脑症为什么出生要捂住嘴巴)

dnf勋章怎么获得(dnf徽章怎么快速获得)

蜂蜜柚子茶怎么做(蜂蜜柚子茶怎么做不苦)

今日小麦收购价格是多少钱(小麦今日收构价格)

德国乒乓球波尔(德国乒乓球波尔图片)

金鼻白毛老鼠精(金鼻白毛老鼠精的武器)

edg夺冠图片(edg夺冠海报)

包含试看10分钟保湿的词条

nylon什么意思(NYLON什么意思)

企盼的意思(翘首企盼的意思)

猜你感兴趣
男生怎么坚持追女生的话

男生怎么坚持追女生的话

1222

10-27 0阅读
追女生耍朋友怎么套路

追女生耍朋友怎么套路

1222

10-20 0阅读
梦见结婚嫁错人是什么意思

梦见结婚嫁错人是什么意思

梦见结婚嫁错人单身者梦见结婚嫁错人,预示着恋情方面

10-16 0阅读
 dreadful是什么意思(dreadful)

dreadful是什么意思(dreadful)

大家好,我是小百,我来为大家解答以上问题。dreadful是什

10-15 0阅读
 县城开一家华莱士要多少钱的简单介绍

县城开一家华莱士要多少钱的简单介绍

大家好,感谢邀请,今天来为大家分享一下县城开一家华莱士

10-09 0阅读
 澄清石灰水是混合物吗(澄清石灰水)

澄清石灰水是混合物吗(澄清石灰水)

大家好,我是小百,我来为大家解答以上问题。澄清石灰水是

10-09 0阅读