




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
五邑大学实验报告 操作系统课程实验报告20132014年度 第1学期院系:计算机学院学号: 11080101 姓名: 宋蓓蕾任课教师: 白明 成绩评定:实验一:银行家算法 完成日期:2013年12月20日1、实验目的银行家算法是避免死锁的一种重要方法,本实验要求用高级语言编写和调试一个简单的银行家算法程序。加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。 2、实验内容(1) 设计进程对各类资源最大申请表示及初值确定。 (2) 设定系统提供资源初始状况。 (3) 设定每次某个进程对各类资源的申请表示。 (4) 编制程序,依据银行家算法,决定其申请是否得到满足。3、算法设计(全部代码)#include #include #include #include /*用到了getch()*/#define M 5 /*进程数*/#define N 3 /*资源数*/#define FALSE 0#define TRUE 1/*M个进程对N类资源最大资源需求量*/int MAXMN=7,5,3,3,2,2,9,0,2,2,2,2,4,3,3;/*系统可用资源数*/int AVAILABLEN=10,5,7;/*M个进程对N类资源最大资源需求量*/int ALLOCATIONMN=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;/*M个进程已经得到N类资源的资源量 */int NEEDMN=7,5,3,3,2,2,9,0,2,2,2,2,4,3,3;/*M个进程还需要N类资源的资源量*/int RequestN=0,0,0;void main()int i=0,j=0;char flag;void showdata();void changdata(int);void rstordata(int);int chkerr(int);showdata();enter:printf(请输入需申请资源的进程号(从0到);printf(%d,M-1);printf():);scanf(%d,&i);if(i=M)printf(输入的进程号不存在,重新输入!n);goto enter;err:printf(请输入进程);printf(%d,i);printf(申请的资源数n);printf(类别: A B Cn);printf( );for (j=0;jNEEDij)printf(%d,i);printf(号进程);printf(申请的资源数 进程);printf(%d,i);printf(还需要);printf(%d,j);printf(类资源的资源量!申请不合理,出错!请重新选择!n);goto err;elseif(RequestjAVAILABLEj)printf(进程);printf(%d,i);printf(申请的资源数大于系统可用);printf(%d,j);printf(类资源的资源量!申请不合理,出错!请重新选择!n);goto err;changdata(i);if(chkerr(i)rstordata(i);showdata();elseshowdata();printf(n);printf(按y或Y键继续,否则退出n);flag=getch();if (flag=y|flag=Y)goto enter;elseexit(0);/*显示数组*/void showdata()int i,j;printf(系统可用资源向量:n);printf(*Available*n);printf(资源类别: A B Cn);printf(资源数目:);for (j=0;jN;j+)printf(%d ,AVAILABLEj);printf(n);printf(n);printf(各进程还需要的资源量:n);printf(*Need*n);printf(资源类别: A B Cn);for (i=0;iM;i+)printf( );printf(%d,i);printf(号进程:);for (j=0;jN;j+)printf( %d ,NEEDij);printf(n);printf(n);printf(各进程已经得到的资源量: n);printf(*Allocation*n);printf(资源类别: A B Cn);for (i=0;iM;i+)printf( );printf(%d,i);printf(号进程:);/*printf(:n);*/for (j=0;jN;j+)printf( %d ,ALLOCATIONij);printf(n);printf(n);/*系统对进程请求响应,资源向量改变*/void changdata(int k)int j;for (j=0;jN;j+)AVAILABLEj=AVAILABLEj-Requestj;ALLOCATIONkj=ALLOCATIONkj+Requestj;NEEDkj=NEEDkj-Requestj;/*资源向量改变*/void rstordata(int k)int j;for (j=0;jN;j+)AVAILABLEj=AVAILABLEj+Requestj;ALLOCATIONkj=ALLOCATIONkj-Requestj;NEEDkj=NEEDkj+Requestj;/*安全性检查函数*/int chkerr(int s)int WORK,FINISHM,tempM;int i,j,k=0;for(i=0;iM;i+)FINISHi=FALSE;for(j=0;jN;j+)WORK=AVAILABLEj;i=s;while(iM)if (FINISHi=FALSE&NEEDij=WORK)WORK=WORK+ALLOCATIONij;FINISHi=TRUE;tempk=i;k+;i=0;elsei+;for(i=0;iM;i+)if(FINISHi=FALSE)printf(n);printf(系统不安全! 本次资源申请不成功!n);printf(n);return 1;printf(n);printf(经安全性检查,系统安全,本次分配成功。n);printf(n);printf( 本次安全序列:n);printf(进程依次为);for(i=0;i );printf(n);return 0;4、运行与测试5、总结与心得银行家算法是避免死锁的一种重要方法,通过编写一个简单的银行家算法程序,加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。死锁的产生,必须同时满足四个条件,即一个资源每次只能由一个进程;第二个为等待条件,即一个进程请求资源不能满
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业培训课程体系设计与实施案例分析
- 电影院线电影放映权与经营许可协议
- 网络在线教育平台开发与运营合作协议
- 数字化技术在不可移动文物保护中的潜力与前景
- 品牌授权推广及合作协议纲要
- 社区参与与合作机制的构建
- 农村环境监测与治理项目合作协议
- 一场雨中的挑战事件作文(13篇)
- 主题性文章:奋斗的青春最美丽11篇范文
- 合作创业投资协议内容明细
- GB/T 622-2006化学试剂盐酸
- GB/T 6148-2005精密电阻合金电阻温度系数测试方法
- 【课件】遗传与进化复习(图表、思维导图)课件高一下学期生物人教版必修2
- 小学数学北师大四年级上册二线与角《线的认识》军乐小学周蓉
- 管道工程量计算规则
- 律师事务所业务操作规程
- Q∕SY 05267-2016 钢质管道内检测开挖验证规范
- 水系沉积物地球化学测量1
- 成败归因理论PPT课件
- 湘鲁版六年级下册期末英语试卷
- 报销明细汇总表
评论
0/150
提交评论