next up previous
Next: 疑似インターフェイス情報の実装 Up: 分散並列実行の実装 Previous: クライアント

トランザクションの実行

トランザクションは、以下のように処理される。

  1. トランザクションの内部(Ninf_check_in() の後)で、 Ninf_call が呼び出されると、クライアントはデータフローを作成する。 まず、メタサーバ にコネクトし、そのNinf_call のインターフェイス情報 を取得する。このインターフェイス情報に、各引数の入出力モードが含まれており、 このモード情報と、引数の共有状態から各Ninf_call間の依存関係を 導く。

  2. Ninf_check_out() によってトランザクションが終了すると、 データフローが完成する。この時点でクライアントは メタサーバ に対してデータフローを送る。

  3. MetaServer では、受けとったデータフローを用いて、トランザクションに 対応する疑似的なインターフェイス情報を作成しそれを送り返す。

  4. クライアントは、通常のNinf呼び出しとおなじ手順でその インターフェイス情報に対して実行をおこなう。すなわち、そのインターフェイス 情報にしたがって、引数のマーシャリングをおこない、送信する。 また同様にして、結果の受信をおこなう。

  5. MetaServer はデータフローにしたがって、複数の関数を順次ディスパッチ する。すべての関数の実行が終了すると、書き戻すべき情報をクライアントに送信して 終了する。

疑似的なインターフェイス情報は、通常のNinf 呼びだしで用いている インターフェイス情報と同じ形式を用いている。 このため、クライアントから見ると、 疑似インターフェイス情報を受けとった以降の動作は、 通常のNinf 呼び出しと何ら変わらない。 このようにすることで、クライアントの構造を単純にすることができた。



Hidemoto Nakada
Tue Feb 20 18:17:47 JST 1996