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

3.5.2 计算机系统中的死锁

1.竞争不可抢占性资源引起死锁
2.竞争可消耗资源引起死锁
现在进一步介绍竞争可消耗资源所引起的死锁。
操作系统 第三章 处理机调度与死锁2
3.进程推进顺序不当引起死锁
操作系统 第三章 处理机调度与死锁2

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.安全状态之例
操作系统 第三章 处理机调度与死锁2
操作系统 第三章 处理机调度与死锁2
3.由安全状态向不安全状态的转换

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

最优代表性的避免死锁的算法是迪杰斯科拉的银行家算法。
1.银行家算法中的数据结构
可利用资源向量Available;
最大需求矩阵Max;
分配矩阵Allocation;
需求矩阵Need;(need=max-allocation)
2.银行家算法
操作系统 第三章 处理机调度与死锁2
操作系统 第三章 处理机调度与死锁2
4.银行家算法之例
操作系统 第三章 处理机调度与死锁2
操作系统 第三章 处理机调度与死锁2
操作系统 第三章 处理机调度与死锁2
操作系统 第三章 处理机调度与死锁2
T0安全序列
操作系统 第三章 处理机调度与死锁2

3.8 死锁的检测与解除

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

3.8.1 死锁的检测

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

3.8.2 死锁的解除

1.终止进程的方法
中值所有死锁进程(最简单,代价最大);逐个终止进程(稍温和,代价也大)
2.付出代价最小的死锁解除算法
操作系统 第三章 处理机调度与死锁2

测试题

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

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