2022年资源分配和管理的银行家算法银行家算法实验报告 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年资源分配和管理的银行家算法银行家算法实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年资源分配和管理的银行家算法银行家算法实验报告 .pdf(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、报告创建时间: 2013.05.16操作系统实验报告年级、专业、班级姓名实验题目资源分配和管理的银行家算法实验时间 2013.05.14实验地点主教 0416实验成绩实验性质验证性设计性综合性教师评价:算法/实验过程正确;源程序/ 实验内容提交程序结构 /实验步骤合理;实验结果正确;语法、语义正确;报告规范;其他:评价教师签名:一、实验目的学习分配和管理资源的银行家算法,了解死锁避免方法。二、实验项目内容编写程序实现教材6.3.2 节的银行家算法程序功能:1. 程序随机生成进程数量( 10) 、资源种类( 3) 、每类资源总数量(3) 、进程的申请资源的数量(0) 、已分配资源的数量、可用资源
2、数量等;2. 输出每一个进程的资源分配情况;3. 输出每一步的资源分配情况和进程执行序列(安全序列)。4. 指出每一次资源分配后系统是否处于安全状态。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 25 页 - - - - - - - - - 报告创建时间: 2013.05.16三、实验过程或算法(源程序)31 算法思路:先对用户提出的请求进行合法性检查,即检查请求是否大于需要的,是否大于可利用的。若请求合法,则进行预分配,对分配后的状态调用安全性算法进行检查。若安全,则
3、分配;若不安全,则拒绝申请,恢复到原来的状态,拒绝申请。32 银行家算法步骤(1)如果 Requesti=Need,则转向步骤 (2) ;否则,认为出错,因为它所需要的资源数已超过它所宣布的最大值。(2)如果 Requesti=Available,则转向步骤( 3);否则,表示系统中尚无足够的资源,进程必须等待。(3)系统试探把要求的资源分配给进程Pi, 并修改下面数据结构中的数值: Available=Available-Requesti; Allocation=Allocation+Request; Need=Need-Request;(4) 系统执行安全性算法,检查此次资源分配后,系统是
4、否处于安全状态。33 安全性算法步骤(1)设置工作向量工作向量 Work。它表示系统可提供进程继续运行所需要的各类资源数目,执行安全算法开始时,Work=Available;定义判断一个进程是否执行完毕的方法:boolean isFinished()。(2)从进程集合中找到一个能满足下述条件的进程:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 25 页 - - - - - - - - - 报告创建时间: 2013.05.16process.isFinished()返回值
5、为true.Need=Work如找到,执行步骤( 3);否则,执行步骤( 4)。(3)当进程 P获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:Work=Work+Allocation;Allocation += Need; 转向步骤( 2)。(4)如果所有进程的均执行完毕即isAllFinished()返回值为 true, 则表示系统处于安全状态;否则,系统处于不安全状态。34 数据结构:34. 1 主要用到的数据结构:(1) 保存进程最大资源需求量的矩阵: int _maxNeed(2) 保存进程已分配资源量的矩阵: int _allocated(3) 保存进程标识符的
6、字符串:String _id(4) 保存系统中各资源总数的矩阵:int _totalResource(5) 表示申请资源的进程队列:ArrayList _processes(6) 表示系统资源种类数的整数:int _resourceClassCount(7) 存储执行信息 :StringBuffer _executeInfo34. 2 程序模块:代表进程的类 :Process.java代表银行家算法的类 :BankerAlgorithm.java名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -
7、 - 第 3 页,共 25 页 - - - - - - - - - 报告创建时间: 2013.05.16算法的主界面 :BankerUI.java34. 3 各模块间的调用关系:BankerUI 是程序执行的主界面 , 输入系统资源种类数之后 , 其通过程序随机生成进程数量( 10) 、资源种类( 3) 、每类资源总数量( 3) 、进程的申请资源的数量( 0) 、已分配资源的数量、可用资源数量等。其中所用针对系统进程和资源的操作均需要调用类BankerAlgorithm的方法。3.5 主要函数的核心代码:1. 进行初始化输入的函数2. 打印输出的函数3. 利用安全性算法进行检测的函数4. 进行
8、资源分配的函数5. 利用行家算法进行判定的函数注:具体代码请见附录 源程序清单。程序流程图:1、系统主要过程流程图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 25 页 - - - - - - - - - 报告创建时间: 2013.05.162、进程请求资源序列图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 25 页 - - - - - - -
9、 - - 报告创建时间: 2013.05.163、安全性算法序列图四、实验结果及分析和(或)源程序调试过程4.1 主界面:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 25 页 - - - - - - - - - 报告创建时间: 2013.05.164.2 点击“随机生成 ”按钮,随机生成进程数量(10) 、资源种类(3) 、每类资源总数量( 3) 、进程的申请资源的数量(0) 、已分配资源的数量、可用资源数量,并向系统中添加进程,显示进程的资源分配情况。名师资料总结
10、- - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 25 页 - - - - - - - - - 报告创建时间: 2013.05.164.3 点击“分配资源 ”按钮,检查系统是否安全,如果当前系统安全,则输出安全队列,并给第一个安全进程分配资源。若安全:若不安全,则 “执行结果 ”提示框会提示:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 25 页 - - - -
11、- - - - - 报告创建时间: 2013.05.164.4 点击“执行进程 ”按钮,执行已经分配资源的进程,并将其从队列中移除。4.5 点击“分配资源 ”按钮,重新检测当前系统的安全,如果当前系统安全,则输出安全队列,并给第一个安全进程分配资源。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 25 页 - - - - - - - - - 报告创建时间: 2013.05.164.6 此后重复 4、5 步,直至系统中的进程执行完毕:4.7 系统中此时已没有等待执行的进程,
12、若再点击“分配资源 ”按钮,则“执行结果 ”提示框中会提示:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 25 页 - - - - - - - - - 报告创建时间: 2013.05.164.8 如果需要再进行模拟,则点击“重新生成 ”按钮,会重新生成进程,再重复前 7 步即可。4.9 如果模拟结束,可点击 “退出”按钮,即可退出系统。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -
13、 - - - - - 第 11 页,共 25 页 - - - - - - - - - 报告创建时间: 2013.05.16模拟结束。五、心得体会通过本次实验,我们对银行家算法有了更深的了解,理解了操作系统关于进程调度的一些方法,并通过编程实现了该算法。也进一步提高了我们的编程能力,从中学会了很多。附录:源程序清单1. 主界面类 BankerUI.javapublicclass BankerUI extends JFrame implements ActionListener privatestaticfinallongserialVersionUID = -800454491665304932
14、6L;private JPanel panel ;private JButton model ;private JButton alloc;private JButton next ;private JButton exit;private JTextField processNum ;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 25 页 - - - - - - - - - 报告创建时间: 2013.05.16/ centerprivate JEditorPane
15、resourcesInfo;private JEditorPane processesInfo; / 用html 格式显示进程需要资源个数.private JTextArea result;private JSplitPane splitCenter;private JPanel east ;privateintresourceClassesCount; / 表示资源的个数private BankerAlgorithm banker ;/private Process pro;privateintPronum = 0;privateintSournum = 0;staticint availa
16、ble = null; / 可利用的资源staticint max = null; / 最大的需求矩阵staticint allocation = null; / 分配矩阵staticint need = null; / 需求矩阵staticint totalSour = null;staticint Max = null;staticint Allocation = null;public BankerUI() super ( 银行家算法 );try UIManager. setLookAndFeel( com.sun.java.swing.plaf.windows.WindowsLookA
17、ndFeel); catch (ClassNotFoundException e) e.printStackTrace(); catch (InstantiationException e) e.printStackTrace(); catch (IllegalAccessException e) e.printStackTrace(); catch (UnsupportedLookAndFeelException e) e.printStackTrace();setBounds(100, 100, 800, 600);panel = new JPanel(new BorderLayout()
18、;/ centerresourcesInfo = new JEditorPane(text/html, );resourcesInfo.setEditable(false);processesInfo = new JEditorPane(text/html, ); / 以html 格式显示进程信息.processesInfo.setEditable(false);JSplitPane splitInfo = newJSplitPane(JSplitPane.VERTICAL_SPLIT );splitInfo.add(new JScrollPane(resourcesInfo), JSplit
19、Pane.TOP );splitInfo.add(new JScrollPane(processesInfo), JSplitPane.BOTTOM );splitInfo.setBorder(BorderFactory.createTitledBorder( 系统信息 );splitInfo.setOneTouchExpandable(true );result = new JTextArea(5, 30);result.setEditable(false);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -
20、 - - - - - 第 13 页,共 25 页 - - - - - - - - - 报告创建时间: 2013.05.16result.setWrapStyleWord(true ); / 按单词换行 , 即所有单词都不会打断.result.setLineWrap(true ); / 换行 .JScrollPane textScroll = new JScrollPane(result);textScroll.setBorder(BorderFactory.createTitledBorder( 执行结果 );splitCenter = new JSplitPane(JSplitPane.VE
21、RTICAL_SPLIT );splitCenter.setResizeWeight(1.0);splitCenter.add(splitInfo, JSplitPane.TOP );splitCenter.add(textScroll, JSplitPane.BOTTOM );splitCenter.setOneTouchExpandable(true ); / 点击一下就可以扩展分割开来的控件 .panel .add( splitCenter, BorderLayout.CENTER );panel .setSize(800, 700);/ easteast = new JPanel();
22、/east.setSize(60, 100);model = new JButton( 随机生成 );model .setSize(50, 20);model .setLocation(10, 10);model .addActionListener(this);alloc = new JButton( 分配资源 );alloc.addActionListener(this);next = new JButton( 执行进程 );next .addActionListener(this);exit = new JButton( 退出 );exit.addActionListener(this)
23、;JLabel label = new JLabel(当前进程个数 : );label.setSize(50,20);label.setLocation(10, 60);processNum = new JTextField();processNum .setSize(50, 20);processNum .setLocation(10,90);processNum .setEditable(false);processNum .setFont(new Font(宋体 , Font.BOLD , 20);processNum .setForeground(Color.RED );process
24、Num .setHorizontalAlignment(JTextField.CENTER );east .setLayout(new GridLayout(10,1,10,10);east .setSize(80, 100);east .add(label);east .add( processNum );east .add( model );east .add( alloc);east .add( next );east .add( exit);panel .add( east , BorderLayout.EAST);setEastButtonEnabled(false);/this.g
25、etContentPane().add(new JScrollPane(panel);this.getContentPane().add(panel );setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 25 页 - - - - - - - - - 报告创建时间: 2013.05.16publicvoid setEastButtonEnabled(boolean b) / ea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年资源分配和管理的银行家算法银行家算法实验报告 2022 年资 分配 管理 银行家 算法 实验 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内