系统死锁是指两个或多个进程或线程因争夺资源而陷入相互等待的僵局,导致系统无法继续执行。以下是关键要点:
定义与现象 多个进程(或线程)因竞争资源(如内存、设备等)或通信而相互阻塞,若无外部干预,均无法推进执行,系统进入死锁状态。
必要条件
死锁产生需同时满足以下四个条件:
- 互斥条件: 资源只能被单一进程占用; - 不可剥夺条件
- 请求与保持条件:进程已持有资源且可申请新资源;
- 循环等待条件:进程间形成资源请求的环路。
典型示例 - 资源分配示例:
进程P1持有资源R1并请求R2,进程P2持有R2并请求R1,形成“等待链”;
- 线程锁示例:线程A持有锁1并尝试获取锁2,线程B持有锁2并尝试获取锁1,导致相互等待。
影响与后果 死锁会导致系统性能下降,甚至瘫痪,需通过资源分配算法(如银行家算法)或死锁检测/恢复机制(如超时、事务回滚)解决。
解决策略
- 预防: 破坏必要条件(如采用资源分级分配); - 避免
- 检测与恢复:通过等待图、超时检测等手段识别并解除死锁。
声明:
本站内容均来自网络,如有侵权,请联系我们。