银行家算法c语言加注释,银行家算法 C语言编程[通俗易懂]

银行家算法c语言加注释,银行家算法 C语言编程[通俗易懂]匿名用户1级2011-06-02回答银行家算法程序代码#include#include#include#defineFALSE0#defineTRUE1#defineW10#defineR10intM;//总进程数intN;//资源种类intALL_RESOURCE[W];//各种资源的数目总和intMAX[W][R];//M个进程对N类资源最大资…

大家好,又见面了,我是你们的朋友全栈君。

匿名用户

1级

2011-06-02 回答

银行家算法程序代码

#include

#include

#include

#define FALSE 0

#define TRUE 1

#define W 10

#define R 10

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 output()

{

int i,j;

cout<

cout<

for (j=0;j

cout<

cout<

cout<

cout<

for (j=0;j

cout<

cout<

cout<

cout<

for(i=0;i

cout<

cout<

for (i=0;i

{

cout<

for (j=0;j

cout<

cout<

}

cout<

cout<

cout<

for(i=0;i

cout<

cout<

for (i=0;i

{

cout<

for (j=0;j

cout<

cout<

}

cout<

}

void distribute(int k)

{

int j;

for (j=0;j

{

AVAILABLE[j]=AVAILABLE[j]-Request[j];

ALLOCATION[k][j]=ALLOCATION[k][j]+Request[j];

NEED[k][j]=NEED[k][j]-Request[j];

}

}

void restore(int k)

{

int j;

for (j=0;j

{

AVAILABLE[j]=AVAILABLE[j]+Request[j];

ALLOCATION[k][j]=ALLOCATION[k][j]-Request[j];

NEED[k][j]=NEED[k][j]+Request[j];

}

}

int check()

{

int WORK[R],FINISH[W];

int i,j;

for(j=0;j

for(i=0;i

for(i=0;i

{

for(j=0;j

{

if(FINISH[i]==FALSE&&NEED[i][j]<=WORK[j])

{

WORK[j]=WORK[i]+ALLOCATION[i][j];

}

}

FINISH[i]=TRUE;

}

for(i=0;i

{

if(FINISH[i]==FALSE)

{

cout<

cout<

cout<

return 1;

}

else

{

cout<

cout<

cout<

return 0;

}

}

}

void bank() // 银行家算法

{

int i=0,j=0;

char flag=’Y’;

while(flag==’Y’||flag==’y’)

{

i=-1;

while(i<0||i>=M)

{

cout<

cout<

cin>>i;

if(i<0||i>=M) cout<

}

cout<

for (j=0;j

{

cout<

cin>>Request[j];

if(Request[j]>NEED[i][j]) // 若请求的资源数大于进程还需要i类资源的资源量j

{

cout<

cout<

flag=’N’;

break;

}

else

{

if(Request[j]>AVAILABLE[j]) // 若请求的资源数大于可用资源数

{

cout<

cout<

flag=’N’;

break;

}

}

}

if(flag==’Y’||flag==’y’)

{

distribute(i); // 调用change(i)函数,改变资源数

if(check()) // 若系统安全

{

restore(i); // 调用restore(i)函数,恢复资源数

output(); // 输出资源分配情况

}

else // 若系统不安全

output(); // 输出资源分配情况

}

else // 若flag=N||flag=n

cout<

cout<

cin>>flag;

}

}

void version()

{

cout<

cout<

}

void main() // 主函数

{

int i=0,j=0,p;

version();

getchar();

cout<

cin>>M;

cout<

cout<

cin>>N;

cout<

cout<

for(i=0;i

cin>>ALL_RESOURCE[i];

cout<

cout<

for (i=0;i

{

for (j=0;j

{

do

{

cin>>MAX[i][j];

if (MAX[i][j]>ALL_RESOURCE[j])

cout<

}

while (MAX[i][j]>ALL_RESOURCE[j]);

}

}

cout<

cout<

*N<

for (i=0;i

{

for (j=0;j

{

do

{

cin>>ALLOCATION[i][j];

if (ALLOCATION[i][j]>MAX[i][j])

cout<

}

while (ALLOCATION[i][j]>MAX[i][j]);

}

}

for (j=0;j

{

p=ALL_RESOURCE[j];

for (i=0;i

{

p=p-ALLOCATION[i][j];// 减去已经被占据的资源

AVAILABLE[j]=p;

if(AVAILABLE[j]<0)

AVAILABLE[j]=0;

}

}

for (i=0;i

for(j=0;j

NEED[i][j]=MAX[i][j]-ALLOCATION[i][j];

output();

bank();

}

实验结果分析

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

已分配的资源最大需求量

A BCABC

P1 0 10753

P2 2 00322

P3 3 02902

P4 2 11222

P5 0 02433

剩余资源ABC

33 2

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163215.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 工具说明书格式_lastingfor什么药

    工具说明书格式_lastingfor什么药下载安装:Downloads-DBBrowserforSQLitehttps://sqlitebrowser.org/dl/下载64位安装版:DB.Browser.for.SQLite-3.12.2-win64.msiZip文件是免安装解压缩版,PortableApp是一个exe文件打包版。安装完,打开后是这个样子:点击上面红框处,新建一个database,选择路径,输入文件名,保存即可。在SQLite里,一个database就是一个后缀db的文…

    2022年9月8日
  • Java实现BASE64编解码

    Java实现BASE64编解码

    2021年12月4日
  • navicate15.0.23激活码【在线注册码/序列号/破解码】

    navicate15.0.23激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
  • 算法-DFA算法-敏感词过滤算法(OC、Swift、Python)「建议收藏」

    前言前段时间,公司的IMSDK想做敏感词过滤,但是后端的小伙伴《比较忙》,在开产品需求会的时候想把敏感词过滤放到前端,让iOS、安卓自己搞,但是前端小伙伴写了一个方法来检测一段文本,耗时一两秒钟而且比较耗CPU,这样肯定不行的,最后后端小伙伴妥协了,把敏感词过滤放到后端了。一般的思路可能是遍历敏感词库,然后把一段文字的敏感词过滤掉,但是针对比较大的词库时(比如我们的敏感词库10万),这样非…

    2022年4月10日
  • firefox修改版_火狐浏览器没有收藏按钮

    firefox修改版_火狐浏览器没有收藏按钮雅虎收藏+的扩展,不是不能用,也不是冲突,现在还没有发现,改造后用的好好的。就是它安装包里的安装文件的版本限制问题,它支持了2.*版本的firefox,ff3就自动把它列为不支持的扩展了,其实都好着呢。所以只需把安装软件改一下就没有问题了。怎么改呢?对于新装“雅虎收藏+”扩展的人:用7-zip或winzip或winrar等解压缩工具打开yahoo.xpi文件。这个xpi其实就是个zi…

    2022年10月28日
  • windowspythonpygame安装_pygame安装(windows pycharm)[通俗易懂]

    windowspythonpygame安装_pygame安装(windows pycharm)[通俗易懂]一、安装流程1.查看python版本2.检查是否安装pip3.下载pygame安装文件选择合适的版本(我选择的是python3.7windows64bit):4.使用pip安装pygame将下载好的whl文件移动到python安装目录的\Lib\site-packages下(我的路径是D:\ProgramFiles\Python\Python37\Lib\site-packages),然后…

    2022年5月23日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号