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