Dijkstra的银行家算法
-
20-09-2019 - |
题
可能有人请提供步进式的方法来解决使用银行家算法如下问题?如何确定“安全状态”是否存在?什么当一个进程可以在“运行到完成”的意思?
在这个例子中,我有四个过程和相同的资源的10个实例。
Resources Allocated | Resources Needed
Process A 1 6
Process B 1 5
Process C 2 4
Process D 4 7
解决方案
每维基百科,
一个状态(如在上面的例子中)被认为是安全的,如果可能的是所有过程完成执行(终止)。由于系统无法知道当一个进程将终止,或有多少资源,将通过再有要求,系统假定所有进程将最终试图获取其声明的最大资源和终止不久之后。这是在大多数情况下,一个合理的假设,因为系统不是特别关心多久每个进程中运行(至少不是从避免死锁的角度)。此外,如果一个进程终止而不获取其最大资源,它只可以更容易的系统。
当每种类型的,它需要的资源的数量是可用的,它本身与系统之间的方法,可以运行到完成。如果一个过程需要8个单元的给定资源的,并且已经分配了5个单位,那么它可以如果有可用的至少3个以上的单位,它可以分配运行到完成。
鉴于你例如,该系统是管理一个单一的资源,用10个单位提供。正在运行的进程已分配的8(1 + 1 + 2 + 4)单元,所以有左2个单位。任何过程需要完成的量是不管它已经分配其最大少,所以在开始时,A需要5个(6-1),B需要4个(5-1),C 2需要更多(4- 2),以及d需要更3(7-4)。有2个可用的,所以方法C被允许运行到完成,从而释放2个单元(4留下可用的)。在这一点上,无论是B或d可以运行(我们假设d)。一旦d完成后,将有8个单位供选择,之后A或B可以运行(我们假设A)。一旦完成,将有9个单位可用,则B可以运行,这将离开留待进一步工作的所有10个单位。因为我们可以选择的过程中,将允许所有进程所要执行的顺序,状态被认为是“安全”的。
其他提示
Resources Allocated | Resources Needed claim
Process A 1 6 5
Process B 1 5 4
Process C 2 4 2
Process D 4 7 3
总资源分配是8 因此2个资源尚未被分配,因此被分配整理浮雕被分配给处理的所述n处理A后5个资源后的精加工救治4个资源可以给处理B,方法B之后处理C.和处理c精加工分配2个资源以处理d