(57)【特許請求の範囲】
【請求項１】
複数のノードがネットワークを介して相互接続され、各ノードは、データないしメッセージを生成する1個又は複数個のプロセスと、他のノードとデータを共有するために用いられる分散共有メモリを有するメモリと、分散共有メモリへのデータの書込みを制御する制御手段と、分散共有メモリに書き込まれたデータのネットワークへの送信及びネットワークから送られてきたデータの受信を行うデータ転送装置とを具え、各ノードにおいて、自己の分散共有メモリにデータが書き込まれると、自己のデータ転送装置が、当該データを自動的に転送先のノードの分散共有メモリにそれぞれ転送する分散共有メモリを用いたプロセス間通信方法において、
各ノードは、プロセスが生成したデータを一時的に格納するローカルバッファを有し、前記制御手段は、プロセスにより生成されたデータのデータサイズが所定のデータ長以下の場合当該データを分散共有メモリに直接書込み、生成されたデータのデータサイズが前記所定のデータ長を超える場合当該データを前記ローカルバッファに一時的に書込んだ後分散共有メモリに書込むことを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項２】
請求項１に記載の分散共有メモリを用いたプロセス間通信方法において、前記プロセスは生成したデータのデータサイズを前記制御手段に通知し、当該制御手段は、通知されたデータサイズが所定のデータ長を超えるか否か判定し、この判定結果に基づいてローカルバッファ又は分散共有メモリにデータを書込むように制御することを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項３】
請求項２に記載の分散共有メモリを用いたプロセス間通信方法において、前記制御手段は、前記プロセスにより生成されたデータがローカルバッファに書込まれている期間中に別のプロセスにより生成された所定のデータ長以下のデータサイズの小規模データを優先的に分散共有メモリに直接書込むように制御することを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項４】
請求項１から３でのいずれか1項に記載の分散共有メモリを用いたプロセス間通信方法において、前記プロセスが生成したデータが前記所定のデータ長を超える場合、制御手段は、前記ローカルバッファに書込まれたデータが所定の大きさのバッファ容量に達した際、当該書込まれた所定のバッファ容量のデータを一括して分散共有メモリに書込むように書込み制御することを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項５】
請求項４に記載の分散共有メモリを用いたプロセス間通信方法において、前記制御手段は、プロセスから通知されたデータサイズに応じて前記一括転送される所定のバッファ容量の大きさを決定することを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項６】
請求項１から５までのいずれか1項に記載の分散共有メモリを用いたプロセス間通信方法において、前記制御手段は、プロセスから受け取った転送すべきデータのデータサイズに基づいて、書込み用いられるローカルバッファの容量を決定し、ローカルバッファへの書込み領域を確保することを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項７】
請求項１から６までのいずれか1項に記載の分散共有メモリを用いたプロセス間通信方法において、前記制御手段は、プロセスからデータの書込み要求を受け取った際、当該データのデータサイズが前記所定のデータ長以下の場合分散共有メモリへの書込み領域を指定する情報を付与し、データサイズが所定のデータ長を超える場合ローカルバッファへの書込み領域を指定する情報を付与することを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項８】
請求項１から７までのいずれか1項に記載の分散共有メモリを用いたプロセス間通信方法において、前記プロセスは、分散共有メモリに優先的に書込むべきことを示すコマンドを生成する機能を有し、前記制御手段は、当該優先的に書込むべきコマンドにより指示されたデータについてはデータサイズにかかわらず分散共有メモリに直接当該データを書込むように制御することを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項９】
請求項１から８までのいずれか1項に記載の分散共有メモリを用いたプロセス間通信方法において、前記ローカルバッファを、ＯＳ又はＡＰ層に設けたことを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項１０】
請求項１から９までのいずれか1項に記載の分散共有メモリを用いたプロセス間通信方法において、前記制御手段はＯＳ又はＡＰ層に設けられていることを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項１１】
請求項１から１０までのいずれか1項に記載の分散共有メモリを用いたプロセス間通信方法において、前記データ転送装置により受信されたデータを前記ローカルバッファに格納し、その後プロセスに転送することを特徴とする分散共有メモリ用いを用いたプロセス間通信方法。
【請求項１２】
分散共有メモリを用いたノード間通信システムに用いられ、通信機能を有するデータ処理装置において、
データを生成する1個又は複数個のプロセスと、他のノードとデータを共有するために用いられる分散共有メモリを有するメモリと、分散共有メモリへのデータの書込みを制御する制御手段と、分散共有メモリに書き込まれたデータのネットワークへの送信及びネットワークから送られてきたデータの受信を行うデータ転送装置と、前記プロセスが生成したデータを一時的に蓄積するローカルバッファとを具え、
前記制御手段は、前記プロセスにより生成されたデータのデータサイズが所定のデータ長以下の場合当該データを分散共有メモリに直接書込み、生成されたデータのデータサイズが所定のデータ長を超える場合前記ローカルバッファに一時的に書込んだ後分散共有メモリに書込まれるように制御することを特徴とするデータ処理装置。
【請求項１３】
請求項１２に記載のデータ処理装置において、前記プロセスは生成したデータのデータサイズを前記制御手段に通知し、当該制御手段は、通知されたデータサイズが所定のデータ長を超えるか否か判定し、この判定結果に基づいてローカルバッファ又は分散共有メモリにデータを書込むように制御することを特徴とするデータ処理装置。
【請求項１４】
請求項１３に記載のデータ処理装置において、前記制御手段は、前記プロセスにより生成されたデータがローカルバッファに書込まれている期間中に別のプロセスにより生成された所定のデータ長以下のデータサイズの小規模データを優先的に分散共有メモリに直接書込むように制御することを特徴とするデータ処理装置。
【請求項１５】
請求項１２から１４までのいずれか1項に記載のデータ処理装置において、前記プロセスが生成したデータが前記所定のデータ長を超える場合、前記制御手段は、制御手段は、前記ローカルバッファに書込まれたデータが所定の大きさのバッファ容量に達した際、当該書込まれた所定のバッファ容量のデータを一括して分散共有メモリに書込むように制御することを特徴とするデータ処理装置。
【請求項１６】
請求項１５に記載のデータ処理装置において、前記制御手段は、プロセスから通知されたデータサイズに応じて前記一括転送される所定のバッファ容量の大きさを決定することを特徴とするデータ処理装置。
【請求項１７】
請求項１２から１６までのいずれか1項に記載の分散共有メモリを用いたプロセス間通信方法において、前記制御手段は、プロセスから受け取った転送すべきデータのデータサイズに基づいて、書込みに用いられるローカルバッファの容量を決定し、ローカルバッファへの書込み領域を確保することを特徴とするデータ処理装置。
【請求項１８】
請求項１２から１５までのいずれか1項に記載のデータ処理装置において、前記制御手段は、プロセスからデータの書込み要求を受け取った際、当該データのデータサイズが前記所定のデータ長以下の場合分散共有メモリへの書込み領域を指定する情報を付与し、データ長が所定のデータ容量を超える場合ローカルバッファへの書込み領域を指定する情報を付与することを特徴とするデータ処理装置。
【請求項１９】
請求項１２から１８までのいずれか1項に記載のデータ処理装置において、前記プロセスは、分散共有メモリに優先的に書込むべきことを示すコマンドを生成する機能を有し、前記制御手段は、当該優先的に書込むべきコマンドにより指示されたデータについてはデータサイズにかかわらず分散共有メモリに直接当該データを書込むように制御することを特徴とするデータ処理装置。
【請求項２０】
請求項１から８までのいずれか1項に記載の分散共有メモリを用いたプロセス間通信方法において、前記ローカルバッファを、ＯＳ又はＡＰ層に設けたことを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項２１】
請求項１２から２０までのいずれか1項に記載のデータ処理装置において、前記制御手段はＯＳ又はＡＰ層に設けられていることを特徴とするデータ処理装置。
【請求項２２】
請求項１２から２１までのいずれか1項に記載のデータ処理装置において、前記データ転送装置により受信されたデータを前記ローカルバッファに格納し、その後プロセスに転送することを特徴とするデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、分散共有メモリを用いたプロセス間通信システムに関するものである。特に、本発明は、OS或いはAP（Application）層に設けたローカルバッファでプロセス或いは転送メッセージに応じた規模のメッセージ送信を一時的に保留して送信優先度レベルの高いプロセスの送信をレベルの低いプロセスの送信に割込ませるスケジューリングにより、ノード間のメッセージ転送において実時間性の高いメッセージを実時間性の低いメッセージに妨げられることなく送信する優先度制御を行う分散共有メモリを用いたプロセス間通信システムに関するものである。
さらに、本発明は、分散共有メモリを用いたプロセス間通信に用いられる通信機能を有するデータ処理装置に関するものである。
【０００２】
【従来の技術】
ノード間ネットワークではソフトウェア負荷の少ないハードウェア組込みの通信手段が注目され、分散共有メモリを用いた通信方式もそのレイテンシの小ささから有効である。ところで、プロセッサ間を接続する高速通信方式は、プロセス（或いはAP）の特性にあわせて設計される場合が多く、特性が異なるプロセス（或いはAP）には、別の高速通信システムを用いることになる。即ち、各々の通信方式はその適用領域が比較的制限されている。例えば、分散共有メモリを用いた高速通信方式では、実時間性の高いメッセージを送信している際に大規模メッセージ送信との混在が生じるとネットワークが隘路となることで大規模メッセージ送信が完了するまでの間、実時間性の高いメッセージの送信が待たされ、実時間性の高いメッセージの送信が妨げられる場合がある。また、大規模メッセージを転送するためのメッセージ転送専用の通信方式の場合は、一般に実時間メッセージ送信を目的にしていないこと並びに通常送信装置に引渡すメッセージ全体を一旦バッファに格納するためバッファリングの時間を要すること等から、大規模メッセージ転送用のシステムを高頻度な実時間メッセージ通信にも利用することは困難であった。
【０００３】
従って、プロセスから高速のデータ転送を行う装置又はシステムに至る経路はプロセス（或いはAP）の特性毎に異なり、プロセス（或いはAP）毎に異なった高速通信方式を実装或いは切替えて使用する等で対処せざるを得ず、切替えのためのプログラム或いは装置の導入による費用の増加、ホストプロセッサ資源利用の増加等の負担がかかる。
【０００４】
【発明が解決しようとする課題】
このように、従来のノード間データ転送技術においては、高速通信装置を用いて一括して送信される大規模なメッセージと実時間性が高いメッセージの送信が混在すると、ネットワークが隘路になることで大規模メッセージ送信が継続する間は実時間性の高いメッセージの送信が妨げられる不都合が生じていた。特に、ファイル転送のような大規模転送専用の装置を用いると実時間性の高いメッセージの送信は困難であり、同一の通信装置を用いて実時間性の高いメッセージ送信と大規模メッセージの送信を共に行いにくい、という問題がある。分散共有メモリを用いた高速通信方式では、元来対象としていた制御情報のような小規模メッセージのみならず、大規模メッセージでも高速性が要求される。
【０００５】
本発明の目的は、一般に実時間性の高いメッセージ送信と比較的実時間性の低い大規模メッセージの送信を共に行いにくいという問題を、分散共有メモリを用いた高速通信方式のみを用いて比較的小規模の改造のみにより解決し、多様な実時間性や多様なデータ規模のメッセージを発生するプロセスの送信を行う際、複数の高速通信装置を実装し切替えて用いたり或いは他の通信方式に入れ替えることなく、プロセスの特性、特に転送メッセージの実時間性を損なわずに送信できる分散共有メモリを用いた高速通信方式を提供することにある。
さらに、本発明の目的は、複数のプロセスを有し分散共有メモリを用いたプロセス間通信方式に用いられるデータ処理装置において、実時間性を必要とするデータないしメッセージを優先的に転送することができるデータ処理装置を実現することにある。
さらに、本発明の別の目的は、分散共有メモリを用いた高速通信方式をより広範囲な分散実時間通信機能として提供することにある。
【０００６】
【課題を解決するための手段】
上記目的を達成するため、本発明による分散共有メモリを用いた通信システムは、複数のノードがネットワークを介して相互接続され、各ノードは、データないしメッセージを生成する1個又は複数個のプロセスと、他のノードとデータを共有するために用いられる分散共有メモリを有するメモリと、分散共有メモリへのデータの書込みを制御する制御手段と、分散共有メモリに書き込まれたデータのネットワークへの送信及びネットワークから送られてきたデータの受信を行うデータ転送装置とを具え、各ノードにおいて、自己の分散共有メモリにデータが書き込まれると、自己のデータ転送装置が、当該データを自動的に転送先のノードの分散共有メモリにそれぞれ転送する分散共有メモリを用いたプロセス間通信方法において、
各ノードは、プロセスが生成したデータを一時的に格納するローカルバッファを有し、前記制御手段は、プロセスにより生成されたデータのデータサイズが所定のデータ長以下の場合当該データを分散共有メモリに直接書込み、生成されたデータのデータサイズが前記所定のデータ長を超える場合当該データを前記ローカルバッファに一時的に書込んだ後分散共有メモリに書込むことを特徴とする。
【０００７】
本発明では、書込み制御手段は、プロセスから受け取った処理メッセージについて所定のメッセージ長又はデータ長と比較し、所定のデータ長ないしメッセージ長以下のデータないしメッセージについては直接分散共有メモリに書込み、所定のメッセージ長を超える場合当該処理メッセージについてはＯＳ又はＡＰ層に設けたローカルバッファに書込み、その後分散共有メモリに書込まれるように制御する。この制御により、実時間性レベルの高いメッセージは優先的に分散共有メモリに書込まれることになる。この結果、メッセージ長の異なる種々のメッセージが混在した場合であっても、複雑な優先制御機構を設けることなく、実時間性の高いメッセージを優先的に送信することができる。尚、本明細書において、「ノード」は、通信機能を有するデータ処理装置を意味し、アプリケーションとしてのプロセスを含む場合だけでなくＰＭ（プロセッサモジュール）及びプロセッサを含むものと理解される。
【０００８】
また、ローカルバッファに仮想番地を与え、実分散共有メモリとの番地変換機能を設けることでOS或いはAP層からはあたかも実分散共有メモリにアクセスするのと同じ過程で高速通信方式を利用することができる。また、ローカルバッファを割り当てる際、プロセス或いはメッセージの実時間性或いはメッセージ規模に応じてOSが規模を定めた一括転送単位毎に割り当て、プロセス或いはメッセージに求められるメッセージの保留規模即ち保留時間を設定し、優先度の高いプロセス或いはメッセージの送信が先行して行われやすくすることができる。この結果、実装形態の簡単な変更又は修正を行うだけで、分散共有メモリを用いたプロセス間通信におけるノード間のメッセージ転送の優先制御を実現することができる。ここで、一括転送単位とは、ローカルバッファにメッセージを一時的に蓄積する場合に、予め定めた一定のデータサイズ毎に区切って蓄積し、当該データサイズ単位でローカルバッファから分散共有メモリにメッセージを書込むが、その一定のデータサイズを持つデータの単位を意味するものとする。
【０００９】
また、一括転送単位内の全領域単位（MB）がアクセスされたことを契機に送信を行う場合、一括転送単位で実共有メモリの内容を上書き（受信の場合は実共有メモリにローカルバッファ内容を上書き）することによりプロセスが意識することなく転送が行われる。尚、ＭＢ（Message Buffer）は、データを書込み分散共有メモリ内の領域単位を意味する。
【００１０】
また、プロセス側から強制的に前記上書きを起動することにより、ローカルバッファと実共有メモリとの間の同期をとることにより、最新のメッセージを随時読み書きできる、即ち、転送先のノードと通信することができる。
【００１１】
また、OSが与える優先度を一括転送単位の規模を用いて示すことで、1個のパラメータでメッセージがネットワークに送出されるまでの保留時間とOSの優先度の両方を制御し、さらに、プロセスが間接的ながらこのパラメータの値を決定することによりプロセス自身がこれら優先度を制御できることを特徴とする。
【００１２】
【発明の実施の形態】
本発明においては、分散共有メモリを用いた高速通信方式を、プロセスの特性（特に、送受信するメッセージ規模とメッセージに求められる実時間性）に応じて如何に効率的に提供するかに関して、下記の事項を解決するものである（プロセスは、AP或いはOS内の何れのものでも良い）。
即ち、ネットワークで接続されるプロセス間通信においては、高速通信方式をより汎用的な通信手段として用いる際、送信元であるプロセスが常に特性の類似したメッセージを送信要求するとは限らず、また、受信するメッセージが常に類似した特性を持つとは限らない。つまり、メッセージの特性に応じて高速通信方式の提供形態や方式の種類を変更する必要が有る。しかし、複数の通信方式を備えてメッセージ特性に応じて通信方式を切替える方式では、装置規模の肥大化等が生じる不都合がある。そこで、本発明ではノード内のOS或いはAP層にローカルバッファを設け、大規模な或いは実時間性の低いメッセージの一時的な保留とOSによる分散共有メモリヘの書込み優先度付けを組み合わせ、これを、OS主体のローカルバッファ制御とプロセスからの強制的な動作、プロセス或いはメッセージの特性に応じたローカルバッファ内に割り当てる領域即ち一括転送単位の規模の設定、仮想的な番地によるローカルバッファと分散共有メモリの同一視、OSへのメッセージ規模の通知によりローカルバッファ規模を適切に確保する。これにより、しばしば高速通信システムにおいて生じるメッセージ特性による性能の差異を吸収し、常に同一の高速通信システムで多様なメッセージを通信できる。さらに、OS或いはAP層に当該機能を設けることで、従来の分散共有メモリを用いる通信装置が有する特徴、例えばアプリケーションやOSに負荷をかけることなく、メッセージを小さな遅延で通信する性能を併せて達成することができる。
【００１３】
尚、本発明はネットワークで接続されるノード各々の中にあるプロセス同士の通信にも適用することができる。従って、ノードは1つのPMから構成される場合だけでなく、複数のPMから構成される場合も適用され、各PM内に1つ或いは複数のプロセスが動作する場合もある。即ち、本発明の対象とするプロセス間通信は、異なるノード内のプロセス同士の通信のみならず、1つのノード内の異なるPM内のプロセス同士の通信や1つのノード内の1つのPM内のプロセス同士の通信も含み、動作は同様のものである。請求項1においてPMとノードをノードで総称するとしたが、このように対象とするプロセスは幾つかの形態を持つものの、これら形態全てを対象とし同様の動作を行うものである。
【００１４】
【実施例】
以下、本発明の実施例を、図面により詳細に説明する。図1は、本発明が適用される一般的な高速通信方式を用いたネットワークモデルの構成の配置と関係例を示す図である。図1では、高速通信装置である分散共有メモリ（DSM）を用いる通信装置が11A、ホストプロセッサに含まれるOS類が12A、及び、主として小規模メッセージを通信するプロセス類が13A、大規模メッセージ転送装置が11B、ホストプロセッサに含まれるOS類が12B、及び、大規模メッセージを通信するプロセス類が13Bである。高速通信装置はAPに依存して適用される場合が多く、AP内のプロセスのメッセージの特性にあわせて通信装置が設計或いは実装されるため、一般に比較的短いメッセージを通信するAP類からの通信装置アクセスは14A、大規模ファイルを通信するAP類からの通信装置アクセスは14Bの形態であるが、ローカルバッファ（１６Ｃ内）の導入により、主として小規模メッセージを通信するプロセス及び大規模メッセージ転送共にDSM通信装置11Cにアクセスする形態で通信を行う。図1では小規模メッセージを通信するAP類と大規模メッセージを通信するAP類の2種類のAP類が示されているが、その種類が3つ以上の場合でも全く同じである。即ち、APに依存せず短いメッセージ送信から大規模ファイル送信まで広範なAPに対して同一の通信装置で効率の良い通信が提供される。尚、本明細書において「ノード」は、通信機能を有し、1個又は複数のプロセスによりデータが生成されるデータ処理装置を意味するものとし、１つ又は複数個のプロセッサモジュール（PM：Processor Module）で構成することができる。すなわち、本発明は、複数のノード間での分散共有メモリへのデータないしメッセージの書込みが競合した場合及び同一ノード内において複数のプロセスにより生成されたデータの分散共有メモリへの書込みが競合した場合の両方について適用される。
【００１５】
図２は本発明が適用される分散共有メモリを用いる通信装置を有するノード及びネットワーク構成図である。図２では2個のノードの26Aと26Bが例示されているが、この数が3個以上であっても全く同じである。各ノードの主体はホストプロセッサ25A，25B、及び、ローカルメモリ23A，23B、及び、分散共有メモリ21A，21B、及び、例えば分散メモリカプラのような分散共有メモリ間のメッセージを転送する装置（分散メモリカプラと呼称）22A、22Bである。ホストプロセッサは、複数個のプロセスを有するものとする。ローカルメモリ23A，23Bには、ローカルバッファ24A，24Bが置かれる。符号27A及び27Bは、このローカルバッファの効果により優先度制御がなされる対象である分散共有メモリを用いる通信システムのプロセス-分散共有メモリ間の共通路である。
【００１６】
図2の21〜221Dは、本発明の分散共有メモリを用いる通信装置をソフトウェアの観点から送信動作を中心に説明する図である。21Dはノード、22Dはノードを構成するソフトウェア部分、23Dはノードを構成する装置を示し、各々AP（このAPの部分として複数個のプロセスがある）24D、OSは25D、ローカルメモリ26D内のローカルバッファ27Dと、プロセス或いはメッセージに応じて規模を可変に割り当てられる一括転送単位221D、ローカルバッファを管理するOSの機能222D、分散共有メモリ28Dとメッセージ送信毎に割り当てられる一定規模で区分された要素領域MB210D、分散メモリカプラ29D、ノードを接続するネットワーク211Dを示している。
【００１７】
従来、プロセス24Dで発生したメッセージ213Dは分散共有メモリ28Dに書込まれると（215D）、同時に分散メモリカプラ29Dが検出して自動的に取込み（216D）（その際、MB：210D単位で使用される）、ネットワーク211Dに送出する。例えば、IP通信に用いようとした場合は、IPoverATMのARPサーバを用いる等の方法によりIP毎に宛先ノードを決定でき、そのVCを割り当てればよいので、高速なIP通信への適用可能性も想定される。
【００１８】
本発明のローカルバッファを導入した場合、プロセス24Dで発生したメッセージ214Dは、実時間性が小さい場合等プロセス或いはメッセージ特性に応じてはローカルバッファ27D内に割り当てられた一括転送単位221Dに書込まれ（217D）、一括転送単位221D内の全ての領域がアクセスされた時点（一括転送単位は分散共有メモリ210DのMBと対応している）で分散共有メモリ28Dに書込まれ、同時に分散メモリカプラ29Dが検出して自動的に取込み（219D）（その際、MB：210D単位で使用される）、ネットワーク211Dに送出する。
【００１９】
図３に本発明によるメモリの一例の構成２１Ｅ〜２８Ｅを示す。このメモリ構成を有するノードをノードＡとする。符号２１Ｅはローカルメモリ上で本発明に用いられる範囲を示し、２２Ｅはローカルバッファを示し、２３Ｅは分散共有メモリを示す。分散共有メモリ２３Ｅは、符号２６Ｅで示すＭＢ毎に区切られており、ＭＢは各々自ノードから全てのネットワーク内の全ての（或いは、通信対象となる）ノード宛に分類され、例えばノードＡ＞ノードＢのＭＢ（複数あってもよい）にメッセージが書込まれると分散共有メモリカップラによりこのノードからノードＢにメッセージが送られる。ノードＢにおいても同様なメモリ構造がとられているので、ノードＢではノードＡ＞ノードＢに当該メッセージが書込まれる。２７Ｅは発信用のＭＢを示し、２６Ｅは受信用のＭＢを示す。このＭＢの構造は分散共有メモリを用いた通信の一例であり、本発明に必須の技術的事項ではないが、参考として記載したものである。符号２２Ｅで示すローカルバッファは一括転送単位に区切られ、ローカルバッファを介する各送信処理において一括転送単位は１個以上用いられ、複数個用いられる場合はその領域を更新しながら、例えば図中の矢印線のように順次更新しながら用いられる。ＡＰからの送信要求の際にＡＰから制御手段に通知されるメッセージサイズに基づいて、制御手段（ローカルバッファ管理機能）は当該送信で用いられるローカルバッファの容量を例えば図中二重線の範囲（２５Ｅ）のように予め決定できるので、ローカルバッファ全体２８Ｅの容量を無駄に確保することなく抑制することができる。
【００２０】
図４は、本発明の分散共有メモリを用いる通信装置の送信側におけるメッセージ通信方式を時間経過に従い説明する図である。符号31A、31Eはノードを示し、32A，32EはAP層を示し、33A，33Eは分散共有メモリ及び分散メモリカプラ層を示す。さらに、符号34A，34Eはネットワークを示し、31Bはローカルバッファを示し、32Bはローカルバッファを用いる場合の分散メモリカプラを示し、33Bはローカルバッファを用いる場合のネットワークを示す。まず、従来の送信を説明する。プロセスはメッセージ送信に先立ち分散共有メモリの書込み領域であるMBを確保する（OSに通知し確保され、番地が返される）。プロセスで発生するメッセージは分散共有メモリ内の概番地で示されるMBに書込まれ、並行して分散メモリカプラがこれを取込みネットワークに送出する。受信側でメッセージの受信完了後、受信完了通知をMB毎に送信側に返信し、送受ともに当該MBを解放する。
【００２１】
ところで、プロセスで発生する実時間性の高いメッセージ36Eは、大規模メッセージの送信35Eが混在する場合、メッセージ36Ｅが分散共有メモリに書込まれる間（37E）は分散共有メモリーに書き込めず、メッセージ37Eが書き込まれた後に書き込まれる（38E）。その結果、時刻311Eでネットワーク上に送信される（310E）。OSによる割込みを導入した場合、35Eより優先度の高い36Eが分散共有メモリに書き込む際は割込みにより35Eを中断し、優先的に36Eを書込む。この場合を示したのが31Dと32Dに分かれた大規模メッセージであり、実時間性の高いメッセージ（31C）は、32Cとして即時に分散共有メモリに書き込まれる。
【００２２】
この状況でいかにローカルバッファが用いられるかを以下に示す。プロセスは起動の際、転送メッセージの規模をローカルバッファ管理機能（図2ではローカルバッファを管理するOSの機能222D、これは分散共有メモリの管理機能を拡張したもの）に通知する。これは、プロセス起動の際でなく随時でも良い。プロセスからの送信のための分散共有メモリへの書込みに先立ち、MB確保をOSに通知するが、OSは従来の分散共有メモリ上のMB確保に代わりローカルバッファに一括転送単位を確保する（OS内の従来の該機能は、ローカルバッファ管理機能である）。一括転送単位の規模はローカルバッファ管理機能が先に通知されたメッセージ規模に応じて決定し、番地を返す。実時間性の高い場合は、実際には小規模メッセージの場合であるが、一括転送単位規模を0として、従来の経路と同様にメッセージ緩衝域は使用されず直接分散共有メモリに書込まれる（ローカルバッファ管理機能或いはOSが返す番地は従来通り分散共有メモリ上のMB番地となる）。プロセスで発生する実時間性の高いメッセージ31Cが発生と並行して33A及び33Eの分散共有メモリ及び分散メモリカプラ層で処理されてネットワーク34Aに送出される。大規模メッセージの送信である一連のメッセージ31Dと32Dと混在すると、33A及び33Eの分散共有メモリ及び分散メモリカプラ層で処理され並行してネットワーク34Aに送出されるが、ネットワーク上に送出されるメッセージ36Aは隘路となるネットワークにより、31Cから発生してネットワーク上に送出されるメッセージの送信を妨げ、31Cからのメッセージは本来時刻38Aからネットワーク上に送出されるところが、時刻39Aから送出される（メッセージ37A）。この遅延が、ローカルバッファの次の動作で解消されるので、その手法を説明する。尚、時間310Aは一連のメッセージ31Dと32D用に割り当てられたローカルバッファに割り当てられた一括転送単位が満たされるまでの時間である。
【００２３】
実時間性の高いメッセージ31Cと大規模メッセージの送信31Dと32Dとが混在すると、大規模メッセージの送信31Dと32Dは310Aの時間はローカルバッファ31Bに保留され時刻39Aからネットワーク上に送出されるため、実時間性の高いメッセージ31Cは大規模メッセージの送信31Dと32Dのネットワーク送出に妨げられることなく、本来の送信時刻38Aにネットワーク上の送出が可能になる（35A）。これは、大規模メッセージはMB確保の際、ローカルバッファ内の一括転送単位の番地をプロセスが得るので該番地に書込み、一括転送単位が一杯になるとこれをOSが検出し（例えば、分散メモリカプラのMB書込み長計数機能を拡張しローカルバッファ書込み長を計数させ、一括転送単位が一杯になると割込みによりOSがそれを検出する）、分散共有メモリ書込み待ちになっている小規模メッセージ即ち一括転送単位規模が0のメッセージがあるかを判定し、あれば、大規模メッセージのローカルバッファ書込みを中断し、小規模メッセージの分散共有メモリ書込みを先に行い、終了後大規模メッセージのローカルバッファ書込みを再開する（既に大規模メッセージを全て書込み終わっていたら、他のメッセージの書込みを始める）、といった動作である。一括転送単位規模を大きく設定しておけば、大規模メッセージが分散共有メモリに書き込まれるまでの時間が長くなり、即ち、大規模メッセージの送信が保留されている問により多くの実時間メッセージを先行して送信することができる。
【００２４】
バッファ管理や分散共有メモリカプラの動作も含めた例の概要を３１Ｆ〜３１９Ｆに示す。符号３１Ｆはプロセッサモジュールを示し、３２Ｆはアプリケーション層（メッセージ送信を行うプロセス）、３３Ｆはローカルバッファ管理ノード、３４Ｆローカルバッファ、３５Ｆは分散共有メモリ、３６Ｆは分散メモリカプラ、３７Ｆはネットワークを示す。大規模メッセージ（３１８Ｆ）が先に送信要求し、その処理中に実時間メッセージ（３１９Ｆ）が送信要求した場合を示す。大規模メッセージについて送信要求された後、ローカルバッファの番地が示され、ローカルバッファに書込まれる（３８Ｆ）。この際一括転送単位で規定された領域が満杯となると、分散メモリカプラがそれを検出し（３１２Ｆ）、ローカルバッファ管理機能に通知し（３１３Ｆ）、実時間メッセージの送信要求があれば分散メモリカプラへの書込みを指示して送信要求しているプロセスから実時間メッセージの分散共有メモリへの書込みが開始される（３９Ｆ）。この書込みが終了すると、分散メモリカプラが終了を検出し（３１４Ｆ）しローカルバッファ管理機能に通知する。ローカルバッファ管理機能はローカルバッファに保留していた大規模メッセージ（３８Ｆによるもの）を分散共有メモリに書込み起動する（３１５Ｆ）。当該書込みが開始され（３１０Ｆ）、その書込みの完了を分散メモリカプラが検出すると（３１６Ｆ）、書込み完了をローカルバッファ管理機能に通知する。ローカルバッファ管理機能は、大規模メッセージの続きがある場合又は無い場合であっても新たなメッセージが大規模であれば、ローカルバッファへの管理を指示し（３１７Ｆ）、当該メッセージがローカルバッファに書込まれる（３１１Ｆ）。一方、小規模メッセージであれば、直接分散共有メモリへの書込みを指示する。これにより、実時間メッセージは送信処理開始から大規模メッセージの送信処理に妨げられることなく即時にネットワークに送信される。
【００２５】
図５は、本発明を適用した場合の分散共有メモリを用いる通信装置の受信側におけるメッセージ通信方式を説明する図である。本図においては矢印線で情報の流れと向きを示し、実線が通信されるメッセージを示し、破線が信号を示している。上段の符号41B〜46Bで示す部分は、本発明を用いない従来の分散共有メモリを用いる通信装置の受信側におけるメッセージ通信方式を説明する図である。43Bは分散メモリカプラを示し、44Bはプロセスを示し、41Bはネットワークからのメッセージの到着を示している。大規模メッセージがネットワークに送出される場合、ネットワーク側への転送単位は分散メモリカプラの送出単位に細分されて送出されるので、41Bの様に大規模メッセージが細分されて到着することになる。細分メッセージが到着すると直ちにプロセスが読み出せる状態でノード内のメモリの分散共有メモリとして割り当てられている領域に書き込まれ、プロセスは到着を認識し（45B）、順にプロセスが読込み或いはプロセスが管理するメモリ領域に転写する等といった読出しを行う（46B）。この際のプロセスの読出し処理は時間間隔42Bで行われるが、ネットワーク側の転送単位或いは分散メモリカプラの送出単位に応じた、即ち、プロセス側とは無関係な単位に細分された単位を扱うためのプロセスの処理が、42Bの間隔で必要になる。
【００２６】
図５の下段の符号41A〜47Aで示す図は、本発明を用いた場合の分散共有メモリを用いる通信装置の受信側におけるメッセージ通信方式を説明する図である。符号43Aは分散メモリカプラを示し、44はローカルバッファ（その中の一括転送単位）を示し、45Aはプロセスを示し、41Aはネットワークからのメッセージの到着を示している。大規模メッセージがネットワークに送出される場合、ネットワーク側の転送単位或いは、分散メモリカプラの送出単位に細分されて送出されるので、41Aの様に大規模メッセージが細分されて到着することになる。細分メッセージが到着すると直ちにノード内のメモリの分散共有メモリとして割り当てられている領域に書き込まれるが（48A）、プロセスでは無くローカルバッファ（その中の一括転送単位）に一旦読み込まれる。一括転送単位が一杯になる（分散共有メモリにおいて対応するMBに相当する領域全てに書き込まれる）とプロセスにメッセージ到着が初めて通知され（46A）、プロセスが読出しを行う（47A）。一括転送単位の規模はプロセス〈或いはメッセージ特性〉に応じて決められており、ネットワークや分散メモリカプラ依存の細分単位でなく、プロセス側の特性による細分単位（大規模メッセージ規模を幾つかに区切った規模を想定）で（42A）プロセスが読み出す。従って、従来方式のようにネットワークや分散メモリカプラ依存の細分単位間隔（42B）で、ネットワークや分散メモリカプラ依存の細分単位に応じた間隔でプロセスの処理起動の必要性が生じるのではなく、プロセスの処理の起動は、プロセス内のメッセージ処理時間等のプロセス側の特性によって決められる細分（大規模メッセージ規模を幾つかに区切った規模を想定）間隔（42A）で（即ち、42Bより広い間隔で）、即ちプロセスに依存した細分単位に応じて行うことができる。これは、通信に先立ちプロセスがセA確保のためにOSに通知するメッセージ規模に応じて一括転送単位の規模がOSにより割当てられるので、この規模（時間の観点からは読出し間隔）を間接的にプロセスが決定することになるからである。
【００２７】
ローカルバッファ（16C内、24A、24B、31B、44B）は分散共有メモリ（23A、23B）と対応した仮想番地が与えられており、ローカルバッファ管理機能222Dには仮想-実番地変換機能と、ローカルバッファに関するメッセージ直接アクセスコマンドが用意される。仮想番地によりメッセージ緩衝領はアプリケーションプログラム／OSからあたかも分散共有メモリとしてアクセスされる。プロセスがある分散共有メモリ領域即ちMBに書込みを行うと、ローカルバッファ内に割り当てられた一括転送単位に書き込まれ、一括転送単位の全てのMBに書込みがなされると、分散メモリカプラ（22B、29D）やOS（25D）内で関連する分散共有メモリアクセス機能（例えば［1］等の機能）により分散共有メモリの当該範囲へ従来システムでプロセスがDSMに対し書込みを行うのとほぼ同じ動作で書き込み更新することになるが、アプリケーションプログラム／OS或いはそのプロセスが直接書込みコマンドを発行すると、一括転送単位の全てのMBに書込みがなされなくても、一括転送単位により分散共有メモリの当該領域が上書きされる。
【００２８】
ここで、「仮想番地」とは、プロセスから見てローカルバッファを介する場合と介さない場合の何れの場合も同一のインタフェースとなるように設けるものであり、仮想番地を用いなくてもローカルバッファを導入することによる実時間メッセージの先行送信に関する処理は変わりなく行われるが、仮想番地を用いるとバッファ管理機能或いはＯＳからプロセスにより指定されるメモリ書込み番地は実番地ではなく仮想的な番地として指定される。一方、プロセスが書込む際は、書込み先として指定する番地を、バッファ管理機能或いはＯＳがバッファを介する場合はローカルバッファの番地に変換し、バッファを介さない場合には分散共有メモリの番地に変換して当該番地にメッセージを書込む。さらに、分散共有メモリを指定する場合は、仮想番地が実番地と同一となる適用方法もあり、この場合ローカルバッファの番地指定のみが仮想番地にて行われることになる。尚、分散共有メモリが全ノードで同一の番地を共有する仕組みである場合は、各ノードで実番地の代わりに仮想番地を用いて、実際の番地が各ノードで異なってもプロセス側からあたかも同一番地を共有しているように見えるようにすることも可能である。この仮想番地の付与手段は、ローカルバッファと分散共有メモリとが同一のローカルメモリ上にとられるなら、容易に本発明の仮想番地付与手段に用いることができるので、プロセスから見たインタフェースをローカルバッファを介するか否かにかかわらず容易に統一することができる。
【００２９】
読出しの場合も同様に、プロセスが分散共有メモリ領域即ちMBの読出しを行うとローカルバッファ内に割り当てられた一括転送単位の内容が読み出されるが、アプリケーションプログラム／OS惑いはそのプロセスが直接読出しコマンドを発行すると分散共有メモリの当該領域により一括転送単位が上書きされる。このメッセージ直接アクセスコマンドにより書込み／読出し各々において強制的に一括転送単位の内容と実分散共有メモリとの同期をとることができ、随時ローカルバッファ或いは実分散共有メモリは最新の状態に保つことが可能である。尚、分散共有メモリと同期をとり相手側にメッセージが到着し受信処理がなされる前に一括転送単位が後続のメッセージ内容により上書きされるのを防ぐため、ローカルバッファ内で一括転送単位はインクリメント即ち番地を更新しながら利用される。従って、一括転送単位のためには最大で、分散共有メモリ上に1ノード向けに取られる領域、即ち、1ノード向けのMB領域程度を、確保することになる。例えば、大規模メッセージを送るプロセスが1種類なら、例えば256由のバッファを256面有している、等でも64KBで良い。しかし、大規模メッセージを送るプロセスにのみ割り当て、同時に送信がなされる場合にそのプロセスの数だけ割り当てれば良いので、分散共有メモリに比べても十分小さくて良い。従って、ローカルバッファの容量はメモリに比較して小さく、アプリケーションプログラムやOSに影響しない。
【００３０】
プロセスからの1回のメッセージ送信要求により1個のMBが利用されるので、MB規模を想定されるメッセージ規模に比べ必要以上に大きくするとMB内で無駄に確保される部分が生じ分散共有メモリの使用率が低下する。そのため分散共有メモリのMBサイズは通常想定されるメッセージ規模にあわせて比較的小さく細分されており、またMB管理の複雑化を避けるためMB規模は何れも同一である。従って、例えば、大規模メッセージと小規模メッセージが混在する場合のために、MB規模に大小を設け、大規模メッセージの場合は大きなMBを用い、小規模メッセージの場合は小さなM8を用いるようにし、大きなMBを選択した場合は一時的に分散共有メモリヘの書込みを待たせる、といった方法で送信に優先度をつける方法は、MB管理の複雑化を招くことから望ましく無い。大規模メッセージ転送は一般に大きな実時間性を要求されないことが多く、ノード間制御メッセージのように小規模ではあるが実時間性の要求される高速転送と大規模メッセージ転送が混在すると、大規模メッセージ転送中において生じるネットワークでの送信待ちが実時間性の要求される高速転送を妨げることになる。図3では、大規模メッセージ31Dがネットワークでの遅延により送信に時間36Dを要するため、実時間性の高い小規模メッセージ31Cの送信が37Aにまで延びている。一括転送単位の規模を送信するメッセージ規模を基にして設定しておくと、時間310Aで一括転送単位が満たされるまで31Dの送信は待つことになり、その間に31Cが送信可能となり35Aで待つことなく送信される。受信側ではメッセージのある部分の到着により一括転送単位が満たされることになるため、メッセージのある部分の到着にあわせてOSの検出を契機に読み出しが行われることになる。
【００３１】
図５においては、従来では42B間隔でプロセス44Bがメッセージを読み込む処理を走行させる必要があり、しかも読込むサイズが分散共有メモリを用いる通信装置が1回で通信するメッセージ規模単位であったが、本発明により42A間隔で、即ちプロセス45Aは複数でメッセージ到着の間に1回の読み込む処理を走行させるだけで良く、さらに1回に読み込む規模は分散共有メモリを用いる通信装置が複数回で通信するサイズをあわせた規模となる。
【００３２】
図６〜図８は、本発明の一実施例を示す分散共有メモリを用いたプロセス間通信における優先度制御方式の共有メモリ書込み動作、或いは相手ノードヘの送信動作フローチャートである。システム構成要素は、ソフトウェアであるアプリケーションプログラム及びOS（オペレーションシステム）と、ハードウェアであるローカルメモリ及び送信装置とに分けて記述している。アプリケーションプログラムは大規模メッセージを送るプロセスと、小規模メッセージを送るプロセスがある場合を示しており、OSはローカルバッファ管理機能（BAMと略記）であり、ローカルメモリはローカルバッファ（BAと略記）と分散共有メモリ（DSMと略記）からなり、送信装置は例えば分散メモリカプラを想定する。
【００３３】
図６〜図８では、最初に送信ノードにおいてあるプロセスがメッセージの送信要求を行った場合を示している。小規模メッセージの送信要求が先に行われると、ローカルバッファを介することなく直ちに送信される。即ち、判定“メッセージ規模＞境界”後は※3となり、ローカルバッファ及びその管理機能等の本発明による機構が無い場合の送信形態とほぼ同じになるため、小規模メッセージの送信要求が先に行われる場合は図６で兼ねている。尚、図６では、プロセスからの送信要求及びOS（ローカルバッファ管理機能）がその要求を取出すキューの構造は少なくともプロセス名とメッセージ規模の情報を含むこととし、判定“メッセージ規模＞境界”での“境界”は、実時間メッセージとして扱うメッセージ規模の上限値を意味しており、この上限値は送信処理開姶に先立ちOS（ローカルバッファ管理機能）において設定されている値であり、※3と※4を同一にする手法をとる場合もあり得る。
【００３４】
アプリケーションプログラム内のあるプロセスが大規模メッセージの送信要求をローカルバッファ管理機能に通知すると（図６では該プロセスを大規模メッセージプロセスと記述）、この通知にはメッセージ規模（生成されたデータサイズないしメッセージサイズ）が含まれており、プロセスからの送信要求待ちの状態であったローカルバッファ管理機能は、メッセージ規模が境界値を超えるかを判定し、超える場合は大規模メッセージとして扱うためメッセージ規模に基づきローカルバッファ内に割り当てる一括転送単位の規模（予め定めたバッファ容量）及び一括転送単位の番地を決定し、大規模メッセージプロセスに通知する。境界を超えない場合は小規模メッセージ即ち実時間メッセージとして扱い、図６※3から分散共有メモリ内のMBの番地を決定し小規模メッセージを送信要求したプロセス（小規模メッセージプロセスと記述）に通知し、該プロセスはメッセージをMBに書き込み、メッセージは分散メモリカプラにより書込みと並行して相手ノードの宛先プロセスへ送信され、ローカルバッファ管理機能はプロセスからの送信要求待ちの状態に戻る。大規模メッセージプロセスは通知された一括転送単位の番地にメッセージを書き込み、ローカルバッファでは該書込みが一括転送単位を一杯にするまで該メッセージの蓄積を続ける。一括転送単位規模は、プロセスから通知されたデータサイズに基づいて決定し、ローカルバッファ管理機能が決定した値を用いるが、分散メモリカプラではMB内のデータ長が所定の規模に達したかどうか（一般のメッセージ送信装置でも同様に送信バッファに相当するバッファ内のデータ長が所定の規模に達したかどうか）を監視し、規模に達したらOSに対し通知する機能があり、ローカルバッファ管理機能が決定した一括転送単位規模を分散メモリカプラが参照できるメモリ領域に設定する。分散メモリカプラは、この値に、分散共有メモリと同じくローカルメモリ上にあるローカルバッファ内に書き込まれたデータ規模が、達したかどうかを監視し、一括転送単位一杯を検出すると、ローカルバッファ管理機能に割込みにより通知しローカルバッファ管理機能に制御が移り大規模メッセージプロセスはローカルバッファへの書込みを中断する。
【００３５】
尚、プロセスからローカルバッファ管理機能に通知したメッセージ規模（メッセージサイズ）が所定のデータ長すなわち境界を超えるか否かに基づいてローカルバッファを介して転送するか否かを判定しているが、例えば、プロセスからローカルバッファ管理機能に転送要求したメッセージを優先メッセージとして取り扱うか否かを示すコマンドやビット列をプロセスからローカルバッファ管理機能に通知することもできる。さらに、生成された転送すべきメッセージサイズが所定のデータ長を超えるか否かを判定する手段は、ローカルバッファ管理機能すなわち制御手段が有する場合だけでなく、プロセス自身が有することもできる。従って、プロセス自身が生成したメッセージをローカルバッファに書込むか又は直接分散共有メモリに転送するかを判断することもできる。
【００３６】
ローカルバッファに書込まれたデータを分散共有メモリに転送する一括転送単位の規模、すなわち所定のバッファ容量は、ローカルバッファ管理機能（制御手段）が生成されたメッセージサイズに基づいて決定することができ、前記境界値（所定のデータ長）から独立した値をとるが、前記境界値（所定のデータ長）に依存して決定することもでき、例えばデータ境界値（所定のデータ長）に等しい値に設定することも可能である。
【００３７】
図６〜図８中の＊1のステップは、OSの持つ機能等により手法が異なる。図5〜図７では動作の表示が容易な場合を記述しており、大規模メッセージプロセスが書込みを中断した後はローカルバッファ管理機能は一定時間プロセスの送信要求待ちとなる。この時間内に送信要求のあったプロセスの中でメッセージ規模が境界値以下のメッセージを選択し、即ち、該メッセージは実時間メッセージと扱い、分散共有メモリ内のMBを割当てる。該MBの番地を該メッセージを送信するプロセス（図5では小規模メッセージプロセス）に通知し、該プロセスは分散共有メモリ内の指定MBにメッセージを書き込み、メッセージは分散メモリカプラにより書込みと並行して相手ノードの宛先プロセスへ送信される。小規模メッセージプロセスからの分散共有メモリへのメッセージ書込みが終了すると、ローカルバッファ管理機能は、ローカルバッファの一括転送単位に蓄積していた先の大規模メッセージを分散共有メモリに書き込み、メッセージは並行して相手ノードの宛先プロセスへ送信される。続いて、中断していた大規模メッセージプロセスの残りのメッセージがある場合は、大規模メッセージプロセスに続きのローカルバッファ書込みを指示し、無ければプロセスの送信要求待ちに戻る。
【００３８】
大規模メッセージのローカルバッファ書込みがあれば一括転送単位が一杯になるまで書込みが続けられ、一杯になると分散メモリカプラがそれを検出しローカルバッファ管理機能に割込みにより通知しローカルバッファ管理機能に制御が移り大規模メッセージプロセスはローカルバッファへの書込みを中断する。即ち図６の※2に戻る。ところで、図６の＊1は、上述の場合よりも下記の場合がより想定される。あるプロセスが送信処理用のプログラムやOS等に送信メッセージを送っている最中に、OSにおいてタイマ等により他のプロセスからの送信要求を受け付けるスケジューリングは一般的にOSが備えていることが想定され得る。この場合、大規模メッセージからのローカルバッファへのメッセージを書込み処理の最中、即ち図６〜図８の＊2において、他のプロセスからの送信要求がローカルバッファ管理機能に受け付けられ、このプロセスの中でメッセージ規模が境界値以下のメッセージを選択し、即ち、該メッセージは実時間メッセージと扱い、分散共有メモリ内のMBを割当てる。この後、上述の“［♯］”で示した箇所からの動作となる。尚、送信対象となるプロセスは、アプリケーションプロセスのみでなく、OS内のプロセスであっても動作は同様に行なわれる。
【００３９】
図６〜図８に示す実施例からも本発明の利点として次の（i）〜（iii）が示される。（i）所定のデータ容量の一括転送単位毎に一旦蓄積されることで大規模メッセージの送信はローカルバッファ内で待つことになり、その間に発生した小規模メッセージは大規模メッセージに先行して送られる。（ii）一括転送単位の規模が大きいと一杯になるまでの時間が長くなり、それだけ小規模メッセージが先行する率が増す。（iii）一括転送単位の規模はその大きさのみならず0か否かで実時間性の有無を示すことになり、優先度を一つのパラメータで制御できる。しかも、このパラメータ値は一度に送信するメッセージ規模により定められるため、アプリケーション側において優先度を間接的に制御できることになる。
【００４０】
図９は、本発明の一実施例を示す分散共有メモリを用いたプロセス問通信における優先度制御方式の共有メモリ読込み動作、或いは相手ノードからの受信動作フローチャートである。このフローの中、aの2ステップはプロセスの到着メッセージ読込みに関するものであり、bの9ステップはプロセスから独立したローカルバッファ管理機能が行うバッファ内への読込み等に関するものである。
【００４１】
予めプロセス起動時或いは送信開始時に、プロセスから受信するメッセージ規模をOS内のローカルバッファ管理機能（222D）に通知し、その値に基づきローカルバッファ管理機能が一括転送単位規模を決定する。送信ノードからメッヤージが到着し始めると到着と並行して分散共有メモリにメッセージが書き込まれ、ローカルバッファ管理機能に到着が通知され、ローカルバッファ管理機能がローカルバッファに分散共有メモリからメッセージを読み込み、一括転送単位規模に逢すると、規模に達したことと分散共有メモリに対応するMBの番地がローカルバッファ管理機能からプロセスに通知され、プロセスはメッセージが蓄積されているMBを指定し、指定されたMBに対応するローカルバッファの内容即ち一括転送単位が一括してプロセスに送られる。一括して送られる部分の実態は図７のｃのように繰返し動作になっても良いが、プロセスは一回の転送動作としてみなされる。一括転送単位が送られるとローカルバッファ管理機能は分散共有メモリから続きのメッセージを読み込むため一括転送単位の番地を更新する。MB内のメッセージが全てローカルバッファに読み込まれるまではローカルバッファへの読込みとプロセスヘの送付を繰返すが、MB内のメッセージ全てが読み込まれるとローカルバッファ管理機能の受信動作は終了する。
【００４２】
一括転送単位規模に達したことがローカルバッファ管理機能からプロセスに通知される以外に、プロセスが直接呼出しコマンド即ち、ローカルバッファ管理横能からの通知と無関係に一連の動作を開始する場合もある。これは、プロセス側からメッセージ読出しを自律的に指示することを可能にする。プロセスから分散共有メモリへの書込み動作、或いは相手プロセスへの送信動作はこれのほほ逆の動作と言える。尚、送信側と受信側はローカルバッファに関しては独立であり、送信例のみ或いは受信側のみに本機能を設定しても動作は可能で、かつ、各々で効果がある。送信側では、ネットワークが隘路になることで大規模メッセージにより実時間メッセージの送信が妨げられることを回避できるが、受信側では、これと似た状況の、分散共有メモリ間のメッセージを転送する装置から分散共有メモリへの書込み速度に対するプロセス側の読出し速度が隘路になることで生じる、大規模メッセージが実時間メッセージの受信を妨げる現象を回避できる。
【００４３】
本発明は上述した実施例だけに限定されず種々の変更や変形が可能である。例えば、大規模メッセージについても一括転送単位規模を０とする判定を行う論理を適用してもよく或いは適用しないこともできる。この判定基準を変更する等により実時間メッセージか否かの判定を適宜変更することは可能であり、常に小規模メッセージが実時間メッセージとして取り扱われることに限定されるものではなく、或いは小規模メッセージのみが実時間メッセージとして扱われることに限定されるものではない。
【００４４】
【発明の効果】
以上説明したように、本発明によれば、ローカルバッファの使用領域規模を指定するのみでプロセスの発生するメッセージの特性に応じてノード間通信の実時間性を確保することができるので、従来システムに、（a）バッファ（及びバッファからのDSM書込み命令）の追加、（b）一括転送単位規模を通知するAPイーンタフエースの追加、（c）DMCの送信メッセージ長計数処理をローカルバッファへ拡張する、程度の簡易な修正で、プロセスに依存せず同一の分散共有メモリを用いる通信装置によるノード間通信の実時間性を確保できるという効果がある。
【図面の簡単な説明】
【図１】  本発明が適用される一般的な高速通信方式を用いたネットワークモデルの構成の配置と関係例を示すもので、特にAPないしはプロセスの通信装置に対するアクセス形態を示す図である。
【図２】  本発明による分散共有メモリを用いる通信装置を有するノード及びネットワーク構成を示す図である。
【図３】  メモリ構造の一例を示す線図である。
【図４】本発明による分散共有メモリを用いる通信装置の送信側における、メッセージ通信方式を時間経過に従い説明する図である。
【図５】  分散共有メモリを用いる通信装置の受信側における、メッセージ通信方式を示す図である。
【図６】  本発明による分散共有メモリを用いる通信装置の送信側における、ローカルバッファを用いる共有メモリ書込み動作、或いは相手プロセスへの送信動作フローチャートの一部を示す図である。
【図７】  本発明による分散共有メモリを用いる通信装置の送信側における、ローカルバッファを用いる共有メモリ書込み動作、或いは相手プロセスへの送信動作フローチャートの一部を示す図である。
【図８】  本発明による分散共有メモリを用いる通信装置の送信側における、ローカルバッファを用いる共有メモリ書込み動作、或いは相手プロセスへの送信動作フローチャートの一部を示す図である。
【図９】  本発明による分敢共有メモリを用いる通信装置の受信側における、ローカルバッファを用いる共有メモリ読込み動作、或いは相手プロセスからの受信動作フローチャートである。
【符号の説明】
11A，11B，11C    通信装置
12A，12B，12C    OS類
13A，13B，13C，15C    AP類
14A，14B  従来方式によるアクセス形態
14C  本発明によるアクセス形態
16C    ローカルバッファ
21A，21B，28D    分散共有メモリ
21C，211D    ネットワーク
22A，22B，29D    分散共有メモリ間のメッセージを転送する装置（分散メモリカプラ）
23A，23B    ローカルメモリ
24A，24B，27D    ローカルバッファ
25A，25B    プロセッサ
26A，26B，21D    ノード（プロセッサモジュール）
27A，27B    共通路
22D    ソフトウェア層
23D    装置
24D    アプリケーションプログラム
25D    OS
26D    ローカルメモリ
210D    メッセージバッファ（MB）
212D，220D    ネットワークに送出されたメッセージ
213D，214D    24Dで発生したメッセージ
215D    28Dに書込まれたメッセージ
213D，216D    分散メモリカプラが検出して自動的に取り込まれたメッセージ
213D，217D    27Dに書込まれるメッセージ
214D，218D  28Dに書込まれたメッセージ
214D，219D    分散メモリカプラが検出して自動的に取り込まれたメッセージ
214D，221D    一括転送単位
222D    ローカルバッファを管理するOSの機能（ローカルバッファ管理機能）
31A，31E    プロセッサモジュール
32A，32E    アプリケーション層
33A，33E    分散共有メモリ及び分散メモリカプラ層
34A，34E    ネットワーク
35A    本来の送信時刻にネットワーク上の送出が可能になった実時間性の高いメッセージ
36A，39E    ネットワーク上に送出される大規模メッセージ
37A    ネットワークが隘路となり待ちが生じた実時間性の高いメッセージ
38A    実時間性の高いメッセ⊥ジの本来の送信時刻
39A    ネットワークが隘路となり待ちが生じた実時間性の高いメッセージの送信時刻
310A    大規模メッセージがローカルバッファに保留される時間
31B    ローカルバッファ、32B…ローカルバッファを用いる場合の分散メモリカプラ
33B    ローカルバッファを用いる場合のネットワーク
31C，36E    アプリケーションにおける実時間性の高いメッセージの送信
31D，32D，35E    アプリケーションにおける大規模メッセージの送信
37E    分散共有メモリに書込まれた大規模メッセージ
38E    分散共有メモリに書込まれた実時間メッセージ
310E    大規模メッセージが分散共有メモリに書込まれるため待ちが生じたネットワーク上に送出された実時間性の高いメッセージ
311E    大規模メッセージが分散共有メモリに書込まれるため待ちが生じた実時間性の高いメッセージの送信時刻
41A    送信元ノードからのメッセージ到着間隔
41B    送信元ノードからのメッセージ到着間隔
42A    メッセージの最初の到着通知からプロセスに読込まれるまでの間隔
42B    メッセージの到着通知からプロセスに読込まれるまでの間隔、
43A    分散共有メモリを用いる通信装置内の分散共有メモリ
43B    分散共有メモリを用いる通信装置内の分散共有メモリ
44A    ローカルバッファ
44B，45A    プロセス
45B    メッセージが到着するとその度ごとに分散共有メモリを用いる通信装置からプロセスに送られる送信到着通知
46A    一連のメッセニジの先頭が到着すると分散共有メモリを用いる通信装置からプロセスに送られる送信到着通知
46B    分散共有メモリを用いる通信装置内の分散共有メモリからプロセスに読込まれるメッセージ
47A    ローカルバッファからプロセスに読み込まれるメッセージ
【図１】
0003974078.tif 000002
【図２】
0003974078.tif 000003
【図３】
0003974078.tif 000004
【図４】
0003974078.tif 000005
【図５】
0003974078.tif 000006
【図６】
0003974078.tif 000007
【図７】
0003974078.tif 000008
【図８】
0003974078.tif 000009
【図９】
0003974078.tif 000010