(57)【特許請求の範囲】
【請求項１】
プログラムの実行時に複数のプロセスが生成される情報処理装置におけるプロセス間通信方法であって、
第１のプロセスが、前記第１のプロセスの受信専用通信路を確保し、確保した前記第１のプロセスの受信専用通信路の識別子を第２のプロセスが取得できるようにテーブルに登録し、前記第２のプロセスとの間のプロセス間通信に使用する実行時通信路を確保し、前記第２のプロセスの受信専用通信路の識別子を取得し、確保した前記実行時通信路の識別子を含む開始要求メッセージを前記第２のプロセスの受信専用通信路の識別子を指定して送信し、
前記第２のプロセスが、前記第２のプロセスにメッセージを送るための受信専用通信路からのメッセージを待ち受け、前記受信専用通信路を介して前記開始要求メッセージを受信し、前記第１のプロセスとのプロセス間通信で使用する実行時通信路の識別子として前記開始要求メッセージに含まれる識別子を設定し、前記第２のプロセスがプロセス間通信の開始に応答したことを示す開始要求応答メッセージを、前記第１のプロセスの受信専用通信路の識別子を指定して送信し、
前記第１のプロセスが、前記第１のプロセスにメッセージを送るための受信専用通信路からのメッセージを待ち受け、前記受信専用通信路を介して前記開始要求応答メッセージを受信すると、前記実行時通信路を使用したプロセス間通信を開始し、前記第２のプロセスとの間のプロセス間通信が終了すると、前記実行時通信路を削除する
ことを特徴とするプロセス間通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセス間通信方法に関する。
【背景技術】
【０００２】
計算機システムにおいて、プロセス間でメッセージを送受信するＩＰＣ（Ｉｎｔｅｒ  Ｐｒｏｃｅｓｓ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）の機能は、一般にオペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の機能の一部として提供される。詳細な実装はオペレーティングシステムにより異なるが、利用できる手段には共有メモリ（ｓｈａｒｅｄ  ｍｅｍｏｒｙ）、メッセージキュー（ｍｅｓｓａｇｅ  ｑｕｅｕｅ）、セマフォ（ｓｅｍａｐｈｏｒｅ）等がある。
【０００３】
ＩＰＣでは、プロセスと、プロセスとの間を結ぶ仮想的なデータ搬送路は、ＩＰＣオブジェクトといわれるデータオブジェクトである。通信を行う際には、通信を行おうとする双方のプロセスがお互いに使用するＩＰＣオブジェクトの識別子の情報を共有し、双方で同一の識別子を指定することで、通信の接続が確立される。つまり、メッセージの送受信を行うプログラムが、互いに同一のＩＰＣオブジェクトの識別子を共有することが、ＩＰＣによるメッセージ送受信を行う際の必須作業である。
【０００４】
ＩＰＣオブジェクトの識別子を異なるプロセスで共有するための従来の方法は、大きく分類すると２つに分けられる。
【０００５】
第１の方法は、ＩＰＣを行うそれぞれのプログラム間で、キーワード文字列を決めて共有しておく方法である。一般にＩＰＣの機能を提供するシステムでは、キーワードをもとにＩＰＣオブジェクトの識別子を照会する機能も提供されるため、あるプロセスが確保したＩＰＣオブジェクトの識別子は、別のプロセスからも、キーワードによって照会することが可能である。この方法では、ＩＰＣを使用するプログラム間で、予め必要な数だけキーワードを取り決めておくことで、実行時にＩＰＣオブジェクトの識別子を共有できるようにしている。
【０００６】
第２の方法は、予めシステムで利用されるＩＰＣの全ての接続を洗い出し、全てのＩＰＣオブジェクトとその識別子を先に確保しておき、それを利用するようにプログラムを作成する方法である。
【０００７】
【特許文献１】特開２００３−１２４９６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した第１及び第２の方法には幾つかの問題点がある。第１の方法では、一般に、キーワードからＩＰＣオブジェクトの識別子を照合する機能において、厳密性が保証されていない。そのため、例えば、同一のキーワードでも異なるＩＰＣオブジェクト識別子を照合結果として返すこと起こりうる。
【０００９】
このため、照合したＩＰＣオブジェクト識別子が本当に意図した物であるかどうかを確認する機能の実装が必須となる。更なる問題点は、キーワード管理の煩雑化である。一つの通信路に対して、一つのキーワードが必要である。よって、ＩＰＣを行うプログラムモジュールの数が増えた場合や、プログラムモジュールが少なくても、ＩＰＣの接続が複数になる場合には、共有しておかなくてはならないキーワードの個数も、それに比例して多くなる。したがって、個々のプログラムモジュールがキーワード共有のために行わなくてはならない手続きが煩雑になる。これによりプログラムモジュールやシステム全体の見通しが悪くなり、メンテナンス性の悪化等の要因となる。
【００１０】
一方、第２の方法は、予め全てのＩＰＣオブジェクト及びその接続が決定されているため、動作時にＩＰＣオブジェクト識別子をプロセス間で確認し合うステップが不要であることからパフォーマンスに優れる。しかし、その反面、動作時に動的にＩＰＣオブジェクト及び接続を確保する必要のあるシステムには適用できないという問題点がある。
【００１１】
また、ＩＰＣオブジェクトの確保にはメモリーリソースを消費するため、予め全てを確保してしまうという方法では、システムが必要とするメモリーリソースの量の下限値が、システム内のＩＰＣの接続数に依存してしまう。そのため、接続が増えたら、その分、より多くのメモリーリソースが必要になってしまう。このため、少ないメモリーリソースしか搭載でいない機器等には適用しにくい。
【００１２】
発明は前記の問題点に鑑みなされたもので、プロセス間通信で使用する通信路の識別子の管理を容易にし、且つ、メモリーリソースの消費を低く抑えることを目的とする。
【課題を解決するための手段】
【００１３】
そこで、前記問題を解決するため、本発明に係るプロセス間通信方法は、プログラムの実行時に複数のプロセスが生成される情報処理装置におけるプロセス間通信方法であって、第１のプロセスが、前記第１のプロセスの受信専用通信路を確保し、確保した前記第１のプロセスの受信専用通信路の識別子を第２のプロセスが取得できるようにテーブルに登録し、前記第２のプロセスとの間のプロセス間通信に使用する実行時通信路を確保し、前記第２のプロセスの受信専用通信路の識別子を取得し、確保した前記実行時通信路の識別子を含む開始要求メッセージを前記第２のプロセスの受信専用通信路の識別子を指定して送信し、前記第２のプロセスが、前記第２のプロセスにメッセージを送るための受信専用通信路からのメッセージを待ち受け、前記受信専用通信路を介して前記開始要求メッセージを受信し、前記第１のプロセスとのプロセス間通信で使用する実行時通信路の識別子として前記開始要求メッセージに含まれる識別子を設定し、前記第２のプロセスがプロセス間通信の開始に応答したことを示す開始要求応答メッセージを、前記第１のプロセスの受信専用通信路の識別子を指定して送信し、前記第１のプロセスが、前記第１のプロセスにメッセージを送るための受信専用通信路からのメッセージを待ち受け、前記受信専用通信路を介して前記開始要求応答メッセージを受信すると、前記実行時通信路を使用したプロセス間通信を開始し、前記第２のプロセスとの間のプロセス間通信が終了すると、前記実行時通信路を削除することを特徴とする。
【００１４】
本発明によれば、係る構成とすることにより、プロセス間通信で使用する通信路の識別子の管理を容易にし、且つ、メモリーリソースの消費を低く抑えることができる。
【発明の効果】
【００１６】
本発明によれば、プロセス間通信で使用する通信路の識別子の管理を容易にし、且つ、メモリーリソースの消費を低く抑えることができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施形態について図面に基づいて説明する。
【００１８】
ＩＰＣによるメッセージ送受信を開始する直前に、ＩＰＣを開始しようとするプロセスが、ＩＰＣを行う相手のプロセスに対して、ＩＰＣにて使用するＩＰＣオブジェクトの識別子を通知する。通知を受けたプロセスは、通知された識別子のＩＰＣオブジェクトを使用する。このような方法でＩＰＣの接続を確立し、ＩＰＣ終了後はＩＰＣを開始したプロセス若しくは適切な権限のあるプロセスが使用したＩＰＣオブジェクトを破棄する。
【００１９】
図１は、以下に示す各実施形態の原理的な構成を示す図である。本実施形態に係る装置（以下、情報処理装置を例に説明を行なう）は、プログラムモジュール群１１と、一つ若しくは複数のプログラムから作られた一つ若しくは複数の実行オブジェクトを動作させた際の複数のプロセス１７を含むプロセス群１６と、を有する。また、情報処理装置は、ＩＰＣで使用するＩＰＣオブジェクト（以下、通信路ともいう）１９を含む通信路群１８も有する。
【００２０】
プログラムモジュール群１１は、幾つかの手段を実現するモジュールで構成される。モジュール１２は、ＩＰＣを行おうとする相手のプロセスにＩＰＣオブジェクトの識別子（以降、通信路の識別子ともいう）を通知する際に、通知先のプロセスを特定し、選択する手段を備えたモジュールである。
【００２１】
モジュール１３は、モジュール１２が特定し、選択したプロセスに通信路の識別子をデータとして送信する手段を備えたモジュールである。モジュール１４は、通知されてくる通信路の識別子のデータを受け取る手段を備えたモジュールである。モジュール１５は、通知された通信路の識別子のデータを、これから行おうとするＩＰＣにおいて使用するように指定する手段を備えたモジュールである。
【００２２】
図２は、以下に示す各実施形態の原理的な処理を示すフローチャートである。なお、図２では、ＩＰＣの開始から終了までの処理を各ステップで示している。ＩＰＣを行おうとして他のプロセスを呼び出す側のプロセスを、以下、第１のプロセスという。また、第１のプロセスからの要求を受けて第１のプロセスとのＩＰＣを開始する、呼び出され側のプロセスを、以下、第２のプロセスという。
【００２３】
第１のプロセスと、第２のプロセスとの間でＩＰＣを行う場合、まず、第１のプロセスは、使用する通信路を確保しその識別子を取得する（ステップＳ２１）。次に、第１のプロセスは、第２のプロセスに、ステップＳ１１で確保した通信路の識別子を通知する（ステップＳ２２）。
【００２４】
第２のプロセスは、第１のプロセスからの通知を受信したら（ステップＳ２３）、ＩＰＣの開始手続きを始める。このときに、第２のプロセスは、第１のプロセスから通知された識別子で指定される通信路を使用するように設定する（ステップＳ２４）。
【００２５】
しかる後に、第１のプロセスと、第２のプロセスとは、ＩＰＣによるメッセージ送受信を行う（ステップＳ２５）。メッセージ送受信が終了しＩＰＣの通信路が不要になったら、第１のプロセスか、若しくは適切な権限をもったプロセスが、使用した通信路を破棄する（ステップＳ２６）。
【００２６】
＜実施形態１＞
図３は、情報処理装置のハードウェア構成の一例を示す図である。図３に示されるように、情報処理装置は、ハードウェア構成として、入力部１１０と、表示部１２０と、記録媒体ドライブ部１３０と、ＲＯＭ１５０と、ＲＡＭ１６０と、ＣＰＵ１７０と、インターフェース部１８０と、ＨＤ１９０と、を含む。ここで、ＲＯＭは、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙの略である。また、ＲＡＭは、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略である。また、ＣＰＵは、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略である。ＨＤは、Ｈａｒｄ  Ｄｉｓｋの略である。
【００２７】
入力部１１０は、情報処理装置の操作者（又はユーザ）が操作するキーボード及びマウス等で構成され、情報処理装置に各種操作情報等を入力するのに用いられる。表示部１２０は、情報処理装置の操作者が利用するディスプレイ等で構成され、各種情報（又は画面）等を表示するのに用いられる。インターフェース部１８０は、情報処理装置をネットワーク等に接続するインターフェースである。
【００２８】
後述する機能を提供するプログラムは、例えば、ＣＤ−ＲＯＭ等の記録媒体１４０によって情報処理装置に提供されるか、ネットワーク等を通じてダウンロードされる。記録媒体１４０は、記録媒体ドライブ部１３０にセットされ、プログラムが記録媒体１４０から記録媒体ドライブ部１３０を介してＨＤ１９０にインストールされる。
【００２９】
ＲＯＭ１５０は、情報処理装置の電源投入時に最初に読み込まれるプログラム等を記録する。ＲＡＭ１６０は、情報処理装置のメインメモリである。ＣＰＵ１７０は、必要に応じて、ＨＤ１９０よりプログラムを読み出して、ＲＡＭ１６０に格納し、プログラムを実行することで、後述する機能の全て又は一部を提供したり、後述するフローチャート等を実行したりする。また、ＨＤ１９０は、プログラム以外に、例えば後述する共有通信路情報３２、メッセージ体系定義３３、コンポーネント識別子定義３４等を格納するようにしてもよい。
【００３０】
図４は、情報処理装置の機能構成の一例を示す図（その１）である。情報処理装置は、機能構成として、機能モジュール３５１１を含むプログラムモジュール３５１を一つ乃至は複数含むプログラムモジュール群３５と、どのプロセスからもアクセス可能なＩＰＣオブジェクト（以下、共有通信路ともいう）３６と、を有する。また、情報処理装置は、機能構成として、共有通信路３６の情報である共有通信路情報３２と、共有通信路３６を管理する共有通信路管理モジュール３１と、プログラムモジュール３５１がＩＰＣを行う際に使用する実行時通信路群３７と、を有する。また、情報処理装置は、機能構成として、プログラムモジュール３５１を識別するためのコンポーネント識別子定義３４と、ＩＰＣ接続確立までの手続きを定義するメッセージ体系定義３３と、を有する。
【００３１】
プログラムモジュール３５１は、特定のサービスを実現するためのプログラムモジュール群であり、その処理部を図４ではモジュールごとの機能実現部３５１２として表記している。つまり、プログラムモジュール３５１は、モジュールごとの機能実現部３５１２と、プロセス間通信に係るモジュール３５１１と、を有する。なお、本実施形態のプロセス間通信とは、プログラムモジュール３５１が実行される際に生成されるプロセス間でのメッセージ送受信のことを指す。
【００３２】
本実施形態では、プログラムモジュール３５１間で行うＩＰＣの接続確立のために必要な手続きは、メッセージ体系定義３３に定義されているものとする。ＩＰＣを開始したいプロセスからＩＰＣを行いたい相手のプロセスに対して、メッセージ体系定義３３に定義したメッセージを、共有通信路３６を経由してやり取りした後に、ＩＰＣを開始する。また、プロセスは、ＩＰＣを行ないたい相手のプロセスの識別を、コンポーネント識別子定義３４により行う。ここで、共有通信路３６の生成は共有通信路管理モジュール３１が行う。なお、共有通信路ではメッセージキューが使用される。
【００３３】
次に、情報処理装置の動作を、構成各部のそれぞれの詳しい動作と共に説明する。まず、メッセージ体系定義３３及びコンポーネント識別子定義３４について説明する。
【００３４】
メッセージ体系定義３３及びコンポーネント識別子定義３４は、システム起動時より前に予め定義され、ＨＤ１９０等に格納される。コンポーネント識別子定義３４は、システム動作中にプロセスが相互に自身及び相手を識別できるように予め定義しておく表である。
【００３５】
図５は、コンポーネント識別子定義３４の一例を示す図である。コンポーネント識別子定義３４は、プログラムモジュール名６１と、生成するプロセス６２と、識別子６３と、から構成される。ここで、プログラムモジュール名は、プログラムモジュールの情報である。また、生成するプロセスは、プログラムモジュールが生成しうるプロセスの個数情報である。また、識別子は、それらのプロセスに割り当てられる識別子である。
【００３６】
図５において、例えばプログラムモジュール「ｈｔｔｐサーバ」は、メインプロセスの他に子プロセスを４つ生成しうると設計されており、これらの５つのプロセスに対して、識別子「０ｘ００１０」から「０ｘ００１４」までが割り当てられている。
【００３７】
本実施形態では、コンポーネント識別子定義３４は、プログラムソースの中に記述され、実行オブジェクトがコンポーネント識別子定義３４に定義されている情報を持つようにする。但し、テキストファイルや共有メモリ等にコンポーネント識別子定義３４を格納しておき、プログラム実行時にコンポーネント識別子定義３４、又はコンポーネント識別子定義３４に定義されている情報を読み込むようにしてもよい。
【００３８】
次に、メッセージ体系定義３３の一例を図６に示す。図６は、メッセージ体系定義３３の一例を示す図である。メッセージ体系定義３３は、メッセージ種別定義７１と、データフォーマット定義７２と、メッセージ利用規約定義７３と、から構成される。
【００３９】
メッセージ種別定義７１には、ＩＰＣを開始する処理で用いる手続き（メッセージ）の種別（メッセージの意味）と、メッセージ種別を識別する識別子と、メッセージに含まれる引数データと、が定義されている。
【００４０】
なお、図６に示されるメッセージ種別定義７１には、「開始要求」（７１１）と、「開始要求応答」（７１２）との２種類が定義されている。開始要求７１１は、ＩＰＣを行いたいプロセスに対してその旨を通知するメッセージである。また、開始要求７１１は、使用する通信路の識別子を伝えるためのメッセージである。開始要求応答７１２は、開始要求を受信したプロセスがＩＰＣの開始を受諾するか拒否するかを、要求を出したプロセスに返信するためのメッセージである。つまり、開始要求応答７１２には、受諾か拒否かの識別子が含まれる。
【００４１】
データフォーマット定義７２には、メッセージ種別定義７１を表現するデータのフォーマットが定義されている。本実施形態のデータフォーマット定義７２では、メッセージを伝えるために１０バイトのメモリ領域を使用し、先頭から順に、送信元の識別子、送信先の識別子、メッセージ種別の識別子、引数データを格納するよう定義されている。
【００４２】
メッセージ利用規約定義７３には、メッセージの発行者や、メッセージの順序の決まりごと等、メッセージの利用方法が定義されている。
【００４３】
認証のメインプロセスがストレージＷｅｂサービスの子プロセス１に対して通信路「０ｘ００３Ｆ」を使ってＩＰＣ開始要求を行う場合に送信されるメッセージデータの一例を図７に示す。図７は、メッセージデータの一例を示す図である。
【００４４】
図５よりユーザー認証メインプロセスは、「０ｘ００３０」であり、ストレージＷｅｂサービスの子プロセス１は、「０ｘ００２１」である。また、図６より、開始要求のメッセージ種別識別子は、「０ｘ０１」であり、開始要求のメッセージはデータに通信路識別子を格納する。よって、図７の例では、メモリの先頭から「０ｘ００３０」（８１）、「０ｘ００２１」（８２）、「０ｘ０１」（８３）、「０ｘ００３Ｆ」（８４）を格納するメッセージデータとなる。
【００４５】
続いて、情報処理装置の起動から終了までの処理の流れを説明する。
始めに、ＩＰＣ接続処理のために使用する共有通信路３６の生成、削除の仕組みを説明し、その後に、ＩＰＣ接続処理のより具体的な手順を説明する。
【００４６】
図８は、共有通信路の生成・削除に関する処理の一例を示すフローチャートである。情報処理装置の起動後、まず共有通信路管理モジュール３１が起動される（ステップＳ４１）。起動した共有通信路管理モジュール３１は、どのプロセスからも読み書きが可能なメッセージキューを作成する（ステップＳ４２）。ここで作成されたメッセージキューが、この後のやり取りで各プロセスから使用される共有通信路３６となる。
【００４７】
更に、共有通信路管理モジュール３１は、作成したメッセージキューの識別子（ＩＰＣオブジェクトの識別子の値）をどのプロセスからも読み出し可能なファイルに記述する（ステップＳ４３）。本実施形態では、共有通信路管理モジュール３１は、ＩＰＣオブジェクトの識別子の値をテキストファイルに格納し、どのプロセスからも読み出し可能にする。
【００４８】
図９は、ＩＰＣオブジェクトの識別子の値が格納されたテキストファイルの一例を示す図である。図９の例では、識別子は「０ｘ００３Ｆ」で、ファイル５１に識別子５２が格納されている。
【００４９】
なお、ステップＳ４３の処理の本質は、共有通信路３６の識別子を他のプロセスが知ることができるようにするということであり、ファイルシステムに書き出す方法や、その書き出し方は本質ではない。例えば、共有通信路管理モジュール３１は、予め決められた共有メモリ（シェアードメモリー）のアドレスに、ＩＰＣオブジェクトの識別子の値を格納するようにしてもよい。
【００５０】
続いて、例えば情報処理装置は、サービスを構成する各プログラムモジュールのプロセスを起動する。そして、各プロセスは、それぞれの動作を行う（ステップＳ４４）。情報処理装置におけるシステムの終了時には、共有通信路管理モジュール３１は、共有通信路３６として使用したメッセージキューオブジェクトを削除する（ステップＳ４５）。
【００５１】
続いて、本発明のＩＰＣ接続処理の手続きを説明する。まず、先に記述した、ＩＰＣ接続処理の処理を実現する機能モジュール（図４の３５１１）の構成と、役割とを説明し、その後に、動作を説明する。
【００５２】
まず、ＩＰＣ接続処理の手続きを実現するための機能モジュールの構成例を図１０に示す。図１０は、機能モジュールの構成の一例を示す図である。初期設定部９１は、プロセスの起動時に動作し、必要な情報をプロセス内部に設定するモジュールである。外部情報参照部９２は、共有通信路３６の識別子等の情報を外部参照するためのモジュールである。情報記憶部９３は、共有通信路３６等の情報をプロセスの動作中、保持するためのモジュールである。
【００５３】
メッセージ送信部９４及びメッセージ受信部９５は、それぞれＩＰＣによるデータ送信及び受信を実現するモジュールである。接続メッセージ処理部９６は、メッセージ体系定義３３に基づいて、メッセージを生成・解釈する機能と、ＩＰＣ接続処理の状態遷移を管理する機能とを実現するモジュールである。ＩＰＣ接続処理部９７は、指定された通信路識別子を用いてプロセス同士のＩＰＣを行うモジュールである。
【００５４】
次に、ＩＰＣ接続処理のための行程を説明する。本実施形態では、ＩＰＣ接続処理を行うために、各プロセスは起動時に決まった初期処理を行う。図１１は、各プロセスの初期処理の一例を示すフローチャートである。
【００５５】
まず、情報記憶部９３は、コンポーネント識別子定義３４の中で、自プロセスに定義されている識別子の情報を記憶する（ステップＳ１０１）。次に、外部情報参照部９２が共有通信路３６の識別子を読み込み、情報記憶部９３がこの情報を記憶する（ステップＳ１０２）。最後に、メッセージ受信部９５はメッセージ待ちのポーリングを開始する（ステップＳ１０３）。プロセスは、共有通信路３６に自身宛のメッセージが入れられた場合にのみ受信を行う。
【００５６】
図１２は、ＩＰＣ接続処理の一例を示す図（その１）である。まず第１のプロセスは、これから行う第２のプロセスとのＩＰＣで使用する実行時通信路を確保する（ステップＳ１１０１）。そして、第１のプロセスは、確保した実行時通信路の識別子を記憶する（ステップＳ１１０２）。
【００５７】
このステップＳ１１０１及びステップＳ１１０２の処理は、これから行う第２のプロセスとのＩＰＣで使用するための通信路を確保することが目的であり、通信路を新規に作成するか、既存の通信路を使用するかは問題ではない。既存の通信路を使用する場合は、第１のプロセスは、その識別子の取得と記憶を行えばよい。
【００５８】
次に、第１のプロセスは、コンポーネント識別子定義を参照し、第２のプロセスの識別子を取得する。また、第１のプロセスは、メッセージ体系定義３３に従って開始要求メッセージを作成し、そのデータを、共有通信路３６の識別子を指定して、第２のプロセス宛に送信する（ステップＳ１１０３）。第２のプロセスは、第１のプロセスが共有通信路３６に入れた自身宛のメッセージを選択し、受信する（ステップＳ１１０４）。
【００５９】
ステップＳ１１０３及びステップＳ１１０４の処理に係る、メッセージ送受信のプログラムコードの一例を図１３に示す。図１３は、メッセージ送受信のプログラムコードの一例を示す図である。なお、図１３の例は、ＳｙｓｔｅｍＶメッセージキューを使用した場合の例である。
【００６０】
第１のプロセスが送信するデータには、メッセージ体系定義３３のフォーマットに加えて、メッセージの選択受信を容易にするためのフラグとして第２のプロセスのコンポーネント識別子が付加されている（第１のプロセスで実行されるプログラム例１２０１）。
【００６１】
第２のプロセスは、このフラグデータをフィルタとして自身のメッセージかどうかを判断し、受信する（第２のプロセスで実行されるプログラム例１２０２）。
【００６２】
共有通信路３６における受信処理は、先に記述した、プロセスの初期動作（図１１のステップＳ１０３）において開始される処理動作である。
【００６３】
第１のプロセスからのＩＰＣ開始要求を受信した第２のプロセスは、受信したメッセージに含まれる、第１のプロセスが指定した通信路の識別子を抽出し、その識別子を第１のプロセスとのＩＰＣに使用するように記憶する（ステップＳ１１０５）。続いて、第２のプロセスは、メッセージ体系定義３３に従って開始要求応答メッセージを作成し、共有通信路３６の識別子を指定して、そのデータを送信する（ステップＳ１１０６）。第１のプロセスは、第２のプロセスが送信した開始要求応答メッセージを受信する（Ｓ１１０７）。
【００６４】
以上の処理で、第１のプロセスと、第２のプロセスとの間で、使用する通信路の識別子情報が共有され、ＩＰＣ接続が確立され、メッセージ（又はデータ）のやり取りが行われる（Ｓ１１０８）。
【００６５】
第１のプロセスと、第２のプロセスとの間のＩＰＣが終了したら、例えば第１のプロセスが、使用した実行時通信路を削除する（ステップＳ１１０９）。
【００６６】
なお、上述した説明の行程では、第１のプロセスと、第２のプロセスとの間のＩＰＣで使用する通信路は１つだけであるが、同様の処理を行うことで、通信路を多重化できる。
【００６７】
＜実施形態２＞
実施形態２では、共有通信路を用いず、プロセス同士のＩＰＣを開始する一例を説明する。なお、実施形態２では、説明の簡略化のため、プログラムモジュールではなく、プロセスの言葉を用いて説明を行なう。
【００６８】
図１４は、情報処理装置の機能構成の一例を示す図（その２）である。情報処理装置は、機能構成として、プロセス１３０５同士がＩＰＣを行なう際に使用する実行時通信路群１３０１と、ＩＰＣ接続確立までの手続きを定義するメッセージ体系定義１３０２と、を有する。また、情報処理装置は、機能構成として、プロセス１３０５を識別するためのコンポーネント識別子定義１３０３と、ＩＰＣ接続処理のためのプログラムモジュールを含むプロセス１３０５を含むプロセス群１３０４と、を有する。
【００６９】
以上の構成は、実施形態１と同様である。
本実施形態では、プロセス１３０５それぞれに一つずつ受信専用通信路１３０６が割り当てられている。受信専用通信路１３０６は、各プロセス１３０５へのメッセージを送るための通信路として使用される。
【００７０】
受信専用通信路１３０６は、プロセスが生成されるときの初期処理で確保し、その後プロセスはその受信専用通信路１３０６からのメッセージを待ち受ける。ここで、各プロセスの受信専用通信路１３０６の識別子を他のプロセスが知る必要がある。そのため、コンポーネント識別子定義１３０３は、実施形態１の図５と同様のプロセスを識別するためのテーブルに加えて、図１５に示す、プロセスの識別子からその受信専用通信路の識別子の情報を取得することができるテーブルを持つ。
【００７１】
図１５は、プロセスの識別子と、受信専用通信路１３６の識別子とを関連させるテーブルの一例を示す図である。
１４１は、図５の６３で示したプロセスの識別子であり、１４２はそのプロセスの受信専用通信路１３６の識別子である。プロセスは、受信専用通信路１３６を確保したときに、図１５に示すテーブルに受信専用通信路１３６の識別子の情報を記録する。
【００７２】
本実施形態は、各プロセスが受信専用通信路１３６を持つため、背景技術の第２の例で説明した、予めシステムで使用するＩＰＣを全て定義してしまう例と似ている。しかしながら、本実施形態によれば、システム設計時にＩＰＣオブジェクトを定義していないプロセス間のＩＰＣであっても動作可能であるという点が異なる。
【００７３】
本実施形態でのＩＰＣ接続処理を、図１６を用いて説明する。図１６は、ＩＰＣ接続処理の一例を示す図（その２）である。まず第１のプロセスは、これから行なう第２のプロセスとのＩＰＣで使用する実行時通信路を確保する（ステップＳ１５１）。そして、第１のプロセスは、確保した実行時通信路の識別子を記憶する（ステップＳ１５２）。
【００７４】
次に、第１のプロセスは、コンポーネント識別子定義１３０３を参照し、第２のプロセスの識別子を取得し、第２のプロセスの識別子から第２のプロセスの受信専用通信路１３０６の識別子を取得する。また、第１のプロセスは、メッセージ体系定義１３０２に従って開始要求メッセージを作成し、第２のプロセスに割り当てられている受信専用通信路１３０６の識別子を指定して、そのデータを送信する（ステップＳ１５３）。
【００７５】
第２のプロセスは、開始要求メッセージを受信した後、メッセージに含まれる第１のプロセスが指定した通信路の識別子を抽出し、その識別子を第１のプロセスとのＩＰＣに使用するように記憶する（ステップＳ１５４）。ステップＳ１５３の後に、第２のプロセスは、メッセージ体系定義１３０２に従って開始要求応答メッセージを作成し、第１のプロセスの受信専用通信路１３０６の識別子を指定して、そのデータを送信する（ステップＳ１５５）。第１のプロセスは、第２のプロセスがＩＰＣ開始に応答したことを確認する。
【００７６】
以上の処理で、第１のプロセスと、第２のプロセスとの間で、使用する通信路の識別子情報が共有され、直接的なＩＰＣ接続が確立され、メッセージ（又はデータ）のやり取りが行われる（Ｓ１５６）。
【００７７】
第１のプロセスと、第２のプロセスとの間のＩＰＣが終了したら、例えば第１のプロセスが、使用した実行時通信路を削除する（ステップＳ１５７）。
【００７８】
なお、上述した説明の行程では、第１のプロセスと、第２のプロセスとの間のＩＰＣで使用する通信路は１つだけであるが、同様の処理を行うことで、通信路を多重化できる。
【００７９】
以上、上述した各実施形態によれば、プロセス間通信に関するオブジェクトの識別子の管理を容易にし、且つ、メモリーリソースの消費を低く抑えることができる。
【００８０】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【００８１】
【図１】以下に示す各実施形態の原理的な構成を示す図である。
【図２】以下に示す各実施形態の原理的な処理を示すフローチャートである。
【図３】情報処理装置のハードウェア構成の一例を示す図である。
【図４】情報処理装置の機能構成の一例を示す図（その１）である。
【図５】コンポーネント識別子定義３４の一例を示す図である。
【図６】メッセージ体系定義３３の一例を示す図である。
【図７】メッセージデータの一例を示す図である。
【図８】共有通信路の生成・削除に関する処理の一例を示すフローチャートである。
【図９】ＩＰＣオブジェクトの識別子の値が格納されたテキストファイルの一例を示す図である。
【図１０】機能モジュールの構成の一例を示す図である。
【図１１】各プロセスの初期処理の一例を示すフローチャートである。
【図１２】ＩＰＣ接続処理の一例を示す図（その１）である。
【図１３】メッセージ送受信のプログラムコードの一例を示す図である。
【図１４】情報処理装置の機能構成の一例を示す図（その２）である。
【図１５】プロセスの識別子と、受信専用通信路１３６の識別子とを関連させるテーブルの一例を示す図である。
【図１６】ＩＰＣ接続処理の一例を示す図（その２）である。
【符号の説明】
【００８２】
１１０  入力部
１２０  表示部
１３０  記録媒体ドライブ部
１４０  記録媒体
１５０  ＲＯＭ
１６０  ＲＡＭ
１７０  ＣＰＵ
１８０  インターフェース部
１９０  ＨＤ
【図１】
0004667299.tif 000002
【図２】
0004667299.tif 000003
【図３】
0004667299.tif 000004
【図４】
0004667299.tif 000005
【図５】
0004667299.tif 000006
【図６】
0004667299.tif 000007
【図７】
0004667299.tif 000008
【図８】
0004667299.tif 000009
【図９】
0004667299.tif 000010
【図１０】
0004667299.tif 000011
【図１１】
0004667299.tif 000012
【図１２】
0004667299.tif 000013
【図１３】
0004667299.tif 000014
【図１４】
0004667299.tif 000015
【図１５】
0004667299.tif 000016
【図１６】
0004667299.tif 000017