JPH09101901A - マルチプロセスで動作するパーソナルコンピュータ上で行われるプロセス間のメッセージ通信方式及びメッセージ通信方法 - Google Patents
マルチプロセスで動作するパーソナルコンピュータ上で行われるプロセス間のメッセージ通信方式及びメッセージ通信方法Info
- Publication number
- JPH09101901A JPH09101901A JP7286570A JP28657095A JPH09101901A JP H09101901 A JPH09101901 A JP H09101901A JP 7286570 A JP7286570 A JP 7286570A JP 28657095 A JP28657095 A JP 28657095A JP H09101901 A JPH09101901 A JP H09101901A
- Authority
- JP
- Japan
- Prior art keywords
- message
- queue
- signal state
- processes
- indicates
- 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.)
- Pending
Links
Abstract
(57)【要約】 (修正有)
【課題】メッセージの送信及び受信ごとにプロセスの制
御をブロックする/しないを指定できるプロセス間の双
方向の通信を実現する。 【解決手段】複数のプロセス2、4の共通メモリ領域に
メッセージキュー8が設けられ、このキュー8にミュー
テックス10と、空きセマフォ12と、待ちセマフォ1
4とが設けられる。ミューテックス10は、共通メモリ
領域にアクセスしているプロセスが無いときシグナル状
態を示し、有るとき非シグナル状態を示す。空きセマフ
ォ12は、キュー8内に空席が有るときシグナル状態を
示し、無いとき非シグナル状態を示す。待ちセマフォ1
4は、キュー8内にメッセージが有るときシグナル状態
を示す。ミューテックス10及び空きセマフォ12が共
にシグナル状態であるときのみ、送信プロセスは新たな
メッセージをキュー8に書込み。ミューテックス10及
び待ちセマフォ14が共にシグナル状態であるときの
み、受信プロセス2はキュー8からメッセージを取り出
せる。
御をブロックする/しないを指定できるプロセス間の双
方向の通信を実現する。 【解決手段】複数のプロセス2、4の共通メモリ領域に
メッセージキュー8が設けられ、このキュー8にミュー
テックス10と、空きセマフォ12と、待ちセマフォ1
4とが設けられる。ミューテックス10は、共通メモリ
領域にアクセスしているプロセスが無いときシグナル状
態を示し、有るとき非シグナル状態を示す。空きセマフ
ォ12は、キュー8内に空席が有るときシグナル状態を
示し、無いとき非シグナル状態を示す。待ちセマフォ1
4は、キュー8内にメッセージが有るときシグナル状態
を示す。ミューテックス10及び空きセマフォ12が共
にシグナル状態であるときのみ、送信プロセスは新たな
メッセージをキュー8に書込み。ミューテックス10及
び待ちセマフォ14が共にシグナル状態であるときの
み、受信プロセス2はキュー8からメッセージを取り出
せる。
Description
【0001】
【発明の属する技術分野】本発明は、マルチプロセスO
Sで動作するパーソナルコンピュータ上で行われるプロ
セス間のメッセージ通信方式に関する。
Sで動作するパーソナルコンピュータ上で行われるプロ
セス間のメッセージ通信方式に関する。
【0002】
【従来の技術】パーソナルコンピュータ用のマルチプロ
セスOSの一つMicrosoft社のWindowsーNTでの通信方式
を例に挙げる。WindowsーNTでは、プロセス間通信の実現
のために、 ・メモリを共有するファイルマッピング ・双方向にストリーム型データのやりとりを行う名前付
パイプ ・単方向でデータの送受信を行うメールスロット ・クリップボード ・アプリケーション間で動的にデータ交換を行うDDE ・DCE/RCP などの手段が提供されている。
セスOSの一つMicrosoft社のWindowsーNTでの通信方式
を例に挙げる。WindowsーNTでは、プロセス間通信の実現
のために、 ・メモリを共有するファイルマッピング ・双方向にストリーム型データのやりとりを行う名前付
パイプ ・単方向でデータの送受信を行うメールスロット ・クリップボード ・アプリケーション間で動的にデータ交換を行うDDE ・DCE/RCP などの手段が提供されている。
【0003】しかし、メッセージ通信機能をもつのはこ
のうちメールスロットだけである。ここで、メッセージ
通信とは「共通に参照できるキューがあり、このキュー
を介して、プロセスまたはスレッド間で(バイト単位で
はなく)メッセージ単位に情報の交換ができること」と
定義する。
のうちメールスロットだけである。ここで、メッセージ
通信とは「共通に参照できるキューがあり、このキュー
を介して、プロセスまたはスレッド間で(バイト単位で
はなく)メッセージ単位に情報の交換ができること」と
定義する。
【0004】メールスロットはキューの一種であり、単
方向のプロセス間通信機能を実現する。即ち、プロセス
は、メールスロットを作成してメールスロットサーバに
なることができる。メールスロットクライアントと呼ば
れる他のプロセスは、そのメールスロットの名前を使っ
てそのメールスロットにアクセスし、メールサーバにメ
ッセージを送る。その送られたメッセージは、常にメー
ルスロットに付加される。メールスロットには、それを
作成したメールサーバがメッセージを読み取るまで、メ
ッセージが保存される。
方向のプロセス間通信機能を実現する。即ち、プロセス
は、メールスロットを作成してメールスロットサーバに
なることができる。メールスロットクライアントと呼ば
れる他のプロセスは、そのメールスロットの名前を使っ
てそのメールスロットにアクセスし、メールサーバにメ
ッセージを送る。その送られたメッセージは、常にメー
ルスロットに付加される。メールスロットには、それを
作成したメールサーバがメッセージを読み取るまで、メ
ッセージが保存される。
【0005】また、WindowsーNTのメールスロットにはな
いが、他の公知のメッセージ機構の中には、メッセージ
タイプを用いて、受信側でメッセージの選択受信ができ
るものがある。その機構によれば、送信側は送信する各
メッセージにメッセージタイプを付加することができ、
受信側は受信したいメッセージタイプを指定することに
より、送信されたメッセージの選択受信ができる。これ
により、必ずしもFIFOに限らず、より拡張した使い
方が可能なメッセージキューが実現できる。例えばメッ
セージタイプを次のように意味付けるなどして選択受信
を可能にする。
いが、他の公知のメッセージ機構の中には、メッセージ
タイプを用いて、受信側でメッセージの選択受信ができ
るものがある。その機構によれば、送信側は送信する各
メッセージにメッセージタイプを付加することができ、
受信側は受信したいメッセージタイプを指定することに
より、送信されたメッセージの選択受信ができる。これ
により、必ずしもFIFOに限らず、より拡張した使い
方が可能なメッセージキューが実現できる。例えばメッ
セージタイプを次のように意味付けるなどして選択受信
を可能にする。
【0006】・メッセージタイプが0=キューの先頭か
らメッセージを取り出す。 ・メッセージタイプが0より大きい整数=指定した番号
に一致するメッセージタイプをキューの先頭から探し、
最初に見つけたメッセージを取り出す。
らメッセージを取り出す。 ・メッセージタイプが0より大きい整数=指定した番号
に一致するメッセージタイプをキューの先頭から探し、
最初に見つけたメッセージを取り出す。
【0007】更に、メッセージタイプはアプリケーショ
ン・プログラムによって、様々な目的で使用することが
できる。例えば次のような使い方が可能である。
ン・プログラムによって、様々な目的で使用することが
できる。例えば次のような使い方が可能である。
【0008】(1)同じメッセージキューを使用して2つ
のプロセスがお互いのメッセージを受け渡す場合、例え
ばメッセージタイプ1がプロセスAからプロセスBへの
メッセージ、メッセージタイプ2がプロセスBからプロ
セスAへのメッセージとする。 (2)メッセージの最後を知らせるマークとして、例えば
メッセージタイプ1が一般データ、メッセージタイプ2
が終了と定めて、受信側がメッセージの受信ループから
抜け出す時に使用する。 (3)メッセージを送信するプロセスが複数あり、受信側
がどのプロセスから送られてきたかを知る必要がある場
合、例えばメッセージタイプにプロセスIDを指定して
送信する。 (4)一つのプロセスから複数のプロセスにメッセージを
送信する場合、例えばメッセージタイプ1はプロセスA
へのメッセージ、メッセージタイプ2はプロセスBへの
メッセージとする。
のプロセスがお互いのメッセージを受け渡す場合、例え
ばメッセージタイプ1がプロセスAからプロセスBへの
メッセージ、メッセージタイプ2がプロセスBからプロ
セスAへのメッセージとする。 (2)メッセージの最後を知らせるマークとして、例えば
メッセージタイプ1が一般データ、メッセージタイプ2
が終了と定めて、受信側がメッセージの受信ループから
抜け出す時に使用する。 (3)メッセージを送信するプロセスが複数あり、受信側
がどのプロセスから送られてきたかを知る必要がある場
合、例えばメッセージタイプにプロセスIDを指定して
送信する。 (4)一つのプロセスから複数のプロセスにメッセージを
送信する場合、例えばメッセージタイプ1はプロセスA
へのメッセージ、メッセージタイプ2はプロセスBへの
メッセージとする。
【0009】
【発明が解決しようとする課題】従来のマルチプロセス
で動作するパーソナルコンピュータ上で行われるメッセ
ージ通信では、WindowsーNTのメールスロットを例に説明
したように、同一のメッセージキューを用いては単方向
のメッセージ通信しかできない。
で動作するパーソナルコンピュータ上で行われるメッセ
ージ通信では、WindowsーNTのメールスロットを例に説明
したように、同一のメッセージキューを用いては単方向
のメッセージ通信しかできない。
【0010】また、ブロックモードとノンブロックモー
ドの指定をメッセージ毎に行うことができない。即ち、
プロセスがメッセージ送信又は受信を行おうとしたがそ
れが不可能であるとき、例えば送信時にキューが満杯で
あったり、受信時にキューが空であったような場合、プ
ロセスの振舞には次の2通りがある。一つは、送受信が
できないとき直ちに制御を戻し、次の処理に移行できる
ノンブロックモードであり、他の一つは、送受信ができ
るようになるまで一定時間又は無限に待ち続ける(つま
り、制御をブロックする)ブロックモードである。この
ブロック/ノンブロックモードの指定は、従来のメッセ
ージキュー、例えばWindowsーNTのメールスロットの場
合、メッセージキューの作成時に行われ、そのキューに
アクセスするプロセスは一律に指定されたモードを選択
しなければならない。そのため、例えば一旦ブロックモ
ードで作成されたメッセージキューについては、それに
アクセスしようとするプロセスは、いかなるアクセス機
会でも、キュー作成時に指定した時間又は無限にブロッ
クされる可能性を許容しなければならない。そのため、
プログラムの拡張性が大きく損なわれることがある。
ドの指定をメッセージ毎に行うことができない。即ち、
プロセスがメッセージ送信又は受信を行おうとしたがそ
れが不可能であるとき、例えば送信時にキューが満杯で
あったり、受信時にキューが空であったような場合、プ
ロセスの振舞には次の2通りがある。一つは、送受信が
できないとき直ちに制御を戻し、次の処理に移行できる
ノンブロックモードであり、他の一つは、送受信ができ
るようになるまで一定時間又は無限に待ち続ける(つま
り、制御をブロックする)ブロックモードである。この
ブロック/ノンブロックモードの指定は、従来のメッセ
ージキュー、例えばWindowsーNTのメールスロットの場
合、メッセージキューの作成時に行われ、そのキューに
アクセスするプロセスは一律に指定されたモードを選択
しなければならない。そのため、例えば一旦ブロックモ
ードで作成されたメッセージキューについては、それに
アクセスしようとするプロセスは、いかなるアクセス機
会でも、キュー作成時に指定した時間又は無限にブロッ
クされる可能性を許容しなければならない。そのため、
プログラムの拡張性が大きく損なわれることがある。
【0011】従って、本発明の目的は、マルチプロセス
で動作するパーソナルコンピュータ上で、メッセージの
送信及び受信ごとにプロセスの制御をブロックする/し
ないを指定できるプロセス間の双方向のメッセージ通信
を実現することにある。
で動作するパーソナルコンピュータ上で、メッセージの
送信及び受信ごとにプロセスの制御をブロックする/し
ないを指定できるプロセス間の双方向のメッセージ通信
を実現することにある。
【0012】
【課題を解決するための手段】本発明に従うプロセス間
メッセージ通信では、複数プロセスの共有メモリ領域を
利用して形成されたメッセージキュー機構が用いられ
る。このメッセージキュー機構には、プロセス間のメッ
セージ送受を中継するための共有メモリ領域上に形成さ
れたメッセージキューと、キューへのアクセス動作の同
期をプロセス間でとるための3種の同期オブジェクトと
が含まれる。
メッセージ通信では、複数プロセスの共有メモリ領域を
利用して形成されたメッセージキュー機構が用いられ
る。このメッセージキュー機構には、プロセス間のメッ
セージ送受を中継するための共有メモリ領域上に形成さ
れたメッセージキューと、キューへのアクセス動作の同
期をプロセス間でとるための3種の同期オブジェクトと
が含まれる。
【0013】第1の同期オブジェクトは、メッセージキ
ューにアクセスしているプロセスが存在しないときシグ
ナル状態を示し、存在するとき非シグナル状態を示す。
第2の同期オブジェクトは、メッセージキュー内に空席
が存在するときシグナル状態を示し、存在しないとき非
シグナル状態を示す。第3の同期オブジェクトは、メッ
セージキュー内にメッセージが存在するときシグナル状
態を示し、存在しないとき非シグナル状態を示す。
ューにアクセスしているプロセスが存在しないときシグ
ナル状態を示し、存在するとき非シグナル状態を示す。
第2の同期オブジェクトは、メッセージキュー内に空席
が存在するときシグナル状態を示し、存在しないとき非
シグナル状態を示す。第3の同期オブジェクトは、メッ
セージキュー内にメッセージが存在するときシグナル状
態を示し、存在しないとき非シグナル状態を示す。
【0014】このようなメッセージキュー機構を用いる
ことにより、複数のプロセスは相互間でメッセージの送
信及び受信を支障なく行うことができる。例えば、第1
の同期オブジェクトがシグナル状態であるときのみ、プ
ロセスに新たなメッセージ送信又は受信が許されるよう
にすることにより、一度に一つのプロセスのみがキュー
にアクセスする排他制御が実現される。また、第2の同
期オブジェクトがシグナル状態であるときのみ新たなメ
ッセージ送信が許され、第3の同期オブジェクトがシグ
ナル状態であるときのみ新たなメッセージ受信が許され
るようにすることにより、各プロセスは同じメッセージ
キューを介してメッセージ送信及び受信のいずれをも行
えるようになり、双方向通信が実現される。
ことにより、複数のプロセスは相互間でメッセージの送
信及び受信を支障なく行うことができる。例えば、第1
の同期オブジェクトがシグナル状態であるときのみ、プ
ロセスに新たなメッセージ送信又は受信が許されるよう
にすることにより、一度に一つのプロセスのみがキュー
にアクセスする排他制御が実現される。また、第2の同
期オブジェクトがシグナル状態であるときのみ新たなメ
ッセージ送信が許され、第3の同期オブジェクトがシグ
ナル状態であるときのみ新たなメッセージ受信が許され
るようにすることにより、各プロセスは同じメッセージ
キューを介してメッセージ送信及び受信のいずれをも行
えるようになり、双方向通信が実現される。
【0015】更に、それら同期オブジェクトによってメ
ッセージキューの状態が管理され、それを全てのプロセ
スが参照できることにより、各プロセスがメッセージ毎
にブロックモード又はノンブロックモードを自由に選択
しても、他のプロセスは支障なく正常に動作することが
できる。従って、メッセージ毎のブロック/ノンブロッ
クモードの選択が可能となる。
ッセージキューの状態が管理され、それを全てのプロセ
スが参照できることにより、各プロセスがメッセージ毎
にブロックモード又はノンブロックモードを自由に選択
しても、他のプロセスは支障なく正常に動作することが
できる。従って、メッセージ毎のブロック/ノンブロッ
クモードの選択が可能となる。
【0016】好適な実施形態では、メッセージ送信関数
及びメッセージ受信関数が各プロセスとメッセージキュ
ー機構との間に介在して、メッセージキュー機構に対す
る操作を代行し、その際、プロセスのブロック/ノンブ
ロックモードの指定にも応じられる。従って、各プロセ
スとしては送受信に当たってそれら関数を呼出すだけで
良いため、各プロセスに対応するアプリケーションプロ
グラムの作成が容易である。
及びメッセージ受信関数が各プロセスとメッセージキュ
ー機構との間に介在して、メッセージキュー機構に対す
る操作を代行し、その際、プロセスのブロック/ノンブ
ロックモードの指定にも応じられる。従って、各プロセ
スとしては送受信に当たってそれら関数を呼出すだけで
良いため、各プロセスに対応するアプリケーションプロ
グラムの作成が容易である。
【0017】更に、従来技術であるメッセージタイプに
よる選択受信の技術を併用することにより、より自由度
の高いメッセージ通信が可能となる。
よる選択受信の技術を併用することにより、より自由度
の高いメッセージ通信が可能となる。
【0018】
【発明の実施形態】以下、本発明の実施形態を図面によ
り詳細に説明する。
り詳細に説明する。
【0019】図1は、本発明に係るメッセージ通信方式
の一実施形態で用いられるメッセージキュー機構を示
す。
の一実施形態で用いられるメッセージキュー機構を示
す。
【0020】マルチプロセスOS、例えばWindows-NT、
で動作するパーソナルコンピュータ上では、図1に示す
ように、複数のプロセス2、4が同時並行的に動作する
ことができる。図1では説明の都合上2つのプロセス
2、4しか示さないが、より多くのプロセスが動作して
いてもよい。それら複数のプロセス2、4間のメッセー
ジ通信手段としてメッセージキュー機構6が設けられ
る。このメッセージキュー機構6には、複数プロセス
2、4が共有する共有メモリ上に形成された、プロセス
間で授受されるべきメッセージM1、M2、…を蓄える
ためのメッセージキュー8が含まれる。更に、このキュ
ー機構6には、プロセス間でメッセージキュー8へのア
クセス動作の同期をとるための3つの同期オブジェクト
(一種の状態変数)10、12、14とが含まれる。図
1では1つのメッセージキュー機構6しか示してない
が、異なるIDを持った複数のメッセージキュー機構6
が並設されていてもよい。
で動作するパーソナルコンピュータ上では、図1に示す
ように、複数のプロセス2、4が同時並行的に動作する
ことができる。図1では説明の都合上2つのプロセス
2、4しか示さないが、より多くのプロセスが動作して
いてもよい。それら複数のプロセス2、4間のメッセー
ジ通信手段としてメッセージキュー機構6が設けられ
る。このメッセージキュー機構6には、複数プロセス
2、4が共有する共有メモリ上に形成された、プロセス
間で授受されるべきメッセージM1、M2、…を蓄える
ためのメッセージキュー8が含まれる。更に、このキュ
ー機構6には、プロセス間でメッセージキュー8へのア
クセス動作の同期をとるための3つの同期オブジェクト
(一種の状態変数)10、12、14とが含まれる。図
1では1つのメッセージキュー機構6しか示してない
が、異なるIDを持った複数のメッセージキュー機構6
が並設されていてもよい。
【0021】メッセージキュー8には、ユーザの指定し
た最大メッセージ数までの個数のメッセージをキューイ
ングすることができる。各メッセージM1、M2、…に
はメッセージタイプを付けることができる。メッセージ
タイプは、従来技術と同様な態様で選択受信のために利
用することができる。
た最大メッセージ数までの個数のメッセージをキューイ
ングすることができる。各メッセージM1、M2、…に
はメッセージタイプを付けることができる。メッセージ
タイプは、従来技術と同様な態様で選択受信のために利
用することができる。
【0022】メッセージキュー8に付属して、3つの同
期オブジェクト、つまり、一つのミューテックスオブジ
ェクト10と、2つのセマフォオブジェクト12、14
とが設けられる(以下、単にミューテックス及びセマフ
ォという)。2つのセマフォのうち、一方のセマフォ1
2は空きセマフォと呼ばれ、他方のセマフォ14は待ち
セマフォと呼ばれる。ミューテックス10及びセマフォ
12、18は待機関数と共に用いられ、シグナル状態と
非シグナル状態の2つの状態をもつ。
期オブジェクト、つまり、一つのミューテックスオブジ
ェクト10と、2つのセマフォオブジェクト12、14
とが設けられる(以下、単にミューテックス及びセマフ
ォという)。2つのセマフォのうち、一方のセマフォ1
2は空きセマフォと呼ばれ、他方のセマフォ14は待ち
セマフォと呼ばれる。ミューテックス10及びセマフォ
12、18は待機関数と共に用いられ、シグナル状態と
非シグナル状態の2つの状態をもつ。
【0023】ミューテックス10は、同時に一つのプロ
セスのみがキュー8へアクセスできるようにするための
排他制御に利用されるものである。即ち、ミューテック
ス10は、いかなるプロセス又はスレッド(以下、プロ
セスと総称する)にも所有されていないとき(つまり、
いかなるプロセスもキュー8にアクセスしていない、又
はアクセスを試みていないとき)にシグナル状態とな
り、いずれかのプロセスに所有されているときは非シグ
ナル状態となる。キュー8にアクセスしようとする(つ
まり、メッセージを送信又は受信しようとする)プロセ
スは、必ずその前にミューテックス10を所有しなけれ
ばならない。その場合、ミューテックス10がシグナル
状態でなければ、そのミューテックス10を所有するこ
とができない。。従って、一度に一つのプロセスのみ
が、ミューテックス10を所有できる(つまり、キュー
8にアクセスできる)。そして、アクセスの操作が終わ
り次第、プロセスはミューテックス10を解放しなけれ
ばならない。
セスのみがキュー8へアクセスできるようにするための
排他制御に利用されるものである。即ち、ミューテック
ス10は、いかなるプロセス又はスレッド(以下、プロ
セスと総称する)にも所有されていないとき(つまり、
いかなるプロセスもキュー8にアクセスしていない、又
はアクセスを試みていないとき)にシグナル状態とな
り、いずれかのプロセスに所有されているときは非シグ
ナル状態となる。キュー8にアクセスしようとする(つ
まり、メッセージを送信又は受信しようとする)プロセ
スは、必ずその前にミューテックス10を所有しなけれ
ばならない。その場合、ミューテックス10がシグナル
状態でなければ、そのミューテックス10を所有するこ
とができない。。従って、一度に一つのプロセスのみ
が、ミューテックス10を所有できる(つまり、キュー
8にアクセスできる)。そして、アクセスの操作が終わ
り次第、プロセスはミューテックス10を解放しなけれ
ばならない。
【0024】セマフォ12、14は、0からある最大値
までのカウント値を持ち、カウント値が0を越える正の
整数値のときにシグナル状態であり、0のときには非シ
グナル状態である。各セマフォ12、14は、シグナル
状態にあるときのみプロセスによって獲得され得る。
までのカウント値を持ち、カウント値が0を越える正の
整数値のときにシグナル状態であり、0のときには非シ
グナル状態である。各セマフォ12、14は、シグナル
状態にあるときのみプロセスによって獲得され得る。
【0025】空きセマフォ12は、メッセージを送信し
ようとするプロセス(以下、送信プロセスという)に対
し、そのメッセージのための空席がキュー8内にあるか
否かを示すために使用される。送信プロセスは、メッセ
ージの送信に先立ち必ず空きセマフォ12を獲得しなけ
ればならない。空きセマフォ12には、キューイングで
きる最大メッセージ個数が初期カウント値としてセット
されており、空きセマフォ12が送信プロセスによって
獲得されたとき、そのカウント値は1だけ減らされる。
また、メッセージがプロセスに受信された時、そのカウ
ント値は1だけ増やされる。従って、空きセマフォ12
のカウント値はそのキュー8内の空席数を示し(1以上
ならシグナル状態)、キュー8が満杯になると0となる
(非シグナル状態)。空きセマフォ12が非シグナル状
態になると、いずれのプロセスも空きセマフォ12がシ
グナル状態に戻るまで、メッセージ送信を待たなくては
ならない。
ようとするプロセス(以下、送信プロセスという)に対
し、そのメッセージのための空席がキュー8内にあるか
否かを示すために使用される。送信プロセスは、メッセ
ージの送信に先立ち必ず空きセマフォ12を獲得しなけ
ればならない。空きセマフォ12には、キューイングで
きる最大メッセージ個数が初期カウント値としてセット
されており、空きセマフォ12が送信プロセスによって
獲得されたとき、そのカウント値は1だけ減らされる。
また、メッセージがプロセスに受信された時、そのカウ
ント値は1だけ増やされる。従って、空きセマフォ12
のカウント値はそのキュー8内の空席数を示し(1以上
ならシグナル状態)、キュー8が満杯になると0となる
(非シグナル状態)。空きセマフォ12が非シグナル状
態になると、いずれのプロセスも空きセマフォ12がシ
グナル状態に戻るまで、メッセージ送信を待たなくては
ならない。
【0026】待ちセマフォ14は、メッセージを受信し
ようとするプロセス(以下、受信プロセスという)に対
し、キュー8内にメッセージがあるか否かを示すために
使用される。受信プロセスは、メッセージの受信に先立
ち必ず待ちセマフォ14を獲得しなければならない。待
ちセマフォ14には、0が初期カウント値としてセット
され、送信プロセスがメッセージを送信したときにその
カウント値は1だけ増やされ、また、受信プロセスが待
ちセマフォ14を獲得した時にそのカウントは1だけ減
らされる。また、受信プロセスが待ちセマフォ14を一
旦獲得したものの、選択受信の対象たるメッセージをキ
ュー8から検索できなかった場合も、待ちセマフォ14
のカウント値は1だけ増やされる(つまり、獲得時の1
減が帳消しされる)。従って、待ちセマフォ14のカウ
ント値は、キュー8内に在るメッセージ数を示し(1以
上ならシグナル状態)、キュー8が完全に空になると0
となる(非シグナル状態)。待ちセマフォ14が非シグ
ナル状態になると、いずれのプロセスも待ちセマフォ1
2がシグナル状態に戻るまで、メッセージ受信を待たな
くてはならない。
ようとするプロセス(以下、受信プロセスという)に対
し、キュー8内にメッセージがあるか否かを示すために
使用される。受信プロセスは、メッセージの受信に先立
ち必ず待ちセマフォ14を獲得しなければならない。待
ちセマフォ14には、0が初期カウント値としてセット
され、送信プロセスがメッセージを送信したときにその
カウント値は1だけ増やされ、また、受信プロセスが待
ちセマフォ14を獲得した時にそのカウントは1だけ減
らされる。また、受信プロセスが待ちセマフォ14を一
旦獲得したものの、選択受信の対象たるメッセージをキ
ュー8から検索できなかった場合も、待ちセマフォ14
のカウント値は1だけ増やされる(つまり、獲得時の1
減が帳消しされる)。従って、待ちセマフォ14のカウ
ント値は、キュー8内に在るメッセージ数を示し(1以
上ならシグナル状態)、キュー8が完全に空になると0
となる(非シグナル状態)。待ちセマフォ14が非シグ
ナル状態になると、いずれのプロセスも待ちセマフォ1
2がシグナル状態に戻るまで、メッセージ受信を待たな
くてはならない。
【0027】以上のようなメッセージキュー機構6を用
いた各プロセスの動作の流れは次の通りである。
いた各プロセスの動作の流れは次の通りである。
【0028】動作しているプロセス2、4のいずれか
が、パラメータに特定のキー情報などを指定して「メッ
セージキューの割り当て」関数を呼び出すことによって
(S1又はR1)、必要サイズの共有メモリ領域が確保
され、指定されたキー情報に1対1で対応したIDをも
ったメッセージキュー機構6が新規生成され、そして、
そのキュー機構6はそれを生成したプロセスに割り当て
られる。このキュー機構6には、確保された共有メモリ
領域上に形成されたメッセージキュー8と、それに付属
するミューテックス10及びセマフォ12、14を含
む。このキュー機構6を使用したい他のプロセスは、パ
ラメータにキュー機構6に対応するキー情報などを指定
して「メッセージキューの割り当て」関数を呼び出すこ
とにより、そのキュー機構8を割り当てられる(つま
り、そのキュー機構6を使用できる)。こうして同一の
キュー機構6を割り当てられた複数のプロセス2、4
は、そのキュー機構6を介して双方向のメッセージ通信
を行うことが可能になる。何れのプロセス2、4もメッ
セージを送信し且つ受信することができる。以下、図1
に示すように一方のプロセス2が送信プロセス、他方の
プロセス4が受信プロセスである場合を例に説明する。
が、パラメータに特定のキー情報などを指定して「メッ
セージキューの割り当て」関数を呼び出すことによって
(S1又はR1)、必要サイズの共有メモリ領域が確保
され、指定されたキー情報に1対1で対応したIDをも
ったメッセージキュー機構6が新規生成され、そして、
そのキュー機構6はそれを生成したプロセスに割り当て
られる。このキュー機構6には、確保された共有メモリ
領域上に形成されたメッセージキュー8と、それに付属
するミューテックス10及びセマフォ12、14を含
む。このキュー機構6を使用したい他のプロセスは、パ
ラメータにキュー機構6に対応するキー情報などを指定
して「メッセージキューの割り当て」関数を呼び出すこ
とにより、そのキュー機構8を割り当てられる(つま
り、そのキュー機構6を使用できる)。こうして同一の
キュー機構6を割り当てられた複数のプロセス2、4
は、そのキュー機構6を介して双方向のメッセージ通信
を行うことが可能になる。何れのプロセス2、4もメッ
セージを送信し且つ受信することができる。以下、図1
に示すように一方のプロセス2が送信プロセス、他方の
プロセス4が受信プロセスである場合を例に説明する。
【0029】送信プロセス2は、メッセージを送信した
いとき、使用するメッセージ機構6のIDや送信メッセ
ージ(送信データ)やブロック/ノンブロックモード指
定を示すブロックフラグなどをパラメータに指定して、
メッセージ「送信」関数を呼び出す(S2)。メッセー
ジ送信関数は、後述するような操作をキュー機構6に対
して行う。その結果、メッセージ送信が成功すれば、メ
ッセージ送信関数はその旨の値(例えば、送信したメッ
セージのサイズ)を送信プロセス2に返却する。しか
し、次の様な場合にはメッセージ送信に失敗する。
いとき、使用するメッセージ機構6のIDや送信メッセ
ージ(送信データ)やブロック/ノンブロックモード指
定を示すブロックフラグなどをパラメータに指定して、
メッセージ「送信」関数を呼び出す(S2)。メッセー
ジ送信関数は、後述するような操作をキュー機構6に対
して行う。その結果、メッセージ送信が成功すれば、メ
ッセージ送信関数はその旨の値(例えば、送信したメッ
セージのサイズ)を送信プロセス2に返却する。しか
し、次の様な場合にはメッセージ送信に失敗する。
【0030】キュー8が満杯である(空きセマフォ1
2が獲得できない)。 他のプロセスがキュー8にアクセスしている(ミュー
テックス10が獲得できない)。
2が獲得できない)。 他のプロセスがキュー8にアクセスしている(ミュー
テックス10が獲得できない)。
【0031】メッセージ送信に失敗した場合、送信関数
は、指定されたモードがブロックかノンブロックかによ
って異なる動作を行う。即ち、ブロックモードの場合、
送信関数は上記失敗の原因が解消するまで待つことにな
り、その間、送信プロセス2はブロックされる。一方、
ノンブロックモードの場合は、送信関数は送信失敗を示
す返却値(例えば、−1)を送信プロセス2に返却し、
それにより送信プロセス2はリターンする。
は、指定されたモードがブロックかノンブロックかによ
って異なる動作を行う。即ち、ブロックモードの場合、
送信関数は上記失敗の原因が解消するまで待つことにな
り、その間、送信プロセス2はブロックされる。一方、
ノンブロックモードの場合は、送信関数は送信失敗を示
す返却値(例えば、−1)を送信プロセス2に返却し、
それにより送信プロセス2はリターンする。
【0032】受信プロセス4は、メッセージを受信した
いとき、メッセージ機構6のIDや受信バッファやブロ
ックフラグなどをパラメータに指定して、メッセージ
「受信」関数を呼び出す(R2)。メッセージ受信関数
は、後述するような操作をキュー機構6に対して行う。
その結果、メッセージ受信が成功すれば、メッセージ受
信関数はその旨の値(例えば、受信したメッセージのサ
イズ)を受信プロセス4に返却する。しかし、次の様な
場合にはメッセージ受信に失敗する。
いとき、メッセージ機構6のIDや受信バッファやブロ
ックフラグなどをパラメータに指定して、メッセージ
「受信」関数を呼び出す(R2)。メッセージ受信関数
は、後述するような操作をキュー機構6に対して行う。
その結果、メッセージ受信が成功すれば、メッセージ受
信関数はその旨の値(例えば、受信したメッセージのサ
イズ)を受信プロセス4に返却する。しかし、次の様な
場合にはメッセージ受信に失敗する。
【0033】キュー8が空である(待ちセマフォ14
が獲得できない)。 他のプロセスがキュー8にアクセスしている(ミュー
テックス10が獲得できない)。 キュー8にメッセージがあるが、いずれも指定したメ
ッセージタイプではない。
が獲得できない)。 他のプロセスがキュー8にアクセスしている(ミュー
テックス10が獲得できない)。 キュー8にメッセージがあるが、いずれも指定したメ
ッセージタイプではない。
【0034】メッセージ受信に失敗した場合、受信関数
は、指定されたモードがブロックかノンブロックかによ
って異なる動作を行う。即ち、ブロックモードの場合、
受信関数は上記失敗の原因が解消するまで待つことにな
り、その間、受信プロセス4はブロックされる。一方、
ノンブロックモードの場合は、受信関数は受信失敗を示
す返却値(例えば、−1)を受信プロセス4に返却し、
それにより受信プロセス4はリターンする。
は、指定されたモードがブロックかノンブロックかによ
って異なる動作を行う。即ち、ブロックモードの場合、
受信関数は上記失敗の原因が解消するまで待つことにな
り、その間、受信プロセス4はブロックされる。一方、
ノンブロックモードの場合は、受信関数は受信失敗を示
す返却値(例えば、−1)を受信プロセス4に返却し、
それにより受信プロセス4はリターンする。
【0035】各プロセス2、4は、パラメータにキュー
機構6のIDなどを指定して「メッセージキューの消
滅」関数を呼びだすことにより、その指定したキュー機
構6の利用を終了することができる。キュー機構6は、
それを利用するプロセスが全く無くなるときにメッセー
ジキューの消滅関数によって消去される。
機構6のIDなどを指定して「メッセージキューの消
滅」関数を呼びだすことにより、その指定したキュー機
構6の利用を終了することができる。キュー機構6は、
それを利用するプロセスが全く無くなるときにメッセー
ジキューの消滅関数によって消去される。
【0036】図2はメッセージ送信関数の動作流れを示
し、図3はメッセージ受信関数の動作流れを示す。
し、図3はメッセージ受信関数の動作流れを示す。
【0037】まず、図2を参照して、メッセージ送信の
動作を説明する。メッセージ送信関数は、まず、空きセ
マフォ12を獲得するために所定の待機関数を呼出す
(S11)。待機関数は、空きセマフォ12がシグナル
状態(つまり、キュー8内に空席がある)ならば、それ
を獲得してそのカウント値を1だけ減少させる(S11
1)。
動作を説明する。メッセージ送信関数は、まず、空きセ
マフォ12を獲得するために所定の待機関数を呼出す
(S11)。待機関数は、空きセマフォ12がシグナル
状態(つまり、キュー8内に空席がある)ならば、それ
を獲得してそのカウント値を1だけ減少させる(S11
1)。
【0038】しかし、キュー8が満杯状態のときは、空
きセマフォ12は非シグナル状態であるため、これを獲
得できない。そのときは、ブロックモードの場合には、
待機関数は空きセマフォ12がシグナル状態に戻るまで
待機し、戻ったところでこれを獲得する。尚、空きセマ
フォ12がシグナル状態に戻るのは、受信プロセスがメ
ッセージを受信して空きセマフォ12のカウント値を増
加させたとき(図3のR16)である。一方、ノンブロ
ックモードの場合は、待機関数は直ちに獲得失敗の旨の
値を返却し、それを受けてメッセージ送信関数が送信失
敗の旨の値を送信プロセス2に返却し(S112)、よ
って送信プロセスはリターンする。
きセマフォ12は非シグナル状態であるため、これを獲
得できない。そのときは、ブロックモードの場合には、
待機関数は空きセマフォ12がシグナル状態に戻るまで
待機し、戻ったところでこれを獲得する。尚、空きセマ
フォ12がシグナル状態に戻るのは、受信プロセスがメ
ッセージを受信して空きセマフォ12のカウント値を増
加させたとき(図3のR16)である。一方、ノンブロ
ックモードの場合は、待機関数は直ちに獲得失敗の旨の
値を返却し、それを受けてメッセージ送信関数が送信失
敗の旨の値を送信プロセス2に返却し(S112)、よ
って送信プロセスはリターンする。
【0039】空きセマフォ12が獲得されると次に、メ
ッセージ送信関数は再び待機関数を呼出して、ミューテ
ックス10の取得を試みる(S12)。待機関数は、ミ
ューテックスがシグナル状態(つまり、他のプロセスに
よって所有されてない)ならばこれを取得する(S12
1)。しかし、ミューテックス10が非シグナル状態で
あるため取得不可能なときには、空きセマフォの獲得失
敗のときと同様に、ブロックモードの場合はシグナル状
態に戻るまで待機し、ノンブロックモードの場合は送信
プロセス2に失敗値を返し(S122)、それにより送
信プロセス2は直ちにリターンする。尚、非シグナル状
態のミューテックス10がシグナル状態に戻るのは、ミ
ューテックス10を所有している他のプロセスがミュー
テックス10を解放したとき(S15、図3のR17又
はR20)である。
ッセージ送信関数は再び待機関数を呼出して、ミューテ
ックス10の取得を試みる(S12)。待機関数は、ミ
ューテックスがシグナル状態(つまり、他のプロセスに
よって所有されてない)ならばこれを取得する(S12
1)。しかし、ミューテックス10が非シグナル状態で
あるため取得不可能なときには、空きセマフォの獲得失
敗のときと同様に、ブロックモードの場合はシグナル状
態に戻るまで待機し、ノンブロックモードの場合は送信
プロセス2に失敗値を返し(S122)、それにより送
信プロセス2は直ちにリターンする。尚、非シグナル状
態のミューテックス10がシグナル状態に戻るのは、ミ
ューテックス10を所有している他のプロセスがミュー
テックス10を解放したとき(S15、図3のR17又
はR20)である。
【0040】ミューテックス10が取得できると、それ
は他のプロセスに対してキュー8をロックした(つま
り、アクセスを禁じた)ことを意味する。次に、メッセ
ージ送信関数は、このロックしたキュー8に、送信すべ
きメッセージを書込む(S13)。このキューイング操
作が終わると、メッセージ送信関数は、新たなメッセー
ジがキュー8に追加されたことを他のプロセスに知らせ
るために、待ちセマフォ14を1だけ解放する(つま
り、待ちセマフォ14のカウント値を1だけ増やす)。
続いて、メッセージ送信関数は、キュー8のロックを解
除するため、ミューテックス10を解放し(S15)、
送信動作を終える。
は他のプロセスに対してキュー8をロックした(つま
り、アクセスを禁じた)ことを意味する。次に、メッセ
ージ送信関数は、このロックしたキュー8に、送信すべ
きメッセージを書込む(S13)。このキューイング操
作が終わると、メッセージ送信関数は、新たなメッセー
ジがキュー8に追加されたことを他のプロセスに知らせ
るために、待ちセマフォ14を1だけ解放する(つま
り、待ちセマフォ14のカウント値を1だけ増やす)。
続いて、メッセージ送信関数は、キュー8のロックを解
除するため、ミューテックス10を解放し(S15)、
送信動作を終える。
【0041】次に、図3を参照して、メッセージ受信動
作を説明する。メッセージ受信関数は、まず、待ちセマ
フォ14の獲得のために所定の待機関数を呼出す(R1
1)。待機関数は、待ちセマフォ14がシグナル状態
(つまり、キュー8内にメッセージがある)ならば、そ
れを獲得してそのカウント値を1だけ減少させる(R1
11)。
作を説明する。メッセージ受信関数は、まず、待ちセマ
フォ14の獲得のために所定の待機関数を呼出す(R1
1)。待機関数は、待ちセマフォ14がシグナル状態
(つまり、キュー8内にメッセージがある)ならば、そ
れを獲得してそのカウント値を1だけ減少させる(R1
11)。
【0042】しかし、キュー8内にメッセージが無いと
きは、待ちセマフォ14は非シグナル状態であるため、
これを獲得できない。そのときは、ブロックモードの場
合には、待機関数は待ちセマフォ14がシグナル状態に
戻るまで待機し、戻ったところでこれを獲得する。尚、
待ちセマフォ12がシグナル状態に戻るのは、送信プロ
セスがメッセージを送信して待ちセマフォ14のカウン
ト値を増加させたとき(図2のS14)である。一方、
ノンブロックモードの場合は、待機関数は直ちに獲得失
敗の旨の値を返却し、それを受けてメッセージ受信関数
が受信失敗の旨の値を受信プロセス4に返却し(R11
2)、よって受信プロセス4はリターンする。
きは、待ちセマフォ14は非シグナル状態であるため、
これを獲得できない。そのときは、ブロックモードの場
合には、待機関数は待ちセマフォ14がシグナル状態に
戻るまで待機し、戻ったところでこれを獲得する。尚、
待ちセマフォ12がシグナル状態に戻るのは、送信プロ
セスがメッセージを送信して待ちセマフォ14のカウン
ト値を増加させたとき(図2のS14)である。一方、
ノンブロックモードの場合は、待機関数は直ちに獲得失
敗の旨の値を返却し、それを受けてメッセージ受信関数
が受信失敗の旨の値を受信プロセス4に返却し(R11
2)、よって受信プロセス4はリターンする。
【0043】待ちセマフォ14が獲得されると次に、メ
ッセージ受信関数は再び待機関数を呼出して、ミューテ
ックス10の取得を試みる(R12)。この動作は既に
説明した送信動作におけるそれと同じであり、ミューテ
ックス10が非シグナル状態で取得不可能なときには、
ブロックモードの場合はシグナル状態に戻るまで待機
し、ノンブロックモードの場合は受信プロセス4を直ち
にリターンさせる(R122)。
ッセージ受信関数は再び待機関数を呼出して、ミューテ
ックス10の取得を試みる(R12)。この動作は既に
説明した送信動作におけるそれと同じであり、ミューテ
ックス10が非シグナル状態で取得不可能なときには、
ブロックモードの場合はシグナル状態に戻るまで待機
し、ノンブロックモードの場合は受信プロセス4を直ち
にリターンさせる(R122)。
【0044】ミューテックス10が取得できると、メッ
セージ受信関数は、キュー8の中から、要求するメッセ
ージタイプに一致するメッセージを検索する(R1
3)。この検索の結果、要求したタイプのメッセージが
見つかると、メッセージ受信関数は、そのメッセージを
キュー8から取り出して、受信プロセス4が指定した受
信バッファへ書込む(R15)。これにより、キュー8
に空席が1つ増えたので、それを他のプロセスに知らせ
るために、メッセージ受信関数は、空きセマフォ12を
1だけ解放する(R16)。続いて、メッセージ受信関
数は、キュー8のロックを解除するためにミューテック
ス10を解放し(R17)、そして受信成功の旨の値を
受信プロセス4に返却して受信動作を終える(R1
8)。
セージ受信関数は、キュー8の中から、要求するメッセ
ージタイプに一致するメッセージを検索する(R1
3)。この検索の結果、要求したタイプのメッセージが
見つかると、メッセージ受信関数は、そのメッセージを
キュー8から取り出して、受信プロセス4が指定した受
信バッファへ書込む(R15)。これにより、キュー8
に空席が1つ増えたので、それを他のプロセスに知らせ
るために、メッセージ受信関数は、空きセマフォ12を
1だけ解放する(R16)。続いて、メッセージ受信関
数は、キュー8のロックを解除するためにミューテック
ス10を解放し(R17)、そして受信成功の旨の値を
受信プロセス4に返却して受信動作を終える(R1
8)。
【0045】また、ステップR13において、要求する
タイプのメッセージがキュー8内に無かったときは、最
初に取得した待ちセマフォ14のカウント値を元に戻す
ため、待ちセマフォ14のカウント値を1だけ増加する
(R19)。これにより、新たなメッセージの送信を待
っている他の受信プロセスに、受信の機会を逐次に与え
ることができるようになる。続いて、メッセージ受信関
数は、キュー8のロックを解除するためにミューテック
ス10を解放し(R20)、そして、ブロックモードの
場合は新たなメッセージの送信を待ち(R23)、その
間、受信ブロック4はブロックされることになる。一
方、ノンブロックモードの場合は、メッセージ受信関数
は受信失敗の旨の値を受信プロセス4に返却し(R2
2)、それにより、受信プロセス4はリターンする。
タイプのメッセージがキュー8内に無かったときは、最
初に取得した待ちセマフォ14のカウント値を元に戻す
ため、待ちセマフォ14のカウント値を1だけ増加する
(R19)。これにより、新たなメッセージの送信を待
っている他の受信プロセスに、受信の機会を逐次に与え
ることができるようになる。続いて、メッセージ受信関
数は、キュー8のロックを解除するためにミューテック
ス10を解放し(R20)、そして、ブロックモードの
場合は新たなメッセージの送信を待ち(R23)、その
間、受信ブロック4はブロックされることになる。一
方、ノンブロックモードの場合は、メッセージ受信関数
は受信失敗の旨の値を受信プロセス4に返却し(R2
2)、それにより、受信プロセス4はリターンする。
【0046】以上、本発明の一実施形態を説明したが、
これは例示にすぎず、本発明は他の種々の態様によって
も実施することができる。例えば、上記実施形態はWind
ows-NTで動作するパーソナルコンピュータに適合させた
ものであるが、他のマルチプロセスOSで動作するパー
ソナルコンピュータにおいては、そのOSに適合した形
態で本発明を実施することが可能である。
これは例示にすぎず、本発明は他の種々の態様によって
も実施することができる。例えば、上記実施形態はWind
ows-NTで動作するパーソナルコンピュータに適合させた
ものであるが、他のマルチプロセスOSで動作するパー
ソナルコンピュータにおいては、そのOSに適合した形
態で本発明を実施することが可能である。
【図面の簡単な説明】
【図1】本発明に係るメッセージ通信方式の一実施形態
で用いられるメッセージキュー機構を示すブロック図。
で用いられるメッセージキュー機構を示すブロック図。
【図2】メッセージ送信関数の動作流れを示すフローチ
ャート。
ャート。
【図3】メッセージ受信関数の動作流れを示すフローチ
ャート。
ャート。
2、4 プロセス 6 メッセージキュー機構 8 メッセージキュー 10 ミューテックス 12 空きセマフォ 14 待ちセマフォ
Claims (5)
- 【請求項1】 マルチプロセスで動作するパーソナルコ
ンピュータ上で行われるプロセス間のメッセージ通信方
式において、 複数のプロセスに共有される共有メモリ領域と、 この共有メモリ領域を利用して形成されたメッセージキ
ュー機構とを備え、 前記メッセージキュー機構が、 前記共有メモリ領域上に形成された、プロセス間でのメ
ッセージの送受を中継するためのメッセージキューと、 前記メッセージキューにアクセスしているプロセスが存
在しないときシグナル状態を示し、存在するとき非シグ
ナル状態を示す第1の同期オブジェクトと、 前記メッセージキュー内に空席が存在するときシグナル
状態を示し、存在しないとき非シグナル状態を示す第2
の同期オブジェクトと、 前記メッセージキュー内にメッセージが存在するときシ
グナル状態を示し、存在しないとき非シグナル状態を示
す第3の同期オブジェクトと、を含むことを特徴とする
メッセージ通信方式。 - 【請求項2】 請求項1記載の方式において、 メッセージを送信しようとする第1のプロセスからの呼
出に応答し、前記メッセージキュー機構内の前記第1及
び第2の同期オブジェクトが共にシグナル状態であると
きのみ、前記第1のプロセスが送信しようとするメッセ
ージを前記メッセージキューに書込むメッセージ送信関
数と、 メッセージを受信しようとする第2のプロセスからの呼
出に応答し、前記メッセージキュー機構内の前記第1及
び第3の同期オブジェクトが共にシグナル状態であると
きのみ、前記第1のプロセスが受信しようとするメッセ
ージを前記メッセージキューから取り出すメッセージ受
信関数と、を更に備えたことを特徴とするメッセージ通
信方式。 - 【請求項3】 請求項2記載の方式において、 前記メッセージ送信関数が、前記第1及び第2の同期オ
ブジェクトの少なくとも一方が非シグナル状態であると
き、前記第1のプロセスが指定したブロックモードに応
じて、前記第1のプロセスをブロックするための第1の
動作及び前記第1のプロセスをリターンさせるための第
2の動作のいずれか一方を選択的に行ない、 前記メッセージ受信関数が、前記第1及び第3の同期オ
ブジェクトの少なくとも一方が非シグナル状態であると
き、前記第2のプロセスが指定したブロックモードに応
じて、前記第2のプロセスをブロックするための第3の
動作及び前記第2のプロセスをリターンさせるための第
4の動作のいずれか一方を選択的に行なうことを特徴と
するメッセージ通信方式。 - 【請求項4】 請求項1載の方式において、 各メッセージには、その送信時にメッセージタイプを付
加することができ、 前記第2のプロセスは、受信したいメッセージタイプを
前記メッセージ受信関数に対して指定することができ、 前記メッセージ受信関数は、指定されたメッセージタイ
プに一致するメッセージタイプを選択的に前記メッセー
ジキューから取り出すことを特徴とするメッセージ通信
方式。 - 【請求項5】 マルチプロセスで動作するパーソナルコ
ンピュータ上で行われるプロセス間のメッセージ通信方
法において、 複数のプロセスに共有される共有メモリ領域を確保する
過程と、 この共有メモリ領域を利用してメッセージキュー機構を
形成する過程とを備え、 前記メッセージキュー機構が、 前記共有メモリ上に形成された、プロセス間でのメッセ
ージの送受を中継するためのメッセージキューと、 前記メッセージキューにアクセスしているプロセスが存
在しないときシグナル状態を示し、存在するとき非シグ
ナル状態を示す第1の同期オブジェクトと、 前記メッセージキュー内に空席が存在するときシグナル
状態を示し、存在しないとき非シグナル状態を示す第2
の同期オブジェクトと、 前記メッセージキュー内にメッセージが存在するときシ
グナル状態を示し、存在しないとき非シグナル状態を示
す第3の同期オブジェクトと、を含み、 更に、前記第1及び第2の同期オブジェクトの状態に基
づいて、各プロセスのメッセージ送信動作を制御する過
程と、 前記第1及び第3の同期オブジェクトの状態に基づい
て、各プロセスのメッセージ受信動作を制御する過程
と、を備えたことを特徴とするメッセージ通信方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP7286570A JPH09101901A (ja) | 1995-10-06 | 1995-10-06 | マルチプロセスで動作するパーソナルコンピュータ上で行われるプロセス間のメッセージ通信方式及びメッセージ通信方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP7286570A JPH09101901A (ja) | 1995-10-06 | 1995-10-06 | マルチプロセスで動作するパーソナルコンピュータ上で行われるプロセス間のメッセージ通信方式及びメッセージ通信方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH09101901A true JPH09101901A (ja) | 1997-04-15 |
Family
ID=17706127
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP7286570A Pending JPH09101901A (ja) | 1995-10-06 | 1995-10-06 | マルチプロセスで動作するパーソナルコンピュータ上で行われるプロセス間のメッセージ通信方式及びメッセージ通信方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH09101901A (ja) |
Cited By (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2006500649A (ja) * | 2002-09-23 | 2006-01-05 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | ミドルウェア・アプリケーション・メッセージ/イベント・モデル |
| JP2006190265A (ja) * | 2004-12-30 | 2006-07-20 | Microsoft Corp | サーバー待ち行列システムおよび方法 |
| US7761504B2 (en) | 2006-07-19 | 2010-07-20 | Panasonic Corporation | Message communication device |
| CN102355423A (zh) * | 2011-10-19 | 2012-02-15 | 迈普通信技术股份有限公司 | 转发资源访问方法和路由系统 |
| JP2014527215A (ja) * | 2011-06-30 | 2014-10-09 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 通信環境において通信を容易にするためのコンピュータ・プログラム製品、コンピュータ・システムおよび方法 |
| JP2015527658A (ja) * | 2012-08-02 | 2015-09-17 | アマデウス エス.エイ.エス | 分散並列環境における非同期メッセージのシーケンシングの方法、システム、およびコンピュータプログラム製品 |
| CN108268214A (zh) * | 2017-12-15 | 2018-07-10 | 中国航空工业集团公司西安飞行自动控制研究所 | 一种多线程快速周期串行外设操作非易失存储器的方法 |
| JP2024502340A (ja) * | 2021-11-23 | 2024-01-18 | シャンハイ トサン テクノロジー リミテッド | ソフトウェアホストの構築方法、構築システム、並びにソフトウェアホスト及びシミュレーション装置 |
| CN117672279A (zh) * | 2022-09-06 | 2024-03-08 | 美光科技公司 | 用于存储器控制器的自适应温度保护 |
| US12067238B2 (en) | 2022-03-22 | 2024-08-20 | Kioxia Corporation | Memory system and control method of memory system for shared memory based message routing module |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS55129823A (en) * | 1979-03-27 | 1980-10-08 | Toshiba Corp | Information processing system |
-
1995
- 1995-10-06 JP JP7286570A patent/JPH09101901A/ja active Pending
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS55129823A (en) * | 1979-03-27 | 1980-10-08 | Toshiba Corp | Information processing system |
Cited By (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2006500649A (ja) * | 2002-09-23 | 2006-01-05 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | ミドルウェア・アプリケーション・メッセージ/イベント・モデル |
| JP2006190265A (ja) * | 2004-12-30 | 2006-07-20 | Microsoft Corp | サーバー待ち行列システムおよび方法 |
| US7761504B2 (en) | 2006-07-19 | 2010-07-20 | Panasonic Corporation | Message communication device |
| JP2014527215A (ja) * | 2011-06-30 | 2014-10-09 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 通信環境において通信を容易にするためのコンピュータ・プログラム製品、コンピュータ・システムおよび方法 |
| CN102355423A (zh) * | 2011-10-19 | 2012-02-15 | 迈普通信技术股份有限公司 | 转发资源访问方法和路由系统 |
| CN102355423B (zh) * | 2011-10-19 | 2013-11-27 | 迈普通信技术股份有限公司 | 转发资源访问方法和路由系统 |
| JP2015527658A (ja) * | 2012-08-02 | 2015-09-17 | アマデウス エス.エイ.エス | 分散並列環境における非同期メッセージのシーケンシングの方法、システム、およびコンピュータプログラム製品 |
| CN108268214A (zh) * | 2017-12-15 | 2018-07-10 | 中国航空工业集团公司西安飞行自动控制研究所 | 一种多线程快速周期串行外设操作非易失存储器的方法 |
| CN108268214B (zh) * | 2017-12-15 | 2021-04-20 | 中国航空工业集团公司西安飞行自动控制研究所 | 一种多线程快速周期串行外设操作非易失存储器的方法 |
| JP2024502340A (ja) * | 2021-11-23 | 2024-01-18 | シャンハイ トサン テクノロジー リミテッド | ソフトウェアホストの構築方法、構築システム、並びにソフトウェアホスト及びシミュレーション装置 |
| US12067238B2 (en) | 2022-03-22 | 2024-08-20 | Kioxia Corporation | Memory system and control method of memory system for shared memory based message routing module |
| CN117672279A (zh) * | 2022-09-06 | 2024-03-08 | 美光科技公司 | 用于存储器控制器的自适应温度保护 |
| US12411618B2 (en) | 2022-09-06 | 2025-09-09 | Micron Technology, Inc. | Adaptive temperature protection for a memory controller |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4852194B2 (ja) | デジタルデータネットワークにおけるメッセージフローを調整するシステムおよび方法 | |
| US5434975A (en) | System for interconnecting a synchronous path having semaphores and an asynchronous path having message queuing for interprocess communications | |
| US5931915A (en) | Method for processing early arrival messages within a multinode asynchronous data communications system | |
| US5613068A (en) | Method for transferring data between processors on a network by establishing an address space for each processor in each other processor's | |
| US6640245B1 (en) | Real-time channel-based reflective memory based upon timeliness requirements | |
| CA2245963C (en) | Distributed kernel operating system | |
| US10642780B2 (en) | Atomic access to object pool over RDMA transport network | |
| CA2011935A1 (en) | Dual-path computer interconnect system with four-ported packet memory control | |
| JPH06309252A (ja) | 相互接続インタフェース | |
| JPH05233423A (ja) | データ処理システム用のセマフォ機構 | |
| JP4255833B2 (ja) | コンピュータ・システムの入出力ノードにおけるタグ付けおよび調停メカニズム | |
| JPH01142964A (ja) | 記憶装置管理方法 | |
| JP2006340354A (ja) | 分散カーネルオペレーティングシステム | |
| JPH05227253A (ja) | 効率的な論理プロトコルを使用した共用メモリと通信アダプタ間のメッセージ交換方法 | |
| US5878226A (en) | System for processing early arrival messages within a multinode asynchronous data communications system | |
| JPH0685868A (ja) | 順序を保持したデータ・ストリーム伝送におけるリンク切替え方法 | |
| US6098105A (en) | Source and destination initiated interrupt method for message arrival notification | |
| CN107168898B (zh) | 通过rdma传输网络对对象池的原子访问 | |
| JP3550402B2 (ja) | 内部接続アーキテクチャを用いるデータ通信のための方法、システムおよびコンピュータプログラム商品 | |
| JPH09247192A (ja) | リアルタイム通信方式 | |
| JPH10143486A (ja) | 並列計算機におけるデータ送受信方法 | |
| JP2002077308A (ja) | 情報処理装置、情報処理方法及びメモリ媒体 | |
| Whitcroft et al. | The CBIC: Architectural support for message passing | |
| JP3904251B2 (ja) | 排他制御方法 | |
| JPH0581210A (ja) | クラスタ・マルチプロセツサ協調処理方法 |