




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/*死锁避免与死锁检测模拟程序【银行家算法】 import java.util.*;public class TestTheBanker public static void main(String args) Scanner scanner = new Scanner(System.in); TheBanker tb = new T
2、heBanker(); tb.deadlockAvoidance();/死锁避免 int gate = 1; while(gate!=0) tb.deadlockDetection();/死锁检测 System.out.println("如果您要继续分配资源请输入"1",退出请输入"0""); System.out.pr
3、int("您输入的值为:"); 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
4、;/备份用int available;int availablebak;/备份用public TheBanker() Scanner s = new Scanner(System.in); System.out.println("初始化="); System.out.print("请依次输入系统中的【进程数】和【资源类型数】:"); m = s.nextInt(); n = s.nextInt();
5、 max =new intmn; maxbak = new intmn; allocation = new intmn; allocationbak = new intmn; need = new intmn; needbak = new intmn; available =
6、 new intn; availablebak = new intn; for(int i=0;i<max.length;i+)/初始化向量MAX、ALLOCATION、NEED、AVAILABLE System.out.print("请依次输入第" + i + "进程的各资源数:"); for(int j=0
7、;j<maxi.length;j+) maxij = s.nextInt(); maxbakij = maxij; for(int i=0;i<allocation.length;i+) Sys
8、tem.out.print("请依次输入第" + i + "进程中已分配资源的数量:"); for(int j=0;j<allocationi.length;j+) allocationij = s.nextInt(); allocationbakij = allocationij;
9、 for(int i=0;i<need.length;i+) for(int j=0;j<needi.length;j+) needij = maxij - allocationij; needbakij = needij;
10、0; for(int i=0;i<available.length;i+) System.out.print("请输入系统中第" + i + "种资源的剩余量:"); availablei = s.nextInt(); availablebaki = availablei;
11、 System.out.println("初始化结果="); System.out.println(" MAX ALLOCATION NEED
12、60; AVAILABLE"); for(int i=0;i<m;i+) System.out.print("P" + i + ": "); for(int j=0;j<n;j+)
13、60; if(maxij>9)/如果是两位数,控制格式,在数字前少输出一个" "。 System.out.print(maxij + " "); else System.out.print(" " + maxij + " ");
14、160; System.out.print(" "); for(int j=0;j<n;j+) if(allocationij>9) System.out.print(all
15、ocationij + " "); else System.out.print(" " + allocationij + " "); System.out.print("&
16、#160; "); for(int j=0;j<n;j+) if(needij>9) System.out.print(needij + " "); else
17、0; System.out.print(" " + needij + " "); if(i=0) System.out.print(" "); f
18、or(int j=0;j<n;j+) if(availablej>9) System.out.print(availablej + " "); else System.out.
19、print(" " + availablej + " "); System.out.println(); System.out.println(&qu
20、ot;=完成初始化="); 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;/计数器,每循环一遍所有进程就
21、自减1 int num2 = m;/计数器,每遇到一个被满足的进程就自减1 while(num1>0)/如果num1=0,则说明依次循环下来没有能够满足的进程,因此中止 for(int i=0;i<m;i+) if(parami=false)/只有没有被满足的进程才可以进入内层循环 parami = true;
22、 for(int j=0;j<n;j+) tarj = availablej - needij; if(tarj<0) parami = false; &
23、#160; if(parami=true) for(int k=0;k<n;k+) availabl
24、ek = availablek + allocationik; securitycount = i;/记录以满足的进程号
25、; count+; num2-;
26、 num1-; while(num2=0)&&(num1>0) System.out.print("【安全序列】为:"); for(int i=0;i<m;i+) if(i=(m-1) System.out.print("P" +
27、 securityi); else System.out.print("P" + securityi + "->"); System.out.println();
28、160; System.out.println("=【死锁避免】结束="); System.out.println(); return; while(num1=0)&&(num2>0) System.out.println("抱歉!没有【安全序列】!"); System.
29、out.println("=【死锁避免】结束="); System.out.println(); return; public void deadlockDetection() Scanner sc = new Scanner(System.in); int key;
30、; 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(i
31、nt i=0;i<m;i+)/回复死锁检测前的状态 for(int j=0;j<n;j+) maxij = maxbakij; allocationij = allocationbakij; needij = needbakij; availablej = availablebakj; &
32、#160; System.out.println(); System.out.println("死锁检测="); System.out.println("如果您此时想申请系统资源请输入【进程号】和"+n+"种【资源量】,系统将帮您判断是否可行。"); System.out.print("您输入的进程号为:"); key = sc.ne
33、xtInt(); for(int i=0;i<n;i+) System.out.print("您要申请的第"+i+"种资源的数量为:"); tempi = sc.nextInt(); for(int i=0;i<n;i+) allocationkeyi = allocationkeyi + tempi; needkeyi = n
34、eedkeyi - tempi; if(needkeyi<0) System.out.println("申请资源大于所需资源,系统【不能】分配资源!"); for(int k=0;k<m;k+)/回复死锁检测前的状态 for(int j=0;j<n;j+) if(k=0) &
35、#160; availablej = availablebakj; maxkj = maxbakkj; allocationkj = allocationbakkj; needkj = needbakkj;
36、0; return; availablei = availablei - tempi; if(availablei<0) System.out.println("申请资源大于系统所剩资源,系统【不能】分配资源!"); for(int
37、 k=0;k<m;k+)/回复死锁检测前的状态 for(int j=0;j<n;j+) if(k=0) availablej = availablebakj; maxkj = maxbakkj;
38、0; allocationkj = allocationbakkj; needkj = needbakkj; return; System.out.println("申请资源
39、时各进程的状态="); System.out.println(" MAX ALLOCATION NEED
40、0; AVAILABLE"); for(int i=0;i<m;i+) System.out.print("P" + i + ": "); for(int j=0;j<n;j+) if(maxij>9)
41、 System.out.print(maxij + " "); else System.out.print(" " + maxij + " "); System.out.print(
42、" "); for(int j=0;j<n;j+) if(allocationij>9) System.out.print(allocationij + " "); else
43、0; System.out.print(" " + allocationij + " "); System.out.print(" "); for(int j=0;j<n;j+)
44、 if(needij>9) System.out.print(needij + " "); else System.out.print(" " + needij + " "); &
45、#160; if(i=0) System.out.print(" "); for(int j=0;j<n;j+) if(availablej>9) &
46、#160; System.out.print(availablej + " "); else System.out.print(" " + availablej + " ");
47、0; System.out.println(); System.out.println("=完成状态展示="); System.out.println(); while(num1>
48、;0)/如果num1=0,则说明依次循环下来没有能够满足的进程,因此中止 for(int i=0;i<m;i+) if(parami=false)/只有没有被满足的进程才可以进入内层循环 parami = true; for(int j=0;j<n;j+)
49、0; tarj = availablej - needij; if(tarj<0) parami = false; if(parami=true)
50、; for(int k=0;k<n;k+) availablek = availablek + allocationik; &
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 特许另类投资分析师考试与会计知识联系分析试题及答案
- 会议管理总结幼儿园
- 加强内部审计与合规管理的计划
- 2018年秋九年级上(部编版)历史教学设计:第4课 希腊城邦和亚历山大帝国
- 教材选择与使用建议计划
- 制订有效的任职资格标准计划
- 事业目标与愿景的统沟通计划
- 生产执行中的关键绩效指标计划
- 幼儿园探究式学习的实施策略计划
- 人类基因组的进化研究试题及答案
- 【工商管理专业毕业综合训练报告2600字(论文)】
- 2022湖南省郴州市中考物理真题试卷和答案
- 救护车使用培训课件
- 经典成语故事郑人买履
- 人血白蛋白介绍演示培训课件
- 大学军事理论课教程第三章军事思想第四节当代中国军事思想
- 建筑企业法律服务方案
- 空调维保服务投标方案(技术标)
- 幼儿园户外自主游戏
- 22S803 圆形钢筋混凝土蓄水池
- 烟供.火供.火施仪轨
评论
0/150
提交评论