(57)【特許請求の範囲】
【請求項１】
ユーザプログラムからのサービス検索要求により要求条件に合致するサービス提供者の位置を検索するトレーディングサービスが、複数の独立したトレーダにより実現されている分散処理システムであって、
前記分散処理システムは、
任意のユーザプログラムから参照可能なメモリ領域に設けられ、サービス型毎に異なる参照アドレスにトレーダ位置を格納したトレーダ位置対応表と、
ユーザプログラムのロードモジュールとを備え、
前記ユーザプログラムのロードモジュールは、前記ユーザプログラムからのサービス型を明記したサービス検索要求時にサブルーチンコールされると、前記トレーダ位置対応表のアクセス権を取得するステップと、前記サービス型に対応するアドレスで前記トレーダ位置対応表を検索してトレーダ位置を求めるステップと、前記求められたトレーダに対してユーザプログラムから指定されたサービス提供者の位置の検索を要求するステップと、その結果であるサービス提供者の位置をユーザプログラムに返すステップとからなる一連の処理を実行させるオブジェクトコードであるトレーダ擬似ルーチンを有し、
前記トレーダ擬似ルーチンは、ユーザソースプログラムからロードモジュールを生成するコンパイラが、前記ユーザソースプログラムにおいて明示的にサービス型を指定したトレーダへのサービス検索要求を検出した場合に、サービス型毎に設けられた複数のトレーダ擬似ルーチンの中から、前記コンパイラにより前記指定されたサービス型に対応するものとして選択され、前記コンパイラにより前記ユーザソースプログラムのオブジェクトコードと結合されたものであり、
前記トレーダ位置対応表は、サービス型を格納しているトレーダが、前記コンパイラによるロードモジュール作成後に変更された場合には、トレーダ位置のみが変更される
ことを特徴とする分散処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、分散処理システムにおいて、特定の条件に合致するサービス提供者の位置を検索するサービス検索方法に関し、特に動的にサービス型を管理するトレーダを生成あるいは変更することができ、かつトレーダの位置検索によるユーザプログラムの処理時間オーバーヘッドを削減することが可能な分散処理システムのサービス検索方法に関する。
【０００２】
【従来の技術】
従来より、分散処理システムにおいて、サービスの利用者が特定のサービスを受けるためには、そのサービスの位置を検索する必要がある。そのために、サービスの利用者が種々の条件を設定して、それらの条件に合致したサービスの位置を多くのサービスの中から検索しなければならなかった。このような検索を行う手段を提供する機能をトレーディング機能と呼び、トレーディング機能を提供するサーバをトレーダと呼ぶ。トレーダに格納されているサービスは、検索の効率化等の理由からサービスの型や位置的な局所性等、格納しているサービスの属性からグループ化される。このグループをトレーディングコンテキストと呼ぶ。
このトレーディングコンテキスト毎に独立したトレーダを作成する方式を採用すれば、１トレーダに格納する情報量を少なくすることができるとともに、トレーダ自体の内部にコンテキスト構造を定義する必要がなく、トレーダ内部の構造を簡易化することができるという利点があった。
しかし、従来では、このような方式を採用した場合、所望のサービスを検索する前にそのサービスが属するトレーディングコンテキストを格納しているトレーダの位置を検索する処理が必要となっていた。
【０００３】
【発明が解決しようとする課題】
このように、分散処理システムにおいて、利用者がサービスを利用する際には、プログラム作成時に既に必要なサービス型が特定されている場合があるので、そのような場合にはサービス型とトレーダとを対応させることによってプログラム作成時点でトレーダを特定することが可能であり、トレーダの位置検索によるオーバーヘッドを削減することができる。
しかしながら、プログラム作成後にトレーダのデータ分割等によりトレーディングコンテキストが変更された場合には、プログラム自体を変更する必要があった。このように、プログラム自体を変更することは、サービス利用者にとって多くの作業を強制させられることになる。このため、これまでは、プログラム作成時点でトレーダが特定可能であっても、従来通り、オーバーヘッドとなるトレーダの位置検索処理を行わざるを得なかった。
そこで本発明の目的は、このような従来の課題を解決し、プログラム作成後にトレーディングコンテキストが変更された場合に、トレーディングコンテキストの変更をユーザプログラムが知らなくても、簡単にトレーダの位置を取得することができ、トレーダの位置検索による処理時間オーバーヘッドを削減することが可能な分散処理システムのサービス検索方法を提供することにある。
【０００４】
【課題を解決するための手段】
上記目的を達成するため、本発明による分散処理システムでは、サービス型と、該当するサービス型を管理しているトレーダ位置との対応関係の間に中間情報を定義し、ユーザプログラムがソースレベルでサービス型を明示してサービス検索要求を行った場合には、コンパイラによるコンパイル時に該当サービス型を管理しているトレーダへのアクセスを中間情報に対するアクセスに変換した形態で、ユーザプログラムのロードモジュールを作成する。そして、中間情報とトレーダ位置との対応表を、各ユーザ共通の領域に保存して、ユーザプログラムのロードモジュール実行に伴う検索要求発生時に、該当する対応関係を参照して中間情報からトレーダ位置情報の取得を高速に行う。また、該当するサービス型を格納しているトレーダが変更された場合には、前述の中間情報とトレーダ位置対応表のトレーダ位置の部分のみを変更することにより、ユーザプログラムのロードモジュールを変更することなく、新しいトレーダを利用することができるようにしている。これにより、ユーザプログラムがサービス型を明示してトレーダに検索要求を行う場合、トレーダの検索処理に相当する処理をコンパイル時に解決することができるので、検索実行時のトレーダの検索処理時間を削減することができる。
【０００５】
【発明の実施の形態】
以下、本発明の実施例を、図面により詳細に説明する。
図１は、本発明の一実施例を示すロードモジュール作成手順を示す説明図である。
図１において、１はユーザソースプログラム、２はコンパイラ、３は各サービス型毎のトレーダ擬似ルーチン、４はユーザプログラムのオブジェクトコード、５はユーザプログラムのロードモジュールである。
コンパイラ２は、ユーザソースプログラム１において明示的にサービス型を指定したトレーダ検索要求を検出した場合、該当するサービス型に対応するトレーダ擬似ルーチン３を結合する。トレーダ擬似ルーチン３とは、該当するサービス型に対応する中間情報をロードしてトレーダの位置を取得し、該当トレーダに対してサービス検索要求を行うルーチンである。
このように、本実施例においては、コンパイラ２によるコンパイル時に、該当するサービス型を管理しているトレーダへのアクセスを、中間情報（ここでは共有空間のアドレス）へのアクセスに変換した形でユーザプログラムのロードモジュール５を作成する。つまり、中間情報をロードしてトレーダの位置を取得したトレーダ擬似ルーチン３をユーザプログラム４に結合することにより、ロードモジュール５を作成している。
【０００６】
図２は、本発明における実行時の構成要素と処理の流れを説明する図である。図２では、ユーザプログラムの実行中にトレーダ検索要求が発生した場合の動作が示されている。ここでは、複数のユーザプログラムのロードモジュールがそれぞれの個別空間上に配置され、中間情報とトレーダ位置対応表を共有空間上で共有して、中間情報を共有空間のアドレス９としている。
図２において、３〜５は図１と同一のものを表わしている。６はトレーダ位置対応表、７はトレーダ位置対応表６に対する排他的アクセス権を管理する１ビットのセマフォア、８はトレーディングサービス全体、８１はユーザプログラムのオブジェクトコード４が必要としている型のサービスの位置を格納しているトレーダＸ、８２はトレーダＸ（８１）以外のトレーダ、８３はトレーダ管理部、９はユーザプログラムのオブジェクトコード４が必要としているサービス型に対する中間情報として使用される共有空間内アドレス、１０はユーザプログラムのロードモジュール５に割付けられている個別空間、１１は他のユーザプログラムのロードモジュール５に割付けられた個別空間、１２はトレーダを利用する全てのユーザプログラムによって共有される共有空間である。
図２における共有空間１２に存在するトレーダ位置対応表６は、中間情報とトレーダ位置の対応関係を格納している。同じく共有空間１２に存在するセマフォア７は、トレーダ位置対応表６のエントリ書き換え処理中に、ユーザプログラムからのリードを禁止する機能を持つ。トレーディングサービス全体８は、各サービス型毎に独立した多くのトレーダ８１，８２を含んでいる。
【０００７】
本実施例では、実行時にトレーダに対する検索要求が発生した場合、次のような動作を行う。
（ａ）ユーザプログラム４からサービス型を明記したサービス検索要求が発生された時点では、該当サービス型に対応するトレーダ擬似ルーチン３へのサブルーチンコールが発生する。
（ｂ）トレーダ擬似ルーチン３は、トレーダ位置対応表６へのアクセス権を取得するために、セマフォア７を取得する。
（ｃ）トレーダ擬似ルーチン３は、該当サービス型に対応するトレーダ位置対応表６中のアドレス９のデータをリードし、トレーダＸ（８１）の位置を取得する。
（ｄ）トレーダ擬似ルーチン３は、セマフォア７を解放する。
（ｅ）トレーダ擬似ルーチン３は、トレーダＸ（８１）に直接サービス検索要求を行い、レスポンス、つまり検索されたサービスの位置を得る。
（ｆ）トレーダ擬似ルーチン３は、取得したレスポンス、つまり検索されたサービスの位置を戻り値に設定して、ユーザプログラム４にリターンする。
【０００８】
図３は、本発明において、トレーダがサポートしているサービス型を変更する手順を説明したシーケンスチャートである。
図３において、８３はトレーダ管理部、８１は現在のトレーダ（サポートしているサービス型はＡ，Ｂ型）、８４は新たに生成されたトレーダ（サポートしているサービス型はＢ型のみ）、６はトレーダ位置対応表、７はセマフォアである。
ここでは、トレーダＸ（８１）がサービス型Ａとサービス型Ｂを提供している場合に、新たにサービス型Ｂを提供するトレーダＹ（８４）を生成し、トレーダＸ（８１）はサービス型Ａのみを提供するように構成を変更する場合の例を説明する。なお、トレーダ管理部８３は、トレーダを生成する機能を有する。
トレーダＸ（８１）およびトレーダＹ（８４）は、トレーダ管理部８３からの要求によって、サービスの中止あるいは開始を行う。また、トレーダ管理部８３からの要求により、任意のデータを他のトレーダに転送する機能を有する。
【０００９】
図４は、図３のシーケンスチャートにおいて書き換えられるトレーダ位置対応表の内容を示す図である。
図４において、アドレス１はサービス型Ａに対応する中間情報、アドレス２はサービス型Ｂに対応する中間情報である。すなわち、初期状態のトレーダＸ（８１）はサービス型Ａとサービス型Ｂの両方を提供しているので、アドレス１，２にはともにトレーダＸ（８１）の位置が格納されている。
次に書換後では、トレーダＸ（８１）はＡ型のみを提供し、新設されたトレーダＹ（８４）がＢ型のみを提供しているので、アドレス１にはトレーダＸ（８１）が格納され、アドレス２にはトレーダＹ（８４）が格納されている。
【００１０】
図４を参照して、図３のシーケンス動作を説明する。
（Ａ）初期状態のトレーダ位置対応表６のエントリは、図４上図の通りになっている。
（Ｂ）トレーダ管理部８３は、現在トレーダＸ（８１）で管理されているサービス型ＢをトレーダＹ（８４）で管理するように変更することを、トレーダ位置対応表６に通知する（トレーダＸ分割通知）。
（Ｃ）トレーダ位置対応表６は、セマフォア７を取得する（取得）。
（Ｄ）トレーダ位置対応表６は、エントリの内容を図４上図から図４下図のように書き換えた後、完了通知をトレーダ管理部８３に行う（書換終了通知）。
（Ｅ）トレーダ管理部８３は、サービスの中止をトレーダＸ（８１）に要求し（サービス中止要求）、サービス中止を確認した後に、トレーダＸ（８１）のサービスが中止されたことをトレーダ位置対応表６に通知し（サービス中止通知）、トレーダ位置対応表６はこの通知を受領した後、セマフォア７を解放する（解放）。
（Ｆ）トレーダ管理部８３は、新たにトレーダＹ（８４）を生成し（トレーダＹ生成）、サーバス型Ｂに関する情報をトレーダＸ（８１）からトレーダＹ（８４）に転送する（データ分割処理）。
（Ｇ）トレーダ管理部８３は、トレーダＸ（８１）、トレーダＹ（８４）に対してサービス開始を要求する（サービス開始要求）。
【００１１】
このように、本実施例においては、ユーザプログラムが利用しようとしているトレーダ検索処理をコンパイル時点で解決しているので、実行時にはメモリリードによりトレーダの位置を取得することが可能となる。従って、動的にサービス型を管理するトレーダを生成したり、トレーダの管理するサービス型を変更することが可能になる。その結果、プログラム作成後にトレーダの分割等によりトレーディングコンテキストが変更された場合でも、プログラム自体を変更することなく直ちにトレーダの位置をリードすることが可能である。
【００１２】
【発明の効果】
以上説明したように、本発明によれば、ユーザプログラムとしては実行時にオーバーヘッドとなるトレーダ検索処理を削減することができるとともに、トレーダ管理部としては動的にサービス型を管理するトレーダを生成したり、変更することが可能になる。
【図面の簡単な説明】
【図１】本発明の一実施例を示すロードモジュール作成手順の概略説明図である。
【図２】本発明における実行時の構成要素と、処理の流れを示す機能ブロック図である。
【図３】本発明において、トレーダがサポートしているサービス型を変更する場合の手順を示すシーケンスチャートである。
【図４】図３におけるシーケンスチャートで、書き換えられるトレーダ位置対応表の内容を示す図である。
【符号の説明】
１…ユーザソースプログラム、２…コンパイラ、
３…各サービス型毎のトレーダ擬似ルーチン、
４…ユーザプログラムのオブジェクトコード、
５…ユーザプログラムのロードモジュール、６…トレーダ位置対応表、
７…セマフオア、８…トレーディングサービス全体、８１…トレーダＸ、
８２…トレーダＸ以外のトレーダ、８３…トレーダ管理部、
９…共有空間内アドレス、１０…ロードモジュールに割付けられた個別空間、
１１…他のユーザプログラムに割付けられた個別空間、１２…共有空間。
【図１】
0003693311.tif 000002
【図２】
0003693311.tif 000003
【図３】
0003693311.tif 000004
【図４】
0003693311.tif 000005