欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    模拟银行家算法实现死锁避免.docx

    • 资源ID:30213340       资源大小:621.05KB        全文页数:33页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    模拟银行家算法实现死锁避免.docx

    1、模拟银行家算法实现死锁避免操作系统课程设计报告院 系:计算机与信息工程学院 题 目:模拟银行家算法实现死锁避免 学生姓名: 学生学号: 专业班级: 指导教师: 完成时间:2012年9月6日 评分表:课题名称指导教师评 语成绩评定姓 名成 绩学 号日期年 月 日目录题 目:模拟银行家算法实现死锁避免 1评分表: 2一 课程设计目的 3二 课程设计内容 3三 课程设计环境 4四 课程设计步骤 441.需求分析 44.1.1 问题的提出 44.1.2 银行家算法原理 44.1.3银行家算法详细解析 54.1.4 银行安全性算法目的 64.2概要设计 64.2.1 功能模块设计如下: 64.2.2 功

    2、能模块描述 74.3详细设计 74.3.1基本数据结构的设计 74.3.2算法的设计 8五 课程设计结果 95.1运行结果 95.2测试分析 12六 课程设计心得与体会 12总结 12七 参考文献 13八 程序清单 148.1 操作主界面代码: 148.2 功能实现代码: 17一 课程设计目的在熟练掌握死锁发生原理和解决死锁问题的基础上,利用一种程序设计语言模拟实现利用银行家算法实现死锁避免,一方面加深对原理的理解,另一方面提高学生通过编程根据已有原理解决实际问题的能力,为学生将来进行系统软件开发和针对实际问题提出高效的软件解决方案打下基础。二 课程设计内容模拟实现银行家算法对系统资源进行分配

    3、,以防止死锁的出现。本课题肯定不可能实现对实际操作系统的资源管理,而是通过对模拟资源数据的处理,检测银行家算法在防止死锁出现的作用。银行家算法描述:第一部分:银行家算法(扫描)1如果Request=Need,则转向2;否则,出错2如果Request=Available,则转向3,否则等待3系统试探分配请求的资源给进程4系统执行安全性算法第二部分:安全性算法1.设置两个向量(1).工作向量:Work=Available(表示系统可提供给进程继续运行所需要的各类资源数目)(2).Finish:表示系统是否有足够资源分配给进程(True:有;False:没有).初始化为False2.若Finishi

    4、=False&Need=Work,则执行3;否则执行4(i为资源类别)3.进程P获得第i类资源,则顺利执行直至完成,并释放资源:Work=Work+Allocation;Finishi=true;转2请充分理解以上银行家算法描述的核心思想。(详细银行家算法描述见p95) 三 课程设计环境Windows操作系统 java语言 eclipse编程工具四 课程设计步骤41.需求分析4.1.1 问题的提出银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系银行家算法统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待

    5、。为实现银行家算法,系统必须设置若干数据结构。要解释银行家算法,必须先解释操作系统安全状态和不安全状态。 4.1.2 银行家算法原理我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。 为保证资金的安全,银行家规定: (1) 当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客; (2) 顾客可以分期贷款,但贷款的总数不能超过最大需求量; (3) 当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款; (4) 当顾客得到所需的全部资金后,一定能在有限的时间

    6、里归还所有的资金. 操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程本次申请的资源数是否超过了该资源所剩余的总量。若超过则拒绝分配资源,若能满足则按当前的申请量分配资源,否则也要推迟分配。4.1.3银行家算法详细解析1、安全性算法:确定计算机系统是否处于安全状态的算法分为如下几步:(1)设置两个工作向量Work=AVAILABLE;FINISH (2)从进程集合中找到一个满足下述条件的进程, FINISH=false; N

    7、EED=Work; 如找到,执行(3);否则,执行(4)(3)设进程获得资源,可顺利执行,直至完成,从而释放资源。 Work+=ALLOCATION; Finish=true; GOTO 2 (4)如所有的进程Finish= true,则表示安全;否则系统不安全。2、资源请求算法:设进程k提出请求requesti,则银行家算法按如下规则进行判断。 (1)如果request k i= needki,则转(2);否则,出错。 (2)如果request ki= avaliableki,则转(3);否则,出错。 (3)系统试探分配资源,修改相关数据: avaliable i-= request ki;

    8、 avaliable ki+= request ki; needki-= request ki; (4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。 4.1.4 银行安全性算法目的 银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。4.2概要设计4.2.1 功能模块设计如下: 图4.2.1:程序功能模块设计图4.2.2 功能模块描述第一部分:银行家算法1如果Request=Need,则转向2;否则,出错2如果Re

    9、quest=Available,则转向3,否则等待3系统试探分配请求的资源给进程4系统执行安全性算法第二部分:安全性算法1.设置两个向量(1).工作向量:Work=Available(表示系统可提供给进程继续运行所需要的各类资源数目)(2).Finish:表示系统是否有足够资源分配给进程(True:有;False:没有).初始化为False2.若Finishi=False&Need=Work,则执行3;否则执行4(i为资源类别)3.进程P获得第i类资源,则顺利执行直至完成,并释放资源:Work=Work+Allocation;Finishi=true;转24.3详细设计4.3.1基本数据结构的

    10、设计static int tatoaln; /总资源数 static int avaliable;/可利用资源数static int allocation;/已用资源数 static int max;/最大资源需求static int need;/还需的各种资源数static int request;/请求资源数4.3.2算法的设计银行家安全性算法思路:图4.3.2:银行家安全性算法流程图五 课程设计结果5.1运行结果(1)主界面 图5.1-1:操作主界面 (2)输入系统进程数为5、系统资源类型数为3银行家算法算法演示结果如下: 图5.1-2:实现主要功能界面 图5.1-3:输入系统总资源数的

    11、表格 图5.1-4:输入已用资源数的表格 图5.1-4:输入最多资源输表格 图5.1-5:输入请求资源数表格 图5.1-6:系统安全状态检测 图5.1-7:资源请求安全检测5.2测试分析经过几次测试下来,发现对于一些基本的操作已经没什么问题,但如果牵涉的复杂的问题,里面就出现了很多缺点和不足了。从测试用的数据来看,基本上可以选择随意输入系统的进程数和系统的资源类型数以及系统每种资源的最大数量了,但由于测试的数据有限而且牵涉面也不是很广,很多问题可能没有测试出来,存在的一些技术问题还需要进一步改善。六 课程设计心得与体会 总结 操作系统课程设计下来,感觉自己有很大的进步,特别是在对操作系统相关知

    12、识的理解方面,许多在以前一直没有弄明白的地方,现在通过自己编写程序,一步步下来,一步步掌握了更多的知识。 这次课程设计下来,我的体会和感觉主要体现在这几方面:1.感觉这一次课程设计是花了许多心血,翻看课本,查找资料,把许多遗忘了的东西都重拾脑海,每天在宿舍,自己给自己安排好了计划,一步步执行下来,所以课程设计的一个星期,感觉过得很充实,心情也很不错,在这样累积下来,自己亲自完全实现功能出来,感觉很兴奋。2. 在编程实现的过程中,自己也发现了不少的问题,自己感觉很容易的东西却总是出错,而且都是比较低级的错误,感觉很多东西看起来很简单,但在实际编程实现的时候却需要注意各种细节,需要耐心细致,实际编

    13、程中遇到一些细节上的小问题确实需要仔细考虑才行。3. 因为银行家算法牵涉的很多要输入的数,所以定义了很多个数组来存放,结果是因为数据太多,时常发生混淆,出了不少的错误,而且不容易找出来,感觉很头疼。4. 为了实现银行家算法,我把课本上的知识进行了全面的复习,在理解的基础上,再在网上搜索资料,进一步掌握了相关知识之后,才开始着手编写程序,通过银行家算法的安全性算法和资源请求算法的实现,对死锁也有更深一层的了解。使我对操作系统特别是死锁避免这一部分的认识有了很大的加深。5.课程设计下来,我对操作系统理解更为全面了,并感觉里面有太多的知识需要去掌握,也深深体会的操作系统方面知识的重要性,进而感觉的自

    14、己这方面知识的严重不足。 6. 最后总体感觉这一次课程设计,时间比较充足,并且也是由自己自由发挥,自己的扩展空间也更大了,有了这样一次课程设计机会,给我带来了很多意想不到的收获。七 参考文献1. 【美国】Peter Baer Galvin等编著 郑扣根 【译】 操作系统概念.第七版 北京:高等教育出版社.2010.2. 张尧学编著. 计算机操作系统教程习题解答与实验指导. 北京: 清华大学出版社.2000.3.叶核亚编著 陈道蓄主审. java程序设计实用教程. 第三版 北京:电子工业出版社八 程序清单8.1 操作主界面代码:import java.awt.Color;public class

    15、 OperatingFrame extends JFrame implements ActionListener,CaretListener /*银行家算法 * param args */ public static String data=0,0; public JButton but=new JButton(确定),new JButton(退出); public JTextField textField=new JTextField (5,10),new JTextField (3,10); public OperatingFrame() super(银行家算法); this.setLay

    16、out(null); this.setBounds(530, 340, 405, 295); this.setDefaultCloseOperation(3);this.setIconImage(getToolkit().getImage(images/wbto20110516223525.jpg);.URL url=this.getClass().getClassLoader().getResource(images/egs.jpg); for(int i=0;itextField.length;i+) textFieldi.setForeground(Color.blue); textFi

    17、eldi.setFont(new Font(华文楷体,1,25); textFieldi.setBounds(40+160,100+55*i, 50, 20); textFieldi.addCaretListener(this); this.add(textFieldi); JLabel lab=new JLabel(系统进程数:),new JLabel(资源类型数:),new JLabel(请输入信息); for(int i=0;ilab.length;i+) labi.setHorizontalAlignment(JLabel.RIGHT); labi.setForeground(Colo

    18、r.blue); labi.setFont(new Font(华文楷体,1,25); labi.setBounds(40,100+55*i, 150, 20); this.add(labi); for(int i=0;ibut.length;i+) buti.setHorizontalAlignment(JLabel.RIGHT); buti.setForeground(Color.blue); buti.setFont(new Font(华文楷体,1,10); buti.setBounds(170+i*100,220, 60, 20); buti.addActionListener(this

    19、); this.add(buti); lab2.setBounds(100,20, 150, 30); JLabel label=new JLabel(); label.setIcon(new ImageIcon(url); label.setBounds(0,0,400,270); this.add(label); this.setVisible(true); public static void main(String args) new OperatingFrame(); public void actionPerformed(ActionEvent e) if (e.getSource

    20、()=but0) new OperatingStep1(); this.dispose(); if (e.getSource()=but1) this.dispose(); public void caretUpdate(CaretEvent e) data0=textField0.getText(); data1=textField1.getText(); 8.2 功能实现代码:import java.awt.Color;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionLis

    21、tener;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.event.TableModelListener;import javax.swing.table.TableModel;public class Opera

    22、tingStep1 extends JFrame implements ActionListener /*银行家 算法 * param args */ public static int m=Integer.parseInt(OperatingFrame.data0);/系统进程 输 public static int n=Integer.parseInt(OperatingFrame.data1);/系统资源类型 public static int tatoal=new int n;/总资源数 public static int avaliable=new int n;/可利用资源数 pub

    23、lic static int allocation=new int mn;/已用资源数 public static int max=new int mn;/最大资源需求 public static int need=new int mn;/还需的各种资源数 public static int needi=new int n;/安全性计算用 public static int request=new int mn;/请求资源数 public static int requests=new int n; public static int work=new intn;/安全性计算用 public

    24、static boolean filished=new booleanm;/安全性计算用; public Object data1=new Object1n+1;/表格里面数据 public Object data2=new Object40n+1; public Object data3=new Object40n+1; public Object data4=new Object40n+1;public JButton but=new JButton(后退),new JButton(确定),new JButton(安检), new JButton(Request),new JButton(

    25、退出);/按钮声明 /private Object title1=Index,Allocation,Max,Work,Filshed; /private Object title2=班次,姓名,性别,单位,身份证,舱类别; public static JTable table1,table2,table3,table4;/表格声明 public OperatingStep1() super(银行家算法); this.setLayout(null); this.setBounds(530, 340, 605, 295); this.setDefaultCloseOperation(3);this

    26、.setIconImage(getToolkit().getImage(images/egs.jpg);/设置背景.URL url=this.getClass().getClassLoader().getResource(images/dabe.jpg); /System.out.println(m); /System.out.println(n); for(int i=0;i=0;i+)/表格 数据初始化 for(int j=1;j=n;j+) data1ij=10; for(int i=0;im;i+) for(int j=1;j=n;j+) data2ij=0; for(int i=0;

    27、im;i+) for(int j=1;j=n;j+) data3ij=5; for(int i=0;im;i+) for(int j=1;j=n;j+) data4ij=0; /四个表格 String title1=new String n+1;/表格一 title10=Index; for(int i=1;i=n;i+) title1i=s+i+:; table1=new JTable(data1,title1); /table2.getColumnModel().getColumn(4).setPreferredWidth(100 ); table1.getTableHeader().se

    28、tReorderingAllowed(false); /不可整列移 动 table1.getTableHeader().setResizingAllowed(false); /不可拉动表格 Object obj1=tatoal:; table1.setValueAt(obj1,0,0); table1.setRowHeight(15); table1.setBackground(Color.orange); table1.setForeground(Color.black); table1.setEditingColumn(1); /table2.setEnabled(true); table1.setFont(new Font(华文楷体,1,12); JScrollPane js1=new JScrollPane(table1); js1.setBounds(220, 10, 300, 35); this.add(js1); String title2=new String


    注意事项

    本文(模拟银行家算法实现死锁避免.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开