Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
为什么我们有锁,完成变量和信号量时需要银行家算法。由于在linux中获取锁是按一定的顺序获得的,所以不可能有任何死锁。那么在这种情况下运行银行家算法有什么用。
Banker算法用于通过检查资源分配是否可能导致系统死锁来避免死锁,而锁用于解决临界区问题,即避免多个进程可以进入临界区。同时。
如果不结合其他死锁解决方案,锁定本身无法避免/防止死锁。
正如deviantfan 的评论:在大多数操作系统中对锁定获取没有限制。下面是一个简单的例子,即使使用了有效的锁,系统也可能死锁:
P1:……;锁(文件A);锁(文件B);....解锁(文件A);解锁(文件B);……
P2:……;锁(文件B);锁定(文件A);.....解锁(文件B);解锁(文件A);……