2

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

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

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

2 回答 2

2

根据维基百科

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

当一个进程在它自己和系统之间可用的每种类型的资源的数量是可用的时,它可以运行到完成。如果一个进程需要 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 个单元以供进一步工作。

于 2009-11-14T18:22:00.263 回答
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 个资源尚未分配,因此分配给进程 C。进程 c 完成后释放 4 个可以分配给进程 B 的资源,进程 B 完成后释放 5 个分配给进程 A 的资源第n个进程A完成后分配2个资源给进程D

于 2011-02-23T17:07:32.083 回答