JP4668367B2 - Computer, parallel distributed system, and function call method - Google Patents
Computer, parallel distributed system, and function call method Download PDFInfo
- Publication number
- JP4668367B2 JP4668367B2 JP21830498A JP21830498A JP4668367B2 JP 4668367 B2 JP4668367 B2 JP 4668367B2 JP 21830498 A JP21830498 A JP 21830498A JP 21830498 A JP21830498 A JP 21830498A JP 4668367 B2 JP4668367 B2 JP 4668367B2
- Authority
- JP
- Japan
- Prior art keywords
- message
- module
- function call
- function
- application program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Multi Processors (AREA)
Description
【0001】
【発明が属する技術分野】
本発明は、例えば、ネットワークを介して接続されたコンピュータ上で動作するプロセス相互間で機能呼び出しを行うコンピュータ、並列分散システムおよび機能呼び出し方法に関する。
【0002】
【従来の技術】
種々の計算リソースを、電話回線、ケーブルテレビ、衛星通信などのネットワークを介して複数のコンピュータを接続したネットワークシステムが急速に普及している。そのようなネットワークシステムとして、複数のオブジェクトをネットワークワイドにコンピュータ上に配置し、それらを連携させて所望の処理を行う並列分散システムがある。
従来、このような並列分散システムを実現するために、多数の分散処理言語が提案されている。また、JavaRMI(Remote Method Invocation)やHORBなど、特定の言語に限定された分散システム構築機能が試みられている。
しかしながら、プログラミングに関する柔軟なアプローチが要求される分散マルチメディアシステムなどでは、多様なプログラム言語で記述され、しかも、多様なOS(Operating System)上で動作するプロセスが管理する並行オブジェクト相互間でのメッセージ通信を実現したいという要請がある。ここで、並行オブジェクトには、分散オブジェクト、分散手続き(関数)および大域共有変数などがある。
【0003】
ところで、従来の並列分散システムにおける並行オブジェクト相互間のメッセージ通信機構は、例えば、OSと、プログラム言語に依存した分散プラットフォームライブラリと、当該プログラム言語で記述された単数または複数の並行オブジェクトから構成されたユーザアプリケーションプログラムとを用いて実現されている。
ここで、分散プラットフォームライブラリは、並行オブジェクト相互間でのメッセージ通信に必要な処理を行う種々のモジュールを備え、一部のモジュールでは、スレッドの制御を伴う処理を行っている。スレッドは、機能呼び出しのためのメッセージ通信に関する処理の流れを意味し、プログラム言語の種類によって、分散プラットフォームライブラリ(プログラム言語処理系)によって生成される場合と、OSによって生成される場合とがある。
【0004】
図7は、従来の並列分散システムにおけるメッセージ通信機構を説明するための図である。
なお、図7に示す分散プラットフォームライブラリ112および116には、説明の簡単化のため、メッセージ受信に関係するモジュールのみ示されている。
図7(A)に示すように、ユーザアプリケーションプログラム110がプログラム言語「Java」で記述されている場合には、分散プラットフォームライブラリ112も「Java」で記述される。また、図7(B)に示すように、ユーザアプリケーションプログラム114がプログラム言語「C++」で記述されている場合には、分散プラットフォームライブラリ116も「C++」で記述される。
すなわち、プログラム言語毎に、分散プラットフォームライブラリを用意している。
【0005】
このように、プログラム言語毎に分散プラットフォームライブラリを用意するのは以下の理由による。
前述したように、分散プラットフォームライブラリ112および116では、スレッドの制御を行っており、プログラム言語「Java」では、OS以下のプラットフォームに依存しないでプログラムが記述できるように分散プラットフォームライブラリ112で生成されたJava(疑似)スレッド130が用いられ、プログラム言語「C++」では、分散プラットフォームライブラリ116からのスレッド生成要求132に応じてOS118が生成したネイティブスレッド134が用いられる。
【0006】
ここで、スレッドの実現方法は各プログラム言語毎に異なるため、一のプログラム言語のスレッドを、他のプログラム言語の分散プラットフォームライブラリにおけるスレッド制御の対象とすることはできない。
従って、分散プラットフォームライブラリ112において、プログラム言語「C++」に応じてOS118が提供したネイティブスレッドを用いることはできず、分散プラットフォームライブラリ116において、分散プラットフォームライブラリ112が生成したJavaスレッドを用いることはできない。
その結果、ユーザアプリケーションプログラム110および114は、それぞれ独自の分散プラットフォームライブラリ112および116を用いている。
【0007】
【発明が解決しようとする課題】
しかしながら、前述した従来の並列分散システムのように、各プログラム言語毎に独自の分散プラットフォームライブラリを用いなければならないと、大規模な分散プラットフォームライブラリを各々のプログラム言語毎に開発する必要があり、開発およびデバッグ作業の負担が大きいという問題がある。
【0008】
本発明は上述した従来技術の問題点に鑑みてなされ、プログラム言語毎に開発する分散プラットフォームライブラリの開発およびデバッグ作業の負担を軽減できるコンピュータ、並列分散システムおよび機能呼び出し方法を提供することを目的とする。
【0009】
上述した従来技術の問題点を解決し、上述した目的を達成するために、本発明のコンピュータは、ネットワークを介して接続された他のコンピュータ上で動作するプロセスあるいは同一のコンピュータ上で動作するプロセスから、機能呼び出しのメッセージを受けるプロセスを所定のオペレーティングシステム上で動作させるコンピュータであって、前記機能呼び出しを受けるプロセスは、前記機能呼び出しの対象となる機能を提供するアプリケーションプログラムと、前記機能呼び出しのメッセージを受けたときに、当該メッセージに応じた機能呼び出し処理のうち、前記アプリケーションプログラムを記述したプログラム言語の種類に依存しない処理を行うプログラム言語非依存部と、前記メッセージに応じた機能呼び出し処理のうち、前記プログラム言語の種類に依存する処理を行うプログラム言語依存部と、によって実行され、前記機能呼び出しのメッセージにおいて、任意のデータ構造体が、前記アプリケーションプログラムで使用されるデータの表現形式の引数として扱われ、当該引数は、当該メッセージにおいて、前記アプリケーションプログラムで使用されるデータの表現形式から、ネットワーク間で通信に使用されるデータの表現形式に変換され、前記プログラム言語非依存部は、ネットワークを介して接続された他のコンピュータ上で動作するプロセスあるいは同一のコンピュータ上で動作するプロセスの機能を呼び出すためのメッセージ送信と、前記受けたメッセージによって呼び出しを行う機能を特定する参照情報を、前記機能呼び出しを行うプロセス外でユニークな外部参照情報から、当該プロセス内でユニークな内部参照情報に変換する参照解決と、前記メッセージの実行タイミングを決定するメッセージ評価スケジューリングと、を行い、前記プログラム言語依存部は、前記プログラム言語非依存部によって実行タイミングが決定されたメッセージに応じた機能呼び出しに対応する前記アプリケーションプログラムの機能を起動して当該機能呼び出し処理を行うとともに、前記メッセージの受け付け用の新たな前記メッセージに応じた機能呼び出し処理を起動して当該機能呼び出し処理に基づくメッセージ受け付け処理を並行して行う。
【0010】
本発明の並列分散システムは、ネットワークを介して接続された複数のコンピュータのオペレーティングシステム上で動作するプロセス相互間で機能呼び出しを行いながら処理を実行する並列分散システムにおいて、前記コンピュータの前記機能呼び出しを受けるプロセスは、前記機能呼び出しの対象となる機能を提供するアプリケーションプログラムと、前記機能呼び出しのメッセージを受けたときに、当該メッセージに応じた機能呼び出し処理のうち、前記アプリケーションプログラムを記述したプログラム言語の種類に依存しない処理を行うプログラム言語非依存部と、前記メッセージに応じた機能呼び出し処理のうち、前記プログラム言語の種類に依存する処理を行うプログラム言語依存部と、によって実行され、前記機能呼び出しのメッセージにおいて、任意のデータ構造体が、前記アプリケーションプログラムで使用されるデータの表現形式の引数として扱われ、当該引数は、当該メッセージにおいて、前記アプリケーションプログラムで使用されるデータの表現形式から、ネットワーク間で通信に使用されるデータの表現形式に変換され、前記プログラム言語非依存部は、ネットワークを介して接続された他のコンピュータ上で動作するプロセスあるいは同一のコンピュータ上で動作するプロセスの機能を呼び出すためのメッセージ送信と、前記受けたメッセージによって呼び出しを行う機能を特定する参照情報を、前記機能呼び出しを行うプロセス外でユニークな外部参照情報から、当該プロセス内でユニークな内部参照情報に変換する参照解決と、前記メッセージの実行タイミングを決定するメッセージ評価スケジューリングと、を行い、前記プログラム言語依存部は、前記プログラム言語非依存部によって実行タイミングが決定されたメッセージに応じた機能呼び出しに対応する前記アプリケーションプログラムの機能を起動して当該機能呼び出し処理を行うとともに、前記メッセージの受け付け用の新たな前記メッセージに応じた機能呼び出し処理を起動して当該機能呼び出し処理に基づくメッセージ受け付け処理を並行して行う。
【0011】
本発明の機能呼び出し方法は、プロセス相互間で機能呼び出しを行う機能呼び出し方法において、前記機能呼び出しを受けるプロセスは、前記機能呼び出しのメッセージを受けたときに、当該メッセージに応じた機能呼び出し処理のうち、アプリケーションプログラムを記述するプログラム言語の種類に依存しない処理をプログラム言語非依存部で行い、前記メッセージに応じた機能呼び出し処理のうち、前記プログラム言語の種類に依存する処理をプログラム言語依存部で行い、前記機能呼び出しのメッセージにおいて、任意のデータ構造体が、前記アプリケーションプログラムで使用されるデータの表現形式の引数として扱われ、当該引数は、当該メッセージにおいて、前記アプリケーションプログラムで使用されるデータの表現形式から、ネットワーク間で通信に使用されるデータの表現形式に変換され、前記プログラム言語非依存部は、ネットワークを介して接続された他のコンピュータ上で動作するプロセスあるいは同一のコンピュータ上で動作するプロセスの機能を呼び出すためのメッセージ送信処理と、前記受けたメッセージによって呼び出しを行う機能を特定する参照情報を、前記機能呼び出しを行うプロセス外でユニークな外部参照情報から、当該プロセス内でユニークな内部参照情報に変換する参照解決処理と、前記メッセージの実行タイミングを決定するメッセージ評価スケジューリング処理と、を行い、前記プログラム言語依存部は、前記プログラム言語非依存部によって実行タイミングが決定されたメッセージに応じた機能呼び出しに対応する前記アプリケーションプログラムの機能を起動して当該機能呼び出し処理を行うとともに、前記メッセージの受け付け用の新たな前記メッセージに応じた機能呼び出し処理を起動して当該機能呼び出し処理に基づくメッセージ受け付け処理を並行して行う。
【0022】
【発明の実施の形態】
以下、本発明の実施形態に係わる並列分散システムについて説明する。
本実施の形態においては、複数のコンピュータがネットワークを介して接続された並列分散システムであって、各コンピュータがネットワークを介して通信を行いながら協働して所望の計算処理を行うような、分散処理環境を提供する並列分散システムを例示して本発明を説明する。
【0023】
図1は、本実施形態の並列分散システムの全体構成を模式的に示す図である。
本実施の形態の並列分散システムは、インターネットや、CATV網、衛星通信など多様な通信メディアが混在して構成されるネットワーク環境において、ネットワーク上の分散リソースを論理的に一体の計算環境として捉え、分散処理環境を提供するものである。
ここで、分散リソースとは、各ノードのハードウェア機能に加えて、データベースや高性能計算サーバ、WWWページの情報ソースなど、任意の計算機能を提供するものである。また、その計算とは、広い範囲の種々の処理の実行を含むものとする。
【0024】
このような分散処理環境上に、計算実体である並行オブジェクトが配置され、計算空間を形成する。なお、計算空間は、同一のネットワーク環境上に複数のものをそれぞれ個別に形成することができる。
この並行オブジェクトは、具体的には、リモート呼出可能な分散オブジェクト、分散関数、あるいは、ネットワークを介して参照可能な共有変数(大域共有変数)である。そして、これらにより、分散オブジェクト指向計算、分散関数(手続き)呼び出しおよび大域共有変数処理という各計算が、並行的に行われる。
【0025】
このような計算を行うための、並行オブジェクトのメソッドおよび分散関数の呼び出しや、大域共有変数へのアクセスという並行オブジェクト間の通信は、▲1▼非同期メッセージ送信(返値なしの一方向の通信)、▲2▼遅延評価型同期呼び出し(返値にアクセスしたときブロックする)、▲3▼完全同期呼び出し(返値到着まで呼出側がブロックする)という3種類の方法により行う。なお、これらの通信を総称してメッセージ通信と呼ぶ。
すなわち、このような並列分散システムは、ネットワーク上に分散配置された並行オブジェクトが、メッセージ通信によって並行計算を各々順次実行し、メッセージの連鎖によって全体として所望の計算を進行させるシステムと言うことができる。
【0026】
計算空間に配置される各並行オブジェクトは、図2に示すように、コンピュータにプロセスを生成して管理する。
プロセスは、並行オブジェクト間のメッセージ送受信の機構などを提供する、並行オブジェクトのための計算環境である。そのため、アプリケーション言語インタフェース(API) と、OSやハードウェアに対するシステムインターフェースを備え、プログラミング言語やOS、ハードウェア、ネットワークといった実行環境の違いに適応して稼働できるようになっている。また、メッセージは、異なる言語間でも送信可能であり、任意のデータ構造体を引数として扱えるようになっている。
その結果、このようなプロセスの集合として得られる実行環境は、大域空間上で共通の仮想的計算環境として機能する。
【0027】
以下、このようなプロセス相互間での通信を実現するために各プロセスに備えられたメッセージ通信機構について説明する。
当該メッセージ通信機構は、ネットワークを介して接続されている各コンピュータ上で動作するプロセス内で実現される。
【0028】
ユーザアプリケーションプログラムが「Java」の場合
図3は、プログラム言語「Java」で記述されたユーザアプリケーションプログラム110を用いた場合における、プロセスが提供するメッセージ通信機構の受信機能を説明するための図である。
この場合には、図3に示すように、メッセージ通信機構の受信機能は、OS117と、言語非依存部共通ライブラリ10と、言語依存部ライブラリ20と、ユーザアプリケーションプログラム110とによって実現される。
なお、言語非依存部共通ライブラリ10と言語依存部ライブラリ20との間のインタフェースとしては、言語依存部ライブラリ20が提供する外部機能インターフェースである、例えば、JDK1.1の「Java Native Interface」が使用される。
先ず、各構成要素について詳細に説明する。
【0029】
〔OS117〕
OS117としては、例えば、Unix(商標名)およびMS−DOS(商標名)などが用いられる。
【0030】
〔言語非依存部共通ライブラリ10〕
言語非依存部共通ライブラリ10は、メッセージ通信機能のうち、プログラム言語に依存しない基本機能を共通機能としてまとめたものであり、システム独立な機能レイヤとして位置づけられる。
具体的には、言語非依存部共通ライブラリ10の受信機能は、参照解決(Reference Resolver)モジュール11、メッセージディストリビュータ(Message Distributer) モジュール12、CPPプリインボーク(Preinvoke) モジュール13、メッセージ評価スケジューラ(Message Evaluation Scheduler)モジュール14、CPPポストインボーク(Postinvoke)モジュール15、CMI(Communication Media Interface) モジュール16およびセンディングラウンチャー(Sending Launcher)モジュール17によって実現される。各モジュールは、例えば、コンピュータのCPU(Central Processing Unit) において、プログラム言語「C++」で記述されたプログラムを実行することで生成されてもよいし、ハードウェアによって実現してもよい。
【0031】
言語非依存部共通ライブラリ10は、プログラム言語「C++」で記述されたプログラムを実行することで生成される場合には、プログラム言語「Java」などからも利用するために、実行時にリンクが行われるDLL(Dynamic Link Library)として実現される。これにより、分散プラットフォームのバージョンアップやバグフィックスを行った場合にも、ユーザアプリケーションプログラムを再構築する必要がなくなる。
【0032】
参照解決モジュール11は、ユーザープロシジャー120を構成する並行オブジェクトおよび分散オブジェクトメソッドへの大域参照を管理する。メッセージ送信の際には、メッセージを送信する宛て先の並行オブジェクトが存在するコンピュータと、プロセス識別子と、メッセージ伝送のための通信プロトコルとを決定する。メッセージ受信の場合には、メッセージに含まれる並行オブジェクトおよびプロセスの識別子505 を入力し、当該識別子505 を、ネットワーク上でユニークな外部参照情報から、プロセス内でユニークな内部参照情報に変換し、当該変換により得られた識別子506 をメッセージディストリビュータモジュール12に出力する。
【0033】
メッセージディストリビュータモジュール12は、言語依存部ライブラリ20のレシーバーモジュール22から呼び出し要求501 を受けると、CMIモジュール16の呼び出し要求502 を発生して、CMIモジュール16を呼び出す。
また、メッセージディストリビュータモジュール12は、CMIモジュール16から、構造体FD(Function Descriptor: 機能記述子) 504 を入力すると、当該構造体FD504 に含まれる並行オブジェクトおよびプロセスの識別子505 を参照解決モジュール11に出力し、参照解決モジュール11から得た識別子506 に基づいて、当該メッセージ504 が自プロセス宛のものか否かを判断する。そして、メッセージ504 が自プロセス宛のものである場合には、メッセージディストリビュータモジュール12は、構造体FD504 を構造体FD507 としてレシーバーモジュール22に出力する。
【0034】
CMIモジュール16は、メッセージディストリビュータモジュール12による呼び出し要求502によって呼び出され、呼び出された後に待機状態となる。そして、CMIモジュール16は、外部のプロセスから、メッセージを受信すると、動作状態となり、受信したメッセージを格納した構造体FD504をメッセージディストリビュータモジュール12に出力する。また、CMIモジュール16は、センディングラウンチャーモジュール17から入力した返戻値5024を含むメッセージ5025を、メッセージ503の送信元に出力する。CMIモジュール16は、ネットワークを介して接続された他のコンピュータ上で動作するプロセスとの間で通信を行う場合に用いられる。CMIモジュール16は、通信プロトコル毎に独立したモジュールとして構成され、通信プロトコルとしては、例えば、イーサーネットあるいはISDNなどが用いられる。なお、同一コンピュータ上で動作する他のプロセスと通信を行う場合には、CMIモジュール16を使用せずに、OS117が提供するプロセス通信機能を使用する。
【0035】
CPPプリインボークモジュール13は、言語依存部ライブラリ20のプリインボークモジュール23からの呼び出し要求5011を受けると、メッセージ評価スケジューラモジュール14の呼び出し要求5012を発生し、呼び出し要求5011に引数として含まれる構造体FD5012をメッセージ評価スケジューラモジュール14に出力する。
また、CPPプリインボークモジュール13は、メッセージ評価スケジューラモジュール14から、単数または複数の構造体FD5013を入力すると、当該入力した構造体FD5013を構造体FD5014として言語依存部ライブラリ20のプリインボークモジュール23に出力する。
【0036】
メッセージ評価スケジューラモジュール14は、CPPプリインボークモジュール13から入力した構造体FD12に格納されたメッセージに付加されている優先度に基づいて、内蔵するキュー内に、構造体FD12を登録する。そして、キューの先頭に存在する構造体FD、すなわち優先度の最も高い構造体FDから順に取り出して、構造体FD5013としてCPPプリインボークモジュール13に出力する。
【0037】
CPPポストインボークモジュール15は、言語依存部ライブラリ20のポストインボーク25から呼び出し要求5022を受けると、当該呼び出し要求5022に含まれる構造体FD5023と、プロシジャーコーラーモジュール21の返戻値5023とをセンディングラウンチャーモジュール17に出力する。
【0038】
センディングラウンチャーモジュール17は、CPPポストインボークモジュール15から入力した構造体FD5023に含まれる、メッセージ503 の送信元情報を取り出し、当該送信元に対して返戻値5023を送信するために、呼び出し要求5024を発生してCMIモジュール16を呼び出す。
【0039】
〔言語依存部ライブラリ20〕
言語依存部ライブラリ20は、ユーザアプリケーションプログラム110と同様に、プログラム言語「Java」で記述されており、スレッド生成およびスレッド制御を含む種々の処理を行うモジュールを備えている。
【0040】
図3に示すように、言語依存部ライブラリ20の受信機能は、プロシジャーコーラー(Procedure Caller)モジュール21、レシーバー(Receiver)モジュール22、プリインボーク(Preinvoke) モジュール23、インボーカ(Invoker) モジュール24、ポストインボーク(Postinvoke)モジュール25およびスレッド生成モジュール26によって実現される。各モジュールは、例えば、コンピュータのCPUにおいて、プログラム言語「Java」で記述されたプログラムを実行することで生成されてもよいし、ハードウェアによって実現してもよい。
【0041】
レシーバーモジュール22は、構造体FD507 をメッセージディストリビュータモジュール12から入力すると、スレッド生成要求508 をスレッド生成モジュール26に出力する。これにより、新たなレシーバーモジュール22が生成され、当該新たなレシーバーモジュール22は、呼び出し要求501 を再びメッセージディストリビュータモジュール12に出力する。それと並行して、構造体FD507 を入力したレシーバーモジュール22は、引数として構造体507 を含む呼び出し要求5010をプリインボークモジュール23に出力する。
【0042】
スレッド生成モジュール26は、レシーバーモジュール22からスレッド生成要求508 を入力すると、新たなレシーバーモジュール22を生成する。
また、スレッド生成モジュール26は、プリインボークモジュール23から、スレッド生成要求5030を入力すると、スレッド生成要求5030で指定された数のインボーカモジュール24を生成する。
【0043】
プリインボークモジュール23は、レシーバーモジュール22から呼び出し要求5010を入力すると、言語非依存部共通ライブラリ10のCPPプリインボークモジュール13の呼び出し要求5011を発生し、引数として構造体507 をCPPプリインボークモジュール13に出力する。
また、プリインボークモジュール23は、CPPプリインボークモジュール13から、単数または複数の構造体FD5014を入力すると、構造体FD5014の数だけインボーカモジュール24を生成することを指示するスレッド生成要求5030をスレッド生成モジュール26に出力する。
また、プリインボークモジュール23は、構造体FD5014を構造体FD5016として、インボーカモジュール24に出力する。
【0044】
このとき、プリインボークモジュール23が、CPPプリインボークモジュール13から、3個の構造体FD5014〔1〕,FD5014〔2〕およびFD5014〔3〕を入力した場合には、それらに対応してスレッド生成モジュール26によって3個のインボーカモジュール241 ,242 および243 が生成される。そして、プリインボークモジュール23からインボーカモジュール241 ,242 および243 に、それぞれ構造体FD5014〔1〕,FD5014〔2〕およびFD5014〔3〕が出力される。
【0045】
インボーカモジュール24は、プリインボークモジュール23から入力した構造体FD5014に含まれるデータから、メッセージ毎に、呼び出しを行うプロシジャーコーラーモジュール21を決定し、当該決定したプロシジャーコーラーモジュール21の呼び出し要求5017を発生する。そして、インボーカモジュール24は、当該呼び出したプロシジャーコーラーモジュール21に、引数としてプリインボークモジュール23から入力した構造体FD5014を出力する。
また、インボーカモジュール24は、プロシジャーコーラーモジュール21から入力した内部表現形式の返戻値5020を論理表現形式に変換する。ここで、内部表現形式とは、ユーザアプリケーションプログラム110で使用されるデータの表現形式であり、論理表現形式とは、ネットワーク間で通信を行う際に使用されるネットワークワイドなデータの表現形式である。
インボーカモジュール24は、プリインボークモジュール23から入力した構造体FD5014と、前述したように変換した返戻値5020とを引数として含む呼び出し要求5021をポストインボークモジュール25に出力する。
【0046】
プロシジャーコーラーモジュール21は、インボーカモジュール24から入力した構造体FD5014に格納されている引数を用いて、ユーザアプリケーションプログラム110内の並行オブジェクト、関数あるいはメソッドであるユーザープロシジャー120の呼び出し要求5018を発生する。これにより、ユーザープロシジャー120の機能が実行され、必要に応じて返戻値が生成される。プロシジャーコーラーモジュール21は、ユーザープロシジャー120から返戻値5019を入力すると、当該返戻値5019 を返戻値5020としてインボーカモジュール24に出力する。
【0047】
ポストインボークモジュール25は、インボーカモジュール24から入力した呼び出し要求5021に含まれる構造体FD5014と返戻値5020とを引数とするCPPポストインボークモジュール15の呼び出し要求5022を発生する。
【0048】
〔ユーザアプリケーションプログラム110〕
ユーザアプリケーションプログラム110は、プログラム言語「Java」で記述された単数または複数のユーザープロシジャー120を備えている。
【0049】
ユーザープロシジャー120は、並行オブジェクト、関数あるいはメソッドなどである。
ユーザープロシジャー120は、本実施形態では、他のプロセスから呼び出される機能であり、プロシジャーコーラーモジュール21から呼び出し要求5018を受けると、必要に応じてシンクコールモジュール60から入力した引数を用いて所定の処理を行い、処理結果に応じた返戻値5050をシンクコールモジュール60に出力する。
【0050】
以下、図3に示すメッセージ通信機構の受信機能の動作について説明する。
先ず、例えば、ネットワークを介して接続された他のコンピュータ上で動作するプロセスから出力されたメッセージが、言語非依存部共通ライブラリ10のCMIモジュール16で受信され、当該受信されたメッセージを格納した構造体FD504 がメッセージディストリビュータモジュール12に出力される。
【0051】
メッセージディストリビュータモジュール12に、CMIモジュール16から、構造体FD504 が入力されると、当該構造体FD504 に含まれる並行オブジェクトおよびプロセスの識別子505 が参照解決モジュール11に出力され、参照解決モジュール11から得た識別子506 に基づいて、当該メッセージ504 が自プロセス宛のものか否かが判断される。そして、メッセージ504 が自プロセス宛のものであると判断された場合には、メッセージディストリビュータモジュール12から、構造体FD504 が構造体FD507 としてレシーバーモジュール22に出力される。
【0052】
メッセージディストリビュータモジュール12からレシーバーモジュール22に構造体FD507 が入力されると、レシーバーモジュール22からスレッド生成モジュール26にスレッド生成要求508 が出力される。そして、スレッド生成モジュール26によって、新たなレシーバーモジュール22が生成される。
これにより、新たなレシーバーモジュール22からメッセージディストリビュータモジュール12に、呼び出し要求501 が再び発生する。それと並行して、構造体FD507 を入力したレシーバーモジュール22からプリインボークモジュール23に、引数として構造体507 を含む呼び出し要求5010が発生する。
【0053】
レシーバーモジュール22からプリインボークモジュール23に呼び出し要求5010が発生すると、プリインボークモジュール23から言語非依存部共通ライブラリ10のCPPプリインボークモジュール13の呼び出し要求5011を発生し、引数として構造体507 が、CPPプリインボークモジュール13に出力される。
【0054】
言語依存部ライブラリ20のプリインボークモジュール23からの呼び出し要求5011をCPPプリインボークモジュール13が受けると、メッセージ評価スケジューラモジュール14の呼び出し要求5012を発生し、呼び出し要求5011に引数として含まれる構造体FD5012がメッセージ評価スケジューラモジュール14に出力される。
【0055】
そして、メッセージ評価スケジューラモジュール14において、CPPプリインボークモジュール13から入力した構造体FD12に格納されたメッセージに付加されている優先度に基づいて、内蔵するキュー内に、構造体FD12が登録される。また、キューの先頭に存在する構造体FD、すなわち優先度の最も高い構造体FDから順に取り出され、これが構造体FD5013としてCPPプリインボークモジュール13に出力される。
【0056】
また、メッセージ評価スケジューラモジュール14から、単数または複数の構造体FD5013が、CPPプリインボークモジュール13に入力されると、当該入力した構造体FD5013が構造体FD5014として言語依存部ライブラリ20のプリインボークモジュール23に出力される。
【0057】
CPPプリインボークモジュール13から、単数または複数の構造体FD5014をプリインボークモジュール23が入力すると、構造体FD5014の数だけインボーカモジュール24を生成することを指示するスレッド生成要求5030がスレッド生成モジュール26に出力される。
そして、スレッド生成モジュール26によって、構造体FD5014の数だけインボーカモジュール24が生成される。また、プリインボークモジュール23からインボーカモジュール24に、構造体FD5014が構造体FD5016として出力される。
【0058】
そして、インボーカモジュール24において、プリインボークモジュール23から入力した構造体FD5014に含まれるデータから、メッセージ毎に、呼び出しを行うプロシジャーコーラーモジュール21が決定され、当該決定されたプロシジャーコーラーモジュール21の呼び出し要求5017が発生する。そして、インボーカモジュール24から、当該呼び出したプロシジャーコーラーモジュール21に、引数としてプリインボークモジュール23から入力した構造体FD5014が出力される。
【0059】
そして、プロシジャーコーラーモジュール21において、インボーカモジュール24から入力した構造体FD5014に格納されている引数を用いて、ユーザアプリケーションプログラム110内のユーザープロシジャー120の呼び出し要求5018が発生する。これにより、ユーザープロシジャー120の機能が実行され、必要に応じて返戻値が生成される。
【0060】
ユーザープロシジャー120からプロシジャーコーラーモジュール21に返戻値5019が出力されると、当該返戻値5019が返戻値5020としてインボーカモジュール24に出力される。
【0061】
そして、インボーカモジュール24において、返戻値5020が内部表現形式から論理表現形式に変換され、インボーカモジュール24からポストインボークモジュール25に、プリインボークモジュール23から入力した構造体FD5014と、論理表現形式に変換された返戻値5020とを引数として含む呼び出し要求5021が発生する。
【0062】
そして、ポストインボークモジュール25が、インボーカモジュール24から入力した呼び出し要求5021に含まれる構造体FD5014と返戻値5020とを引数とするCPPポストインボークモジュール15の呼び出し要求5022を発生する。
【0063】
そして、CPPポストインボークモジュール15が、言語依存部ライブラリ20のポストインボーク25から呼び出し要求5022を受けると、当該呼び出し要求5022に含まれる構造体FD5023と、プロシジャーコーラーモジュール21の返戻値5023とが、センディングラウンチャーモジュール17に出力される。
【0064】
そして、センディングラウンチャーモジュール17において、CPPポストインボークモジュール15から入力した構造体FD5023に含まれる、メッセージ503 の送信元情報が取り出され、当該送信元に対して返戻値5023を送信するために呼び出し要求5024を発生し、CMIモジュール16が呼び出される。
【0065】
そして、CMIモジュール16から、センディングラウンチャーモジュール17から入力した返戻値5024を含むメッセージ5025が、メッセージ503 の送信元に出力される。
【0066】
図4は、プログラム言語「Java」で記述されたユーザアプリケーションプログラム110を用いた場合における、プロセスが提供するメッセージ通信機構の送信機能を説明するための図である。
【0067】
〔言語非依存部共通ライブラリ10〕
図4に示すように、言語非依存部共通ライブラリ10の送信機能は、参照解決モジュール11、CMIモジュール16、コーリングラウンチャー(Calling Launcher)モジュール71およびメッセージセンダー(Message Sender)モジュール72によって実現される。各モジュールは、例えば、コンピュータのCPUにおいて、プログラム言語「C++」で記述されたプログラムを実行することで生成されてもよいし、ハードウェアによって実現してもよい。
【0068】
コーリングラウンチャーモジュール71は、コーラーモジュール61から呼び出し要求5052を受けると、メッセージセンダーモジュール72の呼び出し要求5053を発生し、呼び出し要求5052に含まれる、送信先のユーザープロシジャーへの参照情報と、転送先のユーザープロシジャーに与える論理表現形式の引数とをメッセージセンダーモジュール72に出力する。
また、コーリングラウンチャーモジュール71は、メッセージセンダーモジュール72から返戻値5058を入力すると、これを返戻値5059としてコーラーモジュール61に出力する。
【0069】
メッセージセンダーモジュール72は、送信先の特定するために、コーリングラウンチャーモジュール71から入力した参照情報5071を参照解決モジュール11に出力し、メッセージの送信先情報5070を得る。
メッセージセンダーモジュール72は、メッセージの送信先情報5070と、コーリングラウンチャーモジュール71から入力した論理表現形式の引数とを含む呼び出し要求5054をCMIモジュール16に出力する。
また、メッセージセンダーモジュール72は、CMIモジュール16から返戻値5057を入力すると、これを返戻値5058としてコーリングラウンチャーモジュール71に出力する。
【0070】
CMIモジュール16は、メッセージの送信先情報5070で特定される送信先に対して、メッセージセンダーモジュール72から入力した論理表現形式の引数5055を送信する。
CMIモジュール16は、他のプロセスから、返戻値5056を入力すると、これを返戻値5057としてメッセージセンダーモジュール72に出力する。
【0071】
〔言語依存部ライブラリ20〕
図4に示すように、言語依存部ライブラリ20の送信機能は、シンクコール(Sync Call) モジュール60およびコーラー(Caller)モジュール61によって実現される。
【0072】
コーラーモジュール61は、シンクコールモジュール60からの呼び出し要求5051を受けると、シンクコールモジュール60から入力した論理表現形式の引数と参照情報とを入力し、これらを含むコーリングラウンチャーモジュール71の呼び出し要求5052を発生する。
また、コーリングラウンチャーモジュール71から返戻値5059を入力すると、これを返戻値5060としてシンクコールモジュール60に出力する。
【0073】
シンクコールモジュール60は、ユーザプロシジャーモジュール80からの呼び出し要求5050を受けると、ユーザプロシジャーモジュール80から引数と送信先の参照情報とを入力し、当該入力した引数を内部表現形式から論理表現形式に変換し、当該変換した引数と入力した参照情報とを含むコーラーモジュール61の呼び出し要求5051を発生する。
また、シンクコールモジュール60は、コーラーモジュール61から、返戻値5060を入力すると、これを内部表現形式に変換し、当該変換した返戻値を返戻値5061としてユーザプロシジャーモジュール80に出力する。
【0074】
〔ユーザアプリケーションプログラム110〕
ユーザアプリケーションプログラム110は、プログラム言語「Java」で記述された単数または複数のユーザープロシジャー80を備えている。
【0075】
ユーザープロシジャー80は、並行オブジェクト、関数あるいはメソッドなどである。
ユーザープロシジャー80は、本実施形態では、他のプロセスが提供する機能を呼び出す機能であり、シンクコールモジュール60に呼び出し要求5050を発生すると、返戻値5061を入力するまで処理を停止する。そして、シンクコールモジュール60から返戻値5061を入力すると、処理を再開する。
【0076】
なお、言語依存部ライブラリ20は、シンクコールモジュール60の他に、例えば、ユーザプロシジャーモジュール80からの呼び出し要求に応じて、センド(Send)モジュールおよびコール(Call)モジュールを生成することができる。
ここで、センドモジュールおよびコールモジュールは、ユーザプロシジャーモジュール80から呼び出し要求を受けると、当該呼び出し要求に応じたコーラーモジュール61の呼び出し要求(スレッド)を発生すると共に、図3に示すスレッド生成モジュール26にスレッド生成要求を出力し、新たに生成されたスレッドをユーザプロシジャーモジュール80に返す。ユーザプロシジャーモジュール80は、当該新たなスレッドを受けて、処理を再開する。
ここで、センドモジュールは、呼び出し先のプロセスから返戻値を入力しないのに対して、コールモジュールは、呼び出し先のプロセスから返戻値を入力する。
【0077】
以下、図4に示すメッセージ通信機構の送信機能の動作について説明する。
先ず、ユーザアプリケーションプログラム110のユーザプロシジャーモジュール80から、例えばネットワークを介して接続された他のコンピュータ上で動作するプロセスのユーザアプリケーションプログラムのユーザプロシジャーモジュールが提供する機能を呼び出す場合に、引数と送信先の参照情報とを含むシンクコールモジュール60の呼び出し要求5050を発生する。
ユーザプロシジャーモジュール80からの呼び出し要求5050をシンクコールモジュール60が受けると、ユーザプロシジャーモジュール80からの引数が内部表現形式から論理表現形式に変換され、当該変換された引数と入力した参照情報とを含むコーラーモジュール61の呼び出し要求5051を発生する。
【0078】
シンクコールモジュール60からの呼び出し要求5051をコーラーモジュール61が受けると、シンクコールモジュール60から入力した論理表現形式の引数と参照情報とを含むコーリングラウンチャーモジュール71の呼び出し要求5052を発生する。
【0079】
コーラーモジュール61から呼び出し要求5052をコーリングラウンチャーモジュール71が受けると、コーリングラウンチャーモジュール71がメッセージセンダーモジュール72の呼び出し要求5053を発生し、呼び出し要求5052に含まれる、送信先のユーザープロシジャーへの参照情報と、転送先のユーザープロシジャーに与える論理表現形式の引数とがメッセージセンダーモジュール72に出力される。
【0080】
そして、送信先の特定するために、コーリングラウンチャーモジュール71から入力した参照情報5071が、メッセージセンダーモジュール72から参照解決モジュール11に出力され、参照解決モジュール11からメッセージの送信先情報5070が得られる。
そして、メッセージセンダーモジュール72から呼び出し要求5054が発生し、メッセージの送信先情報5070とコーリングラウンチャーモジュール71から入力した論理表現形式の引数とが、CMIモジュール16に出力される。
【0081】
そして、CMIモジュール16から、メッセージの送信先情報5070で特定される送信先に対して、メッセージセンダーモジュール72から入力した論理表現形式の引数5055が送信される。
【0082】
その後、CMIモジュール16が、他のプロセスから、返戻値5056を入力すると、これが返戻値5057としてメッセージセンダーモジュール72に出力される。この返戻値5057は、メッセージセンダーモジュール72、コーリングラウンチャーモジュール71、コーラーモジュール61およびシンクコールモジュール60を介して、ユーザプロシジャーモジュール80に出力される。
【0083】
ユーザアプリケーションプログラムが「C++」の場合
図5は、プログラム言語「C++」で記述されたユーザアプリケーションプログラム114を用いた場合における、プロセスが提供するメッセージ通信機構の受信機能を説明するための図である。
この場合には、図5に示すように、メッセージ通信機構の受信機能は、OS117と、言語非依存部共通ライブラリ10と、言語依存部ライブラリ30と、ユーザアプリケーションプログラム114とによって実現される。
図5において、言語非依存部共通ライブラリ10は、図3を参照して前述した言語非依存部共通ライブラリ10と同じである。すなわち、言語非依存部共通ライブラリ10は、プログラム言語「C++」で記述されている。
【0084】
〔言語依存部ライブラリ30〕
言語依存部ライブラリ30は、ユーザアプリケーションプログラム114と同様に、プログラム言語「C++」で記述されており、スレッド生成およびスレッド制御を含む種々の処理を行うモジュールを備えている。
【0085】
図5に示すように、言語依存部ライブラリ30の受信機能は、プロシジャーコーラーモジュール21、レシーバーモジュール32、プリインボークモジュール33、インボーカモジュール24およびポストインボークモジュール25によって実現される。
ここで、図3と同一の符号を付した、プロシジャーコーラーモジュール21、インボーカモジュール24およびポストインボークモジュール25は、前述した図3に示すものと同じである。
なお、各モジュールは、例えば、コンピュータのCPUにおいて、プログラム言語「C++」で記述されたプログラムを実行することで生成されてもよいし、ハードウェアによって実現してもよい。
【0086】
レシーバーモジュール32は、構造体FD507 をメッセージディストリビュータモジュール12から入力すると、スレッド生成要求508 をOS118に出力する。これにより、新たなレシーバーモジュール32が生成され、当該新たなレシーバーモジュール32は、呼び出し要求501 を再びメッセージディストリビュータモジュール12に出力する。それと並行して、構造体FD507 を入力したレシーバーモジュール22は、構造体FD507 を引数として含む呼び出し要求5010をプリインボークモジュール33に出力する。
【0087】
プリインボークモジュール33は、レシーバーモジュール32から呼び出し要求5010を入力すると、言語非依存部共通ライブラリ10のCPPプリインボークモジュール13の呼び出し要求5011を発生し、引数として構造体507 をCPPプリインボークモジュール13に出力する。
また、プリインボークモジュール33は、CPPプリインボークモジュール13から、単数または複数の構造体FD5014を入力すると、構造体FD5014の数だけインボーカモジュール24を生成することを指示するスレッド生成要求5030をOS118に出力する。
また、プリインボークモジュール33は、構造体FD5014を構造体FD5016として、インボーカモジュール24に出力する。
【0088】
このとき、プリインボークモジュール33が、CPPプリインボークモジュール13から、3個の構造体FD5014〔1〕,FD5014〔2〕およびFD5014〔3〕を入力した場合には、それらに対応してOS118によって3個のインボーカモジュール241 ,242 および243 が生成される。そして、プリインボークモジュール33からインボーカモジュール241 ,242 および243 に、それぞれ構造体FD5014〔1〕,FD5014〔2〕およびFD5014〔3〕が出力される。
【0089】
〔OS118〕
OS118は、プリインボークモジュール33から、スレッド生成要求5030を入力すると、スレッド生成要求5030で指定された数のインボーカモジュール24を生成する。
【0090】
〔ユーザアプリケーションプログラム114〕
ユーザアプリケーションプログラム114は、プログラム言語「C++」で記述された単数または複数のユーザープロシジャー140を備えている。
ユーザープロシジャー140は、並行オブジェクト、関数あるいはメソッドなどである。
ユーザープロシジャー140は、本実施形態では、他のプロセスから呼び出される機能であり、プロシジャーコーラーモジュール21から呼び出し要求5018を受けると、必要に応じてシンクコールモジュール60から入力した引数を用いて所定の処理を行い、処理結果に応じた返戻値5050をシンクコールモジュール60に出力する。
【0091】
図5に示すメッセージ通信機構の受信機能の動作は、レシーバーモジュール32およびプリインボークモジュール33が、スレッド生成要求508 ,5030をOS118に出力する点を除いて、前述した図3に示す受信機能の動作と同じである。
【0092】
次に、プログラム言語「C++」で記述されたユーザアプリケーションプログラム114を用いた場合における、プロセスが提供するメッセージ通信機構の送信機能は、言語依存部ライブラリ30およびユーザアプリケーションプログラム114が、プログラム言語「C++」で記述されている点を除いて、基本的に、図4に示すものと同じである。
【0093】
また、言語依存部ライブラリ30は、シンクコールモジュール60の他に、例えば、ユーザプロシジャーモジュール80からの呼び出し要求に応じて、前述したセンドモジュールおよびコールモジュールを生成することができる。
【0094】
但し、言語依存部ライブラリ30の場合には、言語依存部ライブラリ20の場合と異なり、センドモジュールおよびコールモジュールは、ユーザプロシジャーモジュール80から呼び出し要求を受けると、当該呼び出し要求に応じたコーラーモジュール61の呼び出し要求(スレッド)を発生し、ユーザプロシジャーモジュール80に復帰する。
【0095】
以上説明したように、本実施形態の並列分散システムによれば、図6に示すように、プログラム言語「Java」で記述されたユーザアプリケーションプログラム110のプロセスと、プログラム言語「C++」で記述されたユーザアプリケーションプログラム114のプロセスとにおいて、スレッド制御に係わるモジュール以外のモジュールを持つ言語非依存部共通ライブラリ10を共用できる。そのため、プログラム言語「Java」の言語依存部ライブラリ20およびプログラム言語「C++」の言語依存部ライブラリ30を小規模にできる。
その結果、言語依存部ライブラリ20および30と、言語非依存部共通ライブラリ10とから構成される分散プラットフォームライブラリの開発およびデバッグ作業の負担を軽減できる。
また、スレッド制御に関するモジュールについては、言語依存部ライブラリ20と30とで個別に設けてあるため、誤ったスレッド制御が行われることを効果的に回避できる。
【0096】
また、上述した本実施形態の並列分散システムによれば、図3に示すレシーバーモジュール22において、呼び出し要求5010を発生する既存のスレッドの他に、呼び出し要求501 を発生する新たなスレッドを生成することから、既存のスレッドに基づいたユーザープロシジャー120の機能の実行と、新たなスレッドに応じて生成されたメッセージディストリビュータモジュール12およびCMIモジュール16によるメッセージ通信とを並行して行うことができる。
【0097】
本発明は上述した実施形態には限定されない。
上述した実施形態では、ユーザアプリケーションプログラムが記述されたるプログラム言語として、「Java」および「C++」を例示したが、その他に「LISP」などであってもよい。なお、プログラム言語「LISP」を用いた場合にも、「Java」および「C++」と同様に言語依存部ライブラリが実現される。
【0098】
また、上述した実施形態では、ネットワークを介して接続された異なるコンピュータ上で動作するプロセス相互間で、ユーザプロシジャーモジュールの機能呼び出しを行う場合を例示したが、同一のコンピュータ上で動作する異なるプロセス相互間でユーザプロシジャーモジュールの機能呼び出しを行う場合にも、本発明を適用できる。
【0099】
【発明の効果】
以上説明したように、コンピュータ、並列分散システムおよび機能呼び出し方法によれば、分散プラットフォームライブラリの一部として、プログラム言語の種類に依存しない処理を行うプログラム言語非依存部を設けることで、複数のプログラム言語の分散プラットフォームライブラリを開発する際に、当該プログラム言語非依存部を共用することができ、分散プラットフォームライブラリの開発およびデバッグ作業の負担を軽減できる。
【図面の簡単な説明】
【図1】図1は、本発明の実施形態の並列分散システムの全体構成を模式的に示す図である。
【図2】図2は、プロセスと並行オブジェクトとの関係を説明するための図である。
【図3】図3は、プログラム言語「Java」で記述されたユーザアプリケーションプログラムを用いた場合における、プロセスが提供するメッセージ通信機構の受信機能を説明するための図である。
【図4】図4は、プログラム言語「Java」で記述されたユーザアプリケーションプログラムを用いた場合における、プロセスが提供するメッセージ通信機構の送信機能を説明するための図である。
【図5】図5は、プログラム言語「C++」で記述されたユーザアプリケーションプログラムを用いた場合における、プロセスが提供するメッセージ通信機構の受信機能を説明するための図である。
【図6】図6は、本発明の実施形態に係わる並列分散システムの効果を説明するための図である。
【図7】図7は、プログラム言語「Java」および「C++」で記述されたユーザアプリケーションプログラムを用いた場合における、プロセスが提供する従来のメッセージ通信機構の受信機能を説明するための図である。
【符号の説明】
10…言語非依存部共通ライブラリ、11…参照解決モジュール、12…メッセージディストリビュータモジュール、13…CPPプリインボークモジュール、14…メッセージ評価スケジューラモジュール、15…CPPポストインボークモジュール、16…CMIモジュール、17…センディングラウンチャーモジュール、20…言語依存部ライブラリ、21…プロシジャーコーラーモジュール、22…レシーバーモジュール、23…プリインボークモジュール、24…インボーカモジュール、25…ポストインボークモジュール、26…スレッド生成モジュール、60…シンクコールモジュール、61…コーラーモジュール、71…コーリングラウンチャーモジュール、72…メッセージセンダーモジュール、80,120,140…ユーザープロシジャー、110,114…ユーザアプリケーションプログラム、117,118…OS[0001]
[Technical field to which the invention belongs]
The present invention relates to, for example, a computer that performs a function call between processes operating on computers connected via a network, a parallel distributed system, and a function call method.
[0002]
[Prior art]
2. Description of the Related Art A network system in which various computers are connected to a plurality of computers via a network such as a telephone line, cable television, and satellite communication is rapidly spreading. As such a network system, there is a parallel distributed system in which a plurality of objects are arranged on a computer in a network-wide manner and linked to perform desired processing.
Conventionally, many distributed processing languages have been proposed to realize such a parallel distributed system. Also, a distributed system construction function limited to a specific language such as Java RMI (Remote Method Invocation) or HORB has been attempted.
However, in distributed multimedia systems that require a flexible approach to programming, messages between concurrent objects that are described in various programming languages and managed by processes running on various operating systems (OS) There is a request to realize communication. Here, the parallel objects include distributed objects, distributed procedures (functions), global shared variables, and the like.
[0003]
By the way, a message communication mechanism between concurrent objects in a conventional parallel distributed system is composed of, for example, an OS, a distributed platform library depending on a programming language, and one or a plurality of concurrent objects described in the programming language. This is implemented using a user application program.
Here, the distributed platform library includes various modules that perform processing necessary for message communication between concurrent objects, and some modules perform processing involving thread control. A thread means a flow of processing related to message communication for function call, and may be generated by a distributed platform library (program language processing system) or generated by an OS depending on the type of program language.
[0004]
FIG. 7 is a diagram for explaining a message communication mechanism in a conventional parallel distributed system.
In the distributed platform libraries 112 and 116 shown in FIG. 7, only modules related to message reception are shown for simplicity of explanation.
As shown in FIG. 7A, when the
That is, a distributed platform library is prepared for each programming language.
[0005]
In this way, the distributed platform library is prepared for each programming language for the following reason.
As described above, the distributed platform libraries 112 and 116 perform thread control, and the program language “Java” is generated by the distributed platform library 112 so that the program can be described without depending on the platform below the OS. A Java (pseudo) thread 130 is used, and in the programming language “C ++”, a native thread 134 generated by the OS 118 in response to a thread generation request 132 from the distributed platform library 116 is used.
[0006]
Here, since the thread implementation method differs for each program language, a thread of one program language cannot be a target of thread control in a distributed platform library of another program language.
Therefore, the distributed platform library 112 cannot use the native thread provided by the OS 118 according to the programming language “C ++”, and the distributed platform library 116 cannot use the Java thread generated by the distributed platform library 112.
As a result,
[0007]
[Problems to be solved by the invention]
However, as in the conventional parallel distributed system described above, if a unique distributed platform library must be used for each programming language, it is necessary to develop a large-scale distributed platform library for each programming language. In addition, there is a problem that the burden of debugging work is large.
[0008]
The present invention has been made in view of the above-described problems of the prior art, and an object thereof is to provide a computer, a parallel distributed system, and a function call method that can reduce the burden of development and debugging work of a distributed platform library developed for each programming language. To do.
[0009]
In order to solve the above-described problems of the prior art and achieve the above-described object, the computer of the present invention is a process that operates on another computer connected via a network or a process that operates on the same computer. A function for receiving a function call message on a predetermined operating system, the process receiving the function call comprising: an application program that provides a function that is a target of the function call; and When receiving a message, out of the function call processing according to the message, a program language independent part that performs processing independent of the type of the program language describing the application program, and a function call processing according to the message home,in frontThe function call message is executed by the program language dependent unit that performs processing depending on the type of the program language.In, Any data structureBut, Treated as an argument of the data representation format used in the application programI,ConcernedIn the message, the argument is converted from the data representation format used in the application program to the data representation format used for communication between networks.The programming language independent part transmits a message for calling a function of a process operating on another computer connected via a network or a process operating on the same computer, and is called by the received message. A reference resolution for converting the reference information for identifying the function to perform the function from the external reference information unique outside the process for calling the function into the internal reference information unique within the process, and a message for determining the execution timing of the message The program language dependent unit activates the function of the application program corresponding to the function call corresponding to the message whose execution timing is determined by the program language independent unit and performs the function call processing. As you do Carried out by starting the function call processing corresponding to the new the message for accepting the message messages concurrently acceptance process based on the function call processing.
[0010]
The parallel distributed system of the present invention is a parallel distributed system that executes a process while performing a function call between processes operating on operating systems of a plurality of computers connected via a network. The receiving process includes an application program that provides a function that is a target of the function call and a program language that describes the application program in the function call process corresponding to the message when the function call message is received. Of the program language-independent part that performs type-independent processing, and function call processing according to the message,in frontThe function call message is executed by the program language dependent unit that performs processing depending on the type of the program language.In, Any data structureBut, Treated as an argument of the data representation format used in the application programI,ConcernedIn the message, the argument is converted from the data representation format used in the application program to the data representation format used for communication between networks.The programming language independent part transmits a message for calling a function of a process operating on another computer connected through a network or a process operating on the same computer, and is called by the received message. A reference resolution for converting the reference information for specifying the function to perform the function from the external reference information unique outside the process that performs the function call into the internal reference information unique within the process, and a message for determining the execution timing of the message The program language dependent unit activates the function of the application program corresponding to the function call corresponding to the message whose execution timing is determined by the program language independent unit and performs the function call processing. As you do Carried out by starting the function call processing corresponding to the new the message for accepting the message messages concurrently acceptance process based on the function call processing.
[0011]
The function calling method of the present invention is a function calling method for calling functions between processes. When a process receiving a function call receives a message of the function call, In the function call processing according to the message, the processing independent of the type of the programming language describing the application program is performed in the programming language independent portion.,in frontProcessing dependent on the type of programming language is performed in the programming language dependent section, and the function call messageIn, Any data structureBut, Treated as an argument of the data representation format used in the application programI,ConcernedIn the message, the argument is converted from the data representation format used in the application program to the data representation format used for communication between networks.The program language independent part is configured to send a message to a process that operates on another computer connected via a network or a function of a process that operates on the same computer, and the received message. Determines the reference resolution for converting the reference information for specifying the function to be called from the external reference information unique outside the process for calling the function into the internal reference information unique within the process, and the execution timing of the message And the program language dependent unit activates the function of the application program corresponding to the function call corresponding to the message whose execution timing is determined by the program language independent unit. Call processing Utotomoni, performed in parallel message reception process based on the function call process by starting the function call processing corresponding to the new the message for accepting the message.
[0022]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, a parallel distributed system according to an embodiment of the present invention will be described.
In the present embodiment, a distributed distributed system in which a plurality of computers are connected via a network, and each computer performs a desired calculation process in cooperation while communicating via the network. The present invention will be described by exemplifying a parallel distributed system that provides a processing environment.
[0023]
FIG. 1 is a diagram schematically showing the overall configuration of the parallel distributed system of the present embodiment.
The parallel distributed system of the present embodiment regards distributed resources on the network as a logically integrated computing environment in a network environment configured by mixing various communication media such as the Internet, CATV network, and satellite communication. It provides a distributed processing environment.
Here, the distributed resource provides an arbitrary calculation function such as a database, a high-performance calculation server, and an information source of a WWW page in addition to the hardware function of each node. The calculation includes execution of various processes in a wide range.
[0024]
In such a distributed processing environment, parallel objects as calculation entities are arranged to form a calculation space. Note that a plurality of calculation spaces can be individually formed on the same network environment.
Specifically, this concurrent object is a distributed object that can be called remotely, a distributed function, or a shared variable (global shared variable) that can be referred to via a network. Thus, the calculations such as the distributed object-oriented calculation, the distributed function (procedure) call, and the global shared variable processing are performed in parallel.
[0025]
Communication between concurrent objects such as calling concurrent object methods and distributed functions and accessing global shared variables to perform such calculations is as follows: (1) Asynchronous message transmission (unidirectional communication without return value) (2) Delay evaluation type synchronous call (blocks when the return value is accessed) and (3) Complete synchronous call (caller blocks until return value arrival). These communications are collectively referred to as message communications.
That is, such a parallel distributed system can be said to be a system in which parallel objects distributed and arranged on a network sequentially execute parallel calculations by message communication and advance desired calculations as a whole by a chain of messages. .
[0026]
As shown in FIG. 2, each parallel object placed in the calculation space generates and manages a process in a computer.
A process is a computing environment for concurrent objects that provides a mechanism for sending and receiving messages between concurrent objects. For this reason, an application language interface (API) and a system interface for the OS and hardware are provided, and the system can be operated in accordance with differences in execution environments such as programming languages, OS, hardware, and networks. In addition, messages can be sent between different languages, and any data structure can be handled as an argument.
As a result, the execution environment obtained as a set of such processes functions as a common virtual computing environment in the global space.
[0027]
Hereinafter, a message communication mechanism provided in each process in order to realize communication between such processes will be described.
The message communication mechanism is realized in a process operating on each computer connected via a network.
[0028]
When the user application program is "Java"
FIG. 3 is a diagram for explaining the reception function of the message communication mechanism provided by the process when the
In this case, as shown in FIG. 3, the reception function of the message communication mechanism is realized by the
The interface between the language-independent part
First, each component will be described in detail.
[0029]
[OS117]
For example, Unix (trade name) and MS-DOS (trade name) are used as the
[0030]
[Language independent library 10]
The language-independent part
Specifically, the reception function of the language independent
[0031]
When the language-independent part
[0032]
The
[0033]
The
The
[0034]
The
[0035]
The
The
[0036]
The message
[0037]
The CPP post-invoke module 15 receives a
[0038]
The sending
[0039]
[Language dependent library 20]
Similar to the
[0040]
As shown in FIG. 3, the reception function of the language
[0041]
The
[0042]
The
Further, the
[0043]
The
Further, the
Further, the
[0044]
At this time, the
[0045]
The
The
The
[0046]
The procedure caller module 21 has a structure FD50 input from the invoker module 24.14The
[0047]
The post invoke
[0048]
[User application program 110]
The
[0049]
The
In this embodiment, the
[0050]
The operation of the reception function of the message communication mechanism shown in FIG. 3 will be described below.
First, for example, a structure in which a message output from a process operating on another computer connected via a network is received by the
[0051]
The
[0052]
Structure FD50 from the
As a result, a
[0053]
Call
[0054]
Call
[0055]
Then, in the message
[0056]
Further, from the message
[0057]
From the
Then, the
[0058]
Then, in the
[0059]
Then, in the procedure caller module 21, the
[0060]
[0061]
Then, in the
[0062]
Then, the
[0063]
Then, the CPP post invoke module 15 calls the
[0064]
Then, in the sending
[0065]
Then, the
[0066]
FIG. 4 is a diagram for explaining the transmission function of the message communication mechanism provided by the process when the
[0067]
[Language independent library 10]
As shown in FIG. 4, the transmission function of the language independent part
[0068]
The calling launcher module 71 receives a
The calling launcher module 71 also returns a
[0069]
The
The
The
[0070]
The
The
[0071]
[Language dependent library 20]
As shown in FIG. 4, the transmission function of the language
[0072]
The
The
[0073]
The sync call module 60 receives the
Also, the sync call module 60 receives a
[0074]
[User application program 110]
The
[0075]
The
In this embodiment, the
[0076]
In addition to the sync call module 60, the language
Here, upon receiving a call request from the
Here, the send module does not input a return value from the callee process, whereas the call module inputs a return value from the callee process.
[0077]
The operation of the transmission function of the message communication mechanism shown in FIG. 4 will be described below.
First, when a function provided by a user procedure module of a user application program of a process operating on another computer connected via a network is called from the
Call
[0078]
Call
[0079]
Call
[0080]
The
Then, a
[0081]
Then, the
[0082]
Thereafter, the
[0083]
When the user application program is “C ++”
FIG. 5 is a diagram for explaining the reception function of the message communication mechanism provided by the process when the
In this case, as shown in FIG. 5, the reception function of the message communication mechanism is realized by the
In FIG. 5, the language independent part
[0084]
[Language dependent library 30]
Similar to the
[0085]
As shown in FIG. 5, the reception function of the language
Here, the procedure caller module 21, the
Each module may be generated by executing a program described in the program language “C ++” in a CPU of a computer, for example, or may be realized by hardware.
[0086]
The
[0087]
The
Further, the
Further, the
[0088]
At this time, the
[0089]
[OS118]
The OS 118 sends a
[0090]
[User application program 114]
The
The user procedure 140 is a concurrent object, a function, a method, or the like.
In this embodiment, the user procedure 140 is a function that is called from another process, and a
[0091]
The operation of the receiving function of the message communication mechanism shown in FIG.8, 50303 is the same as the operation of the reception function shown in FIG.
[0092]
Next, when the
[0093]
In addition to the sync call module 60, the language
[0094]
However, in the case of the language
[0095]
As described above, according to the parallel and distributed system of the present embodiment, as shown in FIG. 6, the process of the
As a result, it is possible to reduce the burden of developing and debugging a distributed platform library composed of the language
Further, since the modules related to thread control are individually provided in the language
[0096]
Moreover, according to the parallel distributed system of this embodiment mentioned above, in the
[0097]
The present invention is not limited to the embodiment described above.
In the above-described embodiment, “Java” and “C ++” are exemplified as the program language in which the user application program is described, but “LISP” or the like may be used. Even when the program language “LISP” is used, the language dependent library is realized in the same manner as “Java” and “C ++”.
[0098]
In the above-described embodiment, the case where the function call of the user procedure module is performed between processes operating on different computers connected via a network is illustrated. However, different processes operating on the same computer The present invention can also be applied when a function call of a user procedure module is performed between.
[0099]
【The invention's effect】
As described above, according to the computer, the parallel distributed system, and the function calling method, a plurality of programs can be provided by providing a program language independent part that performs processing independent of the type of program language as part of the distributed platform library. When developing a distributed platform library of a language, the program language independent part can be shared, and the burden of development and debugging work of the distributed platform library can be reduced.
[Brief description of the drawings]
FIG. 1 is a diagram schematically showing an overall configuration of a parallel distributed system according to an embodiment of the present invention.
FIG. 2 is a diagram for explaining a relationship between a process and a parallel object;
FIG. 3 is a diagram for explaining a reception function of a message communication mechanism provided by a process when a user application program described in a program language “Java” is used;
FIG. 4 is a diagram for explaining a transmission function of a message communication mechanism provided by a process when a user application program written in a program language “Java” is used;
FIG. 5 is a diagram for explaining a reception function of a message communication mechanism provided by a process when a user application program written in a program language “C ++” is used;
FIG. 6 is a diagram for explaining the effect of the parallel distributed system according to the embodiment of the present invention.
FIG. 7 is a diagram for explaining a reception function of a conventional message communication mechanism provided by a process when a user application program written in program languages “Java” and “C ++” is used; .
[Explanation of symbols]
DESCRIPTION OF
Claims (6)
前記機能呼び出しを受けるプロセスは、
前記機能呼び出しの対象となる機能を提供するアプリケーションプログラムと、
前記機能呼び出しのメッセージを受けたときに、当該メッセージに応じた機能呼び出し処理のうち、前記アプリケーションプログラムを記述したプログラム言語の種類に依存しない処理を行うプログラム言語非依存部と、
前記メッセージに応じた機能呼び出し処理のうち、前記プログラム言語の種類に依存する処理を行うプログラム言語依存部と、
によって実行され、
前記機能呼び出しのメッセージにおいて、任意のデータ構造体が、前記アプリケーションプログラムで使用されるデータの表現形式の引数として扱われ、
当該引数は、当該メッセージにおいて、前記アプリケーションプログラムで使用されるデータの表現形式から、ネットワーク間で通信に使用されるデータの表現形式に変換され、
前記プログラム言語非依存部は、
ネットワークを介して接続された他のコンピュータ上で動作するプロセスあるいは同一のコンピュータ上で動作するプロセスの機能を呼び出すためのメッセージ送信と、
前記受けたメッセージによって呼び出しを行う機能を特定する参照情報を、前記機能呼び出しを行うプロセス外でユニークな外部参照情報から、当該プロセス内でユニークな内部参照情報に変換する参照解決と、
前記メッセージの実行タイミングを決定するメッセージ評価スケジューリングと、
を行い、
前記プログラム言語依存部は、
前記プログラム言語非依存部によって実行タイミングが決定されたメッセージに応じた機能呼び出しに対応する前記アプリケーションプログラムの機能を起動して当該機能呼び出し処理を行うとともに、
前記メッセージの受け付け用の新たな前記メッセージに応じた機能呼び出し処理を起動して当該機能呼び出し処理に基づくメッセージ受け付け処理を並行して行う
コンピュータ。A computer that operates on a predetermined operating system a process that receives a function call message from a process that operates on another computer connected through a network or a process that operates on the same computer,
The process that receives the function call is
An application program that provides a function that is a target of the function call;
When receiving the function call message, out of the function call processing according to the message, a program language independent part that performs processing independent of the type of the program language describing the application program,
Of function call processing according to the message, and the program language dependent portion that performs processing that depends on the type of prior SL programming language,
Executed by
In the message of the function call, any data structure, handling cracking as arguments representation of the data used by the application program,
In the message, the argument is converted from the data representation format used in the application program to the data representation format used for communication between networks .
The programming language independent part is
Sending a message for calling a function of a process operating on another computer connected to the network or a process operating on the same computer;
Reference resolution for identifying the function to be called by the received message is converted from external reference information unique outside the process for performing the function call to internal reference information unique within the process, and
Message evaluation scheduling to determine the execution timing of the message;
And
The program language dependent part is:
While activating the function of the application program corresponding to the function call according to the message whose execution timing has been determined by the program language independent part and performing the function call process,
A computer that activates a function call process corresponding to the new message for receiving the message and performs a message reception process based on the function call process in parallel .
前記プログラム言語依存部が、当該プロセスにおける新たなスレッドの生成要求を発生することによって行う
請求項1に記載のコンピュータ。Activation of the function call processing and activation of the function of the application program are as follows:
The computer according to claim 1, which is performed by the program language dependent unit generating a request for generating a new thread in the process.
前記アプリケーションプログラムおよび前記プログラム言語依存部は、前記プログラム言語依存部内で前記スレッドを生成するプログラム言語で記述されたプログラムである
請求項2に記載のコンピュータ。The program language dependent unit includes a thread generation unit that generates the new thread in response to the thread generation request.
The computer according to claim 2 , wherein the application program and the program language dependent unit are programs written in a program language that generates the thread in the program language dependent unit.
前記アプリケーションプログラムおよび前記プログラム言語依存部は、前記オペレーティングシステムに前記スレッド生成を実行させるプログラム言語で記述されたプログラムである
請求項2に記載のコンピュータ。The operating system generates the new thread in response to the thread generation request generated by the programming language dependent unit,
The computer according to claim 2 , wherein the application program and the program language dependent unit are programs written in a program language that causes the operating system to execute the thread generation.
前記コンピュータの前記機能呼び出しを受けるプロセスは、
前記機能呼び出しの対象となる機能を提供するアプリケーションプログラムと、
前記機能呼び出しのメッセージを受けたときに、当該メッセージに応じた機能呼び出し処理のうち、前記アプリケーションプログラムを記述したプログラム言語の種類に依存しない処理を行うプログラム言語非依存部と、
前記メッセージに応じた機能呼び出し処理のうち、前記プログラム言語の種類に依存する処理を行うプログラム言語依存部と、
によって実行され、
前記機能呼び出しのメッセージにおいて、任意のデータ構造体が、前記アプリケーションプログラムで使用されるデータの表現形式の引数として扱われ、
当該引数は、当該メッセージにおいて、前記アプリケーションプログラムで使用されるデータの表現形式から、ネットワーク間で通信に使用されるデータの表現形式に変換され、
前記プログラム言語非依存部は、
ネットワークを介して接続された他のコンピュータ上で動作するプロセスあるいは同一のコンピュータ上で動作するプロセスの機能を呼び出すためのメッセージ送信と、
前記受けたメッセージによって呼び出しを行う機能を特定する参照情報を、前記機能呼び出しを行うプロセス外でユニークな外部参照情報から、当該プロセス内でユニークな内部参照情報に変換する参照解決と、
前記メッセージの実行タイミングを決定するメッセージ評価スケジューリングと、
を行い、
前記プログラム言語依存部は、
前記プログラム言語非依存部によって実行タイミングが決定されたメッセージに応じた機能呼び出しに対応する前記アプリケーションプログラムの機能を起動して当該機能呼び出し処理を行うとともに、
前記メッセージの受け付け用の新たな前記メッセージに応じた機能呼び出し処理を起動して当該機能呼び出し処理に基づくメッセージ受け付け処理を並行して行う
並列分散システム。In a parallel distributed system that executes processing while performing function calls between processes operating on operating systems of a plurality of computers connected via a network,
The process of receiving the function call of the computer is
An application program that provides a function that is a target of the function call;
When receiving the function call message, out of the function call processing according to the message, a program language independent part that performs processing independent of the type of the program language describing the application program,
Of function call processing according to the message, and the program language dependent portion that performs processing that depends on the type of prior SL programming language,
Executed by
In the message of the function call, any data structure, handling cracking as arguments representation of the data used by the application program,
In the message, the argument is converted from the data representation format used in the application program to the data representation format used for communication between networks .
The programming language independent part is
Sending a message for calling a function of a process operating on another computer connected to the network or a process operating on the same computer;
Reference resolution for identifying the function to be called by the received message is converted from external reference information unique outside the process for performing the function call to internal reference information unique within the process, and
Message evaluation scheduling to determine the execution timing of the message;
And
The program language dependent part is:
While activating the function of the application program corresponding to the function call according to the message whose execution timing has been determined by the program language independent part and performing the function call process,
A parallel distributed system that activates a function call process corresponding to the new message for accepting the message and performs message accepting processes based on the function call process in parallel.
前記機能呼び出しを受けるプロセスは、
前記機能呼び出しのメッセージを受けたときに、当該メッセージに応じた機能呼び出し処理のうち、アプリケーションプログラムを記述するプログラム言語の種類に依存しない処理をプログラム言語非依存部で行い、
前記メッセージに応じた機能呼び出し処理のうち、前記プログラム言語の種類に依存する処理をプログラム言語依存部で行い、
前記機能呼び出しのメッセージにおいて、任意のデータ構造体が、前記アプリケーションプログラムで使用されるデータの表現形式の引数として扱われ、
当該引数は、当該メッセージにおいて、前記アプリケーションプログラムで使用されるデータの表現形式から、ネットワーク間で通信に使用されるデータの表現形式に変換され、
前記プログラム言語非依存部は、
ネットワークを介して接続された他のコンピュータ上で動作するプロセスあるいは同一のコンピュータ上で動作するプロセスの機能を呼び出すためのメッセージ送信処理と、
前記受けたメッセージによって呼び出しを行う機能を特定する参照情報を、前記機能呼び出しを行うプロセス外でユニークな外部参照情報から、当該プロセス内でユニークな内部参照情報に変換する参照解決処理と、
前記メッセージの実行タイミングを決定するメッセージ評価スケジューリング処理と、
を行い、
前記プログラム言語依存部は、
前記プログラム言語非依存部によって実行タイミングが決定されたメッセージに応じた機能呼び出しに対応する前記アプリケーションプログラムの機能を起動して当該機能呼び出し処理を行うとともに、
前記メッセージの受け付け用の新たな前記メッセージに応じた機能呼び出し処理を起動して当該機能呼び出し処理に基づくメッセージ受け付け処理を並行して行う
機能呼び出し方法。In the function call method for calling functions between processes,
The process that receives the function call is
When receiving the function call message, among the function call processes corresponding to the message, the process independent of the type of the program language describing the application program is performed in the program language independent part,
Of function call processing according to the message, it performs a process that depends on the type of prior SL program language program language-dependent part,
In the message of the function call, any data structure, handling cracking as arguments representation of the data used by the application program,
The argument is converted from the data representation format used in the application program to the data representation format used for communication between networks in the message ,
The programming language independent part is
A message transmission process for calling a function of a process operating on another computer connected via a network or a process operating on the same computer;
A reference resolution process for converting the reference information for specifying the function to be called by the received message from the external reference information unique outside the process for performing the function call into the internal reference information unique within the process;
A message evaluation scheduling process for determining the execution timing of the message;
And
The program language dependent part is:
While activating the function of the application program corresponding to the function call according to the message whose execution timing has been determined by the program language independent part and performing the function call process,
A function call method that activates a function call process according to the new message for receiving the message and performs a message reception process based on the function call process in parallel .
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21830498A JP4668367B2 (en) | 1998-07-31 | 1998-07-31 | Computer, parallel distributed system, and function call method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21830498A JP4668367B2 (en) | 1998-07-31 | 1998-07-31 | Computer, parallel distributed system, and function call method |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2000047888A JP2000047888A (en) | 2000-02-18 |
JP2000047888A5 JP2000047888A5 (en) | 2005-10-27 |
JP4668367B2 true JP4668367B2 (en) | 2011-04-13 |
Family
ID=16717751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP21830498A Expired - Fee Related JP4668367B2 (en) | 1998-07-31 | 1998-07-31 | Computer, parallel distributed system, and function call method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4668367B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7653681B2 (en) | 2005-01-14 | 2010-01-26 | International Business Machines Corporation | Software architecture for managing a system of heterogenous network processors and for developing portable network processor applications |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04322327A (en) * | 1991-04-23 | 1992-11-12 | Oki Electric Ind Co Ltd | Subroutine sharing method |
JPH07219775A (en) * | 1994-02-07 | 1995-08-18 | Oki Electric Ind Co Ltd | Method and device for protocol conversion |
GB2296351A (en) * | 1994-12-23 | 1996-06-26 | Ibm | Calling functions from programs running in another environment |
JPH09245003A (en) * | 1996-03-05 | 1997-09-19 | Digital Vision Lab:Kk | Parallel distributed processing system and method therefor |
US5860004A (en) * | 1996-07-03 | 1999-01-12 | Sun Microsystems, Inc. | Code generator for applications in distributed object systems |
-
1998
- 1998-07-31 JP JP21830498A patent/JP4668367B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000047888A (en) | 2000-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Arulanthu et al. | The design and performance of a scalable ORB architecture for CORBA asynchronous messaging | |
Schmidt et al. | C++ Network Programming, Volume 2: Systematic Reuse with ACE and Frameworks | |
US5687373A (en) | Communications system for exchanging data between computers in a network and a method of operating such a system in which communications services are defined within a common object class | |
Schmidt | The adaptive communication environment | |
Schmidt | Applying patterns and frameworks to develop object-oriented communication software | |
US7003777B2 (en) | Coordination-centric framework for software design in a distributed environment | |
EP0899659B1 (en) | An apparatus and method for simulating multiple nodes on a single machine | |
Schmidt et al. | Patterns and performance of distributed real-time and embedded publisher/subscriber architectures | |
Hu et al. | Applying the proactor pattern to high-performance web servers | |
JP4668367B2 (en) | Computer, parallel distributed system, and function call method | |
Kessler et al. | Concurrent scheme | |
Aldrich et al. | Providing easier access to remote objects in client-server systems | |
JP3007340B1 (en) | Function calling method, parallel distributed processing system and computer | |
Tejera et al. | Predictable serialization in Java | |
JP3342659B2 (en) | Distributed processing method, network system and node device | |
Williamson et al. | Concurrent communication and synchronization mechanisms | |
Li | Some Engineering Aspects of Real-Time | |
Maginnis | Design considerations for the transformation of MINIX into a distributed operating system | |
JP2000148460A (en) | Program converting method | |
Goscinski et al. | Message passing and RPC-based interprocess communication mechanisms in the RHODOS microkernel | |
Pérez Tijero et al. | Experience in integrating interchangeable scheduling policies into a distribution middleware for Ada | |
Schmidt et al. | TAO: a High-performance ORB Endsystem Architecture for Real-time CORBA | |
Marques et al. | The distributed operating system of the SMD project | |
Burdette et al. | Distributed BACI: a toolkit for distributed applications | |
Calha et al. | FTTlet based distributed system architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050801 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050801 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070608 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070619 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070820 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20071106 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080107 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20080115 |
|
A912 | Removal of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20080215 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101115 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140121 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313117 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |