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