欢迎来到天天文库
浏览记录
ID:14379713
大小:93.50 KB
页数:11页
时间:2018-07-28
《预防进程死锁的银行家算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、操作系统实验三第11页共11页实验三预防进程死锁的银行家算法12软件工程一、实验目的通过这次实验,加深对进程死锁的理解,进一步掌握进程资源的分配、死锁的检测和安全序列的生成方法。二、实验内容问题描述:设计程序模拟预防进程死锁的银行家算法的工作过程。假设系统中有n个进程P1,…,Pn,有m类可分配的资源R1,…,Rm,在T0时刻,进程Pi分配到的j类资源为Allocationij个,它还需要j类资源Needij个,系统目前剩余j类资源Workj个,现采用银行家算法进行进程资源分配预防死锁的发生。程序要求:1)判断当前状态是否安全,如果安全
2、给出安全序列;如果不安全给出理由。2)对于下一个时刻T1,某个进程Pk会提出请求Request(R1,…,Rm),判断分配给Pk进程请求的资源之后系统是否安全。3)输入:进程个数n,资源种类m,T0时刻各个进程的资源分配情况(可以运行输入,也可以在程序中设置);4)输出:如果安全,输出安全的进程序列,不安全则提示信息。三、实验设计流程图操作系统实验三第11页共11页开始输入进程数M、资源种类数N输入各资源总数输入各进程已分配的资源数检查是否安全结束输入任何一个进程的申请REQUEST检查安全性四、实验截图(输入数据为课本上的例子)操作系
3、统实验三第11页共11页操作系统实验三第11页共11页五、实验心得这个实验其实是看起来计算很简单,实际上要实现的时候还是比较麻烦的。使用数组其实还是不太熟练的,特别是二维数组,用法都忘记得差不多了。。。。有些功能还未实现。大部分子程序的划分还是问同学的。六、实验代码#include操作系统实验三第11页共11页#include#defineFALSE0#defineTRUE1#defineW10//最大进程数W=10#defineR20//最大资源总数R=20intM;intN;intALL_
4、RESOURCE[W];intAVAILABLE[R];//可利用资源向量intMAX[W][R];//最大需求矩阵intALLOCATION[W][R];//分配矩阵intNEED[W][R];//需求矩阵intRequest[R];//进程请求向量intp[W];//记录序列(此功能未完全实现)voidinputdata();//数据输入voidshowdata();//数据显示voidchangdata(intk);//进程请求资源数据改变voidrestoredata(intk);//数据恢复intchksec(ints);//
5、系统安全性的检测voidbank();//检测分配的资源是否合理voidmain(){inti,j;inputdata();for(i=0;i=M)cout<<"错误提示:经安全性检查发现,系统的初始状态不安全!!!"<6、类资源的最大数{操作系统实验三第11页共11页inti=0,j=0,p;cout<<"请输入总进程数:"<>M;if(M>W)cout<W);cout<>N;if(N>R)cout<R);cout<7、类资源的总数量,即设置向量all_resource:"<>ALL_RESOURCE[i];cout<>MAX[i][j];if(MAX[i][j]>ALL_RESOURCE[j])cout<AL8、L_RESOURCE[j]);}}cout<
6、类资源的最大数{操作系统实验三第11页共11页inti=0,j=0,p;cout<<"请输入总进程数:"<>M;if(M>W)cout<W);cout<>N;if(N>R)cout<R);cout<7、类资源的总数量,即设置向量all_resource:"<>ALL_RESOURCE[i];cout<>MAX[i][j];if(MAX[i][j]>ALL_RESOURCE[j])cout<AL8、L_RESOURCE[j]);}}cout<
7、类资源的总数量,即设置向量all_resource:"<>ALL_RESOURCE[i];cout<>MAX[i][j];if(MAX[i][j]>ALL_RESOURCE[j])cout<AL
8、L_RESOURCE[j]);}}cout<
此文档下载收益归作者所有