操作系统--死锁
简介
在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象,就是死锁。发生死锁后若无外力干涉,这些进程都将无法向前推进
死锁、饥饿、死循环的区别
死锁产生的必要条件
互斥条件
不可剥夺条件
资源的占用并请求条件
循环等待条件
什么时候会产生死锁
临界资源的竞争
请求和释放资源的顺序不当
死锁处理策略
-
预防死锁,破坏死锁产生的四个必要条件中的一个或几个
-
避免死锁,用某种方法防止系统进入不安全状态,从而避免死锁(如银行家算法)
-
死锁检测和解除,允许死锁的发生,不过操作系统会负责检测死锁的发生,然后采取某种措施解除死锁
预防死锁
-
破坏互斥条件
互斥条件:只有对必须互斥使用的资源的争抢才会导致死锁
-
破坏不剥夺条件
不剥夺条件:进程所获得的资源在未使用完之前,不能有其他进程强行夺走,只能主动释放
-
破坏请求和保持条件
请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又被其他进程占用,此时请求进程被阻塞,但又对自己已有的资源保持不放
-
破坏循环等待条件
循环等待条件:存在一种进程资源的循环等待链,链中的每一个进程已获得资源同时被下一个进程所请求
避免死锁
什么是安全序列
银行家算法
银行家算法
检测和解除
死锁检测
死锁解除
分类:
操作系统
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 分享4款.NET开源、免费、实用的商城系统
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库