Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 迪克斯特拉';s-Bankers算法_Algorithm_Dijkstra_Bankers Algorithm - Fatal编程技术网

Algorithm 迪克斯特拉';s-Bankers算法

Algorithm 迪克斯特拉';s-Bankers算法,algorithm,dijkstra,bankers-algorithm,Algorithm,Dijkstra,Bankers Algorithm,有人能提供一个逐步解决的方法来使用银行家算法解决以下问题吗?如何确定是否存在“安全状态”?当流程可以“运行到完成”时,意味着什么 在这个例子中,我有四个进程和10个相同资源的实例 Resources Allocated | Resources Needed Process A 1 6 Process B 1 5 Process C

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

在这个例子中,我有四个进程和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)。一旦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个资源尚未分配,因此分配给流程C。完成后流程C释放了4个可分配给流程B的资源,完成后流程B释放了5个分配给流程A的资源。完成后流程A将2个资源分配给流程D

这是作业吗?如果是,请添加家庭作业标签