实验四 银行家算法
实习内容
通过编程理解银行家算法,掌握进程安全性检查的方法及资源分配的方法,
加深了解有关资源申请、避免死锁等概念,体会和了解死锁和避免死锁的具体
实施方法。
实习目的
银行家算法是避免死锁的代表性算法。本实习旨在加深了解有关资源申请、
避免死锁、状态安全性等概念,并体会和运用避免死锁的具体实施方法。然后
依照本实习,自行设计模拟程序。
实习原理
算法思想:银行家算法
操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,
要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需
求量则按当前的申请量分配资源,否则就推迟分配。
当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申
请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资
源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,
若能满足则按当前的申请量分配资源,否则也要推迟分配。
安全状态:如果存在一个由系统中所有进程构成的安全序列 P1,…,Pn,
则系统处于安全状态。安全状态一定是没有死锁发生。
不安全状态:不存在一个安全序列。不安全状态一定导致死锁。
实习编程思路和流程
在避免死锁的方法中,如果施加的限制条件较弱,有可能获得令人满意的
系统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系
统始终都处于安全状态,便可以避免发生死锁。
基本思想为:在分配资源之前,判断系统是否是安全的;若安全,才分配。它
是最具代表性的死锁算法,具体算法如下表示:
假设进程 P 提出请求 Request[i],则银行家算法按如下步骤进行判断:
1) 如果 Request[i] <=Need[i],则转向 2);否则出错。
2) 如果 Request[i] <=Available[i],则转向 3);否则出错。
3) 系统试探分配相关资源,修改相关数据:
评论0