银行家算法课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数学与计算机学院

课程设计说明书

课程名称: 操作系统原理-课程设计

课程代码: 8404061

题目: 银行家算法

年级/专业/班: 2009级软件工程2班

学生姓名: 闵地林

学号: 312009*********

开始时间:2011 年12 月05日

完成时间:2011 年12 月 25 日

课程设计成绩:

指导教师签名:年月日

目录

1 引言 (1)

1.1问题的提出 (1)

1.2任务与分析 (1)

2 需求分析 (1)

2.1数据的初始化 (1)

2.2银行家算法 (1)

2.3系统安全性的检测 (1)

2.4显示功能 (1)

2.5恢复功能 (1)

2.6菜单功能 (2)

3 程序运行平台 (2)

4 总体设计 (2)

5 详细设计 (2)

5.1数据的录入 (2)

5.2显示模块 (4)

5.3系统安全状态检测 (5)

5.4系统试为进程分配资源 (7)

5.5恢复函数 (8)

5.6菜单选项 (8)

6 系统测试 (9)

7 结论 (13)

参考文献 (15)

摘要

随着计算机的普及计算机的日新月异,计算机可以说在飞速的发展着,计算机领域的相关技术也越来越高,许多的技术得到了较好的改进,使计算机越来越满足人们的要求和生活习惯,这也是计算机得到飞速发展的原因之一,。随着计算机的发展,人们对计算机的需求也越来越高,为了防止用户操作过于平凡,导致计算机同一时刻进程过多而产生死锁,所以本次任务主要是编写银行家算法避免计算机产生死锁。经过分析,本次主要是银行家算法通用程序的编写,以及测试所跟进程状态的安全性,经查阅相关资料,了解了银行家算法的大体思路,经过设计流程图,用java语言,利用neatbean 6.9实现了银行家算法的通用程序,该程序具有输入进程资源以及计算机可利用资源的数量,即初始化。输出资源进程资源信息,检测系统安全性,进程请求资源,系统试为进程分配资源,不成功恢复资源等功能。因此银行家算法的各种功能基本已经实现。

关键词:银行家算法通用程序;计算机;避免死锁的算法

1 引言

1.1 问题的提出

在多道程序程序系统中,虽可借助于多个进程的并发执行来改善系统资源利用率,提高系统的额吞吐量,但是可能会发生一种危险—死锁。所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,他们将无法再向前推进。为了避免这种情况的发生,本次利用课程设计之际,编写了一个银行家算法通用程序,避免死锁在发生。

1.2任务与分析

本课题主要的目的是编写银行家算法通用程序,功能主要包括银行家算法中数据结构的初始化,银行家算法的实现,安全性检测的算法实现等等。以及对给定的状态进行测试安全性等。

2 需求分析

2.1数据的初始化

对银行家算法中的数据结构进行初始化,包括资源种类和进程数目的输入,可利用资源的初始化,进程的最大需求矩阵,分配矩阵。

2.2银行家算法

对一个进程请求的资源进行判断,看是否可以为其立即进行资源的分配。若可以,试着分配,并且进行安全性的检测,若不安全,恢复原来的资源分配情况。

2.3 系统安全性的检测

能够对某时刻的资源分配情况进行检测,判断系统是否安全。

2.4显示功能

显示某时刻资源的分配状态

2.5恢复功能

对进程请求资源,已获得分配的,经检测不安全的状态进行恢复为请求前的状态

2.6菜单功能

列出用户能操作的选项

3 程序运行平台

Neatbean IDE 6.9

具体操作如下:文件->打开项目->运行->运行文件。

4 总体设计

5 详细设计

5.1数据的录入

选择数据录入菜单后,系统将提示用户输入相关的数据。包括输入资源种类,进程

数目,以及可利用资源数目。进程最大需求矩阵,已分配矩阵。

流程图如图6.1:

关键代码:

/*----------------------------初始化函数------------------------------*/ public void input(){

System.out.println("请输入资源的种类n和进程数m:");

n=sc.nextInt() ;

m=sc.nextInt();

Available=new int[1][n];

Request=new int[1][n];

Allocation=new int[m][n];

Need=new int[m][m];

Max=new int[m][n];

System.out.println("请输入各类资源的数目:");

for(int i=0;i

Available[0][i]=sc.nextInt();

System.out.println("请输入各进程请求的各类资源的最大数目:"); for(int h=0;h

for(int j=0;j

Max[h][j]=sc.nextInt();

}

// System.out.println();

}

System.out.println("请输入各进程请求的各类资源已经分配数目:"); for(int h=0;h

for(int j=0;j

Allocation[h][j]=sc.nextInt();

}

// System.out.println();

}

for(int k=0;k

for(int e=0;e

Need[k][e]=Max[k][e]-Allocation[k][e];

}

}

相关文档
最新文档