版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年二级注册建筑师之法律法规经济与施工考试题库500道【突破训练】
- 2026年机械员之机械员专业管理实务考试题库200道(重点)
- 2024年黑龙江民族职业学院辅导员考试笔试真题汇编附答案
- 2026年心理咨询师之心理咨询师基础知识考试题库及参考答案(巩固)
- 医药研发公司研发经理面试问题集
- 物流运营专员考试题库及答案解析
- 2026年心理咨询师之心理咨询师二级技能考试题库带答案(基础题)
- 2026年企业人力资源管理师之二级人力资源管理师考试题库500道带答案(预热题)
- 合作种植水果合同范本
- 2025年甘肃科技馆寒假志愿者招募165人考试笔试备考题库及答案解析
- 四川省达州市达川中学2025-2026学年八年级上学期第二次月考数学试题(无答案)
- 2025陕西西安市工会系统开招聘工会社会工作者61人历年题库带答案解析
- 外卖平台2025年商家协议
- 2025年高职(铁道车辆技术)铁道车辆制动试题及答案
- (新教材)2026年人教版八年级下册数学 24.4 数据的分组 课件
- 2025陕西榆林市榆阳区部分区属国有企业招聘20人考试笔试模拟试题及答案解析
- 老年慢性病管理及康复护理
- 2025广西自然资源职业技术学院下半年招聘工作人员150人(公共基础知识)测试题带答案解析
- 2026年海南经贸职业技术学院单招(计算机)考试参考题库及答案1套
- 代办执照合同范本
- 2025天津大学管理岗位集中招聘15人备考考点试题及答案解析
评论
0/150
提交评论