用银行家算法实现资源分配

上传人:ba****u6 文档编号:162585163 上传时间:2022-10-18 格式:DOCX 页数:8 大小:156.03KB
返回 下载 相关 举报
用银行家算法实现资源分配_第1页
第1页 / 共8页
用银行家算法实现资源分配_第2页
第2页 / 共8页
用银行家算法实现资源分配_第3页
第3页 / 共8页
点击查看更多>>
资源描述
南通大学杏林学院操作系统实验(用银行家算法实现资源分配)班级:计121小组成员:方筱雯1213023008周徐莲 1213023014指导老师:一:实验目的为了了解系统的资源分配情况,假定系统的任何一种资 源在任一时刻只能被一个进程使用。任何资源已经占用的资 源只能由自己释放,而不能由其他进程抢占。当进程申请的 资源不能满足时,必须等待。因此,只要资源分配算法能保 证进程的资源请求,且不出现循环等待,则系统不会出现死 锁。编写模拟系统进行资源调度的程序,采用银行家算法,有效的避 免死锁的产生。模拟进程的分配算法,了解死锁的产生和避免的办法。 二:实验要求(1):为了观察死锁产生和避免的情况,要求设计3到4 个并发进程,共享系统的 10 个同类不可抢占的资源。各进 程是动态进行资源的申请和释放。(2):用银行家算法设计一个资源分配程序,运行这个 程序,观察系统运行情况,并对系统运行的每一步进行显示。 三:实验流程图四:源程序#include#include#include#include#define MaxNumber 100/定义进程控制块struct Process_structint 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;coutvv输入进程的数目:n;cinM;coutvv输入资源的种类:n;cinN;coutvv输入每个进程最多所需的各类资源数,按照vvMvvxvvNvv矩阵输入n; for(i=0;ivM;i+)for(j=0;jvN;j+)cinProcess.Maxij;coutvv输入每个进程已经分配的各类资源数,按照vvMvvxvvNvv矩阵输入n; for(i=0;ivM;i+)for(j=0;jvN;j+)cinProcess.Allocationij;Process.Needij = Process.Maxij - Process.Allocationij; if(Process.Needij 0)coutvv你输入的第vvi+lvv个进程所拥有的第vvj+lvv个资源错误, 请重新输入:n;j-;continue;coutvv请输入各个资源现有的数目:n;for(i=0;iProcess.Availablei;return l;/安全性算法int Safe()for(i=0;ivN;i+)Worki=Process.Availablei;for(i=0;ivM;i+)Process.Finishi=0;for(i=0;ivM;i+) if(Process.Finishi=l)continue;elsefor(j=0;jvN;j+)if(Process.NeedijWorkj)break;if(j=N)Process.Finishi=l;for(int k=0;kvN;k+)Workk+=Process.Allocationik;Process.pl+=i;i=-l; elsecontinue;if(l=M)coutvv系统是安全的vvn;coutvv系统安全序列是:n;for(i=0;il;i+) coutProcess.pi;if(i != l-1)cout;coutk;coutvv输入进程所请求的各个资源的数量n;for(i=0;ivN;i+)cinProcess.Requestki;for(i=0;ivN;i+) if(Process.Requestki Process.Needki) coutvv所请求资源超过进程的需求量!n;return 0;if(Process.Requestki Process.Availablei)coutvv所请求资源数量超过系统所有的资源数!n; return 0;for(i=0;iN;i+)Process.Availablei -= Process.Requestki;Process.Allocationki += Process.Requestki;Process.Needki -= Process.Requestki;if(Safe()coutvv同意分配请求n;elsecoutvvSORRY你的请求被拒绝n;for(i=0;iN;i+)Process.Availablei += Process.Requestki;Process.Allocationki -= Process.Requestki; Process.Needki += Process.Requestki;for(i=0;iFlag;if(Flag=Y | Flag=y | Flag=N | Flag=n) break;elsecoutvv请按要求重新输入:n;continue;if(Flag=Y | Flag=y)continue;elsebreak;#includeviostream.h#includevstring.h#includeviomanip.h#includevstdlib.h银行家算法int main()Pinput();Safe();Peques(); return 1;五:实验结果
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!