1、 计算机学院计算机学院操作系统课程设计报告操作系统课程设计报告 设计题目:设计题目:银行家算法的实现银行家算法的实现 设计题目设计题目 银行家算法的实现银行家算法的实现 设计形式设计形式 独立完成独立完成 设 计 目 的 设 计 目 的 1加深了解有关资源申请、避免死锁等概念。 2体会和了解死锁和避免死锁的具体实施方法。 设 计 预 备 知 识 设 计 预 备 知 识 1死锁的相关知识。 2银行家算法。 3系统安全性检查。 设 计 内 容 设 计 内 容 1设计进程对各类资源最大申请表示及初值的确定。 2设定系统提供资源的初始状况。 3设定每次某个进程对各类资源的申请表示。 4编制程序,依据银
2、行家算法,决定其资源申请是否得 到满足。 5显示资源申请和分配时的变化情况。 小 组 成 员 分 工 小 组 成 员 分 工 无无 银行家算法银行家算法分析、分析、设计与实现设计与实现 一、一、 设计理论设计理论描述描述 本设计的目的是通过编写和调试一个系统动态分配资源的简单模拟程序, 观察死锁产生的条件,并采用适当的算法,有效地防止和避免死锁地发生。要求 如下: (1) 模拟一个银行家算法; (2) 初始化时让系统拥有一定的资源; (3) 用键盘输入的方式申请资源; (4) 如果预分配后,系统处于安全状态,则修改系统的资源分配情况; (5) 如果预分配后,系统处于不安全状态,则提示不能满足请
3、求, 设计的主要内容是模拟实现动态资源分配。 同时编写和调试一个系统动态 资源的简单模拟程序,观察死锁产生的条件,并使用适当的算法,有效的防止和 避免死锁的发生。 银行家算法. . 顾名思义是来源于银行的借贷业务, 一定数量的本金要应多 个客户的借贷周转,为了防止银行加资金无法周转而倒闭,对每一笔贷款,必须 考察其是否能限期归还。在操作系统中研究资源分配策略时也有类似问题,系统 中有限的资源要供多个进程使用, 必须保证得到的资源的进程能在有限的时间内 归还资源,以供其他进程使用资源。如果资源分配不得到就会发生进程循环等待 资源,则进程都无法继续执行下去的死锁现象。 把一个进程需要和已占有资源的
4、情况记录在进程控制中,假定进程控制块 PCB 其中“状态”有就绪态、等待态和完成态。当进程在处于等待态时,表示系 统不能满足该进程当前的资源申请。 “资源需求总量”表示进程在整个执行过程 中总共要申请的资源量。显然,每个进程的资源需求总量不能超过系统拥有的 资源总数, 银行算法进行资源分配可以避免死锁. 二、算法描述二、算法描述及数据结构模型及数据结构模型 1.1.银行家算法银行家算法: : 设进程 i 提出请求 Requestn,则银行家算法按如下规则进行判断。 (1)如果 RequestnNeedi,n,则报错返回。 (2)如果 RequestnAvailable,则进程 i 进入等待资源状态,返回。 (3)假设进程 i 的申请已获批准,于是修改系统状态: Available=Available-Request Allocation=Allocation+Request Need=Need-Request (4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统 恢复原状,进程等待。