银行家算法20906402-06_第1页
银行家算法20906402-06_第2页
银行家算法20906402-06_第3页
银行家算法20906402-06_第4页
银行家算法20906402-06_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HUNAN CITY UNIVERSITY银行家算法实验 报 告(2)实验题目: 银行家算法实验(2) 专 业: 计算机科学与技术 学生姓名: 蓝太波 班级学号: 0906402-06 分组序号: 第 7 组 指导教师: 何 骞 2011 年 5 月 6 日 银行家算法实验报告(2)0906402-06 蓝太波一、 实验时间2011 5/6二、 实验地点湖南城市学院 第一实验楼计算机系机房 510三、 实验小组人员0906402 第 7 组四、 指导老师何骞五、 实验目的1. 熟悉和掌握银行家算法,对银行家算法中的数据结构有一定的了解。2. 利用银行家算法避免死锁。六、 实验内容编写一段程序,用代码实现银行家算法,要求各进程数和各进程所需要的资源数有用户自己定义输入。七、 调试过程中出现的问题及解决方法如所有的进程 FinishM=true,则表示安全;否则系统不安全八、 实验流程图开始初始化进程输入要分配的进程退出是否退出是否执行银行家算法输入要分配的资源显示资源分配进行进程请求安全性检测NYYN九、 实验心得由于上次我们没能完成,经过我们一周的努力终于成功的完成了。这个实验很难度,需要创建多个进程,调用多个进程。要处理好资源的申请、分配,要防止死锁。但只要理解好书上的知识还是可以做出来的。我深深的感觉到不足,在实现银行家算法时也需要很好的细心,每写一步代码都要确定其功能。总结来说,这个实验需要平时的努力才能做出来了,不然能不能做出来都是个问题。十、 源程序#include#define false 0#define ture 1#define flase 0#define max 100int Availablemax=4,5,6,4,3,8,10,5,2,9,8,7,0;int Maxmaxmax,Allocationmaxmax,Needmaxmax,Requestmaxmax,sortmax,Sortmaxmax,Aprosmax;/sorti表示 i 进程有多少种资源,/Sortij表示 i 进程的第 j 个资源的资源号,Aprosi表示第 i 申请资源进程的进程号,Prosi表示第i 个初始化进程的进程号int pros,apros; /pros 是初始化资源时的进程数,apros 是进程请求资源时的进程数void init(void) /资源初始化函数int a,b,c,i,j;printf(“最多要对几个进程进行分配:“);scanf(“%d“,pros=a;i=0;while(a)a-;printf(“请输入 pr%d 需分配多少种资源:“,i);scanf(“%d“,sorta=b;j=0;while(b)b-;printf(“请输入资源的种类:“);scanf(“%d“,Sortij=c;j+;printf(“pr%d 对 res%d 的最大需求:“,i,c);scanf(“%d“,printf(“pr%d 对 res%d 的已分配量:“,i,c);scanf(“%d“,i+;void showdata(void) /显示资源情况函数printf(“资源分配情况如下:n“);int a,b,c;a=0;while(Availablea!=0)printf(“Available%d等于:%dn“,a,Availablea);a+;printf(“n“);for(b=0;bpros;b+)printf(“pr%d 的分配情况如下:n“,b);for(c=0;csortb;c+)printf(“pr%d 对 res%d 的最大需求为:%dn“,b,Sortbc,MaxbSortbc);printf(“pr%d 对 res%d 的已分配量为:%dn“,b,Sortbc,AllocationbSortbc);printf(“n“);void apply(void) /进程请求资源函数int b;printf(“请输入请求资源的进程号:“);scanf(“%d“,for(b=0;bsortapros;b+)printf(“请输入 pr%d 请求 res%d 资源的请求量:“,apros,Sortaprosb);scanf(“%d“,NeedaprosSortaprosb=MaxaprosSortaprosb-AllocationaprosSortaprosb;int chandata(int c) /银行家算法函数int b,m;for(b=0;bsortc;b+)if(RequestcSortcb=NeedcSortcb)if(RequestcSortcb=AvailableSortcb);else printf(“分配不成功!n“);return 0;else printf(“分配不成功!n“);return 0;if(b=sortc) /如果满足条件,则试着分配资源for(m=0;msortc;m+)AvailableSortcm=AvailableSortcm-RequestcSortcm;AllocationcSortcm=AllocationcSortcm+RequestcSortcm; NeedcSortcm=NeedcSortcm-RequestcSortcm;printf(“分配成功!n“);return 1;elseprintf(“分配不成功!n“);return 0; /如果不满足条件,则不分配资源void safty(void) /安全性检测函数/printf(“安全性检测开始!n“);int a,b,m,n,i,j,c;int Workmax,Finishmax,flagmax;for(m=0;mpros;m+)Finishm=false;flagm=1;/ printf(“输出 workn“);for(c=0;csortm;c+)WorkSortmc=AvailableSortmc;/ printf(“%d “,WorkSortmc);printf(“n“);i=0,m=0,n=0;/ printf(“输出 workn“);while(m!=prosapros;a+)if(flaga=1)for(b=0;bsorta;b+) /检测是否满足条件if(NeedaSortab=WorkSortab)i+;if(i=sorta) /如果 a 进程满足条件,则释放资源for(j=0;jsorta;j+)WorkSortaj=WorkSortaj+AllocationaSortaj;/ printf(“%d %dn“,WorkSortaj,AllocationaSortaj);i=0;if(b=sorta) /如果 a 进程满足条件,则改变相应的标志位Finisha=true;flaga=0;m+;/ printf(“安全检测中!n“);n+;if(m=pros)printf(“系统此时处于安全状态!n“);elseprintf(“系统此时处于非安全状态!n“);void main() /主函数int i;printf(“请按要求输入数据,完成初始化n“);init(); /初始化资源while(1)showdata(); /显示资源分配情况apply();if(c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论