1、 (3)若以上两个条件都满足,则系统试探着将资源分配给申请的进程,并修改下面数据结构中的数值:Availablei,j= Availablei,j- Request j;Allocationij= Allocationij+ Request j;needij= needij- Request j;(4)试分配后,执行安全性检查,调用check()函数检查此次资源分配后系统是否处于安全状态。若安全,才正式将资源分配给进程。否则本次试探分配作废,恢复原来的资源分配状态,让该进程等待。(5)用dowhile 循环语句实现输入字符y/n判断是否继续进行资源申请。(二)安全性算法(safe()函数):(
2、1)设置两个向量: 工作向量Work,它表示系统可提供给进程继续运行所需的各类资源数目,在执行安全性算法开始时,Work= Available。 工作向量Finish,它表示系统是否有足够的资源分配给进程,使之运行完成。开始时先做Finishi=false;当有足够的资源分配给进程时, 再令Finishi=true。(2)在进程中查找符合以下条件的进程: 条件1:Finishi=false; 条件2:needij=Workj 若找到,则执行步骤(3)否则,执行步骤(4) (3)当进程获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行: Workj= Workj+ Allocat
3、ionij; Finishi=true; goto step (2);(4)如果所有的Finishi=true都满足,则表示系统处于安全状态,否则,处于不安全状态。四、实验结果及分析1.实验设计说明 按0由用户输入,按1由系统提供数据2.实验代码 #include #include math.h#define max_process 50 /最大进程数#define max_resource 100/最大资源数#define false 0#define true 1int availablemax_resource=3,3,2;/可利用资源向量int maxmax_processmax_re
4、source=7,5,3,3,2,2,9,0,2,2,2,2,4,3,3;/最大需求矩阵int allocationmax_processmax_resource=0,1,0,2,0,0,3,0,2,2,1,1,0,0,2;/分配矩阵int needmax_processmax_resource;/需求矩阵int requestmax_processmax_resource;/进程需要资源数int finishmax_process;int m=5,n=3;void init();int safe();void bank();void init2();void print();void pri
5、nt2();void main() int i; printf(请输入测试数据,按0由用户输入测试数据,按1由系统提供测试数据:n); scanf(%d,&i); switch(i) case 0: init(); break; case 1: init2(); print(); safe(); bank();void init() int i,j;请输入进程数目:m);请输入资源种类数目:n);请按顺序输入系统中可利用的每种资源量: for(i=0;in;i+)availablei);请输入最大需求矩阵: for (i=0;m; for (j=0;jj+) maxij);请输入分配矩阵:al
6、locationij); needij=maxij-allocationij; if(needij workj)break; if(j=n) for(p=0;pneednumberi)申请的资源超过还需要的资源,请重新输入n continue;availablei)申请的资源超过所能提供的资源,请重新输入ni+) availablei=availablei-requestnumberi; allocationnumberi=allocationnumberi+requestnumberi; neednumberi=neednumberi-requestnumberi; if(safe()pri
7、ntf(分配成功!系统无法分配资源! availablei=availablei+requestnumberi; allocationnumberi=allocationnumberi-requestnumberi; neednumberi=neednumberi+requestnumberi;是否继续申请资源?请回答(Y,N):%canswer);/清楚回车符 if(answer=Y | answer=y) continue; else break;3.实验结果按1由系统提供数据,测试t0时刻的安全性按0由用户输入,测试t0时刻的安全性输入进程号4,申请资源(4,8,9),如图所示,申请失败显示出失败原因,无法分配资源,若需继续分配选择Y或y输入进程号1,申请资源(1,0,2),调用安全性算法若符合安全性,找出安全序列并打印出此时系统资源分配情况,显示分配成功!若需继续分配输入Y或y,输入其他退出程序4.实验结果分析如上5.实验心得教 师 评 价评定项目ABCD算确界面美观,布局合理程序结构合理操作熟练语法、语义正确解析完整实验结果正确文字流畅报告规题解正确其他:评价教师签名:年 月 日
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1