1、 计算机操作系统程序设计 课程考核报告 银行家算法模拟实现 班 级: 09 软件(1) 学 号: 姓 名: 指导老师: 2011 年 12 月 19 日 目录 1. 课程设计简介课程设计简介-3 1.1 课程设计题目- 3 1.2 课程设计目的-3 1.3 课程设计要求-3 2 实验原理分析实验原理分析-4 2.1 算法的来源及基本思想-4 2.2 死锁产生的条件-4 2.3 模拟进程申请资源-5 3 概要设计概要设计-5 4 详细设计详细设计-7 5 代码设计代码设计-8 6 调试分析调试分析- 14 7 心得体会心得体会-21 8 参考文献参考文献-21 1 课程设计简介: 1.1 1.1
2、 课程设计题目课程设计题目 银行家算法的模拟实现。 应用银行家算法验证进程安全性检查及分配资 源。 1.21.2 课程设计目的课程设计目的 本设计的目的是通过编写和调试一个系统动态分配资源的简单模拟程 序,观察死锁产生的条件,并采用适当的算法,有效地防止和避免死锁地发 生。 A、了解进程产生死锁的原因,了解为什么要进行死锁的避免。 B、掌握银行家算法的数据结构,了解算法的执行过程,加深对银行家 算法的理解。 1.31.3 课程设计要求课程设计要求 设计一个 n 个并发进程共享 m 个系统资源的系统。进程可动态申请资源和 释放资源, 系统按各进程的申请动态的分配资源。 要求采用银行家算法实现。
3、(1)初始化这组进程的最大资源请求和依次申请的资源序列。把各进程已占 用和需求资源情况记录在进程控制块中。假定进程控制块的内容包括: 进程名,状态,当前申请量,资源需求总量,已占资源量,能执行完标 志。其中,进程的状态有:就绪、等待和完成。当系统不能满足进程的 资源请求时,进程处于等待态。资源需求总量表示进程运行过程中对资 源的总的需求量。 已占资源量表示进程目前已经得到但还未归还的资源量。因此,进程在 以后还需要的剩余资源量等于资源需要总量减去已占资源量。 显然每个 进程的资源需求总量不应超过系统拥有的资源总量。 (2)银行家算法分配资源的原则是:当某个进程提出资源请求时,假定先分 配资源给
4、它,然后查找各进程的剩余请求,检查系统的剩余资源量是否 由于进程的分配而导致系统死锁。若能,则让进程等待,否则,让进程 的假分配变为真分配。 (a) 查找各进程的剩余请求,检查系统的剩余资源量是否能满足其中 一进程。如果能,则转 b)。 (b) 将资源分配给所需的进程,这样,该进程已获得资源最大请求, 最终能运行完成。标记这个进程为终止进程,并将其占有的全部 资源归还给系统。 重复第 a)步和第 b )步,直到所有进程都标记为终止进程,或直到一个死 锁发生。若所有进程都标记为终止进程,则系统的初始状态是安全的,否则 为不安全的。若安全,则正式将资源分配给它,否则假定的分配作废,让其 等待。 2 实验原理分析: 2.1 2.1 算法的来源及基本思想算法的来源及基本思想 银行家算法, 顾名思义是来源于银行的借贷业务, 通过这个算法可以用 来解决生活中的实际问题, 如银行贷款等。 一定数量的本金要应多个客户的 借贷周转,为了防止银行加资金无法周转而倒闭,对每一笔贷款,必须考察 其是否能限期归还。