第一范文网 - 专业文章范例文档资料分享平台

计算机操作系统课程设计 - 图文

来源:用户分享 时间:2025/7/10 10:14:49 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

操作系统课程设计报告

任务五、死锁的避免

一、目的

在多道程序系统中,多个进程的并发执行来改善系统的资源利用率,提高系统的吞吐量,但可能发生一种危险——死锁。所谓死锁(Deadlock),是指多个进程在运行过程中因争夺资源而造成的一种僵局(DeadlyEmbrace),当进程处于这种状态时,若无外力作用,他们都无法在向前推进。

我们可以在分配资源时加上限制条件就可以预防死锁,但是,在每一种预防死锁的方法之中,都施加了较强的限制条件;而在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。 二、要求

利用银行家算法来避免死锁的发生 1、建立银行家算法的数据结构描述;

13

操作系统课程设计报告

2、将初始数据放在文件中,算法运行时读出; 3、对给定的资源请求,使用算法判断是否允许; 4、输出每次判断产生的执行序列; 三、程序框图

1.银行家算法

14

操作系统课程设计报告

void BankerArithmetic::Init(int a,int b) { int i,j;

for(i=0;i<100;i++)

Sign[i]=-1;

Available=new int[b];//Availablede的申请 Left=new int[b];//Left的申请

Allocation=new int*[a];//Allocation的申请 for(i=0;i

Allocation[i]=new int[b];

Need=new int*[a];//Need的申请 for(i=0;i

Need[i]=new int[b];

cout<<\请输入可用资源Available:\ for(i=0;i

cin>>Available[i];

cout<<\请输入进程号:\ for(i=0;i

cin>>Number[i];

cout<<\请输入分配资源矩阵Allocation:\ for(i=0;i

cin>>Allocation[i][j];

cout<<\请输入仍需要资源矩阵Need:\ for(i=0;i

cin>>Need[i][j];//计算剩余的资源

for(i=0;i

j=0; while(j

Left[j]-=Allocation[i][j];}

j++;}

}

15

操作系统课程设计报告

2.安全处理

int BankerArithmetic::Safe(int grac)//看是或安全 { int i,j,temp; for(i=0;i

for(j=0;j=Need[i][j]) temp*=1;

else

temp*=0; } if(temp==1)

break;}

} ID=i; Sign[i]=1; Progress[grac]=ID; if(temp) return ID; else

return -1;} void BankerArithmetic::Bank() { for(int i=0;i

Left[i]=Left[i]+Allocation[ID][i]; }

void BankerArithmetic::Show() { int i,j;

cout<<\进程 Allocation Need \\n\ for(i=0;i

if(Sign[i]!=1) { cout<

\

for(j=0;j

cout<<\

cout<<\ \

16

搜索更多关于: 计算机操作系统课程设计 - 图文 的文档
计算机操作系统课程设计 - 图文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c51hhp5ayap8mqar1rxai_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top