- 104
- 0
- 约2.11万字
- 约 23页
- 2017-02-09 发布于湖北
- 举报
合肥学院
计算机科学与技术系
实验报告
2015~ 2016 学年第 二 学期
课程 操作系统原理 实验名称 银行家算法 学生姓名 赵维 1304092011 陈春 1304092016 檀朝阳 1304092028 高炼 1304092041 专业班级 13软件工程 指导教师 屠 菁
1.实验目的
在熟练掌握死锁发生原理和解决死锁问题的基础上,利用一种程序设计语言模拟实现利用银行家算法实现死锁避免,一方面加深对原理的理解,另一方面提高自身通过编程根据已有原理解决实际问题的能力,为将来进行系统软件开发和针对实际问题提出高效的软件解决方案打下基础。
实验内容
编写银行家算法,要求对于书本给出的资源分配表,可以对输入各种请求进行安全性判断,最后给出安全序列或者不能分配的原因。
银行家算法是一种最具有代表性的避免死锁的算法。要解释银行家算法,必须先解释操作系统的安全状态和不安全状态。所谓安全状态,是指系统能按照某种进程顺序{P1,P2,?,Pn}(称{P1,P2,?,Pn?}序列为安全序列),来为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可以顺利完成。安全状态一定没有死锁发生。如果系统无法找到这样一个安全序列,则称系统处于不安全状态。那么,什么是安全序列呢?如果对每一个进程Pi(1in),它以后尚需要的资源量不超过系统当前可利用的资源量与所有的进程Pj(jn)所占有的资源量之和,则称此进程序列{P1,P2,?,Pn}是安全的,称作安全序列。银行家算法?:我们可以把操作系统看做是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求资源相当于客户向银行家贷款。操作系统按银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程尚需求的资源量,若是系统现存的资源可以满足它尚需求的资源量,则按当前的申请量来分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程申请的资源量是否超过了它尚需的资源量。若超过则拒绝分配,若没有超过则再测试系统尚存的资源是否满足该进程尚需的资源量,若满足即可按当前的申请量来分配,若不满足亦推迟分配。
否
是
否
是
否
是
图1
4、调试分析
(1)输入各种资源的数量和进程数
图2
(2)、点击添加资源,输入各资源数目
图3
、点击安全序列,输出开始时刻的安全序列
图4
、点击请求资源,若成功则输出此时的安全序列
图5
(5)、若需求量大于系统可用资源量,则提示没有足够的资源分配给该进程
图10
实验总结
本次实验主要是对系统进程进行安全性检查,得出安全序列,然后对请求资源进行安全性检查,判断是否能够分配资源。
本次实验主要问题是怎么对输入的进程求出系统的安全序列,怎么对输入的请求进行安全性检查,看是否能够得出安全序列。
附录
(1)、源代码
package pers.weiniee.BankerAlgorithm;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;
public class mainWindow extends JFrame implements ActionListener{
/**
*
*/
private static final long serialVersionUID = 1L;
JFrame bankerAlgoritJFrame;//主界面
JLabel[] l; //输入资源种类数,输入启动的进程数,资源请求,标签
JTextField[] t; //对应于标签的文本框
JButton[] b; //对应去标签的按钮
JPanel[] p;
int m=0;//添加的进程数
int n=0;//添加的资源种类数
int[] available;
int[][] max;
int[][] allocation;
int[][] need;
int
原创力文档

文档评论(0)