操作系统--死锁

简介

在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象,就是死锁。发生死锁后若无外力干涉,这些进程都将无法向前推进


死锁、饥饿、死循环的区别

image-20220805215439806


死锁产生的必要条件

  • 互斥条件

  • 不可剥夺条件

  • 资源的占用并请求条件

  • 循环等待条件

image-20220805220433112


什么时候会产生死锁

  • 临界资源的竞争

  • 请求和释放资源的顺序不当

image-20220805221249778


死锁处理策略

  1. 预防死锁,破坏死锁产生的四个必要条件中的一个或几个

  2. 避免死锁,用某种方法防止系统进入不安全状态,从而避免死锁(如银行家算法)

  3. 死锁检测和解除,允许死锁的发生,不过操作系统会负责检测死锁的发生,然后采取某种措施解除死锁

预防死锁

  1. 破坏互斥条件

    互斥条件:只有对必须互斥使用的资源的争抢才会导致死锁

image-20220805222453779

  1. 破坏不剥夺条件

    不剥夺条件:进程所获得的资源在未使用完之前,不能有其他进程强行夺走,只能主动释放

image-20220805222729296

  1. 破坏请求和保持条件

    请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又被其他进程占用,此时请求进程被阻塞,但又对自己已有的资源保持不放

image-20220805223326524

  1. 破坏循环等待条件

    循环等待条件:存在一种进程资源的循环等待链,链中的每一个进程已获得资源同时被下一个进程所请求

image-20220805223706036

避免死锁

什么是安全序列

image-20220805230348157

image-20220805230520447

image-20220805230557993

image-20220805230759751

银行家算法

image-20220805231017953

image-20220805231210872

image-20220805231313102

image-20220805231347982

银行家算法

image-20220805231627490

image-20220805231736551


检测和解除

死锁检测

image-20220805232223043

image-20220805232725067

死锁解除

image-20220805233250638

posted @   伊文小哥  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 分享4款.NET开源、免费、实用的商城系统
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
点击右上角即可分享
微信分享提示