使用银行家算法,
如果一个进程 (p1) 无法通过任何其他进程 p2、p3、p4 等单独放弃它的资源来完成,他们是否可以一起放弃他们的资源以便 p1 可以完成?
或者这不是一件可以做的事情吗?
使用银行家算法,
如果一个进程 (p1) 无法通过任何其他进程 p2、p3、p4 等单独放弃它的资源来完成,他们是否可以一起放弃他们的资源以便 p1 可以完成?
或者这不是一件可以做的事情吗?
您是在询问抽象过程的能力,还是特别是银行家算法的能力?
如果它是抽象过程,那么是的,这很容易实现。创建一个信号yield_all
,并对每个进程进行编码以在收到该信号时放弃资源。一些主进程必须将信号发送到 P2、P3 和 P4 中的每一个,然后允许 P1 继续分配。实现细节由设计者决定。
如果您要询问银行家的算法,我并不完全清楚您需要什么。除非系统仍处于 a 中,否则不允许进行分配safe state
:每个进程都能够以某种顺序终止(从而返回所有资源),而剩余的系统可用性。
因此,在您描述的情况下,强制任何其他进程产生资源不是有效的操作。相反,P1 必须等到其他人正常终止后,才允许分配请求的资源。如果这不可能,那么系统处于unsafe state
一个或多个先前的请求不应该被授予的状态。
这是否回答你的问题?