预防进程死锁的银行家算法实验报告_第1页
预防进程死锁的银行家算法实验报告_第2页
预防进程死锁的银行家算法实验报告_第3页
预防进程死锁的银行家算法实验报告_第4页
预防进程死锁的银行家算法实验报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华侨大学计算机科学与技术学院 预防进程死锁的银行家算法 学生姓名: 学生学号: 专业班级: 指导老师: 2013年6月20日1、 实验目的 通过这次实验,加深对进程死锁的理解,进一步掌握进程资源的分配、死锁的检测和安全序列的生成方法。2、问题描述:设计程序模拟预防进程死锁的银行家算法的工作过程。假设系统中有n个进程P1, ,Pn,有m类可分配的资源R1, ,Rm,在T0时刻,进程Pi分配到的j类资源为Allocationij个,它还需要j类资源Need ij个,系统目前剩余j类资源Workj个,现采用银行家算法进行进程资源分配预防死锁的发生。3、需求分析1 判断当前状态是否安全,如果安全给出安

2、全序列;如果不安全给出理由。2 对于下一个时刻T1,某个进程Pk会提出请求Request(R1, ,Rm),判断分配给P k进程请求的资源之后系统是否安全。3 输入:进程个数n,资源种类m,T0时刻各个进程的资源分配情况(可以运行输入,也可以在程序中设置);4 输出:如果安全,输出安全的进程序列,不安全则提示信息。4、 概要设计1)程序中进程调度时间变量描述如下:5、 调试分析1、本次试验代码里用到了大量的判断语句,这时就要求对各种判断条件以及循环结束的条件考虑周全,这样才不至于让程序出现无运行结果的错误。 2、银行家算法里对于请求资源后的各个矩阵分布情况要放在全局里考虑,在此基础上当再次需要

3、分配资源时使得可分配资源已经不是最初的值。6、用户使用说明用C+语言实现提示。调试运行程序之前要熟悉变量输入的顺序,否则运行结果会出现错误。7、测试结果8、 存在问题 刚开始着手编写程序的时候对于算法设计的思路不太对,走了很多弯路,浪费了很多时间。9、 心得体会 通过这次实验,使我加深对进程死锁的理解,进一步掌握进程资源的分配、死锁的检测和安全序列的生成方法。刚开始着手编写程序的时候对于算法设计的思路不太对,走了很多弯路,浪费了很多时间,这也给我一个教训,在着手编写程序前要做充分的准备,确保思路清晰。10、附录程序源代码:#include <iostream.h>#define M

4、axNum 100#define error 0#define ok 1int compare(int aMaxNum,int bMaxNum,int m)/数组比较大小int i, k=0;for(i=0;i<m;i+)if(ai<bi)k=1;break;if(k=0) return ok;elsereturn error;int safe_check(int AvailableMaxNum, int MaxMaxNumMaxNum, int AllocationMaxNumMaxNum, int NeedMaxNumMaxNum, int SafeOrderMaxNum,in

5、t n,int m)int workMaxNumMaxNum, needMaxNumMaxNum,allocationMaxNumMaxNum;bool finishMaxNum=false;int kindMaxNum=0;int s=0,P=0;int temp1MaxNum,temp2MaxNum;for(int i=0;i<m;i+)work0i=Availablei;while(s<n && P=0) int symbol =0; for( i=0;i<n;i+) for(int j=0;j<m;j+) temp1j=worksj; temp2

6、j=Needij; if(compare(temp1,temp2,m)=1 && kindi=0) symbol=1; break; if(symbol=1) SafeOrders=i; kindi=1; for(int j=0;j<m;j+) allocationsj=Allocationij; needsj=Needij; works+1j=worksj+allocationsj; finishs=true; s+; else cout<<1<<endl; P=1; if(P=1 && s<n)cout<<&q

7、uot;该状态不安全,找不到安全序列"<<endl; return 0;elsecout<<"该状态下安全,安全序列为:"<<endl;for(int v=0;v<n;v+)cout<<SafeOrderv<<" "return 1;void request_check(int AvailableMaxNum, int MaxMaxNumMaxNum, int AllocationMaxNumMaxNum, int NeedMaxNumMaxNum, int SafeOrderM

8、axNum,int n,int m,int p,int RequestMaxNum)int temp3MaxNum;for(int i=0;i<m;i+)temp3i=Needpi;if(compare(temp3,Request,m)=1 && compare(Available,Request,m)=1 )for(i=0;i<m;i+)Availablei=Availablei-Requesti; Allocationpi=Allocationpi+Requesti;Needpi=Needpi-Requesti; if( safe_check( Availabl

9、e, Max, Allocation, Need, SafeOrder, n, m)=1)cout<<"系统是安全的,可以立即将"<<p<<"进程所申请的资源分配给它!"<<endl;elsefor(i=0;i<m;i+) Availablei=Availablei+Requesti; Allocationpi=Allocationpi-Requesti;Needpi=Needpi+Requesti; elsecout<<"进程申请的资源超出该进程所需资源或者超出现有资源!让进程

10、"<<p<<"等待"<<endl;void output(int aMaxNumMaxNum,int n,int e)for(int i=0;i<n;i+)cout<<aei<<" "void main ()cout<<"*"<<endl; cout<<"* 预防进程死锁的银行家算法 张迪 1025116022 *"<<endl; cout<<"*"<&l

11、t;endl; int AvailableMaxNum;int MaxMaxNumMaxNum;int AllocationMaxNumMaxNum;int NeedMaxNumMaxNum;int RequestMaxNum;int SafeOrderMaxNum;int n,m,p;int i,j;cout<<"请输入进程数:"cin>>n;cout<<"请输入资源数:"cin>>m;for(i=0;i<n;i+) /赋值cout<<"请输入进程"<<i

12、;for(j=0;j<m;j+) cout<<"资源"<<j<<"的各项分配情况"<<endl;cin>>Maxij;cin>>Allocationij; cin>>Needij;cout<<"请输入Available:"<<endl;for(i=0;i<m;i+)cin>>Availablei;cout<<"请求资源进程为:"cin>>p;cout<&l

13、t;"请求资源为:"for(i=0;i<m;i+)cin>>Requesti; for(i=0;i<n;i+)cout<<"进程"<<i<<endl;cout<<"Max: "output(Max,m,i); cout<<"Allocation: "output(Allocation,m,i);cout<<"Need: "output(Need,m,i); cout<<endl;cout&

14、lt;<"Available: " for(i=0;i<m;i+) cout<<Availablei<<" " cout<<endl; safe_check( Available, Max, Allocation, Need, SafeOrder, n, m); cout<<"*"<<endl; cout<<"申请资源后"<<endl; request_check(Available, Max,Allocation, Need, SafeOrder,n, m, p, Request); cout<<"*"<<endl; int choice=0; while(choice=0) cout<<"请求资源进程为:" cin>>p; cout<<"请求资源为:" for(i=0;i<m;i+) cin>>Req

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论