来自: https://www.bilibili.com/video/BV1js411b7vg?p=78
2 系统模型
进程对资源的争夺才会产生死锁, 资源可以是CPU、内存、I/O等等。 当一个资源状态是free时,可以被一个进程get(获取), 资源就变成use/hold 状态,进程使用完资源后,需要release资源, 资源变回free状态。 资源状态如此往复循环,重复被其他进程使用。
资源状态:
死锁产生的情况:
资源分配图,用有向图表示进程与资源的占用与请求情况如下图,当P -> R, 表示进程依赖资源R, 当R -> P, 表示资源R被进程P占用。
资源分配图, 一个资源R里可能由多个资源,能被多个进程占有
下图无死锁。
形成死锁
无死锁
结论: 如果死锁, 一定有环, 如果有环, 不一定死锁。 死锁是有环的充分不必要条件。
3 死锁的特征
死锁的出现的一定有下面四个条件, 但有下面四个条件不一定会死锁
4 死锁处理办法
死锁的解决办法
4.1 死锁预防
只要打破死锁存在的四个必要条件之一, 就可以打破死锁。 (四个条件是1.互斥 2.持有并等待 3.无抢占 4. 循环等待)
4.2 死锁避免