考虑下面提出的临界截面问题的解决方案。有n个过程:P0…Pn−1.在代码中,函数pmax返回一个不小于其任何参数的整数。对于所有i,t[i]被初始化为零。
null
关于上述解决方案,以下哪项是正确的? (A) 在任何时候,最多有一个过程处于关键部分 (B) 满足有界等待条件 (C) 进度条件满足 (D) 它不会导致僵局 答复: (A) 说明:
Mutual exclusion is satisfied: All other processes j started before i must have value (i.e. t[j]) less than the value of process i (i.e. t[i]) as function pMax() return a integer not smaller than any of its arguments. So if anyone out of the processes j have positive value will be executing in its critical section as long as the condition t[j] > 0 && t[j] <= t[i] within while will persist. And when this j process comes out of its critical section, it sets t[j] = 0; and next process will be selected in for loop. So when i process reaches to its critical section none of the processes j which started earlier before process i is in its critical section. This ensure that only one process is executing its critical section at a time.
Deadlock and progress are not satisfied: while (t[j] != 0 && t[j] <=t[i]); because of this condition deadlock is possible when value of j process becomes equals to the value of process i (i.e t[j] == t[i]). because of the deadlock progress is also not possible (i.e. Progress == no deadlock) as no one process is able to make progress by stopping other process.
Bounded waiting is also not satisfied: In this case both deadlock and bounded waiting to be arising from the same reason as if t[j] == t[i] is possible then starvation is possible means infinite waiting.
德伦德拉·辛格对此做出了解释。 这个问题的小测验
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END