操作系统第3篇-5-死锁.ppt
文本预览下载声明
第3章 进程管理 3.1 进程的引入 3.2 进程的结构 3.3 进程控制 3.4 进程的同步与互斥 3.5 进程间通信 3.6 进程调度 3.7 死锁 3.8 线程 死锁的概念 死锁举例 产生死锁的原因 产生死锁的必要条件 处理死锁的基本方法 死锁现象 产生死锁的原因 竞争资源(系统内的资源数量不足) 进程推进的顺序不当 进程推进顺序合法 不会造成死锁的进程推进顺序 进程推进顺序非法 会造成死锁的进程推进顺序 产生死锁的必要条件 互斥条件(资源本身的性质) 涉及的资源是非共享的,必须存在需要互斥使用的资源。 请求和保持条件 (进程的行为) 进程在等待一新资源时继续占有已分配的资源。 不剥夺条件(系统规定) 不能强行剥夺进程拥有的资源。 环路等待条件(进程/资源之间的关系) 存在一个进程等待队列{ P1 , P2 , … , Pn }, 其中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1占有的资源,形成一个进程等待环路。 处理死锁的基本方法 预防死锁 避免死锁 检测死锁 解除死锁 预防死锁 通过设置某些限制条件,去破坏死锁四个必要条件中的一个或多个,来防止死锁。 优点 较易实现 缺点 由于所施加的限制往往太严格,可能导致系统资源利用率和系统吞吐量的降低。 避免死锁 不事先采取限制去破坏产生死锁的条件,而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免死锁的发生。 优点 只需要较弱的限制条件,可获得较高的资源利用率和系统吞吐量。 缺点 实现较难 检测死锁 事先并不采取任何限制,也不检查系统是否进入不安全区,允许死锁发生,但可通过检测机构及时检测出死锁的发生,并精确确定与死锁有关的进程和资源。 解除死锁 与检测死锁相配套,用于将进程从死锁状态解脱出来。 优点 可获得较高的资源利用率和系统吞吐量。 缺点 实现难度大 死锁的预防 破坏“请求和保持”条件 采用静态分配资源策略 要求每个进程在运行前必须一次性申请它所要求的所有资源,且仅当该进程所要资源均可满足时才给予一次性分配。 优点:简单、安全 缺点:①资源利用率低; ②使进程延迟运行 破坏“循环等待”条件 采用资源有序分配策略 事先把系统中的所有资源按大多数进程使用资源的顺序由小到大进行编号,每个进程只能按资源编号递增的顺序申请资源。例子 多个进程之间只可能存在占据较低序号资源的进程等待占据较高序号资源的进程释放资源的情况,但不可能存在反向的等待,因此,它们之间绝对不会形成循环等待环路 缺点 资源的编号不容易合理化 限制了用户简单自主的编程 当系统增加新设备类型时,要重新对系统资源进行合理编号 死锁的避免 避免死锁的基本思想 允许进程动态申请资源,但在每次分配资源时,都要通过判断系统状态来决定是否分配资源,若分配后系统可能发生死锁,则不予分配,否则予以分配。 系统状态 安全状态 在某一时刻,如果系统能按某种顺序(如P1,P2,…,Pn, 称为安全序列)为每个进程分配其所需的资源,直至所有进程都能运行完成,称系统处于安全状态。 不安全状态 若不存在这样一个安全序列称系统处于不安全状态。 安全序列 在某一时刻,存在一个进程序列{P1,…,Pn},对每个进程Pi(1≤i≤n),如果满足它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj (j i )当前占有资源量之和,即Needi则?Available+?Allicationj (1?j ? i-1 ),则称{P1,…,Pn}为安全序列。 安全状态示例 有三个进程P1, P2, P3,有12台磁带机 P1共要求10台 P2共要求4台 P3共要求9台 在T0时刻,P1, P2, P3分别获得5、2、2台,尚有3台空闲 分析 经分析,在T0时刻,系统是安全的。因为存在一个安全序列P2(23)、P1(5=3+2)、P3(7=3+2+2)。见下图 由安全状态向不安全状态的转换 如果不按安全序列分配资源,则系统可能会由安全状态进入不安全状态。如在T0以后,P3要求1台磁带机,若系统分给它一台,则系统进入不安全状态。 因为其余2台分给P2,P2完成后,只能释放4台,这既不能满足P1(5台),也不能满足P3(6台)。将导致死锁。可见当P3申请资源时,尽管系统中有资源也不
显示全部