定义:
死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,若无外力作用, 这些进程都将无法再向前推进。
产生死锁的原因:
产生死锁的原因可归结为如下两点:
(1) 竞争资源。当系统中供多个进程共享的资源数目不足以满足诸进程的需要时,会引起资源的竞争而产生死锁。
(2) 进程间推进顺序非法。进程在运行过程中,请求和释放资源的顺序不当,也同样会导致产生进程死锁。
资源问题
1. 可重用性资源和消耗性资源
1) 可重用性资源
可重用性资源是一种可供用户重复使用多次的资源,它具有如下性质:
(1) 每一个资源中的单元只能分配给一个进程。
(2) 使用时,须按照顺序:① 请求 ② 使用 ③ 释放。
(3) 可重用性资源中的单元数目是相对固定的。
2) 可消耗性资源(临时性资源)
进程运行期间,由进程动态地创建和消耗。它具有如下性质:
① 单元数目在进程运行期间不断变化
② 运行过程中,可以不断地创造
③ 运行过程中,请求的资源单元不再返回给该资源类中。
可抢占性资源和不可抢占性资源
1) 可抢占性资源
可把系统中的资源分成两类,一类是可抢占性资源,是指某进程在获得这类资源后,该资源可以再被其它进程或系统抢占。
2) 不可抢占性资源
另一类资源是不可抢占性资源,即一旦系统把某资源分配给该进程后,就不能将它强行收回,只能在进程用完后自行释放。
计算机系统中的死锁
1. 竞争不可抢占性资源引起死锁
通常系统中所拥有的不可抢占性资源其数量不足以满足多个进程运行的需要,使得进程在运行过程中,会因争夺资源而陷入僵局。例如共享文件时的死锁。
2. 竞争可消耗资源引起死锁
例如:进程之间,在利用消息通信机制进行通信时所形成的死锁
3. 进程推进顺序不当引起死锁
除了系统中多个进程对资源的竞争会引发死锁外,进程对资源进行申请和释放的顺序是否合法也是一个重要因素。
死锁的必要条件和处理方法
1. 产生死锁的必要条件
死锁必须同时具备下面四个必要条件:
(1) 互斥条件。 (2) 请求和保持条件。
(3) 不可抢占条件。 (4) 循环等待条件。
2. 处理死锁的方法
目前处理死锁的方法可归结为四种:
(1) 预防死锁。 (2) 避免死锁。
(3) 检测死锁。 (4) 解除死锁。
预防死锁
预防死锁的方法是通过破坏产生死锁的四个必要条件(主要是后三个条件)