什么是死锁?如何避免?
发布于
一、四个必要条件
- 互斥:资源同一时间只能被一个进程使用。
- 持有并等待:进程持有资源同时等待其他资源。
- 不可剥夺:已获得的资源不能被强制夺走。
- 循环等待:进程间形成循环等待链。
二、预防
破坏四个条件之一: - 破坏互斥:难(有些资源必须互斥)。 - 破坏持有并等待:一次性申请所有资源。 - 破坏不可剥夺:可抢占。 - 破坏循环等待:资源有序分配。
三、避免
银行家算法:分配资源前判断是否会导致系统进入不安全状态。
四、检测与解除
- 用资源分配图检测死锁。
- 解除:终止进程、抢占资源。