资源描述:
《操作系统实验报告银行家算法.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、五邑大学实验报告操作系统课程实验报告2013~2014年度第1学期院系:计算机学院学号:11080101姓名:宋蓓蕾任课教师:白明成绩评定:实验一:银行家算法完成日期:2013年12月20日1、实验目的银行家算法是避免死锁的一种重要方法,本实验要求用高级语言编写和调试一个简单的银行家算法程序。加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。2、实验内容(1)设计进程对各类资源最大申请表示及初值确定。(2)设定系统提供资源初始状况。(3)设定每次某个进程对各类资源的申请表示。(
2、4)编制程序,依据银行家算法,决定其申请是否得到满足。3、算法设计(全部代码)#include#include#include#include/*用到了getch()*/#defineM5/*进程数*/#defineN3/*资源数*/#defineFALSE0#defineTRUE1/*M个进程对N类资源最大资源需求量*/intMAX[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};/
3、*系统可用资源数*/intAVAILABLE[N]={10,5,7};/*M个进程对N类资源最大资源需求量*/intALLOCATION[M][N]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}};/*M个进程已经得到N类资源的资源量*/intNEED[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};/*M个进程还需要N类资源的资源量*/intRequest[N]={0,0,0};voidmain(){inti=0,j=0;
4、charflag;voidshowdata();voidchangdata(int);voidrstordata(int);intchkerr(int);showdata();enter:{printf("请输入需申请资源的进程号(从0到");printf("%d",M-1);printf("):");scanf("%d",&i);}if(i<0
5、
6、i>=M){printf("输入的进程号不存在,重新输入!");gotoenter;}err:{printf("请输入进程");printf("%d",i)
7、;printf("申请的资源数");printf("类别:ABC");printf("");for(j=0;jNEED[i][j]){printf("%d",i);printf("号进程");printf("申请的资源数>进程");printf("%d",i);printf("还需要");printf("%d",j);printf("类资源的资源量!申请不合理,出错!请重新选择!");gotoerr;}e
8、lse{if(Request[j]>AVAILABLE[j]){printf("进程");printf("%d",i);printf("申请的资源数大于系统可用");printf("%d",j);printf("类资源的资源量!申请不合理,出错!请重新选择!");gotoerr;}}}}changdata(i);if(chkerr(i)){rstordata(i);showdata();}elseshowdata();printf("");printf("按'y'或'Y'键继续,否则退出");f
9、lag=getch();if(flag=='y'
10、
11、flag=='Y'){gotoenter;}else{exit(0);}}/*显示数组*/voidshowdata(){inti,j;printf("系统可用资源向量:");printf("***Available***");printf("资源类别:ABC");printf("资源数目:");for(j=0;j12、("各进程还需要的资源量:");printf("******Need******");printf("资源类别:ABC");for(i=0;i