【王道考研 操作系统】【第二章】死锁的概念 预防死锁 避免死锁 死锁的检测和解除

第一章【王道考研 操作系统】【第一章】操作系统的概述、特征、发展、体系结构 中断与系统调用

第二章 1~5【王道考研 操作系统】【第二章】进程概念 进程控制 进程通信 线程概念和多线程模型

第二章 6~8【王道考研 操作系统】【第二章】处理机调度 进程调度算法

第二章 9~11【王道考研 操作系统】【第二章】进程同步、进程互斥的实现方法 软件&硬件 优点&缺点 信号量机制

第二章 12【王道考研 操作系统】【第二章】管程 用管程解决进程互斥和同步问题

13. 死锁

13.1 概念

  • 定义

     在并发环境下,各进程因 竞争资源 而造成的一种 互相等待对方手里的资源,导致各进程都阻塞,无法向前推进 的现象。

  • 死锁、饥饿、死循环的区别
    image-20220303111520222

  • 死锁产生的必要条件

    产生死锁必须同时满足以下四个条件,任一条件不产生,死锁就不会发生。
    image-20220303111901053
    什么时候会发生死锁?对 不可剥夺资源不合理分配

13.2 处理策略

  image-20220303112527654

13.2.1 静态策略:预防死锁

 想办法破坏导致死锁的四个必要条件之一。

  • 破坏互斥条件 —— SPOOLing技术

    操作系统采用SPOOLing技术把 独占设备 在逻辑上改造成 共享设备
    image-20220303112807362

  • 破坏不剥夺条件
    image-20220303113140561

  • 破坏请求和保持条件
    image-20220303125155851

  • 破坏循环等待条件
    image-20220303125357034

  • 总结
    image-20220303130046242

13.2.2 动态策略:避免死锁

安全序列:指如果系统按照这种序列分配资源,则每个进程都能顺利完成。只要能找出一个安全序列,系统就是 安全状态
如果分配了资源之后,系统中找不出任何一个安全系列,系统就进入了 不安全状态
如果系统处于 安全状态,就 一定不会发生死锁;如果系统进入 不安全状态,就 可能发生死锁

  • 银行家算法

     在资源分配之前预先判断这次分配是否会导致系统进入不安全状态,以此决定是否答应资源分配请求。该算法用于避免死锁。
    image-20220303131135404
    数据结构:
    image-20220303131712958
    算法步骤:
    image-20220303131851912
    image-20220303131653474

13.2.3 死锁的检测和解除
  • 死锁检测算法

    用于检测系统状态,以确定系统中是否发生了死锁。
    image-20220303132310063
    依次消除与不阻塞进程(申请的资源还有)相连的边,直到无边可消。

    死锁定理:若资源分配图最终不能消除所有边,那么此时就是发生了死锁。最终还连着边的那些进程就是 死锁进程
    若最终能消除所有边,就成这个图是 可完全简化的,此时一定没有死锁(相当于找到安全序列);

  • 死锁解除算法

    当认定系统中已经发生了死锁,利用该算法可立即将系统从死锁状态中解脱出来。
    image-20220303133224773

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值