银行家算法的模拟实现一、实验题目:模拟实现银行家算法的解决过程二、实验目的:银行家算法是避免死锁的代表性算法。本实习旨在加深理解有关资源申请、避免死锁、状态安全性等概念.并体会和运用避免死锁的具体实施办法。然后根据本实习.自行设计模拟程序。三、实验原理:1. 我们能够把操作系统看作是银行家.操作系统管理的资源相称于银行家管理的资金.进程向操作系统请求分派资源相称于顾客向银行家贷款。操作系统按照银行家制订的规则为进程分派资源。当进程初次申请资源时.要测试该进程对资源的最大需求量.如果系统现存的资源能够满足它的最大需求量则按现在的申请量分派资源.否则就推迟分派。当进程在执行中继续申请资源时.先测试该进程已占用的资源数与本次申请的资源数之和与否超出了该进程对资源的最大需求量。若超出则回绝分派资源.若没有超出则再测试系统现存的资源能否满足该进程尚需的最大资源量.若能满足则按现在的申请量分派资源.否则也要推迟分派。2. 安全状态:如果存在一种由系统中全部进程构成的安全序列 P1.….Pn.则系统处在安全状态。安全状态一定是没有死锁发生。 不安全状态:不存在一种安全序列。不安全状态一定造成死锁。安 全 序 列 : 一 种 进 程 序 列 {P1.….Pn} 是 安 全 的 . 如 果 对 于 每 一 种 进 程Pi(1≤i≤n).它后来尚需要的资源量不超出系统现在剩余资源量与全部进程 Pj (j < i )现在占有资源量之和。3. 设 requesti 为进程 p[i]的请求向量.如果 requesti[j]=K.表达进程 p[i]需要 K 个Rj 资源。当系统发出请求后.系统按下述环节开始检查: 1)如果 requesti[j]<=need[i][j],转向环节 2;否则报告出错.申请的资源已经不不大于它需要的最大值。 2)如果 requesti[j]<=available[j],转向环节 3;否则报告出错.尚无足够的资源。 3)系统试探着把资源分派给 p[i].并修改下列数据构造中的值: available[j]=available[j]-request[j] allocation[i][j]=allocation[i][j]+request[j] need[i][j]=need[i][j]-request[j] 4)系统进行安全性算法.检查本次分派后.系统与否还处在安全状态.若安全.把资源分派给进程 p[i];否则.恢复原来的资源分派状态.让进程 p[i]等待。4. 安全性算法: int work[RESOURCE_NUMBER]; bool finish[PROCESS_NUMBER]; 1) Work=Available; Finish=false; 2) 寻找满足条件的 i: A、Finish[i]=false; B、Need[i]≤Wor...