产生死锁的必要条件(任意一个条件不成立,死锁就不会发生):
1.互斥条件:资源一段时间内只能被一个进程占有,其他进程请求资源只能等待,直至占有该资源的进程用完并释放。
2.请求和保持条件:进程占有了至少一个资源,但又提出新的资源请求,而该被请求资源已被其他进程占有,此时请求进程被阻塞,同时对自己已经占有的资源保持占有。
3. 不可抢占条件:进程已获得资源在未使用完之前不能被抢占,只能进程使用完时由其自己释放。
4.循环等待条件:该条件指在发生死锁时,必存在一个“进程——资源”循环链,即进程集合{P0,P1···,Pn}中的P0正在等待已被P1占用的资源,P1正在等待已被P2占用的资源,···,Pn正在等待已被P0占用的资源。
处理死锁的方法:
·第一种策略主要包括预防死锁方法和避免死锁方法
·第二种策略包括了检测死锁方法和解除死锁方法
·第三种策略为大多数系统所使用。
(1)预防死锁:该方法较为直观和简单,通过设置某些限制,破坏四个必要条件以达到预防死锁的目的。该方法易实现,已被广泛使用。
(2)避免死锁:同样属于事先预防方法,而不需通过事先采取某些限制条件
来破坏产生死锁的四种必要条件;而是在资源动态分配过程中,用某种方法防止系统进入不安全状态,避免死锁。
(3)检测死锁:该方法无需事先采取任何限制性措施,允许过程中发生死锁,用某种方法检测出死锁发生,采取相应的措施将进程从死锁中释放。
(4)解除死锁,指当检测出系统中发生死锁,采取相应的措施将进程从死锁中释放。通常采用的措施是撤销一些进程,回收他们的资源,资源分配给处于阻塞态的进程,使这些进程能够继续运行。
上述四种方法,从(1)~(4)对死锁的防范程度逐渐减弱,但对应的资源利用率却逐渐提高,且进程因资源因素而阻塞的频度逐渐下降(即进程并发程度逐渐提高)。
大致内容:计算机操作系统(慕课版)