全局锁顺序
死锁 (Deadlock)
当由于多个锁的获取顺序不一致导致循环等待。
- Process A: Hold Lock 1, Wait Lock 2
- Process B: Hold Lock 2, Wait Lock 1
解决方案
Global Lock Ordering (全局锁顺序规则)。
- 规则: 系统中所有的锁,必须按照严格定义的顺序获取。
- 例子: 必须先拿
fs_lock才能拿inode_lock。如果你已经拿了inode_lock,绝对不许回头去拿fs_lock。 - 代价: 这对程序员的心智负担极大,需要严格的文档规范。