扫码关注公众号
下列哪些是死锁特征( )
正确答案是ABCD死锁特征(出现4个特征也有可能不会死锁):1、互斥:一个时间只能有一个进程使用资源2、持有并等待:进程保持至少一个资源正在等待其他进程持有的额外资源3、无抢占:一个资源只能被进程完成后自愿释放4、循环等待:进程互相等待各自的资源
下面关于检测死锁的叙述错误的是( )
正确答案是C本题目考查检测死锁的思想。检测死锁对系统资源的分配不加限制,只要有则可以进行分配,允许系统在运行过程中发生死锁,但可通过系统所设置的检测机构,反复检测各进程资源申请和分配情况,及时的检测出死锁的发生,并确定与死锁有关的进程和资源,然后通过解除死锁的措施,将已发生的死锁清除掉。检测死锁不是预防系统卷入死锁。因此应该选择C。
什么是死锁?
所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。因此我们举个例子来描述,如果此时有一个线程A,按照先锁a再获得锁b的的顺序获得锁,而在此同时又有另外一个线程B,按照先锁b再锁a的顺序获得锁。如下图所示:
介绍典型的两种死锁情形
(一)线程自己将自己锁住一般情况下,如果同一个线程先后两次调用lock,在第二次调⽤用时,由于锁已经被占用,该线程会挂起等待占用锁的线程释放锁,然而锁正是被自己占用着的,该线程又被挂起而没有机会释放锁,因此就永远处于挂起等待状态了,于是就形成了死锁(Deadlock)。(二)多线程抢占锁资源被困又如线程A获得了锁1,线程B获得了锁2,这时线程A调用lock试图获得锁2,结果是需要挂起等待线程B释放锁2,而这时线程B也调用lock试图获得锁1,结果是需要挂起等待线程A释放锁1,于是线程A和B都永远处于挂起状态了,死锁再次形成。