1
银行家算法实验报?/p>
?/p>
实验目的
?/p>
?/p>
1
)根据设计题目的要求,充分地分析和理解题目,叙述系统的要求,?/p>
确程序要求实现的功能以及限制条件?/p>
?/p>
2
)明白自己需要用代码实现的功能,清楚编写每部分代码的目的,做?/p>
有的放矢,有条理不遗漏的用代码实现银行家算法?/p>
?/p>
实验要求
?/p>
?/p>
1
)了解和理解死锁?/p>
?/p>
2
)理解利用银行家算法避免死锁的原理;
?/p>
3
)会使用某种编程语言?/p>
?/p>
实验原理
?/p>
一、安全状?/p>
指系统能按照某种顺序?/p>
<P1,P2,?Pn>(
称为
<P1,P2,?Pn>
序列为安全序
?/p>
)
,为每个进程分配所需的资源,直至最大需求,使得每个进程都能顺利?/p>
成?/p>
二、银行家算法
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
i
?/p>
?/p>
?/p>
?/p>
j
?/p>
?/p>
?/p>
k
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
Requesti[j]=k
。系统按下述步骤进行安全检查:
?/p>
1
)如?/p>
Request
i
≤Need
i
则继续以下检查,否则显示需求申请超出最大需求?/p>
的错误?/p>
?/p>
2
?/p>
如果
Request
i
≤Available
则继续以下检查,否则显示系统无足够资源,
Pi
?/p>
塞等待?/p>
?/p>
3
)系统试探着把资源分配给进程
Pi
,并修改下面数据结构中的数值:
Available
?/p>
j
]∶
=Available
?/p>
j
?/p>
-Request
i
[j
?/p>
;
Allocation
?/p>
i,j
]∶
=Allocation
?/p>
i,j
?/p>
+Request
i
?/p>
j
?/p>
;
Need
?/p>
i,j
]∶
=Need
?/p>
i,j
?/p>
-Requesti
?/p>
j
?/p>
;
?/p>
4
)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若
安全,才正式将资源分配给进程
Pi
,以完成本次分配;否则,
将本次的试探?/p>
配作废,恢复原来的资源分配状态,让进?/p>
Pi
等待?/p>
三、安全性算?/p>
?/p>
1
)设置两个向量:
?/p>
工作向量
Work:
它表示系统可提供给进程继续运行所需的各类资源数
目,它含?/p>
m
个元素,在执行安全算法开始时?/p>
Work
?/p>
=Available;
?/p>
Finish:
它表示系统是否有足够的资源分配给进程,使之运行完成。开?/p>
?/p>
?/p>
?/p>
Finish
?/p>
i
?/p>
?/p>
=false;
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
Finish
?/p>
i
]∶
=true
?/p>
?/p>
2
)从进程集合中找到一个能满足下述条件的进程:
?/p>
Finish
?/p>
i
?/p>
=false;
?/p>
Need
?/p>
i,j
?/p>
≤Work
?/p>
j
];
若找到,
执行步骤
(3)
?/p>
否则,执行步?/p>
(4)
?/p>
?/p>
3
)当进程
Pi
获得资源后,可顺利执行,直至完成,并释放出分配给它的?