Algorithm 迪克斯特拉';s-Bankers算法
有人能提供一个逐步解决的方法来使用银行家算法解决以下问题吗?如何确定是否存在“安全状态”?当流程可以“运行到完成”时,意味着什么 在这个例子中,我有四个进程和10个相同资源的实例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
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这是作业吗?如果是,请添加家庭作业标签