银行家算法流程

Bankers Algorithm processes

使用银行家算法,

如果进程 (p1) 无法由任何其他进程 p2、p3、p4 等单独放弃其资源来完成,它们是否可以全部放弃资源一起 所以 p1可以完成吗?

或者这不是可以做的事情吗?

您是在询问抽象过程的能力,还是特别是银行家算法的能力?

如果它是抽象过程,那么是的,这很容易实现。创建一个信号 yield_all,并对每个进程进行编码,使其在收到该信号时放弃资源。某些主进程必须将信号发送到 P2、P3 和 P4 中的每一个,然后允许 P1 继续其分配。实现细节由设计者决定。


如果你问的是银行家算法,我不太清楚你需要什么。除非系统仍处于 safe state 中,否则不允许进行任何分配:每个进程都能够以某种顺序终止(从而返回所有资源),并保持系统可用性。​​

因此,在您描述的情况下,强制任何其他进程放弃资源不是有效操作。相反,P1 必须等到其他人正常终止后,才能分配所请求的资源。如果这不可能,则系统处于 unsafe state -- 一个或多个先前的请求不应该被授予。

这是否回答了您的问题?