现代操作系统.docx

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

现代操作系统上机实验报告

(标题一号黑体)

学 院 软件学院

05

3

姓名

李雨生

学号3005218065

姓名

王尽宇

学号3005218077

实验一:方法一:

一、银行家算法的模拟实现1。目的:

编一个程序,模拟实现银行家算法,以此来实现我们对此算法的认识。

2。实现方案:

按照书上的例子,来规定每个进程所需要的资源,以及计算机所拥有的资源。同样是五个进程。我们使用VisualC++6.。0创建了2个二维数组来模拟当前分配的资源以及需要的资源,3个一维数组来模拟资源总数,现在占用的资源,以及还剩下的资源,当我们输入了所有的当前分配的资源后,我们开始来计算剩下的资源是不是安全,当可以完全满足一个进程的需要时,释放他占有的全部资源。依次来看是否可以完成所有的进程,如是,则安全,否,则不安全。然后将结果存入文本;

本程序的流程图如下:

3。说明以及实例

用的是书上的例子。

全部的资源从一号到4号为634。2

一号进程总的需要

4

1

1。1

二号进程总的需要

0

2

1。2

三号进程总的需要

4

2

1。0

四号进程总的需要

1

1

1。1

五号进程总的需要211。0代码:

#includeiostream#includefstreamusingnamespacestd;intmain()

{

intc[6][5];//现在的资源;intr[6][5];

inte[5]={0,6,3,4,2};

intp[5];

inta[5];boolsolve;boolre=true;charch;

fstreamofstream;ofstream.open(banker.txt,ios::out);

while(re==true)

{

r[1][1]=4;

r[1][2]=1;

r[1][3]=1;

r[1][4]=1;

r[2][1]=0;

r[2][2]=2;

r[2][3]=1;

r[2][4]=2;

r[3][1]=4;

r[3][2]=2;

r[3][3]=1;

r[3][4]=0;

r[4][1]=1;

r[4][2]=1;

r[4][3]=1;

r[4][4]=1;

r[5][1]=2;

r[5][2]=1;

r[5][3]=1;

r[5][4]=0; //初始化需要的资源re=false;

for(intj=1;j=5;j++)

{

for(inti=0;i=4;i++)

{

c[j][i]=0;

p[i]=0;

}

}

for(j=1;j=5;j++)

{

coutprintinthenumberjprocessssource.endl;for(inti=1;i=4;i++)

{

cinc[j][i];

p[i]=p[i]+c[j][i];

a[i]=e[i]-p[i];r[j][i]=r[j][i]-c[j][i];

}

} //输入要写入的资源需求

while(1)

{

solve=false;

for(inti=1;i=5;i++)

{

if(c[i][0]==0)

break;

}

if(i==6) //判定:如果5个进程全部结束,则安全

{

ofstreamsecurity!endl;break;

}

for(i=1;i=5;i++)

{

for(j=1;j=4;j++)

{

if(r[i][j]a[j])break;

}

if(j==5c[i][0]!=1)

{

for(j=1;j=4;j++)

{

a[j]=c[i][j]+r[i][j]+a[j];r[i][j]=0;

c[i][j]=0;

c[i][0]=1;

solve=true;

}

}

}

if(solve==false) //如果有至少一个进程没结束

{

ofstreamnotsecurity!endl;break;

}

}

coutdoyuwanttorestart(y/n)?endl;cinch;

if(ch==y||ch==Y)re=true;

elseif(ch==n||ch==N)re=false;

}

ofstream.close();return0;

}

截屏结果:

方法二:

一.试验目的:

这是银行家算法的模拟程序,该程序能够循环检查每一个提出请求的银行客户,并且能判断这一请求是否安全。并且有关请求和相应决定的列表输出到一个文件中。

二.实现方案:使用c#语言思想如下:

查找仍需资源中是否有一行,其没有被满足的资源数均小于或等于可用资源.如果不存在这样的行,那么系统就会死锁,状态就是不安全的.

假若找到这样一行,那么可以假设它获得所需的资源

您可能关注的文档

文档评论(0)

tianya189 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档