首页 操作系统实验三报告-预防进程死锁的银行家算法

操作系统实验三报告-预防进程死锁的银行家算法

举报
开通vip

操作系统实验三报告-预防进程死锁的银行家算法操作系统实验报告 实验三 预防进程死锁的银行家算法 学号: 班级: 姓名: 【实验目的】 通过这次实验,加深对进程死锁的理解,进一步掌握进程资源的分配、死锁的检测和安全序列的生成方法。 【实验内容】 问题描述: 设计程序模拟预防进程死锁的银行家算法的工作过程。假设有系统中有n个进程P1, … ,Pn,有m类可分配的资源R1, … ,Rm,在T0时刻,进程Pi分配到的j类资源为Allocationij个,它还需要j类资源Need ij个,系统目前剩余j类资源Workj个,现采用银行家算法进行进程资源分配预防死...

操作系统实验三报告-预防进程死锁的银行家算法
操作系统实验 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 实验三 预防进程死锁的银行家算法 学号: 班级: 姓名: 【实验目的】 通过这次实验,加深对进程死锁的理解,进一步掌握进程资源的分配、死锁的检测和安全序列的生成方法。 【实验内容】 问题描述: 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 程序模拟预防进程死锁的银行家算法的工作过程。假设有系统中有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 Available[MaxNumber]; int Max[MaxNumber][MaxNumber]; int Allocation[MaxNumber][MaxNumber]; int Need[MaxNumber][MaxNumber]; int Request[MaxNumber]; int SafeOrder[MaxNumber]; 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 Available[MaxNumber]; //可利用资源数组 int Max[MaxNumber][MaxNumber]; //最大需求矩陈 int Allocation[MaxNumber][MaxNumber]; //分配矩陈 int Need[MaxNumber][MaxNumber]; //需求矩陈 int Request[MaxNumber][MaxNumber]; //M个进程还需要N类资源的资源量 int Finish[MaxNumber]; int p[MaxNumber]; }Process; int M,N; //M个进程,N类资源 int i,j,k,l=0; int Work[MaxNumber]; //可利用资源 int Pinput(); int Safe(); int Peques(); //进程输入 int Pinput() { int i,j; cout<<"输入进程的数目:\n"; cin>>M; cout<<"输入资源的种类:\n"; cin>>N; cout<<"输入每个进程最多所需的各类资源数,按照"<>Process.Max[i][j]; cout<<"输入每个进程已经分配的各类资源数,按照"<>Process.Allocation[i][j]; Process.Need[i][j] = Process.Max[i][j] - Process.Allocation[i][j]; if(Process.Need[i][j] < 0) { cout<<"你输入的第"<>Process.Available[i]; return 1; } //安全性算法 int Safe() { for(i=0;iWork[j]) break; } if(j==N) { Process.Finish[i]=1; for(int k=0;k"; } cout<<'\n'; return 1; } } } //进程请求 int Peques() { while(1) { cout<<"输入要申请的资源的进程号:(第一个进程号为0,第二个进程号为1,以此类推)\n"; cin>>k; cout<<"输入进程所请求的各个资源的数量\n"; for(i=0;i>Process.Request[k][i]; for(i=0;i Process.Need[k][i]) { cout<<"所请求资源超过进程的需求量!\n"; return 0; } if(Process.Request[k][i] > Process.Available[i]) { cout<<"所请求资源数量超过系统所有的资源数!\n"; return 0; } } for(i=0;i>Flag; if(Flag=='Y' || Flag=='y' || Flag=='N' || Flag=='n') break; else { cout<<"请按要求重新输入:\n"; continue; } } if(Flag=='Y' || Flag=='y') continue; else break; } } 主程序Main.cpp #include #include #include #include //银行家算法 int main() { Pinput(); Safe(); Peques(); return 1; } 【实例运行结果截图】 实例 银行家算法
本文档为【操作系统实验三报告-预防进程死锁的银行家算法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_262644
暂无简介~
格式:doc
大小:235KB
软件:Word
页数:9
分类:工学
上传时间:2012-03-18
浏览量:75