习题3
1.什么是死锁?
如果两个资源各有一个,并且两个进程交错申请、占用它们,就会出现都因未分到资源而无限期的阻塞下去的现象。
2.计算机系统中产生死锁的根本原因是什么?
计算机系统中产生死锁的根本原因是资源有限且操作不当。
3.发生死锁的4个必要条件是什么?
同时具备以下4个必要条件:
(1)互斥条件
(2)占有且等待条件
(3)不可抢占条件
(4)循环等待条件
4.解决死锁的方法一般有那3种?
解决死锁的一般方法有:死锁的预防、死锁的避免、死锁的检测与恢复等三种。
5.死锁预防的基本思想是什么?
要求进程申请资源时遵循某种协议,从而打破产生死锁的4个必要条件中的一个或几个,保证系统不会进入死锁状态。
6.死锁避免的基本思想是什么?
对进程所发出的每一个申请资源命令加以动态地检查,并根据检查结果决定是否进行资源分配。就是说,在资源分配过程中若预测有发生死锁的可能性,则加以避免。这种方法的关键是确定资源分配的安全性。
8.死锁预防的有效方法是什么?死锁避免的著名算法是什么?
死锁预防的有效方法是:资源有序分配策略—— 分类编号,按序分配。
死锁避免的著名算法是银行家算法。
11.死锁、“饥饿”和活锁之间的主要差别是什么?
①处于死锁状态的进程都占有一定资源,而处于饥饿状态的进程永远得不到所申请的资源。
②死锁是一种僵局,在无外力干预下,处于死锁状态的全部进程都不能前进,即它们都处于阻塞态,可能造成整个系统瘫痪;而出现饥饿时系统照常运行,只是某个或某几个进程永远也不能得到所需的全部服务。
③造成死锁的根本原因是资源有限且使用不当;而造成饥饿的原因是资源分配策略或调度策略不合适,如果采用先来先服务的资源分配策略就可以避免饥饿。
④发生死锁时,一定至少有一个资源被无限期地占用而得不到释放;而饥饿出现时,系统中的每个资源占有者都在有限的时间内释放它所占用的资源。