




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验三 预防进程死锁的银行家算法 1、实验目的 通过这次实验,加深对进程死锁的理解,进一步掌握进程资源的 分配、死锁的检测和安全序列的生成方法。 2、试验内容 问题描述: 设计程序模拟预防进程死锁的银行家算法的工作过程。假设系统 中有n个进程 P1, ,nP,有 m类可分配的资源 R1, ,Rm,在T0 时刻,进程 Pi分配到的 j 类资源为 Allocation ij个,它还需要 j 类 资源 Need ij个,系统目前剩余 j 类资源 Workj个,现采用银行家 算法进行进程资源分配预防死锁的发生。 3、程序要求 : 1)判断当前状态是否安全, 如果安全给出安全序列; 如果不安全 给出理由
2、。 2)对于下一个时刻 T1, 某 个进程 Pk 会 提 出请 求 Request(R1, ,Rm),判断分配给 P k 进程请求的资源之后系统是否 安全。 3)输入:进程个数 n,资源种类 m,T0 时刻各个进程的资源分配 情况(可以运行输入,也可以在程序中设置) ; 4)输出:如果安全,输出安全的进程序列,不安全则提示信息。 4、需求分析 (1)输入的形式和输入值的范围 输入进程的数目 输入资源的种类 每个进程最多所需的各类资源数 (Maxij) 每个进程已经分配的各类资源数 (Allocationij) 各个资源现有的数目( Available ) (2) 输出的形式 如果安全,输出安全
3、的进程序列,不安全则提示信息 (3) 测试用例 5、调试分析 通过本次实验可知, 用银行家算法避免死锁就是在资源所能承受范围 内给需要资源的进程分派所需资源, 在分派资源时若请求资源超出所 需资源或超出可得资源,则不合条件 , 则让当前进程等待换下一个进 程, 若可利用资源已经满足任何一个进程所需,则系统不安全并且系 统不分配资源; 在安全性检验时, 若可利用资源已经满足任何一个进 程所需,则系统不安全并且系统不分配资源。 免死锁属于事先预防的策略, 在资源的动态分配过程中用某种方法去 防止系统进入不安全状态,从而避免死锁发生。 6、测试结果 输入进程数,资源数,最大需求矩阵,分配矩阵,可利用
4、资源向量 , 对进程的资源请求向量 输出: 7、附录 (java) package experiment; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.Scanner; public class C_Bank / 允许的最大进程数 private static int MaxNumber = 100; / 真正的进程数 public static int realNum; / ? public
5、static int l=0; / 资源的种类 public static int resourceKind; / 可利用资源数组 private static int Available = new intMaxNumber; / 最大需求矩阵 private static int Max = new intMaxNumberMaxNumber; / 已分配矩阵 private static int Allocation = new intMaxNumberMaxNumber; / 需求矩阵 private static int Need = new intMaxNumberMaxNumbe
6、r; / 请求向量 private static int Request = new intMaxNumberMaxNumber; / 表示系统是否有足够的资源分配给进程 private static boolean Finish = new booleanMaxNumber; / 当前可利用资源 private static int Work = new intMaxNumber; / 安全序列 private static int p = new intMaxNumber; /for 循环中使用 private static int i; private static int j; pri
7、vate static int k; public static Scanner stdin; public static void main(String args) throws FileNotFoundException / 输 realNum,resourceKind,Maxij,Allocationij,Allocationij,获得 Needij input(); / 安全性算法 /safe(); / 进程请求 request(); public static void input() throws FileNotFoundException BufferedInputStream
8、 in = new BufferedInputStream(new FileInputStream( ./file/03); System.setIn(in); stdin = new Scanner(System.in); / 输入进程的数目 realNum = stdin.nextInt(); / 输入资源的种类 resourceKind = stdin.nextInt(); / 输入每个进程最多所需的各类资源数 (Maxij) for (i = 0; i realNum; i+) for (j = 0; j resourceKind; j+) Maxij = stdin.nextInt(
9、); / 输入每个进程已经分配的各类资源数 (Allocationij), 并获得 Needij for (i = 0; i realNum; i+) for (j = 0; j resourceKind; j+) Allocationij = stdin.nextInt(); Needij = Maxij - Allocationij; / 请输入各个资源现有的数目 for (i = 0; i resourceKind; i+) Availablei = stdin.nextInt(); / 安全性算法 public static boolean safe() /Work 赋初值 for(i
10、=0 ; iresourceKind ; i+) Worki=Availablei; /Finish 赋初值 for(i=0 ; irealNum ; i+) Finishi=false; for(i=0 ; irealNum ; i+) if(Finishi = true) continue; else for(j=0 ; jWorkj) break; if(j=resourceKind) / 满足了 Need=Work Finishi=true; for(k=0 ; kresourceKind ; k+) Workk = Workk + Allocationik; pl+=i; i=-1;
11、 else continue; if(l=realNum) /Finish System.out.println( System.out.println( for(i=0;i); System.out.print(n); return true; return false; / 进程请求 public static void request() 1, 以此类 / 输入要申请的资源的进程号 (第一个进程号为 0, 第二个进程号为 推) k = stdin.nextInt(); / 输入进程所请求的各个资源的数量 for(i=0 ; iresourceKind ; i+) Requestki =
12、stdin.nextInt(); for(i=0 ; i Needki) System.out.println( 所请求资源超过进程的需求量 !); return ; if(Requestki Availablei) !); System.out.println( 所请求资源数量超过系统所有的资源数 return ; for(i=0 ; iresourceKind ; i+) Availablei -= Requestki; Allocationki += Requestki; Needki -= Requestki; if(safe() System.out.println( 同意分配请求 ); else System.out.println(SO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 有关医生的年终工作总结(5篇)
- 2025人事专员工作心得(4篇)
- 安徽省马鞍山市含山中学2018-2019学年高二上学期期末考试英语试题
- 全面推进医疗卫生服务均等化进程-以太平岛的健康覆盖计划为例
- 2025至2031年中国大麦绿素粉行业投资前景及策略咨询研究报告
- 2025至2031年中国壁嵌式电缆分线箱行业投资前景及策略咨询研究报告
- 2025单位领导辞职报告(15篇)
- 2025至2031年中国地板清洁机附件行业投资前景及策略咨询研究报告
- 浙江省台州市本年度(2025)小学一年级数学部编版能力评测(下学期)试卷及答案
- 2025至2031年中国双螺杆膨化食品生产线行业投资前景及策略咨询研究报告
- 2025年吉林省民航机场集团长白山机场公司招聘笔试参考题库附带答案详解
- 小学生涯课件
- 目光礼仪培训
- 西藏拉萨中学2024-2025学年高三第二学期英语试题4月月考试卷含解析
- 设备验收方案
- 高中家长会 高三高考冲刺家长会课件
- 2025-2030中国触觉马达行业市场发展趋势与前景展望战略研究报告
- 修订版中小学生行为守则(2024版)
- 2024年全国统一高考英语试卷(新课标Ⅰ卷)含答案
- TSG Z7002-2022 特种设备检测机构核准规则
- 茶叶中微量元素的鉴定与定量测定
评论
0/150
提交评论