操作系统实验报告银行家算法.doc_第1页
操作系统实验报告银行家算法.doc_第2页
操作系统实验报告银行家算法.doc_第3页
操作系统实验报告银行家算法.doc_第4页
操作系统实验报告银行家算法.doc_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论