死锁
死锁的定义
- 一组进程处于死锁状态是指:每一个进程都在等待被另一个进程所占有的、不能抢占的资源
死锁的产生
- 原因:允许多个进程并发执行共享系统资源时,系统必须提供同步机制和进程通信机制。然而,对这种机制使用不当的话,可能会出现进程永远被阻塞的现象。
- 两个进程分别等待对方占有的一个资源,于是两者都不能执行而处于永远等待,这种现象称为“死锁”。例如:
- 打印机与读卡机
- PV操作使用不当产生死锁。
- 同类资源分配不当引起死锁。若系统中有m个资源被n个进程共享,当每个进程都要求K个资源,而$m<n\times(K-1) + 1$时,如果分配不当就可能引起死锁。
- 对临时性资源使用不加限制引起死锁。在进程通信时使用的信件可以看作是一种临时性资源,如果对信件的发送和接受不加限制的话,可能会引起死锁。(循环等待信件到来才能发送信件
)
死锁的解决
产生死锁的因素不仅与系统拥有的资源数量有关,而且与资源分配策略,进程对资源的使用要