第3章-2 处理机调度与死锁
3.5 死锁概述
死锁:多个进程因竞争共享资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再向前推进。
一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程就称为死锁进程。

3.5.1 资源问题
引起死锁的临界资源:打印机、数据文件、队列、信号量。
- 可重复性资源和消耗性资源
可重用性资源:
例如:打印机,刻录机
供用户重复使用多次的资源,具有如下性质:
只能分配给一个进程使用,不允许多个进程共享。
有一定的使用顺序。 1)请求资源; 2)使用资源; 3)释放资源。
可重用性资源中的单元数目是相对固定,不能创建也不能删除.
可消耗性资源:
也称为临时性资源,是在进程运行期间,由进程动态地创建和消耗,数量不断变化。如:进程间通信的消息。
- 可抢占性资源和不可抢占性资源
可抢占资源:
某进程在获得这类资源后,该资源可以再被其它进程或系统抢占。例如:优先级高的进程可抢占CPU。
例如:处理机,主存,这类资源不会引起死锁。
不可抢占资源:
系统把某资源分配给该进程后,就不能将它强行收回,只能在进程用完后自行释放。例如:刻录机、打印机、 磁带机 这类资源的使用可能会引起死锁发生。
3.5.2 产生死锁的原因
- 竞争不可抢占资源引起死锁
系统中的资源数目不能满足各个进程的需要,会引起进程对资源的竞争而产生死锁。
文件:可重用不可抢占资源
P1 :
open(f1,w)
open(f2,w ) open(f1,w)
P2 :
open(f2,w)
open(f1,w)
- 竞争可消耗资源引起死锁
进程利用消息通信时可能形成死锁问题。 m1, m2, m3是可消耗性资源 : P1产生消息m1,send(p2,m1)发送给P2
P1: send(P2,m1); receive(p3,m3);
P2: send(P3,m2); receive(p1,m1);
P3: send(P1,m3); receive(p2,m2);
- 进程的推进顺序不当
- 进程在运行过程中,请求和释放资源的顺序不当,也可能造成死锁.
- 进程P1和P2并发执行时,按照曲线①②③顺序推进时,两进程顺利完成。
- 按曲线④的顺序推进时,进入不安全区D内,两进程再推进会产生死锁。
3.5.3 死锁的必要条件
产生死锁必须具备4个条件;只要其中1个不成立,死锁就不会产生:
互斥使用:在一段时间内,一个资源只能由一个进程独占使用,若别的进程也要求该资源,则须等待其占用者释放;
请求和保持:允许进程在不释放其所占资源的情况下,请求并等待分配新的资源;
不可抢占:进程所获得的资源在未使用完之前,不能被其它进程强行夺走,只能由其自身释放;
循环等待:存在一个进程集合{P0,P1,…Pn},P0正在等待一个P1占用的资源,P1正在等待一个P2占用的资源,…。
3.5.4 处理死锁的方法
预防死锁:通过设置某些限制条件,破坏产生死锁的四个必要条件中的一个或者几个,预防死锁。
避免死锁:在资源的动态分配过程中,用某种方法防止系统进入不安全状态,避免死锁。
检测死锁:检测机构及时检测死锁的发生,确定与死锁有关的进程与资源,采取措施,从系统中将已发生的死锁清除。
解除死锁:通过撤消和挂起一些进程,回收一些资源,分配给处于阻塞状态的进程,使之转为就绪状态。

从1-4对死锁的防范程度逐渐减弱,但对应资源利用率提高。
3.6 预防死锁
破坏死锁的必要条件中的一个或几个,避免死锁发生。
互斥条件是非共享设备所必须的,应加以保证。
- 破坏“请求和保持”条件
- 破坏“不可抢占”

本文详细介绍了操作系统中死锁的概念、产生原因、必要条件以及处理方法。死锁是多个进程因争夺资源而陷入的一种无法进行的状态。资源问题、进程推进顺序不当是引发死锁的主要因素。处理死锁包括预防、避免、检测和解除四个策略。预防死锁通过破坏死锁的必要条件之一,避免死锁则在分配资源时确保系统安全。银行家算法是一种有效的避免死锁的策略,通过预先检查能否安全分配资源。此外,死锁检测与解除算法用于检测并解决系统中已存在的死锁。


最低0.47元/天 解锁文章
1927

被折叠的 条评论
为什么被折叠?



