课程进度 72% · 第8/10章第8/10章 · 标签 1/5
— 1 —
死锁的定义与条件
死锁是指两个或多个进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉,它们都无法推进。
死锁的四个必要条件
死锁发生需同时满足以下四个条件:
- 互斥(Mutual Exclusion):资源一次只能被一个进程占用
- 占有且等待(Hold and Wait):进程已占有一些资源,同时等待其他资源
- 不剥夺(No Preemption):进程已占有的资源不能被强行剥夺
- 循环等待(Circular Wait):存在进程资源的循环等待链
📖四个条件缺一不可!只要破坏其中一个条件,就可以预防死锁的发生。
— 2 —
系统模型与死锁状态图
死锁的经典场景:进程A持有资源X等待资源Y,进程B持有资源Y等待资源X,形成循环等待。
上图:进程A持有资源X(←方向),进程B持有资源Y(←方向),同时进程A等待资源Y(→方向),进程B等待资源X(→方向),形成死锁。
死锁互斥持有等待不剥夺循环等待