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

下载本文档

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

文档简介

操作系统实验报告实验三预防进程死锁的银行家算法学号:班级:姓名:【实验目的】 通过这次实验,加深对进程死锁的理解,进一步掌握进程资源的分配、死锁的检测和安全序列的生成方法。【实验内容】问题描述:设计程序模拟预防进程死锁的银行家算法的工作过程。假设有系统中有n个进程P1, ,Pn,有m类可分配的资源R1, ,Rm,在T0时刻,进程Pi分配到的j类资源为Allocationij个,它还需要j类资源Need ij个,系统目前剩余j类资源Workj个,现采用银行家算法进行进程资源分配预防死锁的发生。程序要求如下:1)判断当前状态是否安全,如果安全,给出安全序列;如果不安全给出理由。2)对于下一个时刻T1,某个进程Pk会提出请求Request(R1, ,Rm),判断分配给P k进程请求的资源之后。3)输入:进程个数n,资源种类m,T0时刻各个进程的资源分配情况(可以运行输入,也可以在程序中设置);4)输出:如果安全输出安全的进程序列,不安全提示信息。实现提示:用C+语言实现提示:1)程序中进程调度时间变量描述如下:int AvailableMaxNumber;int MaxMaxNumberMaxNumber;int AllocationMaxNumberMaxNumber;int NeedMaxNumberMaxNumber;int RequestMaxNumber;int SafeOrderMaxNumber; 2)进程调度的实现过程如下: 变量初始化; 接收用户输入n,m,(输入或者默认的)Allocationij,Need ij; 按照银行家算法判断当前状态安全与否,安全给出安全序列,不安全给出提示; 如果安全,提示用户输入下一时刻进程Pk的资源请求Request(R1, ,Rm); 如果不安全或者无新请求则退出。实验要求:1)上机前认真复习银行家算法,熟悉资源分配和安全检查过程;2)上机时独立编程、调试程序;3)根据具体实验要求,完成好实验报告(包括实验的目的、内容、要求、源程序、实例运行结果截图)。【源程序】头文件Safe.h#include#include#include#include#define MaxNumber 100/定义进程控制块struct Process_struct int AvailableMaxNumber; /可利用资源数组int MaxMaxNumberMaxNumber; /最大需求矩陈int AllocationMaxNumberMaxNumber; /分配矩陈int NeedMaxNumberMaxNumber; /需求矩陈int RequestMaxNumberMaxNumber; /M个进程还需要N类资源的资源量int FinishMaxNumber; int pMaxNumber;Process;int M,N; /M个进程,N类资源int i,j,k,l=0;int WorkMaxNumber; /可利用资源int Pinput();int Safe();int Peques();/进程输入int Pinput()int i,j;coutM;coutN;cout输入每个进程最多所需的各类资源数,按照MxN矩陈输入n;for(i=0;iM;i+)for(j=0;jProcess.Maxij;cout输入每个进程已经分配的各类资源数,按照MxN矩陈输入n;for(i=0;iM;i+)for(j=0;jProcess.Allocationij;Process.Needij = Process.Maxij - Process.Allocationij;if(Process.Needij 0)cout你输入的第i+1个进程所拥有的第j+1个资源错误,请重新输入:n;j-;continue;cout请输入各个资源现有的数目:n;for(i=0;iProcess.Availablei;return 1;/安全性算法int Safe()for(i=0;iN;i+)Worki=Process.Availablei;for(i=0;iM;i+)Process.Finishi=0;for(i=0;iM;i+)if(Process.Finishi=1)continue;elsefor(j=0;jWorkj)break;if(j=N)Process.Finishi=1;for(int k=0;kN;k+)Workk+=Process.Allocationik;Process.pl+=i;i=-1;elsecontinue;if(l=M)cout系统是安全的n;cout系统安全序列是:n;for(i=0;il;i+)coutProcess.pi;if(i != l-1)cout;coutn;return 1;/进程请求int Peques()while(1)coutk;cout输入进程所请求的各个资源的数量n;for(i=0;iProcess.Requestki;for(i=0;i Process.Needki)cout Process.Availablei)cout所请求资源数量超过系统所有的资源数!n;return 0; for(i=0;iN;i+)Process.Availablei -= Process.Requestki;Process.Allocationki += Process.Requestki;Process.Needki -= Process.Requestki;if(Safe()cout同意分配请求n;elsecoutSORRY你的请求被拒绝n;for(i=0;iN;i+)Process.Availablei += Process.Requestki; Process.Allocationki -= Process.Requestki; Process.Needki += Process.Requestki;for(i=0;iM;i+)Process.Finishi=0;char Flag; /标志位coutFlag;if(Flag=Y | Flag=y | Flag=N | Flag=n)break;elsecout请按要求重新输入:n;continue;if(Flag=Y |

温馨提示

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

评论

0/150

提交评论