(2015.26)若系统S1采用死锁避免方法,S2采用死锁检测方法。下列叙述中正确的是:B.
I. S1会限制用户申请资源的顺序,而S2不会
II. S1需要进程运行所需要的资源总量信息,而S2不需要
III. S1不会给可能导致死锁的进程分配资源,而S2会
A.I、II
B.II、III
C. I、III
D. I、II、III
分析:这在书上其实说的很明确了,只是被忽略了。关于死锁的处理主要有三种类型:
- 死锁预防
- 死锁避免算法
- 死锁检测
而针对这三种类型,掌握三种对应的关键类型即可。
死锁预防典型的是顺序资源分配法,限制进程申请资源的顺序!后面的进程只能申请编号更大的资源。
死锁避免算法,典型的是银行家算法,不会限制申请资源的顺序,但是会限制分配资源的顺序,避免进入不安全状态!因此,需要知道全局性的资源需求矩阵以及资源总量。
死锁检测,是最宽松的,啥也不限制,只有当出现死锁且被检测到时才会去处理解除。因此,这种灵活性的算法在Unix上实现了。常用资源分配图结合死锁定理检测。
综上,II、III才是正确的。要明白限制用户申请资源的顺序是很大的限制,限制分配资源的顺序是稍微宽松些的限制,检测是不做限制。
还有,这里有个词:用户。似乎很困惑,其实指的是程序员,或者写代码需要控制进程申请资源的人。简单抽象到进程即可。