第五章 死锁
1.死锁的产生
领会
死锁的定义
在多道程序系统中,一组进程中的每一个进程均无限期地等待被该组进程中的另一个进程所占有且永远不会释放的资源
死锁产生的原因
竞争资源,系统资源在分配时出现失误,进程间对资源的相互争夺所造成僵局
多道程序运行时,进程推进顺序不合理
死锁产生的必要条件
互斥条件
不可剥夺条件
请求和保持条件
循环等待条件
2.死锁预防
领会
死锁预防的概念
在任何系统操作前,事先评估系统的可能情况,严格采取措施使得死锁的四个必要条件不成立
资源的静态分配策略
一个进程在申请新资源的要求不能立即得到满足时,便处于等待状态。而一个处于等待状态的进程的全部资源可以被剥夺
资源的有序分配法
将系统中所有资源顺序编号,较为紧缺、稀少的资源的编号较大。一个进程只能得到编号较小的资源,才能申请编号较大的资源;释放资源时,硬按编号递减的次序进行
3.死锁避免
综合应用
死锁避免的概念
系统对进程发出的每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源;如果分配后系统可能发生死锁,则不予分配,否则予以分配
安全状态与安全序列
若果操作系统能保证所有的进程在有限时间内得到需要的全部资源,则称系统处于“安全状态”
银行家算法
4.死锁的检测与解除
简单应用
死锁检测的时机
一次资源分配后
每次调度后
定时器定时运行检测
某个进程长期位于阻塞态或阻塞进程过多时
死锁的解除方法
剥夺资源
撤销进程
5.资源分配图
简单应用
资源分配图
P为进程集合
R为资源集合
资源分配图
死锁定理
如果资源分配图中没有环路,则系统没有死锁
如果资源分配图中出现了环路,可能存在死锁
如果处于环路中的每个资源类中均只包含一个资源实例,则环路的存在即意味着死锁的存在
如果处于环路中的每个资源类中资源实例的个数不全为1,则环路的存在是产生死锁的必要条件而不是充分条件
资源分配图化简方法
在资源分配图中,找出一个既非等待又非鼓励的进程节点P,由于Pi可获得它所需要的全部资源,且运行完后释放它所占用的全部资源,故可在资源分配图中消去Pi所有的申请边和分配边,使之成为既五申请边又无分配边的孤立结点
将Pi所释放的资源分配给申请它们的进程,即在资源分配图中将这些进程对资源的申请边改为分配边
重复前两步骤,直到找不到符合条件的进程结点
6.哲学家就餐问题
简单应用
同时最多只能有4个人进餐