银行家算法实例|操作系统

Posted 桃陉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了银行家算法实例|操作系统相关的知识,希望对你有一定的参考价值。

1.算法准备

∙ \\bullet  银行家算法(资源分配拒绝策略)目的是选择合适的资源分配顺序从而避免死锁的发生。

∙ \\bullet 该方法允许进程动态的申请资源,使得系统一直保持安全状态。那么什么是安全状态呢?

我们考虑一个系统它有固定的进程数目与资源数目,比如说有n个进程和m个不同类型的资源,现在已知如下矩阵(题目中会给出):

R e s o u r c e = ( R 1 , R 2 , . . . R m )   系 统 中 每 种 资 源 的 总 量 {\\color{Violet}Resource = (R_{1},R_{2},...R_{m})} \\ 系统中每种资源的总量 Resource=(R1,R2,...Rm) 
A v a i l a b l e = ( V 1 , V 2 , . . . V m )   没 有 分 配 的 每 种 资 源 总 量 {\\color{Violet}Available = (V_{1},V_{2},...V_{m})} \\ 没有分配的每种资源总量 Available=(V1,V2,...Vm) 
M a x = [ C 11 C 12 ⋯ C 1 m C 21 C 22 ⋯ C 2 m ⋮ ⋮ ⋮ C n 1 C n 2 ⋯ C n m ]   每 个 进 程 对 每 种 资 源 的 最 大 需 求 {\\color{Violet}Max = \\begin{bmatrix} C_{11} & C_{12} & \\cdots & C_{1m}\\\\ C_{21} & C_{22} & \\cdots & C_{2m}\\\\ \\vdots & \\vdots & & \\vdots \\\\ C_{n1} & C_{n2} & \\cdots & C_{nm} \\end{bmatrix}} \\ 每个进程对每种资源的最大需求 Max=C11C21Cn1C12C22Cn2C1mC2mCnm 
A l l o c a t i o n = [ A 11 A 12 ⋯ A 1 m A 21 A 22 ⋯ A 2 m ⋮ ⋮ ⋮ A n 1 A n 2 ⋯ A n m ]   资 源 当 前 分 配 情 况 {\\color{Violet}Allocation= \\begin{bmatrix} A_{11} & A_{12} & \\cdots & A_{1m}\\\\ A_{21} & A_{22} & \\cdots & A_{2m}\\\\ \\vdots & \\vdots & & \\vdots \\\\ A_{n1} & A_{n2} & \\cdots & A_{nm} \\end{bmatrix}} \\ 资源当前分配情况 Allocation=A11A21An1A12A22An2A1mA2mAnm 

∙ \\bullet 安全状态就是至少存在一个安全序列 < P 1 , P 2 , . . . , P m > {\\color{Red}<P_{1},P_{2},...,P_{m}>} <P1,P2,...,Pm>,按照这个顺序为进程分配资源可以使每个进程都顺利完成,保证系统不进入死锁状态。

2.算法实例

∙ \\bullet 假设现在系统中有 R 1 、 R 2 、 R 3 {\\color{Red}R_{1}、R_{2}、R_{3}} R1R2R3三种资源,它们资源总数为(9,3,6),目前已经分配给了4个进程,并且分配状态如下,那么这4个进程是否处于安全状态呢?

目前给出的信息如下(我们需要计算Need矩阵来表示剩下每个进程所需的资源个数,计算方法为Max矩阵减去Allocation矩阵):

此时我们未分配的资源总数为(0,1,1),对比Need矩阵进行观察后发现唯一可以满足 P 2 P_{2} P2进程的需求,所以先分配给该进程使其完成任务,完成任务以后就会释放 P 2 P_{2} P2进程占有的所有资源,所以现在Available矩阵的值为(6,1,2)+(0,1,1)=(6,2,3),安全序列中放入 P 2 P_{2} P2

继续看下去,此时未分配的资源数可以满足进程 P 1 和 P 4 P_{1}和P_{4} P银行家算法 C语言编程

操作系统 银行家算法的java图形界面实现代码 jixiangiop@qq.com

银行家算法是如何实现的?

操作系统进程调度之银行家算法的实现

银行家算法的python代码实现,感觉python写算法简直要起飞

C语言实现的操作系统银行家算法