ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:82.96KB ,
资源ID:6584084      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6584084.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(银行家安全算法 2.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

银行家安全算法 2.docx

1、银行家安全算法 2江西科技学院实验项目卡实验中心:计算机中心 实验室: S2-303机房 制卡时间: 2013 年 3月实验项目名称编程实现银行家安全算法实验项目编号课程名称操作系统课程代码81211679适用专业计算机科学与技术实验学时数6实验类型综合实验要求必修实验类别专业实验实验者类别统招本科每批组数45每组人数1实验方式课内实验首开时间 2005 年 9 月变动情况说明无实验教材或指导书名称操作系统实验目的、实验内容、实验原理与实验要求:一、实验目的通过实验加强对银行家安全算法的理解和掌握。二、实验内容熟悉避免死锁发生的方法,死锁与安全序列的关系,编程实现银行家算法,要求输出进程的安全

2、序列。三、实验要求1、 需写出设计说明;2、 设计实现代码及说明3、 运行结果;1 输入Max和All进程的值 得到Need 正确 错误2代码:#include main()int i,j,Max53,All53,Need54,Ava3,a512,q,w,s3;int k=0,c5;int m=5;printf(请输入Max的值;n);for(i=0;i5;i+) for(j=0;j3;j+) scanf(%d,&Maxij);printf(请输入All的值;n); for(i=0;i5;i+) for(j=0;j3;j+) scanf(%d,&Allij); for(i=0;i5;i+) f

3、or(j=0;j3;j+) Needij=Maxij-Allij; for(i=0;i5;i+) Needi3=1;/*多定义need一列 将这一列作为标示位 记录是否已经进程结束 并初始化为1*/printf(请输入Ava的值;n);for(i=0;i3;i+) scanf(%d,&Avai);for(i=0;i5;i+)/*输出need 看是否将标示位赋值成功*/for(j=0;j4;j+)printf(%2d,Needij);printf(n);for(i=0;i5;i+)/*将3个数组的值移到一个数组里*/ for(j=0;j3;j+) aij=Maxij; for(i=0;i5;i+

4、) for(j=0;j3;j+) aij+3=Allij;for(i=0;i5;i+) for(j=0;j3;j+) aij+6=Needij; for(j=0;j3;j+) a0j+9=Avaj;printf( Max All Need Ava n);/*打印该数组*/printf( A B C A B C A B C A B Cn);for(j=0;j1;j+) printf(p%d,j);for(j=0;j12;j+)printf(%5d,a0j); printf(n); for(i=1;i5;i+) printf(p%d,i); for(j=0;j9;j+) printf(%5d,ai

5、j); printf(n); /*该程序可以判断之前的进程是否有安全序列*/ /*lop1:for(i=0;i=Needi0&Ava1=Needi1&Ava2=Needi2&Needi3=1) Ava0=Ava0-Needi0+Maxi0; Ava1=Ava1-Needi1+Maxi1; Ava2=Ava2-Needi2+Maxi2; Needi3=0; ck=i; k+; if(Need03=0&Need13=0&Need23=0&Need33=0&Need43=0) goto lop2; /*for(i=0;i5;i+)for(j=0;j0) m-; goto lop1;else goto

6、 lop3;lop2:printf(安全序列为:n);for(j=0;j5;j+)printf(P%dn,cj);if(!(Need03=0&Need13=0&Need23=0&Need33=0&Need43=0)lop3:printf(不是安全序列n);*/printf(是否需要请求资源 如果要请输入1并输入要在几进程中加入比如在第一进程请求,请输入1,0 不要请输入2n); scanf(%d,%d,&q,&w);/*输入是否请求的值1或者2,并输入在那个进程请求该资源*/ printf(%d,q);if(q=1)/*判断是否请求*/ printf(请输入%d的3个资源请求值,w);for(

7、i=0;i3;i+) scanf(%d,&si); for(i=0;iAvai)/*如果剩余的资源部满足则直接跳出*/printf(剩余资源数不足以满足n); goto lop3; Allwi=Allwi+si;/*将之前所要求的进程请求的进程修改*/Avai=Avai-si;/*将剩余的资源数修改*/for(i=0;i5;i+)/*将修改后的进程重新导入need中*/ for(j=0;j3;j+) Needij=Maxij-Allij;for(i=0;i5;i+)/*将3个数组的值移到一个数组里*/ for(j=0;j3;j+) aij=Maxij; for(i=0;i5;i+) for(j

8、=0;j3;j+) aij+3=Allij;for(i=0;i5;i+) for(j=0;j3;j+) aij+6=Needij; for(j=0;j3;j+) a0j+9=Avaj;printf( Max All Need Ava n);/*打印修改后的该数组*/printf( A B C A B C A B C A B Cn);for(j=0;j1;j+) printf(p%d,j);for(j=0;j12;j+)printf(%5d,a0j); printf(n); for(i=1;i5;i+) printf(p%d,i); for(j=0;j9;j+) printf(%5d,aij);

9、 printf(n);lop1:/*控制跳转的次数*/for(i=0;i=Needi0&Ava1=Needi1&Ava2=Needi2&Needi3=1)/*判断剩余资源是否满足当前资源需要*/ Ava0=Ava0-Needi0+Maxi0;/*修改剩余资源*/ Ava1=Ava1-Needi1+Maxi1;/*修改剩余资源*/ Ava2=Ava2-Needi2+Maxi2;/*修改剩余资源*/ Needi3=0;/*将标示位修改为0*/ ck=i;/*记下当前满足的位置*/ k+; if(Need03=0&Need13=0&Need23=0&Need33=0&Need43=0)/*判断标示位是否已修改*/ goto lop2; /*跳转到lop2*/for(i=0;i5;i+)/*打印标示位是否已修改*/ for(j=0;j0)/*控制跳转的次数*/ m-;/*m初值为5 控制次数*/ goto lop1;else goto lop3;lop2:printf(安全序列为:n);for(j=0;j5;j+)/*打印输出安全序列*/printf(P%dn,cj);if(!(Need03=0&Need13=0&Need23=0&Need33=0&Need43=0)lop3:printf(不是安全序列n);输入书中的例子 可得输入请求的资源过大时所得

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

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