JP4668367B2 - Computer, parallel distributed system, and function call method - Google Patents

Computer, parallel distributed system, and function call method Download PDF

Info

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
Application number
JP21830498A
Other languages
Japanese (ja)
Other versions
JP2000047888A5 (en
JP2000047888A (en
Inventor
哲央 千葉
隆之 斉藤
博俊 前川
Original Assignee
データ・ケーキベーカ株式会社
前川 和義
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by データ・ケーキベーカ株式会社, 前川 和義 filed Critical データ・ケーキベーカ株式会社
Priority to JP21830498A priority Critical patent/JP4668367B2/en
Publication of JP2000047888A publication Critical patent/JP2000047888A/en
Publication of JP2000047888A5 publication Critical patent/JP2000047888A5/ja
Application granted granted Critical
Publication of JP4668367B2 publication Critical patent/JP4668367B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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による呼び出し要求50によって呼び出され、呼び出された後に待機状態となる。そして、CMIモジュール16は、外部のプロセスから、メッセージを受信すると、動作状態となり、受信したメッセージを格納した構造体FD50をメッセージディストリビュータモジュール12に出力する。また、CMIモジュール16は、センディングラウンチャーモジュール17から入力した返戻値5024を含むメッセージ5025を、メッセージ50の送信元に出力する。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 user application program 110 is described in the program language “Java”, the distributed platform library 112 is also described in “Java”. Further, as shown in FIG. 7B, when the user application program 114 is described in the program language “C ++”, the distributed platform library 116 is also described in “C ++”.
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, user application programs 110 and 114 use their own distributed platform libraries 112 and 116, respectively.
[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 user application program 110 written in the program language “Java” is used.
In this case, as shown in FIG. 3, the reception function of the message communication mechanism is realized by the OS 117, the language-independent part common library 10, the language-dependent part library 20, and the user application program 110.
The interface between the language-independent part common library 10 and the language-dependent part library 20 is an external function interface provided by the language-dependent part library 20, for example, “Java Native Interface” of JDK1.1. Is done.
First, each component will be described in detail.
[0029]
[OS117]
For example, Unix (trade name) and MS-DOS (trade name) are used as the OS 117.
[0030]
[Language independent library 10]
The language-independent part common library 10 is a collection of basic functions that do not depend on the program language among the message communication functions as common functions, and is positioned as a system-independent function layer.
Specifically, the reception function of the language independent common library 10 includes a reference resolution module 11, a message distributor module 12, a CPP preinvoke module 13, and a message evaluation scheduler. It is realized by a scheduler module 14, a CPP postinvoke module 15, a CMI (Communication Media Interface) module 16, and a sending launcher module 17. Each module may be generated, for example, by executing a program described in the program language “C ++” in a CPU (Central Processing Unit) of the computer, or may be realized by hardware.
[0031]
When the language-independent part common library 10 is generated by executing a program described in the program language “C ++”, the language-independent part common library 10 is also linked from the program language “Java” in order to use it. It is realized as a DLL (Dynamic Link Library). This eliminates the need to reconstruct the user application program even when the distributed platform is upgraded or bug-fixed.
[0032]
The reference resolution module 11 manages global references to the concurrent objects and distributed object methods that make up the user procedure 120. At the time of message transmission, a computer having a destination parallel object to which a message is transmitted, a process identifier, and a communication protocol for message transmission are determined. In the case of message reception, the concurrent object and process identifier 50 included in the messageFiveAnd the identifier 50FiveIs converted from the external reference information unique on the network to the internal reference information unique within the process, and the identifier 50 obtained by the conversion is converted.6Is output to the message distributor module 12.
[0033]
The message distributor module 12 receives a call request 50 from the receiver module 22 of the language dependent library 20.1The call request 50 of the CMI module 16 is received.2To call the CMI module 16.
The message distributor module 12 receives a structure FD (Function Descriptor) 50 from the CMI module 16.FourIs input, the structure FD50FourOf concurrent objects and processes contained inFiveIs output to the reference resolution module 11, and the identifier 50 obtained from the reference resolution module 11 is output.6Based on the message 50FourIs determined to be directed to its own process. And message 50FourIs addressed to its own process, the message distributor module 12 sends the structure FD50.FourThe structure FD507To the receiver module 22.
[0034]
  The CMI module 16 calls the call request 50 by the message distributor module 12.2It is called by, and enters the standby state after being called. When the CMI module 16 receives a message from an external process, the CMI module 16 enters an operating state, and the structure FD50 that stores the received message.4Is output to the message distributor module 12. Also, the CMI module 16 returns the return value 50 input from the sending launcher module 17.24Including message 5025Message 503Output to the sender. The CMI module 16 operates on another computer connected via a network.processUsed when communicating with. The CMI module 16 is configured as an independent module for each communication protocol, and for example, Ethernet or ISDN is used as the communication protocol. When communicating with other processes operating on the same computer, the process communication function provided by the OS 117 is used without using the CMI module 16.
[0035]
The CPP pre-invoke module 13 calls the call request 50 from the pre-invoke module 23 of the language dependent unit library 20.11In response, the call request 50 of the message evaluation scheduler module 14 is received.12And call request 5011FD50 included as an argument in12Is output to the message evaluation scheduler module 14.
The CPP pre-invoke module 13 receives one or more structures FD50 from the message evaluation scheduler module 14.13Is inputted, the inputted structure FD5013The structure FD5014To the pre-invoke module 23 of the language dependent library 20.
[0036]
The message evaluation scheduler module 14 receives the structure FD input from the CPP pre-invoke module 13.12The structure FD is stored in the built-in queue based on the priority added to the message stored in12Register. Then, the structure FD present at the head of the queue, that is, the structure FD having the highest priority is sequentially extracted to obtain the structure FD50.13To the CPP pre-invoke module 13.
[0037]
The CPP post-invoke module 15 receives a call request 50 from the post-invoke 25 of the language dependent library 20.twenty twoWhen the call request 50 is received,twenty twoStructure FD50 included intwenty threeReturn value 50 of procedure caller module 21twenty threeAre output to the sending launcher module 17.
[0038]
The sending launcher module 17 has a structure FD50 input from the CPP post invoke module 15.twenty threeIncluded in the message 50ThreeThe sender information is extracted, and a return value 50 is sent to the sender.twenty threeCall request 50 to sendtwenty fourTo call the CMI module 16.
[0039]
[Language dependent library 20]
Similar to the user application program 110, the language dependent unit library 20 is described in the program language “Java” and includes modules for performing various processes including thread generation and thread control.
[0040]
As shown in FIG. 3, the reception function of the language dependent library 20 includes a procedure caller module 21, a receiver module 22, a preinvoke module 23, an invoker module 24, and a post-in. This is realized by a postinvoke module 25 and a thread generation module 26. Each module may be generated, for example, by executing a program described in the program language “Java” in a CPU of a computer, or may be realized by hardware.
[0041]
The receiver module 22 has a structure FD50.7Is input from the message distributor module 12, the thread generation request 508Is output to the thread generation module 26. As a result, a new receiver module 22 is generated, and the new receiver module 221Is output to the message distributor module 12 again. At the same time, the structure FD507, The receiver module 22 receives the structure 50 as an argument.7Call request 50 includingTenIs output to the pre-invoke module 23.
[0042]
The thread generation module 26 receives a thread generation request 50 from the receiver module 22.8Is input, a new receiver module 22 is generated.
Further, the thread generation module 26 receives a thread generation request 50 from the pre-invoke module 23.30Is input, the thread generation request 5030The number of invoker modules 24 specified in (1) is generated.
[0043]
The pre-invoke module 23 receives a call request 50 from the receiver module 22.TenIs input, the call request 50 of the CPP pre-invoke module 13 of the language-independent part common library 10 is entered.11And the structure 50 as an argument7Is output to the CPP pre-invoke module 13.
Further, the pre-invoke module 23 is supplied from the CPP pre-invoke module 13 by one or more structures FD50.14Is input, the structure FD5014Thread generation request 50 for instructing to generate the number of invoker modules 2430Is output to the thread generation module 26.
Further, the pre-invoke module 23 includes the structure FD50.14The structure FD5016Is output to the invoker module 24.
[0044]
At this time, the pre-invoke module 23 has three structures FD50 from the CPP pre-invoke module 13.14[1], FD5014[2] and FD5014When [3] is input, three invoker modules 24 are correspondingly generated by the thread generation module 26.1, 242And 24ThreeIs generated. Then, the pre-invoke module 23 to the invoker module 241, 242And 24ThreeAnd the structure FD50, respectively.14[1], FD5014[2] and FD5014[3] is output.
[0045]
The invoker module 24 is a structure FD50 input from the pre-invoke module 23.14For each message, the procedure caller module 21 to be called is determined for each message, and the call request 50 of the determined procedure caller module 21 is determined.17Is generated. Then, the invoker module 24 receives the structure FD 50 input from the pre-invoke module 23 as an argument to the called procedure caller module 21.14Is output.
The invoker module 24 also returns a return value 50 in the internal representation format input from the procedure caller module 21.20Is converted into a logical representation form. Here, the internal representation format is a data representation format used by the user application program 110, and the logical representation format is a network-wide data representation format used when communication is performed between networks. .
The invoker module 24 is a structure FD50 input from the pre-invoke module 23.14And the return value 50 converted as described above.20Call request 50 that includestwenty oneIs output to the post invoke module 25.
[0046]
  The procedure caller module 21 has a structure FD50 input from the invoker module 24.14The call request 50 of the user procedure 120 which is a parallel object, function or method in the user application program 110 using the arguments stored in18Is generated. Thereby, the function of the user procedure 120 is executed, and a return value is generated as necessary. The procedure caller module 21 returns a return value of 50 from the user procedure 120.19Is entered, the return value 5019 ReturnReturn value 5020To the invoker module 24.
[0047]
The post invoke module 25 is a call request 50 input from the invoker module 24.twenty oneStructure FD50 included in14And return value 5020Call request 50 of CPP post invoke module 15 withtwenty twoIs generated.
[0048]
[User application program 110]
The user application program 110 includes one or a plurality of user procedures 120 written in the program language “Java”.
[0049]
The user procedure 120 is a concurrent object, a function, a method, or the like.
In this embodiment, the user procedure 120 is a function that is called from another process, and a call request 50 from the procedure caller module 21.18In response to this, a predetermined process is performed using the argument input from the sync call module 60 as necessary, and a return value 50 corresponding to the processing result50Is output to the sync call module 60.
[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 CMI module 16 of the language independent common library 10 and the received message is stored. Body FD50FourIs output to the message distributor module 12.
[0051]
The message distributor module 12 receives the structure FD50 from the CMI module 16.FourIs input, the structure FD50FourOf concurrent objects and processes contained inFiveIs output to the reference resolution module 11 and the identifier 50 obtained from the reference resolution module 11 is output.6Based on the message 50FourIs determined to be directed to its own process. And message 50FourIs determined to be addressed to its own process, the message distributor module 12 sends the structure FD50.FourIs structure FD507Is output to the receiver module 22.
[0052]
Structure FD50 from the message distributor module 12 to the receiver module 227Is input from the receiver module 22 to the thread generation module 26.8Is output. Then, a new receiver module 22 is generated by the thread generation module 26.
As a result, a call request 50 is sent from the new receiver module 22 to the message distributor module 12.1Will occur again. At the same time, the structure FD507To the pre-invoke module 23 from the receiver module 22 that has received7Call request 50 includingTenWill occur.
[0053]
Call request 50 from the receiver module 22 to the pre-invoke module 23TenIs generated, the call request 50 for the CPP pre-invoke module 13 of the language independent part common library 10 from the pre-invoke module 23 is generated.11And the structure 50 as an argument7Is output to the CPP pre-invoke module 13.
[0054]
Call request 50 from pre-invoke module 23 of language dependent library 2011Is received by the CPP pre-invoke module 13, the call request 50 of the message evaluation scheduler module 14 is received.12And call request 5011FD50 included as an argument in12Is output to the message evaluation scheduler module 14.
[0055]
Then, in the message evaluation scheduler module 14, the structure FD input from the CPP pre-invoke module 13.12The structure FD is stored in the built-in queue based on the priority added to the message stored in12Is registered. Further, the structure FD present at the head of the queue, that is, the structure FD having the highest priority is sequentially extracted, and this structure FD50 is extracted.13To the CPP pre-invoke module 13.
[0056]
Further, from the message evaluation scheduler module 14, one or a plurality of structures FD5013Is input to the CPP pre-invoke module 13, the input structure FD50 is input.13Is structure FD5014Is output to the pre-invoke module 23 of the language dependent library 20.
[0057]
From the CPP pre-invoke module 13, one or more structures FD5014Is input by the pre-invoke module 23, the structure FD5014Thread generation request 50 for instructing to generate the number of invoker modules 2430Is output to the thread generation module 26.
Then, the thread generation module 26 causes the structure FD50.14The number of invoker modules 24 is generated. Further, the structure FD50 is transferred from the pre-invoke module 23 to the invoker module 24.14Is structure FD5016Is output as
[0058]
Then, in the invoker module 24, the structure FD50 input from the pre-invoke module 23.14For each message, the procedure caller module 21 to be called is determined, and the call request 50 of the determined procedure caller module 21 is determined.17Will occur. Then, the structure FD50 input from the invoker module 23 as an argument to the called procedure caller module 21 from the invoker module 24.14Is output.
[0059]
Then, in the procedure caller module 21, the structure FD 50 input from the invoker module 24.14The call request 50 of the user procedure 120 in the user application program 110 using the argument stored in18Will occur. Thereby, the function of the user procedure 120 is executed, and a return value is generated as necessary.
[0060]
Return value 50 from the user procedure 120 to the procedure caller module 2119Is output, the return value 5019Returns 5020Is output to the invoker module 24.
[0061]
Then, in the invoker module 24, the return value 5020Is converted from the internal representation format to the logical representation format, and the structure FD50 inputted from the invoker module 24 to the post invoke module 25 and from the pre invoke module 23 is obtained.14And the return value 50 converted into the logical expression format.20Call request 50 that includestwenty oneWill occur.
[0062]
Then, the call request 50 input from the invoker module 24 by the post invoke module 25.twenty oneStructure FD50 included in14And return value 5020Call request 50 of CPP post invoke module 15 withtwenty twoIs generated.
[0063]
Then, the CPP post invoke module 15 calls the call request 50 from the post invoke 25 of the language dependent unit library 20.twenty twoWhen the call request 50 is received,twenty twoStructure FD50 included intwenty threeReturn value 50 of procedure caller module 21twenty threeAre output to the sending launcher module 17.
[0064]
Then, in the sending launcher module 17, the structure FD50 inputted from the CPP post invoke module 15 is used.twenty threeIncluded in the message 50ThreeSource information is extracted and a return value of 50 is returned to the source.twenty threeCall request 50 to sendtwenty fourAnd the CMI module 16 is called.
[0065]
Then, the return value 50 input from the sending launcher module 17 from the CMI module 16.twenty fourIncluding message 50twenty fiveBut message 50ThreeIs output to the sender.
[0066]
FIG. 4 is a diagram for explaining the transmission function of the message communication mechanism provided by the process when the user application program 110 written in the program language “Java” is used.
[0067]
[Language independent library 10]
As shown in FIG. 4, the transmission function of the language independent part common library 10 is realized by a reference resolution module 11, a CMI module 16, a calling launcher module 71, and a message sender module 72. Each module may be generated, for example, by executing a program written in the program language “C ++” in a CPU of a computer, or may be realized by hardware.
[0068]
The calling launcher module 71 receives a call request 50 from the caller module 61.52In response, the call request 50 of the message sender module 72 is received.53And call request 5052The reference information to the destination user procedure and the argument of the logical expression format to be given to the destination user procedure are output to the message sender module 72.
The calling launcher module 71 also returns a return value 50 from the message sender module 72.58When this is entered, this is returned as the return value 5059To the caller module 61.
[0069]
The message sender module 72 uses the reference information 50 input from the calling launcher module 71 in order to specify the transmission destination.71Is output to the reference resolution module 11 and the message destination information 50 is output.70Get.
The message sender module 72 sends message destination information 50.70And a call request 50 including a logical expression format argument input from the calling launcher module 71.54Is output to the CMI module 16.
The message sender module 72 also returns a return value 50 from the CMI module 16.57When this is entered, this is returned as the return value 5058To the calling launcher module 71.
[0070]
The CMI module 16 sends message destination information 5070Argument 50 in the logical expression format input from the message sender module 72 for the destination specified in FIG.55Send.
The CMI module 16 returns a return value 50 from another process.56When this is entered, this is returned as the return value 5057To the message sender module 72.
[0071]
[Language dependent library 20]
As shown in FIG. 4, the transmission function of the language dependent unit library 20 is realized by a sync call module 60 and a caller module 61.
[0072]
The caller module 61 calls the call request 50 from the sync call module 60.51When received, the logical expression format arguments and reference information input from the sink call module 60 are input, and the calling request 50 of the calling launcher module 71 including them is input.52Is generated.
The return value 50 from the calling launcher module 7159When this is entered, this is returned as the return value 5060To the sync call module 60.
[0073]
The sync call module 60 receives the call request 50 from the user procedure module 80.50When received, the argument and the reference information of the destination are input from the user procedure module 80, the input argument is converted from the internal representation format to the logical representation format, and the caller including the converted argument and the input reference information Call request 50 of module 6151Is generated.
Also, the sync call module 60 receives a return value 50 from the caller module 61.60Is converted into the internal representation format, and the converted return value is returned to the return value 50.61To the user procedure module 80.
[0074]
[User application program 110]
The user application program 110 includes one or a plurality of user procedures 80 written in the program language “Java”.
[0075]
The user procedure 80 is a concurrent object, a function or a method.
In this embodiment, the user procedure 80 is a function for calling a function provided by another process, and a call request 50 is sent to the sink call module 60.50Return value 5061Stops processing until is entered. Then, the return value 50 from the sync call module 6061When is entered, the process is resumed.
[0076]
In addition to the sync call module 60, the language dependent unit library 20 can generate a send module and a call module in response to a call request from the user procedure module 80, for example.
Here, upon receiving a call request from the user procedure module 80, the send module and the call module generate a call request (thread) for the caller module 61 in response to the call request, and the thread generation module 26 shown in FIG. A thread generation request is output, and the newly generated thread is returned to the user procedure module 80. The user procedure module 80 receives the new thread and resumes processing.
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 user procedure module 80 of the user application program 110, an argument and a transmission destination Call request 50 of the sink call module 60 including the reference information of50Is generated.
Call request 50 from user procedure module 8050When the sink call module 60 receives the call, the argument from the user procedure module 80 is converted from the internal representation format to the logical representation format, and the call request 50 of the caller module 61 including the converted argument and the input reference information.51Is generated.
[0078]
Call request 50 from the sync call module 6051Is received by the caller module 61, the call request 50 of the calling launcher module 71 including the arguments in the logical expression format input from the sync call module 60 and the reference information.52Is generated.
[0079]
Call request 50 from caller module 6152Is received by the calling launcher module 71, the calling launcher module 71 issues a call request 50 for the message sender module 72.53And call request 5052The reference information to the destination user procedure and the argument of the logical expression format to be given to the destination user procedure are output to the message sender module 72.
[0080]
The reference information 50 input from the calling launcher module 71 in order to specify the transmission destination71Is output from the message sender module 72 to the reference resolution module 11, and the message transmission destination information 50 is output from the reference resolution module 11.70Is obtained.
Then, a call request 50 is sent from the message sender module 72.54Occurs, message destination information 5070And arguments in the logical expression format input from the calling launcher module 71 are output to the CMI module 16.
[0081]
Then, the CMI module 16 sends message destination information 50.70Argument 50 in the logical expression format input from the message sender module 72 for the destination specified in FIG.55Is sent.
[0082]
Thereafter, the CMI module 16 returns a return value 50 from another process.56This will return a return value of 5057Is output to the message sender module 72. This return value 5057Is output to the user procedure module 80 via the message sender module 72, the calling launcher module 71, the caller module 61, and the sync call module 60.
[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 user application program 114 written in the program language “C ++” is used.
In this case, as shown in FIG. 5, the reception function of the message communication mechanism is realized by the OS 117, the language-independent part common library 10, the language-dependent part library 30, and the user application program 114.
In FIG. 5, the language independent part common library 10 is the same as the language independent part common library 10 described above with reference to FIG. That is, the language-independent part common library 10 is described in the program language “C ++”.
[0084]
[Language dependent library 30]
Similar to the user application program 114, the language dependent library 30 is described in the program language “C ++” and includes modules for performing various processes including thread generation and thread control.
[0085]
As shown in FIG. 5, the reception function of the language dependent unit library 30 is realized by the procedure caller module 21, the receiver module 32, the pre-invoke module 33, the invoker module 24, and the post-invoke module 25.
Here, the procedure caller module 21, the invoker module 24, and the post invoke module 25, which have the same reference numerals as those in FIG. 3, are the same as those shown in FIG.
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 receiver module 32 has a structure FD50.7Is input from the message distributor module 12, the thread generation request 508Is output to the OS 118. As a result, a new receiver module 32 is generated, and the new receiver module 32 receives the call request 50.1Is output to the message distributor module 12 again. At the same time, the structure FD507, The receiver module 22 receives the structure FD50.7Call request 50 that contains as an argumentTenIs output to the pre-invoke module 33.
[0087]
The pre-invoke module 33 receives a call request 50 from the receiver module 32.TenIs input, the call request 50 of the CPP pre-invoke module 13 of the language-independent part common library 10 is entered.11And the structure 50 as an argument7Is output to the CPP pre-invoke module 13.
Further, the pre-invoke module 33 is supplied from the CPP pre-invoke module 13 by one or more structures FD50.14Is input, the structure FD5014Thread generation request 50 for instructing to generate the number of invoker modules 2430Is output to the OS 118.
Further, the pre-invoke module 33 includes the structure FD50.14The structure FD5016Is output to the invoker module 24.
[0088]
At this time, the pre-invoke module 33 has three structures FD50 from the CPP pre-invoke module 13.14[1], FD5014[2] and FD5014When [3] is input, the three invoker modules 24 are correspondingly executed by the OS 118.1, 242And 24ThreeIs generated. And the pre-invoke module 33 to the invoker module 241, 242And 24ThreeAnd the structure FD50, respectively.14[1], FD5014[2] and FD5014[3] is output.
[0089]
[OS118]
The OS 118 sends a thread generation request 50 from the pre-invoke module 33.30Is input, the thread generation request 5030The number of invoker modules 24 specified in (1) is generated.
[0090]
[User application program 114]
The user application program 114 includes one or a plurality of user procedures 140 described in the program language “C ++”.
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 call request 50 from the procedure caller module 21.18In response to this, a predetermined process is performed using the argument input from the sync call module 60 as necessary, and a return value 50 corresponding to the processing result50Is output to the sync call module 60.
[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 user application program 114 written in the program language “C ++” is used, the transmission function of the message communication mechanism provided by the process is such that the language dependent unit library 30 and the user application program 114 have the program language “C ++”. Is basically the same as that shown in FIG.
[0093]
In addition to the sync call module 60, the language dependent unit library 30 can generate the above-described send module and call module in response to a call request from the user procedure module 80, for example.
[0094]
However, in the case of the language dependent part library 30, unlike the case of the language dependent part library 20, when the send module and the call module receive a call request from the user procedure module 80, the caller module 61 corresponding to the call request is sent. A call request (thread) is generated and the process returns to the user procedure module 80.
[0095]
As described above, according to the parallel and distributed system of the present embodiment, as shown in FIG. 6, the process of the user application program 110 described in the program language “Java” and the program language “C ++” are described. The language independent part common library 10 having modules other than the modules related to thread control can be shared with the process of the user application program 114. Therefore, the language dependent part library 20 of the program language “Java” and the language dependent part library 30 of the program language “C ++” can be made small.
As a result, it is possible to reduce the burden of developing and debugging a distributed platform library composed of the language dependent part libraries 20 and 30 and the language independent part common library 10.
Further, since the modules related to thread control are individually provided in the language dependent library 20 and 30, it is possible to effectively avoid erroneous thread control.
[0096]
Moreover, according to the parallel distributed system of this embodiment mentioned above, in the receiver module 22 shown in FIG.TenIn addition to existing threads that generate1Therefore, the execution of the function of the user procedure 120 based on the existing thread and the message communication by the message distributor module 12 and the CMI module 16 generated according to the new thread are performed in parallel. Can be done.
[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 SYMBOLS 10 ... Language independent part common library, 11 ... Reference resolution module, 12 ... Message distributor module, 13 ... CPP pre-invoke module, 14 ... Message evaluation scheduler module, 15 ... CPP post-invoke module, 16 ... CMI module, 17 ... Sending launcher module, 20 ... language dependent library, 21 ... procedure caller module, 22 ... receiver module, 23 ... pre-invoke module, 24 ... invoker module, 25 ... post invoke module, 26 ... thread generation module, 60 ... Sync call module, 61 ... Caller module, 71 ... Calling launcher module, 72 ... Message sender module, 80, 120, 140 ... Over Heather Puroshija, 110, 114 ... user application program, 117,118 ... OS

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.
前記プログラム言語依存部は、前記スレッドの生成要求に応じて、前記新たなスレッドを生成するスレッド生成部を有し、
前記アプリケーションプログラムおよび前記プログラム言語依存部は、前記プログラム言語依存部内で前記スレッドを生成するプログラム言語で記述されたプログラムである
請求項に記載のコンピュータ。
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.
前記オペレーティングシステムは、前記プログラム言語依存部が発生した前記スレッドの生成要求に応じて、前記新たなスレッドを生成し、
前記アプリケーションプログラムおよび前記プログラム言語依存部は、前記オペレーティングシステムに前記スレッド生成を実行させるプログラム言語で記述されたプログラムである
請求項に記載のコンピュータ。
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 .
JP21830498A 1998-07-31 1998-07-31 Computer, parallel distributed system, and function call method Expired - Fee Related JP4668367B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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