感谢楼上的哥们了,不过抱歉不能给分了,我自己找了一篇文献。
--------------------------------------------------------------------------
process tree :
root:S
level 1 :A B C
level 2: D E (belongs to A) F (belongs to B)
level 3: G H (belongs to F)
--------------------------------------------------------------------------
Let us say that process b wants to stop its child f. The purpose of doing this is to ensure that all program execution and input/output within the storage area of process f is stopped. Since a part of the storage area has been allocated to children of f, it is obviously necessary to stop not only the child
f but also all descendants of f. This is complicated by the fact that some of these descendants may already have been stopped by their own parents.
In the present example process g may still be running, while process h may have been stopped by its parent f. Consequently the monitor should only stop processes f and g.
Consider now the reverse situation, in which process b starts its child f again. Now the purpose is to reestablish the situation exactly as it was before process f was stopped. Thus the monitor must be very careful only to start those descendants of f that were stopped along with f. In our example the monitor must start processes f and g but not h. Otherwise we confuse f,which still relies on its child h being stopped.
Obviously,then,the monitor must distinguish between processes that are stopped by their parents and by their ancestors.