next up previous contents index
Next: 擬似ゴールの構造 Up: トレーサ Previous: 名前情報の管理

トレースの制御と情報入手

トレースを行うためには:

が必要である。 KLIC のトレーサでは、 以下のような方法を用いてトレースの タイミングをつかみ、 必要な情報を得ている。 全体として、 トレース不要部 分の実行効率が、 まったくトレースしない場合とほとんど変わりなくなるよう に留意している。

KLICでは、種々のポートでユーザが実行に介入できるように 主に以下のような処理を行っている。

トレースのきっかけ:
トレース対象となるゴールの実行直前に、「擬似的なゴール」を実行することにより トレースのきっかけとしている。これは、擬似的なゴール内に 本来のゴールを持つようなゴールを作成しておき、それを実行する。 この「擬似的ゴール」の解説については第[*]章 ([*]ページ)を参照のこと。 この擬似的にゴールがスケジュールされた際には必要な処理 (例えば、CALLポートでのユーザコマンドの受付)を行った後に、 本来のゴールをエンキューしなおすことにより実現されている。

[子ゴールの認識: ] リダクション処理が行われた結果生成された ゴールについては、以下のように処理されている。

リダクション直前(つまり、「トレースのきっかけ」の時)に、 ゴールスタックの先頭を記録しておく。

リダクションが終了した際に、再度ゴールスタックを検査する。 原則的には、このリダクション 前後のゴールスタックの差分が生成されたゴールである。

ただし、他の優先度のゴールスタックにゴールが置かれた場合、また、 再実行可能になった場合などがあるため、それらのゴールについては特別な配慮 が必要になる(詳細後述)。

このリダクションが終了した際に、子ゴールについてもトレースすることが 適当な場合には、前述の「擬似的なゴール」により、本来のゴールを 保持させるようにゴールを変更しておく。



 

Sekita Daigo
1998-05-18