课程设计报告名称
1. 课程设计内容
本实验实现“银行家算法”
银行家算法的作用是防止发生死锁,提前检测出系统是否安全,如果系统安全,银行家算法还会求出系统的安全序列。银行家算法中银行家对客户相当与系统对进程,系统对进程有一定的约束条件:每个进程必须预先说明所要的最大资源量;可以对操作者提出某进程资源量的申请并判断能否成功,如果系统满足进程对资源的最大需求量,那么进程在资源运行后,应在有限时间内全部归还系统,释放资源。
2. 背景知识
如果一个进程集合中每个进程都在等待只能由此集合中的其他进程才能引发的事件,而无限期陷入僵持的局面称为死锁。
产生死锁的原因主要是:
(1) 因为系统资源不足。
(2) 进程运行推进的顺序不合适。
(3) 资源分配不当等。
银行家算法的安全序列主要是从改变进程运行推进的顺序入手,从而得出安全序列。
3. 设计步骤与方法
3.1. 步骤1:
3.1.1 步骤1:流程图设计
3.1.2 步骤1:初始化
本程序设计了两个数据输入的方式,一个是通过文件流读取txt文件,另一个是通过控制台直接输入数据,由此可得到以下几种数据,
m,代表进程的数目;
n,代表进程的资源的种类;
int AVAILABLE[MAXRESOURCE]; /*可用资源数组*/
int MAX[MAXPROCESS][MAXRESOURCE]; /*最大需求矩阵*/
int ALLOCATION[MAXPROCESS][MAXRESOURCE]; /*已有的资源分配矩阵*/
并由上述的数组之间的关系得到: