银行家算法报告

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

成绩课程设计报告

题目银行家算法程序设计

课程名称操作系统课程设计

院部名称信息技术学院

专业计算机科学与技术

班级。。。。。。。。。。。。。。。。。。。。。。。学生姓名。。。。

学号。。。。。。。。。。

课程设计地点。。。。

课程设计学时20

指导教师。。。

金陵科技学院教务处制

目录

目录………………………………………………………………………I

摘要…………………………………………………………………… II

引言 (1)

1、课程设计的目的和要求 (2)

2、课程设计的环境 (2)

3、课程设计的主要内容 (2)

3.1、项目名称 (2)

3.2、项目的主要内容 (2)

4、系统的组成及工作原理 (3)

4.1、系统主要过程的流程图 (3)

4.2、系统的设计方法 (4)

5、模块划分 (5)

5.1各模块间的调用关系 (6)

5.2安全性算法流程图 (7)

6、运行与测试结果 (8)

6.1欢迎界面 (8)

6.2初始化界面 (8)

6.3界面显示 (11)

6.4出错界面图 (12)

6.5程序运行结束 (12)

7、总结 (13)

8、课程设计的心得体会 (14)

9、参考文献 (15)

附录 (16)

摘要

随着时代的发展,对生活的追求越来越高,生活品质也越来越好。在学习方面的研究也越来越有成效。Dijkstra提出的银行家算法,是最具代表性的避免死锁的算法。加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。死锁的产生,必须同时满足四个条件,即一个资源每次只能由一个进程占用:第二个为等待条件,即一个进程请求资源不能满足时,它必须等待,但它仍继续保持已得到的所有其他资源:第四个为循环等待条件,系统中存在若干个循环等待的进程,即其中每一个进程分别等待它前一个进程所持有的资源。防止死锁的机构只能确保上述四个条件之一不出现,则系统就不会产生死锁。通过这个算法可用解决生活中的实际问题,如银行贷款等。

本文对如何用银行家算法来处理操作系统给进程分配资源做了详细的说明,包括需求分析、概要设计、详细设计、测试与分析、总结、源程序清单。首先做了需求分析,解释了什么是银行家算法,并指出它在资源分配中的重要作用。然后给出了银行家算法的概要设计,包括算法思路、步骤,以及要用到的主要数据结构、函数模块及其之间的调用关系等。在概要设计的基础上,又给出了详细的算法设计,实现概要设计中定义的所有函数,对每个函数写出核心算法,并画出了流程图。接着对编码进行了测试与分析。最后对整个设计过程进行了总结。

关键字:死锁安全序列银行家算法进程

引言

Dijkstra (1965)提出了一种能够避免死锁的调度算法,称为银行家算法。它的模型基于一个小城镇的银行家,他向一群客户分别承诺了一定的贷款额度,每个客户都有一个贷款额度,银行家知道不可能所有客户同时都需要最大贷款额,所以他只保留一定单位的资金来为客户服务,而不是满足所有客户贷款需求的最大单位。这里将客户比作进程,贷款比作设备,银行家比作系统。客户们各自做自己的生意,在某些时刻需要贷款。在某一时刻,客户已获得的贷款和可用的最大数额贷款称为与资源分配相关的系统状态。一个状态被称为是安全的,其条件是存在一个状态序列能够使所有的客户均得到其所需的贷款。如果忽然所有的客户都申请,希望得到最大贷款额,而银行家无法满足其中任何一个的要求,则发生死锁。不安全状态并不一定导致死锁,因为客户未必需要其最大贷款额度,但银行家不敢抱这种侥幸心理。银行家算法就是对每一个请求进行检查,检查如果满足它是否会导致不安全状态。若是,则不满足该请求;否则便满足。检查状态是否安全的方法是看他是否有足够的资源满足一个距最大需求最近的客户。如果可以,则这笔投资认为是能够收回的,然后接着检查下一个距最大需求最近的客户,如此反复下去。如果所有投资最终都被收回,则该状态是安全的,最初的请求可以批准。

在预防死锁的几种方法之中,都施加了较强的限制条件;而在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。在该方法中把系统状态分为安全状态和不安全状态,便可避免死锁的发生。而最具代表性的避免死锁的算法,便是Dijkstra的银行家算法。

利用银行家算法,我们可以来检测CPU为进程分配资源的情况,决定CPU

是否响应某进程的的请求并为其分配资源,从而很好避免了死锁

1、课程设计的目的和要求

目的:

银行家算法是避免死锁的一种重要方法,本设计要求用C语言(或高级语言)编写和调试一个简单的银行家算法程序。加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。通过对这个算法的设计,让学生能够对书本知识有更深的理解,在操作和其它方面有更高的提升,同时对程序设计的水平也有所提高。

要求:

设计一个n个并发进程共享m个系统资源的程序实现银行家算法。要求包含:1)、简单的选择界面。

2)、前系统资源的占用和剩余情况。

3)、为进程分配资源,如果进程要求的资源大于系统剩余的资源,不与分配并且提示分配不成功。

4)、撤销作业,释放资源。

2、课程设计的环境

奔腾以上计算机,装有Turbo C 2.0软件

3、课程设计的主要内容

3.1 项目名称

银行家算法程序设计

3.2 项目的主要内容

(1)设计银行家算法,能够检测系统某一时刻是否安全,输出安全序列。

(2)实现安全性检测算法。即在某一进程在某时刻提出Request时,检测系统是否能够满足该进程的请求,并得到一个安全序列,若能够得到一个安全序列,则系统能够满足它的请求,同意分配资源。若不能够满足,则回到请求前状态。

(3)对于此次课程设计通过需求分析、概要设计、详细设计、测试与分析、总结、源程序清单等模块进行全面分析,以加深对死锁概念的理解,以及银行家算法避免死锁的过程。能够利用银行家算法,有效避免死锁的发生,或检测死锁的存在。

相关文档
最新文档