题目:银行家算法
1、课程设计简介
一、课程设计题目:银行家算法
二、 课程设计目的:
通过编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采
用适当的算法,有效地防止和避免死锁地发生。
三、课程设计内容:
模拟实现动态资源分配。同时要求编写和调试一个系统动态资源的简单模拟程序,观察
死锁产生的条件,并使用适当的算法,有效的防止和避免死锁的发生。
2、实验原理分析:
银行家算法是避免死锁的一种重要方法,通过编写一个简单的银行家算法程序,加深了解
有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。死锁的
产生,必须同时满足四个条件,即一个资源每次只能由一个进程张勇;第二个为等待条件
即一个进程请求资源不能满足时,它必须等待,单它仍继续宝石已得到的所有其他资源;
第三个为非剥夺条件,即在出现死锁的系统中一定有不可剥夺使用的资源;第四个为循环
等待条件,系统中存在若干个循环等待的进程,即其中每一个进程分别等待它前一个进程
所持有的资源。防止死锁的机构只能确保上述四个条件之一不出现,则系统就不会发生死
锁。通过这个算法可以用来解决生活中的实际问题,如银行贷款等。
3、程序结构分析
算法的实现以及模块的划分
一、初始化
由用户输入数据,分别对可利用资源向量矩阵 AVAILABLE、最大需求矩阵 MAX、分配矩
阵 ALLOCATION、需求矩阵 NEED 赋值。
二、银行家算法
在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。在该方
法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可
以避免发生死锁。
银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。它是最具有
代表性的避免死锁的算法。
设进程 cusneed 提出请求 REQUEST [i],则银行家算法按如下规则进行判断。
(1)如果 REQUEST [cusneed] [i]<= NEED[cusneed][i],则转(2);否则,出错。
(2)如果 REQUEST [cusneed] [i]<= AVAILABLE[cusneed][i],则转(3);否则,出错。
(3)系统试探分配资源,修改相关数据:
AVAILABLE[i]-=REQUEST[cusneed][i];