操作系统教程
银行家算法
院系班级学号姓名
计算机与软件学院08软件工程2班
20081344066何丽茗
f一、实验目的
银行家算法是避免死锁的一种重要方法。通过编写一个模拟动态资源分配的银行家算法程序,进一步深入理解死锁、产生死锁的必要条件、安全状态等重要概念,并掌握避免死锁的具体实施方法。
二、实验内容
根据银行家算法的基本思想,编写和调试一个实现动态资源分配的模拟程序,并能够有效地防止和避免死锁的发生。
三、实验方法
1算法流程图
开始
输入资源数m及各类资源总数,初始化Available向量
输入进程数
,i1
Yi≤
N输入进程i的最大需求向量max。
Nmax≤资源总数
Y
i加1
提示错误重新输入
所有进程运行都结束
结束
初始化
eed矩阵YNeed矩阵为0
N
任选一个进程作为当前进程
Need向量为0N
Y
该进程已运行
结束
输入该进程的资源请求量Request
调用银行家算法,及安全性算法,完成分配,或并给出提示
f2算法数据结构1可利用资源向量Available,它是一个最多含有100个元素的数组,其中的每一个元素
代表一类可利用的资源的数目,其初始值是系统中所配置的该类全部可用资源数目。其数值随该类资源的分配和回收而动态地改变。如果Available(j)k,标是系统中现有j类资源k个。2最大需求矩阵Max,这是一个
×m的矩阵,它定义了系统中
个进程中的每一个进程对m类资源的最大需求。如果Max(i,j)k,表示进程i需要j类资源的最大数目为k。3分配矩阵Allocatio
,这也是一个
×m的矩阵,它定义了系统中的每类资源当前一分配到每一个进程的资源数。如果Allocatio
(i,j)k,表示进程i当前已经分到j类资源的数目为k。Allocatio
i表示进程i的分配向量,有矩阵Allocatio
的第i行构成。4需求矩阵Need,这还是一个
×m的矩阵,用以表示每个进程还需要的各类资源的数目。如果Need(i,j)k,表示进程i还需要j类资源k个,才能完成其任务。Needi表示进程i的需求向量,由矩阵Need的第i行构成。5上述三个矩阵间存在关系:Need(i,j)Max(i,j)Allocatio
(i,j);3银行家算法设Requesti是进程i的请求向量,如果Requesti,jK表示进程i需要K个j类型的资源。当i发出资源请求后,系统按下述步骤进行检查:1如果Requesti≤Need,则转向步骤2;否则,认为出错,因为它所请求的资源数已超过它当前的最大需求量。2如果Requesti≤Available,则转向步骤3;否则,表示系统中尚无足够的资源满足i的申请,i必须等待。3系统试探性地把资源分r