死锁

死锁的定义:多个进程相互等待对方资源,在得到所有的资源继续运行之前,都不会释放自己的资源,造成了循环等待的现象,称为死锁。

死锁产生的必要条件:1.资源互斥:每一个资源只能给一个进程使用,资源不能共享使用。2.占有和等待:已经得到资源的进程还能继续申请新的资源。3.非抢占:当一个资源分配给一个进程后,其他需要该资源的进程不能强制性获取该资源。4.环路等待:有多个进程形成了一个封锁循环链,链上的每一个进程都在等待一个下一个进程的资源。

死锁预防:破坏死锁的必要条件

死锁避免:用银行家算法算出执行进程的序列,但是一般是没什么用的,因为进程的需要资源是未知的,当一个线程申请的资源大于可利用资源时,就直接申请失败如果申请的资源小于等于可利用资源的时候,就进行安全检测。检查什么呢?如果将资源分配给线程后,是否存在一条安全执行序列,使各个线程都能安全执行,不发生死锁。如果存在就给其分配资源。如果不存在就申请失败。

死锁恢复:抢占,回滚:周期性进行检查,每一次都将进程状态存到文件中,当发生死锁时回滚到更早的状态。杀死进程。

posted @   小十不识月  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示