已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/*死锁避免与死锁检测模拟程序【银行家算法】 网络工程06-3班 学号:310609040308*/import java.util.*;public class TestTheBanker public static void main(String args) Scanner scanner = new Scanner(System.in); TheBanker tb = new TheBanker(); tb.deadlockAvoidance();/死锁避免 int gate = 1; while(gate!=0) tb.deadlockDetection();/死锁检测 System.out.println(如果您要继续分配资源请输入1,退出请输入0); System.out.print(您输入的值为:); gate = scanner.nextInt(); System.out.println(); System.out.println(使用愉快!期待您下次使用!);class TheBankerint m;int n;int max;int maxbak;/备份用int allocation;int allocationbak;/备份用int need;int needbak;/备份用int available;int availablebak;/备份用public TheBanker() Scanner s = new Scanner(System.in); System.out.println(初始化=); System.out.print(请依次输入系统中的【进程数】和【资源类型数】:); m = s.nextInt(); n = s.nextInt(); max =new intmn; maxbak = new intmn; allocation = new intmn; allocationbak = new intmn; need = new intmn; needbak = new intmn; available = new intn; availablebak = new intn; for(int i=0;imax.length;i+)/初始化向量MAX、ALLOCATION、NEED、AVAILABLE System.out.print(请依次输入第 + i + 进程的各资源数:); for(int j=0;jmaxi.length;j+) maxij = s.nextInt(); maxbakij = maxij; for(int i=0;iallocation.length;i+) System.out.print(请依次输入第 + i + 进程中已分配资源的数量:); for(int j=0;jallocationi.length;j+) allocationij = s.nextInt(); allocationbakij = allocationij; for(int i=0;ineed.length;i+) for(int j=0;jneedi.length;j+) needij = maxij - allocationij; needbakij = needij; for(int i=0;iavailable.length;i+) System.out.print(请输入系统中第 + i + 种资源的剩余量:); availablei = s.nextInt(); availablebaki = availablei; System.out.println(初始化结果=); System.out.println( MAX ALLOCATION NEED AVAILABLE); for(int i=0;im;i+) System.out.print(P + i + : ); for(int j=0;j9)/如果是两位数,控制格式,在数字前少输出一个 。 System.out.print(maxij + ); else System.out.print( + maxij + ); System.out.print( ); for(int j=0;j9) System.out.print(allocationij + ); else System.out.print( + allocationij + ); System.out.print( ); for(int j=0;j9) System.out.print(needij + ); else System.out.print( + needij + ); if(i=0) System.out.print( ); for(int j=0;j9) System.out.print(availablej + ); else System.out.print( + availablej + ); System.out.println(); System.out.println(=完成初始化=); System.out.println();public void deadlockAvoidance() int security = new intm; boolean param = new booleanm; int tar = new intn; int count = 0; int num1 = m+1;/计数器,每循环一遍所有进程就自减1 int num2 = m;/计数器,每遇到一个被满足的进程就自减1 while(num10)/如果num1=0,则说明依次循环下来没有能够满足的进程,因此中止 for(int i=0;im;i+) if(parami=false)/只有没有被满足的进程才可以进入内层循环 parami = true; for(int j=0;jn;j+) tarj = availablej - needij; if(tarj0) parami = false; if(parami=true) for(int k=0;k0) System.out.print(【安全序列】为:); for(int i=0;i); System.out.println(); System.out.println(=【死锁避免】结束=); System.out.println(); return; while(num1=0)&(num20) System.out.println(抱歉!没有【安全序列】!); System.out.println(=【死锁避免】结束=); System.out.println(); return; public void deadlockDetection() Scanner sc = new Scanner(System.in); int key; int security = new intm; boolean param = new booleanm; int temp = new intn; int tar = new intn; int count = 0; int num1 = m+1;/计数器,每循环一遍所有进程就自减1 int num2 = m;/计数器,每遇到一个被满足的进程就自减1 for(int i=0;im;i+)/回复死锁检测前的状态 for(int j=0;jn;j+) maxij = maxbakij; allocationij = allocationbakij; needij = needbakij; availablej = availablebakj; System.out.println(); System.out.println(死锁检测=); System.out.println(如果您此时想申请系统资源请输入【进程号】和+n+种【资源量】,系统将帮您判断是否可行。); System.out.print(您输入的进程号为:); key = sc.nextInt(); for(int i=0;in;i+) System.out.print(您要申请的第+i+种资源的数量为:); tempi = sc.nextInt(); for(int i=0;in;i+) allocationkeyi = allocationkeyi + tempi; needkeyi = needkeyi - tempi; if(needkeyi0) System.out.println(申请资源大于所需资源,系统【不能】分配资源!); for(int k=0;km;k+)/回复死锁检测前的状态 for(int j=0;jn;j+) if(k=0) availablej = availablebakj; maxkj = maxbakkj; allocationkj = allocationbakkj; needkj = needbakkj; return; availablei = availablei - tempi; if(availablei0) System.out.println(申请资源大于系统所剩资源,系统【不能】分配资源!); for(int k=0;km;k+)/回复死锁检测前的状态 for(int j=0;jn;j+) if(k=0) availablej = availablebakj; maxkj = maxbakkj; allocationkj = allocationbakkj; needkj = needbakkj; return; System.out.println(申请资源时各进程的状态=); System.out.println( MAX ALLOCATION NEED AVAILABLE); for(int i=0;im;i+) System.out.print(P + i + : ); for(int j=0;j9) System.out.print(maxij + ); else System.out.print( + maxij + ); System.out.print( ); for(int j=0;j9) System.out.print(allocationij + ); else System.out.print( + allocationij + ); System.out.print( ); for(int j=0;j9) System.out.print(needij + ); else System.out.print( + needij + ); if(i=0) System.out.print( ); for(int j=0;j9) System.out.print(availablej + ); else System.out.print( + availablej + ); System.out.println(); System.out.println(=完成状态展示=); System.out.println(); while(num10)/如果num1=0,则说明依次循环下来没有能够满足的进程,因此中止 for(int i=0;im;i+) if(parami=false)/只有没有被满足的进程才可以进入内层循环 parami = true; for(int j=0;jn;j+) tarj = availablej - needij; if(tarj0) parami = false; if(parami=true) for(int k=0;k0) System.out.print(【安全序列】为:); for(int i=0;i); System.out.println(); System.out.println
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新村住宅工程施工组织设计范本
- 2.3生物圈与植被
- 边城的经典读后感
- 近视防控宣传教育月学生心得作文
- 第5课 工业革命与工厂制度 导学案 高二历史统编版(2019)选择性必修2经济与社会生活
- 班主任及个人工作总结6篇
- 做好人好事事迹材料7篇
- 第五单元 货币与赋税制度 单元练 高二历史统编版2019选择性必修1 国家制度与社会治理
- 副班主任工作年度总结8篇
- 六一幼儿园活动总结8篇
- 销售团队提成核算办法
- 不随行父母同意函(领馆版本)
- 湖南消防最新竣工资料147页
- 房屋委托代管协议书
- 《黄鹤楼送孟浩然之广陵》ppt课件[共33页]
- 02WI008纸箱跌落测试作业指导书
- 化工厂设备、管道保温施工方案【完整版】
- 民宿品牌托管运营管理合同
- (完整版)政府投资合作框架协议书(最新整理)
- 沪科版七年级数学下册复习知识点总结
- 网评员队伍建设及现在存在的问题 公安局网评员队伍建设
评论
0/150
提交评论