next up previous contents index
Next: 外部参照ポインタ Up: 荘園 Previous: 終了検出

中断検出

 

荘園内に、実行を中断しているゴールは存在するが、 実行可能なゴールはなく (少なくともひとつの里親プロセスは終了していない)、 メッセージも存在しない状態を中断状態と呼ぶ。 この荘園の中断状態を以下の処理によって検出する (図10.4参照)。

1.
荘園プロセスが%checkをすべての里親プロセスへ送信する。 %checkには重みは付けない。

2.
%checkを受信すると里親プロセスは 中断している(ゴール群の)重みを %suspendedで報告する (返却ではない。里親プロセス自身の重みはそのままである)。 中断している(中断しているゴールはあるが実行可能なゴールはない) ならば「中断している重み=自分の重み」を報告し、 「実行中」実行可能なゴールがある)、 あるいは「終了」している (中断しているゴールも実行可能なゴールもない) ならば「中断している重み=ゼロ」を報告する。

3.
%suspended を受信すると荘園プロセスは 報告された「中断している重み」を加算して行く。 すべての里親プロセスから%suspendedを受信した時、 加算してきた重みの合計と荘園の重みとの和がゼロになるならば 「荘園が中断している」ことが検出される。 合計がゼロにはならない場合や 途中で%terminatedを受信した場合は 「中断していない」ことがわかる。





\begin{picture}(65,22)(0,0)
\put(0,0){
\put( 0, 0){
\put( 0, 0){
\put(0,19){\...
...0){10}}
\put(34, 9){\makebox(0,0)[tr]{\footnotesize\tt <j,id>}}
}
\end{picture} (1) 変数への参照を輸出表に登録して送出する.







\begin{picture}(78,22)(0,0)
\put(0,0){
\put( 0, 0){
\put( 0, 0){
\put(0,19){\...
...}
\put(13,10){\vector(1,0){6}}
}
\put(25,10){\vector(1,0){28}}
}
\end{picture} (2) ジェネレータ外部参照オブジェクト の生成.







Sekita Daigo
1998-05-18