内核:处理unix中的死锁

时间:2012-12-01 10:46:50

标签: unix linux-kernel deadlock

  

如果进程1锁定资源A 并等待,则会出现死锁   资源B ,同时(由于“正确”位置的上下文切换)进程2锁定资源B 并等待访问资源   A

Unix如何处理这种死锁?我阅读了以下 here

  

通过简单地要求所有进程,可以防止许多死锁   锁定多个资源以按相同的顺序锁定它们(例如,   按锁定名称按字母顺序排列)

如何在不改变执行顺序的情况下更改获取锁定的顺序? 有人可以详细说明现代Unix内核处理死锁的方法吗?

2 个答案:

答案 0 :(得分:3)

对于Linux内核,它不会处理这个问题,因为它不知道如何修复它。相反,它会在运行时检测到这种死锁并抱怨。

它使用的技术是lockdep,它是一个运行时锁定正确性验证器,有关详细信息,请查看内核文档Documentation/lockdep-design.txt

答案 1 :(得分:2)

不,操作系统无法更改订单。这句话应该理解为:“如果程序员是明智的并且在所有竞争实体中以相同的顺序锁定资源,那么许多死锁将是不可能的。”