操作系统 第三章 处理机调度与死锁2

3.5.2 计算机系统中的死锁

1.竞争不可抢占性资源引起死锁
2.竞争可消耗资源引起死锁
现在进一步介绍竞争可消耗资源所引起的死锁。
在这里插入图片描述
3.进程推进顺序不当引起死锁
在这里插入图片描述

3.5.3 死锁的定义、必要条件和处理方法

死锁定义:在一组进程发生死锁的情况下,这组死锁进程中的每一个进程、都在等待另一个死锁进程所占有的资源。
死锁必要条件:(只要其中一个不成立,就不会发生死锁)互斥条件;请求和保持条件;不可抢占条件(CPU和进程不可抢占);循环等待条件;
3.处理死锁的方法
预防死锁;避免死锁;检测死锁;接触死锁;

3.6 预防死锁

通过破坏产生死锁的四个必要条件的一个或几个,以避免发生死锁。由于互斥条件是非共享设备所必须的,不仅不能改变还应该加以保证,因此主要破坏产生死锁的后三个条件。

3.6.1 破坏请求和保持条件

为了破坏请求和保持条件,系统必须保证做到:当一个进程在请求资源是,它不能持有不可抢占资源。

  1. 第一种协议
    所有进程在开始运行前,必须一次性的申请其在整个运行过程中所需的全部资源。
  2. 第二种协议
    是对第一种协议的改进,允许一个进程获得运行初期所需的资源,便开始运行。

3.6.2 破坏不可抢占条件

当一个已经保持了某些不可被抢占资源的进程,提出新的资源请求而不能满足时,必须释放资源。

3.6.3 破坏循环等待条件

对系统所有资源进行线性排序,并赋予不同序号,从而进行有序资源分配。申请低序号需释放相同或更高序号的资源。
一般输入资源序号小于输出。

3.7 避免死锁

3.7.1 系统安全状态

1.安全状态
允许进程动态申请资源,在分配前应该就散资源分配的安全性
2.安全状态之例
在这里插入图片描述
在这里插入图片描述
3.由安全状态向不安全状态的转换

3.7.2 利用银行家算法避免死锁

最优代表性的避免死锁的算法是迪杰斯科拉的银行家算法。
1.银行家算法中的数据结构
可利用资源向量Available;
最大需求矩阵Max;
分配矩阵Allocation;
需求矩阵Need;(need=max-allocation)
2.银行家算法
在这里插入图片描述
在这里插入图片描述
4.银行家算法之例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
T0安全序列
在这里插入图片描述

3.8 死锁的检测与解除

系统提供两个算法:死锁检测算法;死锁解除算法

3.8.1 死锁的检测

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

3.8.2 死锁的解除

1.终止进程的方法
中值所有死锁进程(最简单,代价最大);逐个终止进程(稍温和,代价也大)
2.付出代价最小的死锁解除算法
在这里插入图片描述

测试题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拔牙不打麻药

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值