死锁的条件、预防、避免、检测


死锁的必要条件
- 互斥条件:一个资源一次只能给一个进程使用,非共享
- 请求与保持条件:保持自己资源的同时请求其他资源,该资源可能被占有
- 非剥夺条件:不能强行夺走资源,只能等别的进程主动释放
- 循环等待条件:每个进程都在等待另一个进程占有的资源,形成死循环
死锁预防
- 破坏互斥条件:共享资源
- 破坏请求与保持条件:一次性申请所有必须的资源,申请的时候要释放已有资源
- 破坏非剥夺条件:强行释放资源给优先级更高的进程
- 破坏循环等待条件:按照顺序申请资源,避免循环
死锁避免 - 银行家算法
- 系统状态:记录每个进程最多需要多少资源,已分配多少资源,还剩下多少可用资源
- 安全状态:按照顺序分配资源,确保每个进程都可以完成任务释放资源
- 资源请求处理:检查是否超过最大需求,有没有足够资源,怎么分配
死锁检测
允许死锁,发现死锁再采取措施(终止,强行释放)



![[保姆级教程]uniapp设置字体引入字体格式](https://img-blog.csdnimg.cn/direct/a2ff5e9b0778400586b7cda4d4a723cf.png)







![[分布式网络通讯框架]----集群与分布式的区别](https://img-blog.csdnimg.cn/direct/b766f6febd1a4f8daec52864194e6a7c.png)







