操作系统课程设计(银行家算法的模拟实现)一、设计目的1、进一步了解进程的并发执行
2、加强对进程死锁的理解
3、用银行家算法完成死锁检测
二、设计内容给出进程需求矩阵C、资源向量R以及一个进程的申请序列
使用进程启动拒绝和资源分配拒绝(银行家算法)模拟该进程组的执行情况
三、设计要求1、初始状态没有进程启动
2、计算每次进程申请是否分配,如:计算出预分配后的状态情况(安全状态、不安全状态),如果是安全状态,输出安全序列
3、每次进程申请被允许后,输出资源分配矩阵A和可用资源向量V
4、每次申请情况应可单步查看,如:输入一个空格,继续下个申请
四、算法原理1、银行家算法中的数据结构(1)、可利用资源向量Available,这是一个含有m个元素的数组,其中的每个元素代表一类可利用资源的数目,其初始值是系统中所配置的该类全部资源的数目,其数值随该类资源的分配和回收而动态改变
如果Available[j]=K,则表示系统中现有Rj类资源K个
(2)、最大需求矩阵Max,这是一个n*m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求
如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K
(3)、分配矩阵Allocation
这也是一个n*m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数
如果Allocation[i,j]=K,则表示进程i当前已经分得Rj类资源的数目为K
(4)、需求矩阵Need
这也是一个n*m的矩阵,用以表示每个进程尚需要的各类资源数
如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成其任务
上述三个矩阵间存在以下关系:Need[i,j]=Max[i,j]-Allocation[i,j]2、银行家算法应用模拟实现Dijkstra的银行家算法以避免死锁的出现,分两部分组成:一是银行家算法(扫描);二是安