- 论坛徽章:
- 2
|
回复 11# vupiggy
我又看了一下WIKI上关于resource starvation的解释,里面提到了deadlock,livelock,starvation间的联系,我觉得很有道理。
http://en.wikipedia.org/wiki/Resource_starvation
照这上面的说法,deadlock的特征:1 永远僵持;2 竞争者都无法改变自身状态; 3 所竞争的资源都在相互牵制的竞争者之间占有。其它类似情况都叫starvation。livelock正是不满足条件2,但是满足条件1和3。所以宽泛来说,livelock也是starvation,再宽泛一点,deadlock也是starvation。如果像你所说获取其它锁失败会释放自己的锁但时机不好而产生长时间两者反复获得释放锁却无法make process的情况,应该算是一般意义的starvation。总之,这些是几种客观存在的情况,至于怎么称呼,恐怕只有一般认识,没有什么权威说法。老谭的书上也并没有在概念上做这么细致的区别。
这么一说,我还真觉得书上最后一段是想说“有些人不区分死锁或活锁”。此时并未介绍starvation(正好是下一节的内容),比较livelock与deadlock似乎更合逻辑。
PS:我想搜搜《Modern Operating Systems》的勘误,看看有没有人提出这个问题。虽然没搜到,但是发现《Compute Networks》去年就出第五版了。已经一年多了,影印版还没有动静,可能培森真的不让再出影印版了。 |
|