银行家算法的使用



当我们有锁、完成变量和信号量时,为什么我们需要银行家算法?因为在linux中锁是按照确定的顺序获得的,所以不可能有任何死锁。那么,在这种情况下,运行银行家算法有什么用呢?

Banker算法用于通过检查资源分配是否会导致系统死锁来避免死锁,而用于解决临界区问题,即避免多个进程同时进入临界区。

锁本身不能避免/防止死锁,除非结合其他死锁解决方案。

deviantfan的评论:大多数操作系统对锁获取没有限制。下面是一个简单的例子,即使使用lock是有效的,系统也可能死锁:

P1:……;锁(fileA);锁(fileB);…解锁(fileA);解锁(fileB);…

P2:……;锁(fileB);锁(fileA);…解锁(fileB);解锁(fileA);div…

相关内容

  • 没有找到相关文章

最新更新