概念:各进程相互等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象。
死锁/饥饿/死循环
饥饿:由于长期得不到资源,某进程无法向前推进的现象。(短进程优先(SPF)调度算法中,若源源不断地有短进程进来,则长进程一直无法获取资源,产生饥饿现象。)
死循环:某进程执行过程中一直挑不出某个循环的现象。
产生死锁的必要条件:1)互斥条件(只有对必须互斥使用的资源才会产生死锁现象) 2)不剥夺条件(资源只能主动释放,不能由其他进程抢走) 3)循环等待 4)请求和保持条件
注意:发生死锁时一定有循环等待,但有循环等待时不一定发生了死锁
什么时候会发生死锁? -->对不可剥夺资源的不合理分配,可能会导致死锁
预防死锁的策略:
1)预防死锁:破坏死锁发生的一个或几个必要条件
2)避免死锁:采取算法避免系统进入不安全状态,从而避免死锁
3)死锁的检测和接触:允许死锁的发生,不过操作系统会负责检测出死锁的发生,然后采取策略解除死锁。
1)预防死锁
破坏互斥条件
破坏不剥夺条件
破坏请求和保持条件
破坏循环等待条件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY