操作系统中的死锁问题
什么是死锁?
在多道程序环境下,多个进程可能竞争一定数量的资源。某个进程申请资源,如果这时资源不可用,那么该进程进入等待状态。如果申请的资源被其他等待进程占有,那么该等待进程有可能再也无法改变其状态。这种情况称为死锁。
在正常情况下,进程只能按如下顺序使用资源:
1 申请 如果申请的资源正在被其他的进程使用,那么申请进程必须等待,直到它获得该资源为止
2 使用 进程对资源进行操作
3 释放 进程释放资源
当一组进程中的每个进程都在等待一个事件,而这一事件只能由这一组进程的另一进程引起,那么这组进程就处于死锁状态。
死锁产生的必要条件
如果在一个系统中,下面4个条件同时满足,那么可能就会引起死锁
(1)互斥 至少有一个资源处于非共享模式,即一次只能由一个进程使用。如果另一进程申请该资源,那么申请进程必须等到该资源被释放为止。
(2)占有并等待 一个进程必须至少占有一个资源,并等待另一资源,而该资源位其他进程占有
(3)非抢占 资源不能被抢占,即资源只能在进程完成任务后自动释放
(4)循环等待 {P0,P1,P2,................,Pn} P0等待的资源为P1占有,P2等待的资源为P3占有,................,Pn等待的资源位P0z占有。
资源分配图——死锁问题精确的描述
死锁问题可用称为系统资源分配图的有向图进行更为精确的描述。
资源分配图的表示 节点(分为两种类型系统活动进程的节点和系统所有资源类型的节点)和边(申请边:从进程指向资源节点和分配边:从资源指向进程节点)
画法 进程节点
资源节点 带有两个实例
下面我们由一个资源分配图为例,从资源分配图,我们可以找到很多信息
由资源分配图可以看出
集合P,R,E
资源实例 如R1有一个实例 R2有2个实例
进程状态 如进程P1占有资源类型为R2的一个实例,等待资源类型为R1的实例。
由资源分配图可以看出
1 如果没有环则没有死锁
2 如果有环则分为两种情况
2.1 单资源实例有环必死锁 (又分为 环所涉及的资源刚好有一个实例和 所有资源都只有一个实例)
2.2 多资源环的出现可能会引起死锁
死锁实例
总而言之 ,如果资源分配图没有环就不会处于死锁状态,另一方面,如果有环,那么系统可能处于死锁状态。
补充 什么是活锁
如果有太多进程或操作在短时间内大量请求同一资源出现了活锁;
特点:
好像停滞了,但可以解开;
数据库例子:如果食物T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然在等待。然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求,……,T2有可能永远等待,这就是活锁的情形
网络的例子:中断活锁;
网卡速率变化导致数据包处理方式的变化
中断->轮询
死锁处理方法
从原理上说,有三种方法可以解决死锁问题。
1 可使用协议以预防或避免死锁,确保系统不会进入死锁状态。 也就是说提前评估一下是否会导致死锁。
2 可允许系统进入死锁,然后检测他恢复他
3 可忽视这个问题,认为死锁不可能在系统内检测 鸵鸟策略
鸵鸟策略看似可笑,但是应用还是比较广泛的:
数学家观点(理论型,完美主义者):
希望世界完美无缺
有问题就必须处理,无论任何代价
工程师观点(实践):
能够工作就可以
有问题(死锁):频率、危害、处理代价进行比较
死锁频率<其他故障频率
处理代价>大于处理代价
接下来将我将会详细讨论每种处理方法的详细讨论每种方法的机制和算法 敬请期待。
相关推荐
浅谈操作系统中的死锁问题.pdf
从进程同步的概念可以知道,当并发进程需要竞争使用资源或需要相互协作向前推进时,如果... 死锁是所有操作系统都面临着的潜在问题,操作系统除了需要预防死锁、避免死锁外,还需要能够检测死锁,并从死锁中进行恢复。
操作系统实验六:死锁问题实验报告。通过本实验观察死锁产生的现象,考虑解决死锁问题的方法。从而进一步加深对于死锁问题的理解。掌握解决死锁问题的几种算法的编程和调试技术。练习怎样构造管程和条件变量,利用...
死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 由于...
操作系统中有关预防死锁的问题
如何合理进行资源分配,是操作系统主要任务之一.文章将着重讨论操作系统在处理资源分配的过程中会出现的一 个问题——死锁.并介绍一个死锁避免的算法。
进程死锁的检测:资源分配图的化简判断是否有死锁发生
操作系统—死锁介绍
死锁流程图 复习画流程图一目了然 操作系统——死锁流程图
山东大学 操作系统实验6 死锁问题实验的程序
操作系统 死锁 课件下载 操作系统 死锁 课件下载 了解:死锁的检测与恢复 理解:死锁的必要条件、死锁的预防 掌握:死锁的避免——银行家算法
操作系统实验报告:死锁 银行家算法源代码和运行结果的截图。
上海大学操作系统实验二(死锁)
操作系统原理 第3章 进程管理 操作系统-死锁全文共26页,当前为第1页。 第7讲 进程死锁 2022/6/20 2 今日主题 什么是死锁?(了解) 死锁防止(熟悉) 死锁避免(掌握) 死锁检测和恢复(熟悉) [重点]:死锁必要...
包含了操作系统的三个死锁问题,哲学家问题,消费者生产者问题,管道等,解决方法。绝对可用。
有关死锁的介绍。包括死锁的定义,如何处理死锁,死锁如何预防,如何避免等
操作系统经典例题——同步与互斥,里面收集了往年清华大学、西安电子科技大学的一些经典题目,难度系数中等,可以供考研第一阶段的复习巩固。
操作系统 关于死锁的那部分 操作系统 关于死锁的那部分