银行家是否可以在工作少于需要时将资源分配给流程



我从这里读到了Banker的算法,我知道检查我们是否可以为流程分配可用资源的一个条件是检查Work>需要,我想知道如果工作<需要工作+分配>需要

例如,有三个资源R1,R2,R3,并且我们已经分配了P1(0,0,4(,它仍然需要(2,3,1(来完成它的工作。现在我们有(2,3,0(个可用资源。将这些资源提供给P1并确保没有死锁是否安全?

例如,有三个资源R1、R2、R3,我们已经分配了P1(0,0,4(,它仍然需要(2,3,1(来完成它的工作。现在我们有(2,3,0(个可用资源。将这些资源提供给P1并确保没有死锁是否安全?

不,这是不安全的,因为系统具有类型为30资源((2,3,0(中的最后一个参数(,而P1需要此类型的1资源-(2,3(,1

如果您的进程P1需要所有资源,系统会将这样的请求放入等待列表(它缺少类型为3的资源(。然后,所有其他进程也需要额外的资源,因此系统会将它们的请求添加到队列中。

因此,这两个进程都无法完成并释放资源,因为它们都在等待其他进程完成。由于来自P1的请求想要的超出了可能的范围,所以它永远不会完成,其他请求也是如此。因此,出现了僵局。

相关内容

  • 没有找到相关文章

最新更新