操作系统-死锁

死锁

在这里插入图片描述

  • 死锁问题

一组阻塞的进程持有一种资源等待获取另一个进程所占有的一个资源。
在这里插入图片描述

  • 系统模型
    资源类型:CPU、内存、IO
    在这里插入图片描述
    在这里插入图片描述
    循环资源 有死锁(p2 p3)
    在这里插入图片描述
    循环资源 无死锁
    在这里插入图片描述
    p2 / p4执行完会释放资源R1 R2 ,从而P1 P3获取到需要的资源。

如果图中无循环=》一定无死锁
如果有循环
1. 资源只有一个实例,有死锁。
2. 资源有多个实例,不一定会死锁。

  • 死锁特征
    死锁出现后的特征,不能反推。必要条件。
    在这里插入图片描述

  • 死锁处理
    完全杜绝死锁的产生可能会对系统执行效率产生较大影响。
    死锁预防打破四个必要条件

    • 互斥:数据一致性会有问题。
    • 占用并等待:不持有资源,可能产生饥饿。
    • 无抢占:如果进程占有某些资源,并请求其他不能被立即分配的资源,则释放当前占有的资源。
    • 循环等待:对所有资源类型进行排序,并要求每个进程按照资源顺序进行申请。(嵌入式操作系统应用较多)

    死锁避免
    在这里插入图片描述
    在这里插入图片描述
    安全序列,序列前的所有进程都执行完毕并释放资源,序列后的所有资源也能为己所用。序列前+序列后都可以使用。
    在这里插入图片描述
    在这里插入图片描述
    死锁避免算法:银行家算法
    在这里插入图片描述
    不安全包括死锁,所以只要判断不安全就可以判断死锁了。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

算法核心:判断需要的资源数量(Need)和可以提供的资源数量(Available)的数量关系。

栗子
在这里插入图片描述
死锁检测

允许系统进入死锁状态(检测滞后,不是在发出请求的时候,而是在运行的时候进行检测)
死锁检测算法
恢复机制

算法一:资源等待图:判断是否存在环。
在这里插入图片描述
算法二:
前提:几个概念
在这里插入图片描述
在这里插入图片描述

由于死锁检测算法复杂度非常高,所以操作系统很少定期执行 银行家算法和死锁检测。会影响系统性能。银行家算法和死锁检测算法是很类似的。

在这里插入图片描述
例子1不存在死锁(request <= allocation+available)
在这里插入图片描述
例子2有可能存在死锁
在这里插入图片描述
死锁恢复
在这里插入图片描述
在这里插入图片描述

最实用办法:reboot,确实不是彻底解决办法。目前还没有一个彻底解决死锁的办法。可以作为一个研究方向。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值