操作系统 | 死锁

死锁问题

在这里插入图片描述
都抢同一个车道,卡住了,都无法进行接下来的行动
在这里插入图片描述

系统模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有多个环存在
在这里插入图片描述
P2 和 P4,分别拥有资源R1 R2. P2有R1资源,但是不需要等待其他资源,P2运行一段时间后,一定会释放 R1,释放后,P1的sleep会被打破
在这里插入图片描述

死锁特征

在这里插入图片描述
吃着碗里看着锅里
只能自愿free,不存在抢占

这四个条件是死锁的必要条件,不是充分条件。死锁是因,会有四种4条件的果
在这里插入图片描述
基于上述四个特征分析上图

死锁处理方法

在这里插入图片描述

Deadlock Prevention(死锁预防)

防止死锁的出现,打破死锁的条件
在这里插入图片描述
资源不共享,可以免死锁,相当于静态分配,会导致效率很低,饥饿现象产生
在这里插入图片描述

Deadlock Avodidance(死锁避免)

在这里插入图片描述
这里比死锁避免条件放松了一些,这里不是设计一种方法一定不死锁,而时当进程运行过程中会申请资源,在申请的时候就会判断该不该给

如何判断?首先知道进程需要某一个类型的资源的最大数量是多少,第二个能够把资源分配的状态通过一种方法,来限制提供给分配资源的数量
在这里插入图片描述
什么是安全状态?当系统处于安全状态是指针对所有进程,存在一个时间序列,代表每个进程的结束时间顺序
在这里插入图片描述
在这里插入图片描述

银行家算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Need代表当前所需要进程的情况
Available vector当前系统还剩下多少资源的向量
Alloction当前系统已经拥有的资源
Rescource vector表示当前系统中总的资源的个数

假定P1-P4四个进程都没有结束,有没有一个序列可以让他们都正常的结束

四个进程中找一个进程,他所需要资源的个数是小于当前Alloction的资源011,P1-P4哪一个资源的个数小于011?
很明显P2的001满足,把P2的不能结束改为可以结束,P2结束后把资源返回给Available,P2原来所拥有的资源是6 1 2
6 1 2 加到 0 1 1
在这里插入图片描述
Available变成了6 2 3,找下一个小于6 2 3的P,P1满足
在这里插入图片描述

Deadlock Detection(死锁检测)

  • 允许系统进入死锁状态
  • 死锁检测算法
  • 恢复机制
    在这里插入图片描述
    之前的资源分配图简化变成一个等待图,去掉资源节点,只留下进程节点。
    在这里插入图片描述
    在这里插入图片描述
    开销还是很大的,所以很少使用,对于银行家算法来说,需要知道每一个进程所需要的最大空间是多少,这一点对于一般的程序来说很难获得。
    更多的是来调试系统
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

Recovery from Deadlock(死锁恢复)

在这里插入图片描述
在这里插入图片描述
大部分情况下对于死锁还是鸵鸟心态,不去管

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值