3

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

Unix 如何处理这种死锁?我在这里阅读了以下内容。

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

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

4

2 回答 2

3

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

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

于 2012-12-08T07:17:03.020 回答
2

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

于 2012-12-01T11:00:34.897 回答