0

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

4

1 回答 1

0

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

如果不结合其他死锁解决方案,锁定本身无法避免/防止死锁。

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

P1:……;锁(文件A);锁(文件B);....解锁(文件A);解锁(文件B);……

P2:……;锁(文件B);锁定(文件A);.....解锁(文件B);解锁(文件A);……

于 2014-03-23T09:54:29.743 回答