操作系统——死锁

死锁是指多个进程因争夺资源而造成的一种僵局,彼此都无法继续执行。预防死锁包括破坏四个必要条件之一;避免死锁如银行家算法,确保资源分配的安全性;检测与解除死锁涉及识别循环等待并采取相应措施。安全序列和资源分配图是关键的分析工具。
摘要由CSDN通过智能技术生成

死锁概念

进程相互等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象
死锁的概念

在这里插入图片描述

死锁 饥饿 死循环

在这里插入图片描述

死锁产生的必要条件

互斥条件:只有对必须互斥使用的资源的争抢才能导致死锁
不剥夺条件:进程所获得的资源在未使用完之前,不能由其他资源强行夺走,只能主动释放。
请求和保持的条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又被其他的进程占用,此时请求进程被阻塞,但又对自己有的资源保持不放。
循环等待条件:存在一种进程资源的循环等待链,联众的每一个进程已获得的资源同时被下一个进程请求
注意!发生死锁时一定又循环等待,但是发生循环等待时未必死锁。
在这里插入图片描述
在这里插入图片描述

死锁的处理策略

预防死锁 避免死锁 死锁的检测与解除
在这里插入图片描述
在这里插入图片描述

死锁的处理策略

预防死锁

在这里插入图片描述

破坏互斥条件

把互斥设备从逻辑上改成可以同时使用的设备
在这里插入图片描述

破坏不剥夺条件

在这里插入图片描述

破坏请求和保持条件

在这里插入图片描述

破坏循环等待条件

在这里插入图片描述

总结

在这里插入图片描述

避免死锁

安全序列

如图,如果答应了B借30亿那么后面的钱都回不来了
在这里插入图片描述

如图如果时A想借20亿,发现这并不是死局,钱都是能够要回来的
在这里插入图片描述
在这里插入图片描述

银行家算法

根据当前剩余的资源数和每一个进程最多还要的进程数进行比较,如果存在能够满足的进程就将其加入安全序列并且把他之前已分配的资源数加入剩余资源数(此进程归还资源),依次循环得到安全序列,表明当前序列出去安全状态则不可能发生死锁,如果当前所有进程的最多需要资源数都大于系统所剩资源数则为不安全序列,有可能发生死锁。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
算法实现思路
在这里插入图片描述
在这里插入图片描述

死锁的检测和解除

在这里插入图片描述

死锁检测

S为死锁状态的充分必要条件是:当且仅当S状态的资源分配图是不可完全简化的。该充分条件被称为死锁定理
在这里插入图片描述
此时P1的请求可以满足,只要满足了P1之后P1归还了所有资源之后(消除了所有的P1边)P2也可以执行结束(消除了所有P2的边),就称之为这个图为可简化
在这里插入图片描述
如果时这种情况所有进程这个时候都不能被满足,所以所有进程都会被阻塞,不能消除所有的边,则发生死锁
在这里插入图片描述
在这里插入图片描述

死锁的解除

在这里插入图片描述
在这里插入图片描述

真题

2019:死锁的预防可以确保进程之间不发生死锁,银行家算法是用来避免死锁的,动态的计算资源分配和合理性,并不能计算当前是否发生死锁,通过资源分配图可以检测当前是否发生死锁,发生死锁必然有两个及其以上的进程,进入阻塞态。

2013:若处于安全状态则一定不会发生死锁,若处于不安全状态则有可能发生死锁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值