考虑以下语句:
- 一、互斥、保持等待、无抢占、循环等待是死锁的必要条件。
- 二、循环依赖总是会导致死锁。
- 三、死锁避免通过不授予可能将系统移动到不安全状态的请求来确保系统始终处于安全状态。
以下哪个选项是正确的?
(A)陈述 I、II 是正确的,陈述 III 是错误的。
(B)陈述 I、III 是正确的,陈述 II 是错误的。
(C)陈述 II、III 是正确的,陈述 I 是错误的。
(D)所有 I、II 和 III 都是真的。答案:(乙)
说明:一、死锁所需的四个条件:
- 互斥:一个资源只能被一个线程占有。
- 持有并等待:一个线程可以在等待另一个资源时持有一个资源,例如一个锁。
- 不可抢占:资源不能从线程中被夺走。
- 循环等待:两个或多个线程形成一个循环链,其中每个线程等待链中下一个线程持有的资源。
二、否。如果存在多个等效资源,则可能存在不是死锁的循环。原因是一些不属于循环的线程可能会释放循环中线程所需的资源,从而打破循环。
三、死锁避免通过不授予可能将系统移动到不安全状态的请求来确保系统始终处于安全状态。如果所有进程都可以完成执行,则 A 被认为是安全的(即存在一个序列,这样每个进程都可以得到其所需的所有资源,运行到完成,并返回分配的资源,从而允许另一个进程执行相同的操作,等等直到所有过程完成)。死锁避免要求系统跟踪资源,以便了解已分配的、可用的和剩余的资源需求。
所以,选项(B)是正确的。
这个问题的测验