2009-11-14 87 views
2

请问有人请提供一个使用银行家算法解决以下问题的逐步方法?我如何确定是否存在“安全状态”?当一个流程可以“运行到完成”时,意味着什么?Dijkstra的银行家算法

在这个例子中,我有四个进程和10个相同资源的实例。

  Resources Allocated | Resources Needed 
Process A     1     6 
Process B     1     5 
Process C     2     4 
Process D     4     7 
+0

这个功课?如果是这样,请添加作业标签 –

回答

2

Wikipedia每,

甲状态(如在上面的例子中)被认为是安全的,如果可能的是所有过程完成执行(终止)。由于系统无法知道进程何时终止,或者到那时它将请求多少资源,因此系统假定所有进程最终将尝试获取其规定的最大资源并在不久之后终止。在大多数情况下这是一个合理的假设,因为系统并不特别关心每个进程运行多长时间(至少不是从避免死锁的角度来看)。另外,如果一个进程在没有获取最大资源的情况下终止,它只会使系统更容易。

当它需要的每种资源的数量都可用时,进程可以运行到完成,在它自己和系统之间。如果一个进程需要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)。一旦A完成,将会有9个单元可用,然后B可以运行,这将剩下所有10个单元用于进一步的工作。由于我们可以选择一个允许所有进程运行的进程顺序,因此该状态被认为是“安全的”。

+0

Thanks Craig。当你这样分解时,这是非常简单的!我责备我对时间的理解不够:) – Blair

1
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资源尚未整理浮雕之后的精加工救治4个资源可以给处理B,方法B之后被分配,因此被分配给处理C.和处理c 5资源分配给PROCESS A第n个进程A完成后分配2个资源进行处理D