JPH11312132A - 通信方法および並列計算機およびクライアント・サーバ間通信方法 - Google Patents
通信方法および並列計算機およびクライアント・サーバ間通信方法Info
- Publication number
- JPH11312132A JPH11312132A JP10134390A JP13439098A JPH11312132A JP H11312132 A JPH11312132 A JP H11312132A JP 10134390 A JP10134390 A JP 10134390A JP 13439098 A JP13439098 A JP 13439098A JP H11312132 A JPH11312132 A JP H11312132A
- Authority
- JP
- Japan
- Prior art keywords
- communication
- message
- protocol processing
- nodes
- reception area
- 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
Landscapes
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
Abstract
(57)【要約】
【課題】 さまざまな形態の通信に利用できる汎用性を
持ち、アプリケーションが通信形態に応じて通信プロト
コル処理を変更および最適化できる通信方法および該通
信方法により通信を行う並列計算機を提供することにあ
る。 【解決手段】 並列計算機のノード(例えば、ノード10
1)のOSにおける通信管理部による通信プロトコルの処
理において、通信プロトコル処理を行うプロトコル処理
関数群123の内の通信の使用者が定義したプロトコル処
理関数を通信端点(通信端点テーブル117)に登録し、通
信時に通信端点に使用者が定義したプロトコル処理関数
が登録されていれば、該通信端点に関する通信を処理す
る通信プロトコル処理の一部を、使用者が定義した登録
されているプロトコル処理関数を用いて行う。
持ち、アプリケーションが通信形態に応じて通信プロト
コル処理を変更および最適化できる通信方法および該通
信方法により通信を行う並列計算機を提供することにあ
る。 【解決手段】 並列計算機のノード(例えば、ノード10
1)のOSにおける通信管理部による通信プロトコルの処
理において、通信プロトコル処理を行うプロトコル処理
関数群123の内の通信の使用者が定義したプロトコル処
理関数を通信端点(通信端点テーブル117)に登録し、通
信時に通信端点に使用者が定義したプロトコル処理関数
が登録されていれば、該通信端点に関する通信を処理す
る通信プロトコル処理の一部を、使用者が定義した登録
されているプロトコル処理関数を用いて行う。
Description
【0001】
【発明の属する技術分野】本発明は、並列計算機におけ
る通信方法および並列計算機および並列計算機における
クライアント・サーバ間通信方法に関する。
る通信方法および並列計算機および並列計算機における
クライアント・サーバ間通信方法に関する。
【0002】
【従来の技術】複数の計算機を用いて処理を行う並列処
理技術や分散処理技術は、処理の高速化および資源の有
効活用などの目的で、近年急速に普及している。特に、
科学技術計算分野では、高速演算を行うために、並列計
算機の使用が必須になってきており、「TOP500 Superco
mputer Sites」( http://www.netlib.org/benchmark/t
op500.html )に示される通り、世界トップレベルの演
算性能を実現する計算機は並列計算機で占められてい
る。「ADVANCED COMPUTER ARCHITECTURE」(Kai Hwang
著、McGRAW-HILL INTERNATIONAL EDITIONS発行、1993
年、ISBN0-07-113342-9)P19〜P27によれば、並列計算
機は大別して共有メモリ型マルチプロセッサと分散メモ
リ型マルチプロセッサの2つのカテゴリに分類される。
理技術や分散処理技術は、処理の高速化および資源の有
効活用などの目的で、近年急速に普及している。特に、
科学技術計算分野では、高速演算を行うために、並列計
算機の使用が必須になってきており、「TOP500 Superco
mputer Sites」( http://www.netlib.org/benchmark/t
op500.html )に示される通り、世界トップレベルの演
算性能を実現する計算機は並列計算機で占められてい
る。「ADVANCED COMPUTER ARCHITECTURE」(Kai Hwang
著、McGRAW-HILL INTERNATIONAL EDITIONS発行、1993
年、ISBN0-07-113342-9)P19〜P27によれば、並列計算
機は大別して共有メモリ型マルチプロセッサと分散メモ
リ型マルチプロセッサの2つのカテゴリに分類される。
【0003】共有メモリ型マルチプロセッサは、並列計
算機内のすべてのプロセッサが物理メモリを共有するモ
デルで、プロセッサ間のデータ交換は共有メモリを介し
て行う。分散メモリ型マルチプロセッサは、それぞれの
プロセッサが独立してメモリを持ち、プロセッサ間のデ
ータ交換はメッセージ通信を用いて行う。共有メモリ型
マルチプロセッサは、単一のメモリ空間を提供するた
め、プログラミングは容易であるが、プロセッサ間のメ
モリアクセス競合のため、プロセッサ数の増加に比例し
た性能を得るのが困難である。一方分散メモリ型マルチ
プロセッサは、各プロセッサが独立したメモリ空間を持
つため、プログラミングはやや困難であるが、プロセッ
サ数の増加に比例した性能を得やすい。
算機内のすべてのプロセッサが物理メモリを共有するモ
デルで、プロセッサ間のデータ交換は共有メモリを介し
て行う。分散メモリ型マルチプロセッサは、それぞれの
プロセッサが独立してメモリを持ち、プロセッサ間のデ
ータ交換はメッセージ通信を用いて行う。共有メモリ型
マルチプロセッサは、単一のメモリ空間を提供するた
め、プログラミングは容易であるが、プロセッサ間のメ
モリアクセス競合のため、プロセッサ数の増加に比例し
た性能を得るのが困難である。一方分散メモリ型マルチ
プロセッサは、各プロセッサが独立したメモリ空間を持
つため、プログラミングはやや困難であるが、プロセッ
サ数の増加に比例した性能を得やすい。
【0004】分散メモリ型マルチプロセッサのオペレー
ティングシステム構成の1つとして、マイクロカーネル
を用いる方式が知られている(「分散オペレーティング
システム -UNIXの次にくるもの-」前川 守・所 真理雄
・清水賢多郎 編、共立出版1991年、ISBN 4-320-02570-
9、P24〜P27)。この方式では、オペレーティング
システムの最小機能をマイクロカーネルとして実現し、
その他の機能はカーネル外部のサーバとして実現する。
Mach、V-System等がマイクロカーネルの例である。
ティングシステム構成の1つとして、マイクロカーネル
を用いる方式が知られている(「分散オペレーティング
システム -UNIXの次にくるもの-」前川 守・所 真理雄
・清水賢多郎 編、共立出版1991年、ISBN 4-320-02570-
9、P24〜P27)。この方式では、オペレーティング
システムの最小機能をマイクロカーネルとして実現し、
その他の機能はカーネル外部のサーバとして実現する。
Mach、V-System等がマイクロカーネルの例である。
【0005】分散メモリ型マルチプロセッサでは、全プ
ロセッサ上にマイクロカーネルを常駐させ、サーバをい
くつかのプロセッサ上に分散して配置する。このような
構成では、要求を出すクライアントと要求を処理するサ
ーバという関係が生じ、クライアント−サーバ間の通信
を効率化することがシステム全体の性能向上につなが
る。前述のMachでは、portを使用した汎用的なメッセー
ジ通信機構を用いて、クライアント−サーバ間の通信を
実現する。このメッセージ通信機構は、送信者がportに
メッセージを送信し、受信者がportからメッセージを取
り出すことでプロセス間の片方向の通信を実現する。ク
ライアント−サーバ間の通信は、クライアントからサー
バへの要求メッセージの送信と、サーバからクライアン
トへの応答メッセージの送信の2つで実現する。各方向
のメッセージが独立しているため、それぞれのメッセー
ジに対し送達確認が必要となるまた、V-Systemでは、ク
ライアント−サーバ間の通信に特化したメッセージ通信
機構を提供している。このメッセージ通信機構は、サー
バへの要求とサーバからの応答を対にして使用する。要
求と応答が必ず対になっているため、各方向のメッセー
ジそれぞれに対する送達確認が不要となる。しかし、要
求と応答を必ず対にして使用する必要があり、応答が返
ってくるまでクライアント側はブロックされる。このた
め、複数のサーバに対して要求を送る形態では、一つの
サーバからの応答を待って次のサーバへの要求を送信す
る必要があり、オーバヘッドが大きい。
ロセッサ上にマイクロカーネルを常駐させ、サーバをい
くつかのプロセッサ上に分散して配置する。このような
構成では、要求を出すクライアントと要求を処理するサ
ーバという関係が生じ、クライアント−サーバ間の通信
を効率化することがシステム全体の性能向上につなが
る。前述のMachでは、portを使用した汎用的なメッセー
ジ通信機構を用いて、クライアント−サーバ間の通信を
実現する。このメッセージ通信機構は、送信者がportに
メッセージを送信し、受信者がportからメッセージを取
り出すことでプロセス間の片方向の通信を実現する。ク
ライアント−サーバ間の通信は、クライアントからサー
バへの要求メッセージの送信と、サーバからクライアン
トへの応答メッセージの送信の2つで実現する。各方向
のメッセージが独立しているため、それぞれのメッセー
ジに対し送達確認が必要となるまた、V-Systemでは、ク
ライアント−サーバ間の通信に特化したメッセージ通信
機構を提供している。このメッセージ通信機構は、サー
バへの要求とサーバからの応答を対にして使用する。要
求と応答が必ず対になっているため、各方向のメッセー
ジそれぞれに対する送達確認が不要となる。しかし、要
求と応答を必ず対にして使用する必要があり、応答が返
ってくるまでクライアント側はブロックされる。このた
め、複数のサーバに対して要求を送る形態では、一つの
サーバからの応答を待って次のサーバへの要求を送信す
る必要があり、オーバヘッドが大きい。
【0006】
【発明が解決しようとする課題】上述の通り、高速なメ
ッセージ通信を実現することが、システム全体の性能向
上につながる。しかし、汎用的な通信プロトコルを用い
て通信機構を実現すると、通信の使用される形態の情報
を利用することができないため、最適化が困難である。
例えば、上述のとおりV-Systemでは、要求メッセージと
応答メッセージを対にすることで、送達確認を不要とす
る最適化を行っているが、汎用的な通信プロトコルで
は、それぞれの通信が独立しているため送達確認を無く
せない。一方、クライアント−サーバ型通信に特化した
V-Systemの通信プロトコルのように、特定の通信形態に
特化した通信プロトコルは、それ以外の通信形態を使用
するアプリケーションで用いられた場合のオーバヘッド
が大きい。すべてのアプリケーションに対応するために
は、各アプリケーションの通信形態をあらかじめ予測
し、それぞれに最適化した通信プロトコルを実装してお
くことが必要となるが、この場合作成コストが大きくな
る。
ッセージ通信を実現することが、システム全体の性能向
上につながる。しかし、汎用的な通信プロトコルを用い
て通信機構を実現すると、通信の使用される形態の情報
を利用することができないため、最適化が困難である。
例えば、上述のとおりV-Systemでは、要求メッセージと
応答メッセージを対にすることで、送達確認を不要とす
る最適化を行っているが、汎用的な通信プロトコルで
は、それぞれの通信が独立しているため送達確認を無く
せない。一方、クライアント−サーバ型通信に特化した
V-Systemの通信プロトコルのように、特定の通信形態に
特化した通信プロトコルは、それ以外の通信形態を使用
するアプリケーションで用いられた場合のオーバヘッド
が大きい。すべてのアプリケーションに対応するために
は、各アプリケーションの通信形態をあらかじめ予測
し、それぞれに最適化した通信プロトコルを実装してお
くことが必要となるが、この場合作成コストが大きくな
る。
【0007】このように、従来は汎用的な通信と特定の
アプリケーションに最適化した通信は相反しており、両
立できなかった。これは、アプリケーションと通信機構
が明確に分離しており、通信機構がアプリケーションの
情報を利用できなかったことが原因である。本発明の目
的は、さまざまな形態の通信に利用できる汎用性を持
ち、アプリケーションが通信形態に応じて通信プロトコ
ル処理を変更および最適化できる通信方法および該通信
方法により通信を行う並列計算機を提供することにあ
る。
アプリケーションに最適化した通信は相反しており、両
立できなかった。これは、アプリケーションと通信機構
が明確に分離しており、通信機構がアプリケーションの
情報を利用できなかったことが原因である。本発明の目
的は、さまざまな形態の通信に利用できる汎用性を持
ち、アプリケーションが通信形態に応じて通信プロトコ
ル処理を変更および最適化できる通信方法および該通信
方法により通信を行う並列計算機を提供することにあ
る。
【0008】
【課題を解決するための手段】上記の目的を達成するた
め、本発明は、複数のノードをネットワークで結合し、
該複数のノードの各々は、メモリと、プロセッサと、ネ
ットワークアダプタを有し、該メモリには通信管理部が
設定され、該通信管理部はノード間で通信を行うための
通信プロトコル処理を行う構成の並列計算機における通
信方法であり、該通信管理部のプロトコル処理の一部
に、通信の使用者が定義したプロトコル処理関数を登録
し、通信時に、該通信プロトコル処理の一部を行うプロ
トコル処理関数が新たに定義され登録されていれば、該
通信プロトコル処理の一部を、該新たに定義されたプロ
トコル処理関数を用いて行うようにしている。
め、本発明は、複数のノードをネットワークで結合し、
該複数のノードの各々は、メモリと、プロセッサと、ネ
ットワークアダプタを有し、該メモリには通信管理部が
設定され、該通信管理部はノード間で通信を行うための
通信プロトコル処理を行う構成の並列計算機における通
信方法であり、該通信管理部のプロトコル処理の一部
に、通信の使用者が定義したプロトコル処理関数を登録
し、通信時に、該通信プロトコル処理の一部を行うプロ
トコル処理関数が新たに定義され登録されていれば、該
通信プロトコル処理の一部を、該新たに定義されたプロ
トコル処理関数を用いて行うようにしている。
【0009】また、複数のノードをネットワークで結合
し、該複数のノードの各々は、メモリと、プロセッサ
と、ネットワークアダプタを有し、該メモリには通信管
理部が設定され、該通信管理部は、複数の通信端点を管
理し、ノード間で通信を行うための通信プロトコルの処
理を行う構成の並列計算機における通信方法であり、通
信の使用者が定義したプロトコル処理の一部を行うプロ
トコル処理関数を、使用する通信端点に登録し、通信時
に、通信端点に該通信プロトコル処理の一部を行うプロ
トコル処理関数が登録されていれば、該通信端点に関す
る通信を処理する該通信プロトコル処理の一部を該登録
されたプロトコル処理関数を用いて行うようにしてい
る。
し、該複数のノードの各々は、メモリと、プロセッサ
と、ネットワークアダプタを有し、該メモリには通信管
理部が設定され、該通信管理部は、複数の通信端点を管
理し、ノード間で通信を行うための通信プロトコルの処
理を行う構成の並列計算機における通信方法であり、通
信の使用者が定義したプロトコル処理の一部を行うプロ
トコル処理関数を、使用する通信端点に登録し、通信時
に、通信端点に該通信プロトコル処理の一部を行うプロ
トコル処理関数が登録されていれば、該通信端点に関す
る通信を処理する該通信プロトコル処理の一部を該登録
されたプロトコル処理関数を用いて行うようにしてい
る。
【0010】また、前記通信端点への通信プロトコル処
理の一部を行うプロトコル処理関数の登録は、通信端点
作成時に行うようにしている。また、前記通信端点への
通信プロトコル処理の一部を行うプロトコル処理関数の
登録は、通信端点作成から通信端点消去までの間に行う
ようにしている。また、前記通信の使用者が定義し登録
する通信プロトコル処理の一部を行うプロトコル処理関
数は、受信するメッセージデータの受信領域割り当て関
数であるようにしている。
理の一部を行うプロトコル処理関数の登録は、通信端点
作成時に行うようにしている。また、前記通信端点への
通信プロトコル処理の一部を行うプロトコル処理関数の
登録は、通信端点作成から通信端点消去までの間に行う
ようにしている。また、前記通信の使用者が定義し登録
する通信プロトコル処理の一部を行うプロトコル処理関
数は、受信するメッセージデータの受信領域割り当て関
数であるようにしている。
【0011】また、複数のノードをネットワークで結合
し、該複数のノードの各々は、メモリと、プロセッサ
と、ネットワークアダプタを有し、該メモリには通信管
理部が設定されている並列計算機において、通信メッセ
ージの送信側で、通信メッセージに任意の識別子を付加
し、受信側は、該識別子が付加された通信メッセージに
対応する受信領域を、該通信メッセージ受信前に識別子
とともにあらかじめ登録しておき、該識別子が付加され
た通信メッセージ受信時に、該識別子に対応する受信領
域が登録されていれば、該登録されている受信領域に通
信メッセージを格納するようにしている。
し、該複数のノードの各々は、メモリと、プロセッサ
と、ネットワークアダプタを有し、該メモリには通信管
理部が設定されている並列計算機において、通信メッセ
ージの送信側で、通信メッセージに任意の識別子を付加
し、受信側は、該識別子が付加された通信メッセージに
対応する受信領域を、該通信メッセージ受信前に識別子
とともにあらかじめ登録しておき、該識別子が付加され
た通信メッセージ受信時に、該識別子に対応する受信領
域が登録されていれば、該登録されている受信領域に通
信メッセージを格納するようにしている。
【0012】また、複数のノードをネットワークで結合
した並列計算機において、該複数のノードの各々は、メ
モリと、プロセッサと、ネットワークアダプタと、通信
管理部を有し、該通信管理部は、該複数のノード間で通
信を行うための通信プロトコル処理を行う手段と、該通
信プロトコル処理の一部を行うプロトコル処理手段を新
たに設定、登録する手段を有するようにしている。
した並列計算機において、該複数のノードの各々は、メ
モリと、プロセッサと、ネットワークアダプタと、通信
管理部を有し、該通信管理部は、該複数のノード間で通
信を行うための通信プロトコル処理を行う手段と、該通
信プロトコル処理の一部を行うプロトコル処理手段を新
たに設定、登録する手段を有するようにしている。
【0013】また、複数のノードをネットワークで結合
した並列計算機において、該複数のノードの各々は、メ
モリと、プロセッサと、ネットワークアダプタと、通信
管理部を有し、該通信管理部は、複数の通信端点を管理
する手段と、該複数のノード上の通信端点間で通信を行
うための通信プロトコル処理を行う手段と、該通信プロ
トコル処理の一部を行うプロトコル処理手段を該複数の
通信端点毎に新たに設定、登録する手段を有するように
している。
した並列計算機において、該複数のノードの各々は、メ
モリと、プロセッサと、ネットワークアダプタと、通信
管理部を有し、該通信管理部は、複数の通信端点を管理
する手段と、該複数のノード上の通信端点間で通信を行
うための通信プロトコル処理を行う手段と、該通信プロ
トコル処理の一部を行うプロトコル処理手段を該複数の
通信端点毎に新たに設定、登録する手段を有するように
している。
【0014】また、複数のノードをネットワークで結合
した並列計算機において、該複数のノードの各々は、メ
モリと、プロセッサと、ネットワークアダプタと、通信
管理部と、通信メッセージに対し任意の識別子を付加す
る手段と、該任意の識別子が付加された通信メッセージ
の受信領域を、該任意の識別子毎に登録する手段を有す
るようにしている。
した並列計算機において、該複数のノードの各々は、メ
モリと、プロセッサと、ネットワークアダプタと、通信
管理部と、通信メッセージに対し任意の識別子を付加す
る手段と、該任意の識別子が付加された通信メッセージ
の受信領域を、該任意の識別子毎に登録する手段を有す
るようにしている。
【0015】また、複数のノードをネットワークで結合
し、該複数のノードの各々は、メモリと、プロセッサ
と、ネットワークアダプタと、通信管理部を有し、該通
信管理部は、複数の通信端点を管理する手段と、該複数
の通信端点毎に、メッセージ受信領域割当手段を設定、
登録する手段と、通信メッセージに任意の識別子を付加
する手段を有し、該複数のノードの少なくとも1つのノ
ード上に、サービスを提供するサーバが存在し、該複数
のノードの少なくとも1つのノード上に、該サーバに対
しサービスを要求するクライアントが存在する並列計算
機におけるクライアント・サーバ間通信方法であり、該
クライアントは、該サーバからの通信メッセージを受信
する通信端点に対し、通信メッセージ受信処理時に呼び
出される受信領域割当手段を登録しておき、該クライア
ントは、該サーバに対しデータを要求するメッセージを
送信する際に、該データの受信領域に識別子を付け、該
サーバに送信する要求メッセージに該識別子を付加し、
該要求メッセージを受信した該サーバは、該クライアン
トに返信する応答メッセージに該識別子を付加し、該ク
ライアントは、該応答メッセージ受信時に呼び出される
該登録しておいた受信領域割当手段により該識別子に対
応する受信領域を選択し、該通信管理部は、該選択され
た受信領域に対して受信メッセージを格納するようにし
ている。
し、該複数のノードの各々は、メモリと、プロセッサ
と、ネットワークアダプタと、通信管理部を有し、該通
信管理部は、複数の通信端点を管理する手段と、該複数
の通信端点毎に、メッセージ受信領域割当手段を設定、
登録する手段と、通信メッセージに任意の識別子を付加
する手段を有し、該複数のノードの少なくとも1つのノ
ード上に、サービスを提供するサーバが存在し、該複数
のノードの少なくとも1つのノード上に、該サーバに対
しサービスを要求するクライアントが存在する並列計算
機におけるクライアント・サーバ間通信方法であり、該
クライアントは、該サーバからの通信メッセージを受信
する通信端点に対し、通信メッセージ受信処理時に呼び
出される受信領域割当手段を登録しておき、該クライア
ントは、該サーバに対しデータを要求するメッセージを
送信する際に、該データの受信領域に識別子を付け、該
サーバに送信する要求メッセージに該識別子を付加し、
該要求メッセージを受信した該サーバは、該クライアン
トに返信する応答メッセージに該識別子を付加し、該ク
ライアントは、該応答メッセージ受信時に呼び出される
該登録しておいた受信領域割当手段により該識別子に対
応する受信領域を選択し、該通信管理部は、該選択され
た受信領域に対して受信メッセージを格納するようにし
ている。
【0016】
【発明の実施の形態】図1〜図12を用いて、本発明の
1実施例を説明する。本実施例では、ファイルサーバと
ファイルクライアントが存在する並列計算機において、
ユーザアプリケーションプロセス(以下UAPと略す)
のファイルI/O要求に伴って発生するファイルクライア
ントとファイルサーバ間の通信について説明する。始め
に図1を用いて、本実施例が対象とする並列計算機を説
明する。次に図2、図4〜図6、図8、図11を用い
て、本発明の特徴である通信管理部の提供する通信イン
タフェースおよび通信プロトコル処理の詳細を説明す
る。最後に図3、図7、図9、図10を用いて、本発明
の通信方法を用いて最適化した、ファイルクライアント
−ファイルサーバ間の通信方法を説明する。
1実施例を説明する。本実施例では、ファイルサーバと
ファイルクライアントが存在する並列計算機において、
ユーザアプリケーションプロセス(以下UAPと略す)
のファイルI/O要求に伴って発生するファイルクライア
ントとファイルサーバ間の通信について説明する。始め
に図1を用いて、本実施例が対象とする並列計算機を説
明する。次に図2、図4〜図6、図8、図11を用い
て、本発明の特徴である通信管理部の提供する通信イン
タフェースおよび通信プロトコル処理の詳細を説明す
る。最後に図3、図7、図9、図10を用いて、本発明
の通信方法を用いて最適化した、ファイルクライアント
−ファイルサーバ間の通信方法を説明する。
【0017】図1は、本発明が対象とする並列計算機を
示している。図1において、各ノード(101、10
2、103、104)はネットワーク(105)で結合
されており、ノード間の通信はネットワーク(105)
を通じて行う。この並列計算機において、ノード(10
2)はディスク(106)を保持しており、ファイルサ
ーバノードとしての役割を担っている。他のノード(1
01、103、104)がファイルI/Oを行う場合は、
ネットワーク(105)を通じてノード(102)にI/
O要求を送信する。
示している。図1において、各ノード(101、10
2、103、104)はネットワーク(105)で結合
されており、ノード間の通信はネットワーク(105)
を通じて行う。この並列計算機において、ノード(10
2)はディスク(106)を保持しており、ファイルサ
ーバノードとしての役割を担っている。他のノード(1
01、103、104)がファイルI/Oを行う場合は、
ネットワーク(105)を通じてノード(102)にI/
O要求を送信する。
【0018】ノード101、103、104の構成は同
じであるため、以下ノード101とノード102の説明
を行う。ノード101、102は演算を行うプロセッサ
(111、131)と、ネットワークとのインタフェー
スであるネットワークアダプタ(112、132)、お
よびメモリ(113、133)で構成する。メモリ上に
はオペレーティングシステム(以下OSと略す)(11
4、134)が常駐し、複数のUAP(120、12
1、140)が動作する。ネットワークアダプタ(11
2、132)は、メモリ(113、133)上のメッセ
ージデータをネットワーク(105)へ送出し、ネット
ワーク(105)から受信したメッセージデータをメモ
リ(113、133)へ書き込み、プロセッサ(11
1、131)へ割り込みをかける機能を持つ。OS(1
14、134)内には、通信管理部(115、135)
が存在する。
じであるため、以下ノード101とノード102の説明
を行う。ノード101、102は演算を行うプロセッサ
(111、131)と、ネットワークとのインタフェー
スであるネットワークアダプタ(112、132)、お
よびメモリ(113、133)で構成する。メモリ上に
はオペレーティングシステム(以下OSと略す)(11
4、134)が常駐し、複数のUAP(120、12
1、140)が動作する。ネットワークアダプタ(11
2、132)は、メモリ(113、133)上のメッセ
ージデータをネットワーク(105)へ送出し、ネット
ワーク(105)から受信したメッセージデータをメモ
リ(113、133)へ書き込み、プロセッサ(11
1、131)へ割り込みをかける機能を持つ。OS(1
14、134)内には、通信管理部(115、135)
が存在する。
【0019】通信管理部(115、135)はネットワ
ークアダプタ(112、132)を制御し、並列計算機
内の他のノードとの通信を管理する。OS(114、1
34)や、UAP(120、121、140)が他のノー
ドと通信を行う場合、通信管理部(115、135)を
通じてメッセージの送信や受信を行う。通信管理部(1
15、135)は、通信プロトコル(ショートメッセー
ジ通信プロトコル、ロングメッセージ通信プロトコル
等)におけるプロトコル処理関数群(123、141)
を有し、また、通信端点テーブル(117、137)を
保持している。通信端点テーブル(117、137)
(図2により後述)は、通信管理部(115、135)
が提供する通信インタフェースである通信端点を管理す
るテーブルである。メッセージの送信側は、通信端点に
対してメッセージを送信し、受信側は通信端点からメッ
セージを取り出す。通信端点は、受信側が作成し、通信
管理部(115、135)に登録する。通信端点には、
メッセージデータの受信領域割当関数を登録することが
できる。受信領域割当関数が登録されていると、通信管
理部は受信領域が必要になった時点で、プロトコル処理
関数の1つである登録されている受信領域割当関数を呼
び出す。
ークアダプタ(112、132)を制御し、並列計算機
内の他のノードとの通信を管理する。OS(114、1
34)や、UAP(120、121、140)が他のノー
ドと通信を行う場合、通信管理部(115、135)を
通じてメッセージの送信や受信を行う。通信管理部(1
15、135)は、通信プロトコル(ショートメッセー
ジ通信プロトコル、ロングメッセージ通信プロトコル
等)におけるプロトコル処理関数群(123、141)
を有し、また、通信端点テーブル(117、137)を
保持している。通信端点テーブル(117、137)
(図2により後述)は、通信管理部(115、135)
が提供する通信インタフェースである通信端点を管理す
るテーブルである。メッセージの送信側は、通信端点に
対してメッセージを送信し、受信側は通信端点からメッ
セージを取り出す。通信端点は、受信側が作成し、通信
管理部(115、135)に登録する。通信端点には、
メッセージデータの受信領域割当関数を登録することが
できる。受信領域割当関数が登録されていると、通信管
理部は受信領域が必要になった時点で、プロトコル処理
関数の1つである登録されている受信領域割当関数を呼
び出す。
【0020】ファイルクライアント(116)は、UAP
(120、121)からのファイルI/O要求を受けつ
け、ファイルサーバ(136)に対してファイルI/O要
求を発行する。データ受信領域管理テーブル(118)
(図3により後述)は、UAP(122)が指定するデ
ータ受信領域(122)と、ファイルサーバ(136)
に送信する要求メッセージとの対応を管理するために用
いる。
(120、121)からのファイルI/O要求を受けつ
け、ファイルサーバ(136)に対してファイルI/O要
求を発行する。データ受信領域管理テーブル(118)
(図3により後述)は、UAP(122)が指定するデ
ータ受信領域(122)と、ファイルサーバ(136)
に送信する要求メッセージとの対応を管理するために用
いる。
【0021】ファイルサーバ(136)は、ファイルク
ライアント(116)からのファイルI/O要求を受けつ
け、ディスクアクセスを行う。ファイル書き込み要求の
場合は、ファイルクライアントから送信されたデータを
ディスク(106)に書き込み、ファイル読み出し要求
の場合は、要求されたファイルのデータをディスク(1
07)から読み出し、ファイルクライアントに転送す
る。
ライアント(116)からのファイルI/O要求を受けつ
け、ディスクアクセスを行う。ファイル書き込み要求の
場合は、ファイルクライアントから送信されたデータを
ディスク(106)に書き込み、ファイル読み出し要求
の場合は、要求されたファイルのデータをディスク(1
07)から読み出し、ファイルクライアントに転送す
る。
【0022】ファイルクライアント(116)内の受信
領域選択関数(119)(図10により後述)は、サー
バから受信する応答メッセージの受信領域としてUAP
が指定するファイル受信領域を正しく選択するための関
数である。受信領域選択関数(119)は、メッセージ
受信時に通信管理部から呼び出されるように、メッセー
ジを受信する通信端点に登録しておく。
領域選択関数(119)(図10により後述)は、サー
バから受信する応答メッセージの受信領域としてUAP
が指定するファイル受信領域を正しく選択するための関
数である。受信領域選択関数(119)は、メッセージ
受信時に通信管理部から呼び出されるように、メッセー
ジを受信する通信端点に登録しておく。
【0023】以上の構成の並列計算機において、ファイ
ルクライアント(116)は通信管理部(115)が提
供する通信インタフェースを用いてファイルサーバ(1
36)と通信を行い、UAP(120、121)からの
ファイルI/O要求を実現する。通信管理部(115、1
35)は、受信領域割当関数をデフォルトで持ってい
る。本発明は、通信の使用者がデフォルトの受信領域割
当関数を再定義できるインタフェースを通信管理部(1
15、135)が提供し、そのインタフェースを用いる
ことで、ファイルクライアント(116)とファイルサ
ーバ(136)間の通信処理を効率的に行うことが特徴
である。
ルクライアント(116)は通信管理部(115)が提
供する通信インタフェースを用いてファイルサーバ(1
36)と通信を行い、UAP(120、121)からの
ファイルI/O要求を実現する。通信管理部(115、1
35)は、受信領域割当関数をデフォルトで持ってい
る。本発明は、通信の使用者がデフォルトの受信領域割
当関数を再定義できるインタフェースを通信管理部(1
15、135)が提供し、そのインタフェースを用いる
ことで、ファイルクライアント(116)とファイルサ
ーバ(136)間の通信処理を効率的に行うことが特徴
である。
【0024】以下、通信管理部(115、135)が提
供する通信インタフェースと、通信管理部(115、1
35)が行う処理を説明し、次に、その通信インタフェ
ースを用いてファイルクライアント(116)とファイ
ルサーバ(136)が行うファイル読み込み処理の流れ
を説明する。
供する通信インタフェースと、通信管理部(115、1
35)が行う処理を説明し、次に、その通信インタフェ
ースを用いてファイルクライアント(116)とファイ
ルサーバ(136)が行うファイル読み込み処理の流れ
を説明する。
【0025】図4に通信管理部(115、135)が提
供する通信インタフェースを示す。通信管理部(11
5、135)は、通信端点作成を行うcomm_port_alloc
(401)、通信端点消去を行うcomm_port_dealloc
(402)、送信を行うsend(403)、受信を行うco
mm_recv(404)の4つの通信インタフェースを提供
する。comm_port_alloc(401)は、指定されたcommI
D(411)で通信端点を作成し、その通信端点に受信
領域割り当て関数faddr(412)を設定する。commID
(411)には、作成する通信端点のIDを指定する。fadd
r(412)には、reg_alloc(405)の形式の受信領
域割当関数のアドレスを指定する。受信領域割当関数を
指定する必要がなく、デフォルトの受信領域割当関数を
使用する場合には、faddr(412)に0を指定する。c
omm_port_alloc(401)は、指定されたcommID(41
1)が通信端点テーブル(117、137)に登録され
ているかどうかを調べ、すでに登録されている場合には
エラーとして1を返す。commID(411)が、通信端点
テーブル(117,137)に未登録の場合は、新たな
エントリを取得し、その通信端点IDフィールド(20
1)にcommID(411)の値を格納する。また、faddr
(412)が0でなければ、その値を受信領域割当関数
ポインタフィールド(202)に格納する。
供する通信インタフェースを示す。通信管理部(11
5、135)は、通信端点作成を行うcomm_port_alloc
(401)、通信端点消去を行うcomm_port_dealloc
(402)、送信を行うsend(403)、受信を行うco
mm_recv(404)の4つの通信インタフェースを提供
する。comm_port_alloc(401)は、指定されたcommI
D(411)で通信端点を作成し、その通信端点に受信
領域割り当て関数faddr(412)を設定する。commID
(411)には、作成する通信端点のIDを指定する。fadd
r(412)には、reg_alloc(405)の形式の受信領
域割当関数のアドレスを指定する。受信領域割当関数を
指定する必要がなく、デフォルトの受信領域割当関数を
使用する場合には、faddr(412)に0を指定する。c
omm_port_alloc(401)は、指定されたcommID(41
1)が通信端点テーブル(117、137)に登録され
ているかどうかを調べ、すでに登録されている場合には
エラーとして1を返す。commID(411)が、通信端点
テーブル(117,137)に未登録の場合は、新たな
エントリを取得し、その通信端点IDフィールド(20
1)にcommID(411)の値を格納する。また、faddr
(412)が0でなければ、その値を受信領域割当関数
ポインタフィールド(202)に格納する。
【0026】reg_alloc(405)はpacket(451)
と&addr(452)の2つの引数を持つ関数である。こ
こで、&は変数のアドレスを意味し、&addrはaddrのアド
レスを意味する。以下&はこの意味で用いる。packet
(451)には、受信したパケットのアドレスが渡され
る。&addr(452)には、reg_alloc(405)が割り
当てた受信領域の先頭アドレスを格納する領域へのポイ
ンタが格納される。reg_alloc(405)はpacket(4
51)で指定されたパケットを解析し、必要な受信領域
を割り当て、割り当てた受信領域の先頭アドレスをaddr
(452)に格納する。
と&addr(452)の2つの引数を持つ関数である。こ
こで、&は変数のアドレスを意味し、&addrはaddrのアド
レスを意味する。以下&はこの意味で用いる。packet
(451)には、受信したパケットのアドレスが渡され
る。&addr(452)には、reg_alloc(405)が割り
当てた受信領域の先頭アドレスを格納する領域へのポイ
ンタが格納される。reg_alloc(405)はpacket(4
51)で指定されたパケットを解析し、必要な受信領域
を割り当て、割り当てた受信領域の先頭アドレスをaddr
(452)に格納する。
【0027】comm_port_dealloc(402)は、指定さ
れたcommID(421)の通信端点番号を持つ通信端点を
消去する。すなわち、通信端点管理テーブル(117、
137)を検索し、通信端点IDフィールド(201)
にcommID(421)と同じ値をもつエントリをクリアす
る。
れたcommID(421)の通信端点番号を持つ通信端点を
消去する。すなわち、通信端点管理テーブル(117、
137)を検索し、通信端点IDフィールド(201)
にcommID(421)と同じ値をもつエントリをクリアす
る。
【0028】send(403)は、msg(433)で示す
アドレスに格納したメッセージを、ノード番号node(4
31)を持つノード上の通信端点番号commID(432)
を持つ通信端点に送信する。size(434)にはメッセ
ージのサイズを指定する。uval(435)は、送信する
メッセージに付加するユーザ指定の識別子である。uval
(435)はメッセージと共に受信ノード上の通信端点
に送信される。uval(435)は、受信者がこのメッセ
ージを受信インタフェースrecv(404)で受信した時
に、メッセージと共に受信者に渡される。また、受信領
域割り当て関数reg_alloc(405)の引数packet(4
51)で渡されるパケットにもuval(435)が含まれ
ているため、reg_alloc(405)は受信領域割り当て
処理にuval(435)を利用することができる。
アドレスに格納したメッセージを、ノード番号node(4
31)を持つノード上の通信端点番号commID(432)
を持つ通信端点に送信する。size(434)にはメッセ
ージのサイズを指定する。uval(435)は、送信する
メッセージに付加するユーザ指定の識別子である。uval
(435)はメッセージと共に受信ノード上の通信端点
に送信される。uval(435)は、受信者がこのメッセ
ージを受信インタフェースrecv(404)で受信した時
に、メッセージと共に受信者に渡される。また、受信領
域割り当て関数reg_alloc(405)の引数packet(4
51)で渡されるパケットにもuval(435)が含まれ
ているため、reg_alloc(405)は受信領域割り当て
処理にuval(435)を利用することができる。
【0029】recv(404)は、通信端点番号commID
(441)で指定される通信端点から受信メッセージを
取り出す。通信端点にメッセージが到着していない場合
には、メッセージが到着するまで待ち合わせを行う。受
信したメッセージのアドレスは&msg(442)で指定し
たアドレスに格納され、&size(443)が示すアドレ
スにはメッセージのサイズが格納される。&uval(44
4)で指定するアドレスには、送信者がsend(403)
のuval(435)引数で指定した値が格納される。
(441)で指定される通信端点から受信メッセージを
取り出す。通信端点にメッセージが到着していない場合
には、メッセージが到着するまで待ち合わせを行う。受
信したメッセージのアドレスは&msg(442)で指定し
たアドレスに格納され、&size(443)が示すアドレ
スにはメッセージのサイズが格納される。&uval(44
4)で指定するアドレスには、送信者がsend(403)
のuval(435)引数で指定した値が格納される。
【0030】次に、send(403)およびrecv(40
4)で指定するメッセージの構成を説明する。図11が
通信メッセージの構成を示している。通信メッセージ
は、メッセージヘッダ部(1101)とメッセージデー
タ部(1102)で構成する。通信メッセージのデータ
にはショートデータとロングデータの2種類がある。シ
ョートデータは、メッセージデータ部(1102)に格
納し、そのサイズはメッセージサイズ(1104)に格
納する。メッセージサイズはSHORT_MSG_MAX以下でなけ
ればならない。一方ロングデータは、メッセージヘッダ
部(1101)のロングデータアドレス(1105)に
データの存在するアドレスを格納し、ロングデータサイ
ズ(1106)にそのサイズを指定する。ロングデータ
フラグ(1103)には、そのメッセージがロングデー
タを含むかどうかを指定する。ロングデータを含む場合
には、ロングデータフラグ(1103)に1を指定し、
含まない場合には0を指定する。
4)で指定するメッセージの構成を説明する。図11が
通信メッセージの構成を示している。通信メッセージ
は、メッセージヘッダ部(1101)とメッセージデー
タ部(1102)で構成する。通信メッセージのデータ
にはショートデータとロングデータの2種類がある。シ
ョートデータは、メッセージデータ部(1102)に格
納し、そのサイズはメッセージサイズ(1104)に格
納する。メッセージサイズはSHORT_MSG_MAX以下でなけ
ればならない。一方ロングデータは、メッセージヘッダ
部(1101)のロングデータアドレス(1105)に
データの存在するアドレスを格納し、ロングデータサイ
ズ(1106)にそのサイズを指定する。ロングデータ
フラグ(1103)には、そのメッセージがロングデー
タを含むかどうかを指定する。ロングデータを含む場合
には、ロングデータフラグ(1103)に1を指定し、
含まない場合には0を指定する。
【0031】以上の通信インタフェースを提供する通信
管理部(115、135)の詳細を以下で説明する。通
信管理部は、send(401)インタフェースで指定され
たメッセージを、指定されたノード上の通信端点に転送
する機能を提供する。通信管理部は、複数の通信端点を
通信端点テーブル(117、137)を用いて管理す
る。また、1メッセージの転送に複数のネットワークパ
ケットを使用するが、ネットワークパケットは、ネット
ワークアダプタ(112、132)を制御して送受信す
る。図2に通信端点テーブル(117,137)の構成
を示す。通信端点テーブルは、通信端点IDフィールド
(201)と受信領域割当関数ポインタフィールド(2
02)の2つのフィールドで構成する。通信端点IDフィ
ールド(201)には通信端点作成時に通信端点の作成
者が指定した通信端点のIDを格納する。この通信端点ID
は、ノード内で一意でなければならず、通信端点作成時
にすでに同じIDを持つ通信端点が存在すると、通信端点
の作成が失敗する。受信領域割当関数ポインタフィール
ド(202)には、この通信端点に割り当てられた受信
領域割当関数へのポインタを格納する。受信領域割当関
数は、通信端点作成時に通信端点の作成者が指定するこ
とができる。通信端点作成時に受信領域割当関数が指定
されなかった場合には、デフォルト受信領域割当関数
(203)へのポインタが格納される。図2の例では、
通信端点ID1001、2731、803を持つ通信端点
は受信領域割当関数として、def_alloc関数を使用し、
通信端点ID77を持つ通信端点はfile_allocを使用す
る。
管理部(115、135)の詳細を以下で説明する。通
信管理部は、send(401)インタフェースで指定され
たメッセージを、指定されたノード上の通信端点に転送
する機能を提供する。通信管理部は、複数の通信端点を
通信端点テーブル(117、137)を用いて管理す
る。また、1メッセージの転送に複数のネットワークパ
ケットを使用するが、ネットワークパケットは、ネット
ワークアダプタ(112、132)を制御して送受信す
る。図2に通信端点テーブル(117,137)の構成
を示す。通信端点テーブルは、通信端点IDフィールド
(201)と受信領域割当関数ポインタフィールド(2
02)の2つのフィールドで構成する。通信端点IDフィ
ールド(201)には通信端点作成時に通信端点の作成
者が指定した通信端点のIDを格納する。この通信端点ID
は、ノード内で一意でなければならず、通信端点作成時
にすでに同じIDを持つ通信端点が存在すると、通信端点
の作成が失敗する。受信領域割当関数ポインタフィール
ド(202)には、この通信端点に割り当てられた受信
領域割当関数へのポインタを格納する。受信領域割当関
数は、通信端点作成時に通信端点の作成者が指定するこ
とができる。通信端点作成時に受信領域割当関数が指定
されなかった場合には、デフォルト受信領域割当関数
(203)へのポインタが格納される。図2の例では、
通信端点ID1001、2731、803を持つ通信端点
は受信領域割当関数として、def_alloc関数を使用し、
通信端点ID77を持つ通信端点はfile_allocを使用す
る。
【0032】図5、図6及び図8を用いて、異なるノー
ド上の通信管理部間でのメッセージ通信プロトコルを説
明する。メッセージ転送は、複数のネットワークパケッ
トを送受信ノード間で送受信して実現する。ネットワー
クパケットを送受信する順番や、ネットワークパケット
を送受信するときに行うべき処理の規約がメッセージ通
信プロトコルである。メッセージ通信プロトコルには、
ショートメッセージ通信プロトコルとロングメッセージ
通信プロトコルの2つがある。ショートメッセージ通信
プロトコルは、ユーザがsend(401)で指定した通信
メッセージがロングデータを含まない場合、すなわちメ
ッセージヘッダ部(1101)のロングデータフラグ
(1103)に0が指定された場合に使用する通信プロ
トコルである。通信メッセージがロングデータを含む場
合、すなわちロングデータフラグ(1103)に1が指
定された場合にはロングメッセージ通信プロトコルを使
用する。図5はショートメッセージ通信プロトコルを、
図6はロングメッセージ通信プロトコルを、図8は両メ
ッセージ通信プロトコルが使用するネットワークパケッ
トの構成を示している。
ド上の通信管理部間でのメッセージ通信プロトコルを説
明する。メッセージ転送は、複数のネットワークパケッ
トを送受信ノード間で送受信して実現する。ネットワー
クパケットを送受信する順番や、ネットワークパケット
を送受信するときに行うべき処理の規約がメッセージ通
信プロトコルである。メッセージ通信プロトコルには、
ショートメッセージ通信プロトコルとロングメッセージ
通信プロトコルの2つがある。ショートメッセージ通信
プロトコルは、ユーザがsend(401)で指定した通信
メッセージがロングデータを含まない場合、すなわちメ
ッセージヘッダ部(1101)のロングデータフラグ
(1103)に0が指定された場合に使用する通信プロ
トコルである。通信メッセージがロングデータを含む場
合、すなわちロングデータフラグ(1103)に1が指
定された場合にはロングメッセージ通信プロトコルを使
用する。図5はショートメッセージ通信プロトコルを、
図6はロングメッセージ通信プロトコルを、図8は両メ
ッセージ通信プロトコルが使用するネットワークパケッ
トの構成を示している。
【0033】まず始めに、図8を用いてネットワークパ
ケットの構成を説明する。ネットワークパケットは、ヘ
ッダ部(801)とデータ部(802)で構成する。ヘ
ッダ部はパケットの宛先を示す受信ノード番号(80
3)、パケットの送信元を示す送信ノード番号(80
4)、パケットの種類を示すパケットフラグ(80
5)、送信ノードが送信したパケットに付加する番号で
ある順序番号(806)、データを書き込む受信ノード
上のメモリアドレスを指定するデータ書き込みアドレス
(807)、データのサイズを指定するデータサイズ
(808)、送信先通信端点のIDを示す通信端点ID(8
14)、メッセージ送信時にユーザが指定した値を格納
するユーザ指定フィールド(815)で構成する。パケ
ットフラグ(805)は、ショートメッセージ用のパケ
ットを示すSフィールド(809)、ロングメッセージ
用のパケットを示すLフィールド(810)、データ書
き込みアドレスで指定した受信ノードのメモリアドレス
にデータを書き込むことを指示するDフィールド(81
1)、ackパケットを示すAフィールド(812)、受信
領域のアドレス通知パケットを示すRフィールド(81
3)で構成し、それぞれ1か0を指定する。
ケットの構成を説明する。ネットワークパケットは、ヘ
ッダ部(801)とデータ部(802)で構成する。ヘ
ッダ部はパケットの宛先を示す受信ノード番号(80
3)、パケットの送信元を示す送信ノード番号(80
4)、パケットの種類を示すパケットフラグ(80
5)、送信ノードが送信したパケットに付加する番号で
ある順序番号(806)、データを書き込む受信ノード
上のメモリアドレスを指定するデータ書き込みアドレス
(807)、データのサイズを指定するデータサイズ
(808)、送信先通信端点のIDを示す通信端点ID(8
14)、メッセージ送信時にユーザが指定した値を格納
するユーザ指定フィールド(815)で構成する。パケ
ットフラグ(805)は、ショートメッセージ用のパケ
ットを示すSフィールド(809)、ロングメッセージ
用のパケットを示すLフィールド(810)、データ書
き込みアドレスで指定した受信ノードのメモリアドレス
にデータを書き込むことを指示するDフィールド(81
1)、ackパケットを示すAフィールド(812)、受信
領域のアドレス通知パケットを示すRフィールド(81
3)で構成し、それぞれ1か0を指定する。
【0034】ヘッダ部(801)は、ネットワーク(1
05)、ネットワークアダプタ(112,132)、通
信管理部(115,135)のすべてで解釈される。ネ
ットワーク(105)は、受信ノード番号(803)に
指定された受信ノードへパケットを転送する。ネットワ
ークアダプタは、パケットフラグ(805)のDフィー
ルド(811)を調べる。Dフィールド(811)に1
が格納されていると、データ書き込みアドレス(80
7)で指定されるアドレスにデータ部(802)の内容
を書き込んだあと、受信完了割り込みを発生させて通信
管理部にパケット受信を通知する。Dフィールドに0が
格納されていると、通信管理部があらかじめ用意してい
る受信領域に格納したあと、受信完了割り込みを発生さ
せて通信管理部にパケット受信を通知する。通信管理部
は、メッセージ通信プロトコルの実現にヘッダ部を用い
る。
05)、ネットワークアダプタ(112,132)、通
信管理部(115,135)のすべてで解釈される。ネ
ットワーク(105)は、受信ノード番号(803)に
指定された受信ノードへパケットを転送する。ネットワ
ークアダプタは、パケットフラグ(805)のDフィー
ルド(811)を調べる。Dフィールド(811)に1
が格納されていると、データ書き込みアドレス(80
7)で指定されるアドレスにデータ部(802)の内容
を書き込んだあと、受信完了割り込みを発生させて通信
管理部にパケット受信を通知する。Dフィールドに0が
格納されていると、通信管理部があらかじめ用意してい
る受信領域に格納したあと、受信完了割り込みを発生さ
せて通信管理部にパケット受信を通知する。通信管理部
は、メッセージ通信プロトコルの実現にヘッダ部を用い
る。
【0035】図5を用いてショートメッセージ通信プロ
トコルの説明を行う。図5のフローの各ステップは、そ
れぞれプロトコル処理関数に相当する。ショートメッセ
ージを送信する場合、送信側ノードの通信管理部はショ
ートメッセージパケットを送信する(501)。これ
は、パケットデータ部(802)にメッセージヘッダ
(1101)とメッセージデータ(1102)を含むネ
ットワークパケットである。受信側ノードの通信管理部
は、パケットを受信するとヘッダの解析を行う(50
3)。ショートメッセージパケットであることが判明す
ると、次にパケットヘッダの通信端点ID(814)を用
いて通信端点管理テーブルを検索し通信端点のエントリ
を求める(504)。通信端点のエントリが求まると、
パケットデータ部(802)からショートメッセージデ
ータを取り出し、通信端点のメッセージキューにキュー
イングする。その後、ackパケットを送信ノードに対し
て送信し(505)、ショートメッセージの受信処理を
終了する。送信側ノードの通信管理部は、ackパケット
の受信ににより、ショートメッセージパケットが正しく
受信ノードに転送されたことを知り、ショートメッセー
ジの転送処理を終了する。
トコルの説明を行う。図5のフローの各ステップは、そ
れぞれプロトコル処理関数に相当する。ショートメッセ
ージを送信する場合、送信側ノードの通信管理部はショ
ートメッセージパケットを送信する(501)。これ
は、パケットデータ部(802)にメッセージヘッダ
(1101)とメッセージデータ(1102)を含むネ
ットワークパケットである。受信側ノードの通信管理部
は、パケットを受信するとヘッダの解析を行う(50
3)。ショートメッセージパケットであることが判明す
ると、次にパケットヘッダの通信端点ID(814)を用
いて通信端点管理テーブルを検索し通信端点のエントリ
を求める(504)。通信端点のエントリが求まると、
パケットデータ部(802)からショートメッセージデ
ータを取り出し、通信端点のメッセージキューにキュー
イングする。その後、ackパケットを送信ノードに対し
て送信し(505)、ショートメッセージの受信処理を
終了する。送信側ノードの通信管理部は、ackパケット
の受信ににより、ショートメッセージパケットが正しく
受信ノードに転送されたことを知り、ショートメッセー
ジの転送処理を終了する。
【0036】ここで使用したショートメッセージパケッ
トとackパケットそれぞれのパケットヘッダの作成方法
は以下の通りである。ショートメッセージパケットのヘ
ッダには、受信ノード番号(803)、送信ノード番号
(804)、パケットフラグ(805)、順序番号(8
06)、通信端点ID(814)、ユーザ指定値(81
5)の各フィールドを設定する。パケットフラグ(80
5)はSフィールドのみが1で、L、D、A、Rの各フィー
ルドは0の値を設定する。通信端点ID(814)とユー
ザ指定値(815)には、メッセージ送信インタフェー
スの引数commID(432)とuval(435)で指定され
た値をそれぞれ格納する。データサイズ(808)には
パケットデータ部で送信するデータのサイズを格納す
る。データ書き込みアドレス(807)はショートメッ
セージパケットでは設定しなくてもよい。
トとackパケットそれぞれのパケットヘッダの作成方法
は以下の通りである。ショートメッセージパケットのヘ
ッダには、受信ノード番号(803)、送信ノード番号
(804)、パケットフラグ(805)、順序番号(8
06)、通信端点ID(814)、ユーザ指定値(81
5)の各フィールドを設定する。パケットフラグ(80
5)はSフィールドのみが1で、L、D、A、Rの各フィー
ルドは0の値を設定する。通信端点ID(814)とユー
ザ指定値(815)には、メッセージ送信インタフェー
スの引数commID(432)とuval(435)で指定され
た値をそれぞれ格納する。データサイズ(808)には
パケットデータ部で送信するデータのサイズを格納す
る。データ書き込みアドレス(807)はショートメッ
セージパケットでは設定しなくてもよい。
【0037】ackパケットは、パケットフラグ(80
5)に、Aフィールド(812)のみが1で、その他の
フィールドは0の値を設定する。また、順序番号(80
6)には、ショートメッセージパケットのヘッダに格納
されていた順序番号を格納する。その他、受信ノード番
号(803)、送信ノード番号(804)はショートメ
ッセージパケット同様設定するが、その他のフィールド
は設定しなくても良い。
5)に、Aフィールド(812)のみが1で、その他の
フィールドは0の値を設定する。また、順序番号(80
6)には、ショートメッセージパケットのヘッダに格納
されていた順序番号を格納する。その他、受信ノード番
号(803)、送信ノード番号(804)はショートメ
ッセージパケット同様設定するが、その他のフィールド
は設定しなくても良い。
【0038】次に図6を用いて、ロングメッセージ通信
プロトコルを説明する。図6のフローの各ステップは、
それぞれプロトコル処理関数に相当する。ロングメッセ
ージ通信プロトコルでは、始めに受信ノードでロングデ
ータの受信領域を割り当て、受信領域が割り当てられた
後にロングデータの転送を行う2フェーズでのメッセー
ジ転送を行う。このため、最初に送信するパケットには
ロングデータを格納しない。ロングメッセージ通信プロ
トコルでは最初に受信領域割当要求パケット(パケット
フラグ L=1)を送信する(601)。このとき、パ
ケットのデータ部(802)には、メッセージヘッダ
(1101)とメッセージデータ(1102)を格納す
る。
プロトコルを説明する。図6のフローの各ステップは、
それぞれプロトコル処理関数に相当する。ロングメッセ
ージ通信プロトコルでは、始めに受信ノードでロングデ
ータの受信領域を割り当て、受信領域が割り当てられた
後にロングデータの転送を行う2フェーズでのメッセー
ジ転送を行う。このため、最初に送信するパケットには
ロングデータを格納しない。ロングメッセージ通信プロ
トコルでは最初に受信領域割当要求パケット(パケット
フラグ L=1)を送信する(601)。このとき、パ
ケットのデータ部(802)には、メッセージヘッダ
(1101)とメッセージデータ(1102)を格納す
る。
【0039】受信ノードの通信管理部は、パケットを受
信すると、ヘッダの解析を行う(603)。受信領域割
当要求パケットであることを検出すると、通信端点ID
(814)を用いて通信端点管理テーブルを検索し(6
04)、メッセージデータを受信するための受信領域確
保処理を行う(605)。この処理は、通信端点管理テ
ーブル(117,137)の受信領域割当関数ポインタ
フィールド(202)に登録されている関数(受信領域
割当関数)で実行する。受信領域の割当が完了すると、
割り当てられた領域のアドレスを、受信パケットのデー
タ部に含まれるメッセージヘッダのデータアドレスに格
納する。また、割り当てられた領域のアドレスを送信ノ
ードに通知するアドレス通知パケット(パケットフラグ
R=1)を作成し送信する(606)。
信すると、ヘッダの解析を行う(603)。受信領域割
当要求パケットであることを検出すると、通信端点ID
(814)を用いて通信端点管理テーブルを検索し(6
04)、メッセージデータを受信するための受信領域確
保処理を行う(605)。この処理は、通信端点管理テ
ーブル(117,137)の受信領域割当関数ポインタ
フィールド(202)に登録されている関数(受信領域
割当関数)で実行する。受信領域の割当が完了すると、
割り当てられた領域のアドレスを、受信パケットのデー
タ部に含まれるメッセージヘッダのデータアドレスに格
納する。また、割り当てられた領域のアドレスを送信ノ
ードに通知するアドレス通知パケット(パケットフラグ
R=1)を作成し送信する(606)。
【0040】送信ノードの通信管理部は、受信したアド
レス通知パケットのヘッダを解析し(610)、アドレ
ス通知パケットであることを検出すると、アドレス通知
パケットの情報を用いてロングデータ転送パケット(パ
ケットフラグ D=1)を作成し送信する(611)。
ロングデータ転送パケットは、データ部にロングデータ
を格納しており、受信ノードのネットワークアダプタに
より、受信領域確保処理(605)で割り当てられた受
信領域に直接書き込まれる。受信ノードの通信管理部
は、パケットヘッダを解析し(607)、データ転送パ
ケットを受信したことを知ると、先に受信領域割り当て
要求パケットで受信していた通信メッセージを通信端点
にキューイングする(608)。その後、ショートメッ
セージ通信プロトコルと同様にackパケットを送信ノー
ドに送信する(609)。送信ノードの通信管理部はac
kパケットを受信するとロングメッセージの転送処理を
終了する。
レス通知パケットのヘッダを解析し(610)、アドレ
ス通知パケットであることを検出すると、アドレス通知
パケットの情報を用いてロングデータ転送パケット(パ
ケットフラグ D=1)を作成し送信する(611)。
ロングデータ転送パケットは、データ部にロングデータ
を格納しており、受信ノードのネットワークアダプタに
より、受信領域確保処理(605)で割り当てられた受
信領域に直接書き込まれる。受信ノードの通信管理部
は、パケットヘッダを解析し(607)、データ転送パ
ケットを受信したことを知ると、先に受信領域割り当て
要求パケットで受信していた通信メッセージを通信端点
にキューイングする(608)。その後、ショートメッ
セージ通信プロトコルと同様にackパケットを送信ノー
ドに送信する(609)。送信ノードの通信管理部はac
kパケットを受信するとロングメッセージの転送処理を
終了する。
【0041】ここで使用した受信領域割当要求パケッ
ト、アドレス通知パケット、データ転送パケットそれぞ
れのヘッダ作成方法は以下の通りである。受信領域割当
要求パケットのヘッダは、パケットフラグを除いてショ
ートメッセージ用ヘッダと同様に作成する。パケットフ
ラグは、Lフィールド(810)に1を設定し、その他
のフィールドには0を設定する。
ト、アドレス通知パケット、データ転送パケットそれぞ
れのヘッダ作成方法は以下の通りである。受信領域割当
要求パケットのヘッダは、パケットフラグを除いてショ
ートメッセージ用ヘッダと同様に作成する。パケットフ
ラグは、Lフィールド(810)に1を設定し、その他
のフィールドには0を設定する。
【0042】アドレス通知パケットのヘッダは、受信ノ
ード番号(803)に受信領域割当要求パケットヘッダ
の送信ノード番号に指定されていたノード番号を格納
し、送信ノード番号(804)に自ノード番号を格納す
る。パケットフラグは、Rフィールドのみに1を設定
し、その他のフィールドには0を設定する。順序番号
(806)にはロングメッセージパケットの順序番号に
指定されていた値をそのまま設定する。データ書き込み
アドレス(807)とデータサイズ(808)には、受
信領域割当処理(605)で割り当てた受信領域のアド
レスとサイズを格納する。
ード番号(803)に受信領域割当要求パケットヘッダ
の送信ノード番号に指定されていたノード番号を格納
し、送信ノード番号(804)に自ノード番号を格納す
る。パケットフラグは、Rフィールドのみに1を設定
し、その他のフィールドには0を設定する。順序番号
(806)にはロングメッセージパケットの順序番号に
指定されていた値をそのまま設定する。データ書き込み
アドレス(807)とデータサイズ(808)には、受
信領域割当処理(605)で割り当てた受信領域のアド
レスとサイズを格納する。
【0043】ロングデータ転送パケットのヘッダは、パ
ケットフラグ(805)に、Dフィールドのみに1を設
定し、その他のフィールドには0を設定する。データ書
き込みアドレス(807)とデータサイズ(808)
は、アドレス通知パケットで指定された値を設定し、通
信端点ID(809)とユーザ指定値(810)には、受
信領域割当要求パケットで指定した値を設定する。
ケットフラグ(805)に、Dフィールドのみに1を設
定し、その他のフィールドには0を設定する。データ書
き込みアドレス(807)とデータサイズ(808)
は、アドレス通知パケットで指定された値を設定し、通
信端点ID(809)とユーザ指定値(810)には、受
信領域割当要求パケットで指定した値を設定する。
【0044】また、ユーザが通信端点に受信領域割当関
数を指定していなかった場合に実行されるデフォルト受
信領域割当関数の処理は以下の通りである。デフォルト
受信領域割当関数は、引数packet(451)で指定され
た受信パケットのデータ部(802)に格納されている
メッセージヘッダ(1101)を調べ、ロングデータサ
イズ(1106)を取得する。次にロングデータサイズ
分のメモリ領域を動的に割り当て、その先頭アドレスを
&addr(452)を通じて返す。以上の通信インタフェ
ースを用いて、ファイルクライアント(116)とファ
イルサーバ(136)はファイルデータの送受信を行
う。
数を指定していなかった場合に実行されるデフォルト受
信領域割当関数の処理は以下の通りである。デフォルト
受信領域割当関数は、引数packet(451)で指定され
た受信パケットのデータ部(802)に格納されている
メッセージヘッダ(1101)を調べ、ロングデータサ
イズ(1106)を取得する。次にロングデータサイズ
分のメモリ領域を動的に割り当て、その先頭アドレスを
&addr(452)を通じて返す。以上の通信インタフェ
ースを用いて、ファイルクライアント(116)とファ
イルサーバ(136)はファイルデータの送受信を行
う。
【0045】ここでは、UAP(121)がファイルの読
み込み要求を行った場合の、ファイルクライアント(1
16)とファイルサーバ(136)の処理を説明する。
ファイルクライアントは、UAP(121)の読み込み
要求に従って、ファイルサーバにファイル読み込み要求
メッセージを送信し、ファイルサーバから受け取った応
答メッセージに含まれるファイルデータを、UAP(1
21)が指定したデータ受信領域に格納する処理を行
う。サーバからの応答メッセージ受信領域の割り当て
に、デフォルト受信領域割当関数を用いると、通信管理
部が新たにメモリ領域を割り当て、そこにファイル読み
込みデータを格納する。このため、応答メッセージ受信
後に、UAP(121)が指定したデータ受信領域にデ
ータをコピーする必要がある。このコピーオーバヘッド
は、あらかじめUAP(121)がデータ受信領域を指
定しているにも関わらず、通信管理部はそれを知らない
ために発生する。
み込み要求を行った場合の、ファイルクライアント(1
16)とファイルサーバ(136)の処理を説明する。
ファイルクライアントは、UAP(121)の読み込み
要求に従って、ファイルサーバにファイル読み込み要求
メッセージを送信し、ファイルサーバから受け取った応
答メッセージに含まれるファイルデータを、UAP(1
21)が指定したデータ受信領域に格納する処理を行
う。サーバからの応答メッセージ受信領域の割り当て
に、デフォルト受信領域割当関数を用いると、通信管理
部が新たにメモリ領域を割り当て、そこにファイル読み
込みデータを格納する。このため、応答メッセージ受信
後に、UAP(121)が指定したデータ受信領域にデ
ータをコピーする必要がある。このコピーオーバヘッド
は、あらかじめUAP(121)がデータ受信領域を指
定しているにも関わらず、通信管理部はそれを知らない
ために発生する。
【0046】本実施例は、ファイルクライアントが、こ
のコピーオーバヘッドを回避するため、応答メッセージ
の受信領域としてUAP(121)指定のデータ受信領
域(122)を選択する受信領域選択関数を設け、あら
かじめ応答メッセージを受信する通信端点に登録すると
ころに特徴がある。応答メッセージを直接UAP(12
1)指定のデータ受信領域(122)に格納することに
より、コピーオーバヘッドを削減する。受信領域選択関
数が、応答メッセージに応じたデータ受信領域を正しく
選択できるように、ファイルクライアントは、サーバに
対する読み込み要求にファイルクライアント内で一意な
トランザクションIDを付加し、そのトランザクション
IDとUAP(121)が指定したデータ受信領域(12
2)の対応を管理する受信領域管理テーブルを保持す
る。このトランザクションIDはファイルサーバからの応
答メッセージにも付加され、応答メッセージ受信時に受
信領域選択関数が通信管理部から呼ばれる際に同時に渡
される。受信領域選択関数は、このトランザクションID
を用いてデータ受信領域管理テーブル(118)を検索
し、ユーザが指定したデータ受信領域を特定する。受信
領域選択関数は、サーバからの応答メッセージを受信す
るための通信端点を作成するときに登録する。通信端点
の作成は、ファイルクライアント初期化時に行う。この
時指定するcommID(411)には、ファイルサーバとの
間であらかじめ取り決めてあるIDを指定し、faddr
(412)には、受信領域選択関数(119)のアドレ
スを指定する。
のコピーオーバヘッドを回避するため、応答メッセージ
の受信領域としてUAP(121)指定のデータ受信領
域(122)を選択する受信領域選択関数を設け、あら
かじめ応答メッセージを受信する通信端点に登録すると
ころに特徴がある。応答メッセージを直接UAP(12
1)指定のデータ受信領域(122)に格納することに
より、コピーオーバヘッドを削減する。受信領域選択関
数が、応答メッセージに応じたデータ受信領域を正しく
選択できるように、ファイルクライアントは、サーバに
対する読み込み要求にファイルクライアント内で一意な
トランザクションIDを付加し、そのトランザクション
IDとUAP(121)が指定したデータ受信領域(12
2)の対応を管理する受信領域管理テーブルを保持す
る。このトランザクションIDはファイルサーバからの応
答メッセージにも付加され、応答メッセージ受信時に受
信領域選択関数が通信管理部から呼ばれる際に同時に渡
される。受信領域選択関数は、このトランザクションID
を用いてデータ受信領域管理テーブル(118)を検索
し、ユーザが指定したデータ受信領域を特定する。受信
領域選択関数は、サーバからの応答メッセージを受信す
るための通信端点を作成するときに登録する。通信端点
の作成は、ファイルクライアント初期化時に行う。この
時指定するcommID(411)には、ファイルサーバとの
間であらかじめ取り決めてあるIDを指定し、faddr
(412)には、受信領域選択関数(119)のアドレ
スを指定する。
【0047】図3にデータ受信領域管理テーブル(11
8)の構成を示す。データ受信領域管理テーブルは、U
APからの受信要求ごとのエントリを持ち、各エントリ
はトランザクションIDフィールド(301)、受信プロ
セスフィールド(302)、UAP指定アドレスフィール
ド(303)、サイズフィールド(304)の4つのフ
ィールドで構成する。トランザクションIDフィールドに
はファイルクライアントが割り当てたトランザクション
IDを格納する。受信プロセスフィールドには、ファイル
読み込み要求を発行したUAPのプロセスIDを格納する。U
AP指定アドレスフィールド(303)及びサイズフィー
ルド(304)には、それぞれUAPが指定するデータ受
信領域の開始アドレスおよびサイズを指定する。
8)の構成を示す。データ受信領域管理テーブルは、U
APからの受信要求ごとのエントリを持ち、各エントリ
はトランザクションIDフィールド(301)、受信プロ
セスフィールド(302)、UAP指定アドレスフィール
ド(303)、サイズフィールド(304)の4つのフ
ィールドで構成する。トランザクションIDフィールドに
はファイルクライアントが割り当てたトランザクション
IDを格納する。受信プロセスフィールドには、ファイル
読み込み要求を発行したUAPのプロセスIDを格納する。U
AP指定アドレスフィールド(303)及びサイズフィー
ルド(304)には、それぞれUAPが指定するデータ受
信領域の開始アドレスおよびサイズを指定する。
【0048】ファイルクライアントが定義する受信領域
選択関数の処理の流れを図10に示す。受信領域選択関
数は、応答メッセージの受信領域割り当てパケット到着
時に通信管理部から呼び出される。このとき受信したパ
ケットへのアドレスが引数packet(451)で渡され
る。受信領域選択関数は、このパケットヘッダを解析
し、ユーザ指定値(815)に格納されているトランザ
クションIDを取得する(1101)。次に、取得した
トランザクションIDをキーとして、受信領域管理テー
ブルを検索する。取得したトランザクションIDと同じ
トランザクションIDを持つ受信領域管理テーブルのエ
ントリが、応答メッセージに対応するデータ受信領域を
保持しているので、同エントリのUAP指定アドレス
(302)に格納されている値を引数&addr(452)
が示す領域に格納した後、処理を終了する。
選択関数の処理の流れを図10に示す。受信領域選択関
数は、応答メッセージの受信領域割り当てパケット到着
時に通信管理部から呼び出される。このとき受信したパ
ケットへのアドレスが引数packet(451)で渡され
る。受信領域選択関数は、このパケットヘッダを解析
し、ユーザ指定値(815)に格納されているトランザ
クションIDを取得する(1101)。次に、取得した
トランザクションIDをキーとして、受信領域管理テー
ブルを検索する。取得したトランザクションIDと同じ
トランザクションIDを持つ受信領域管理テーブルのエ
ントリが、応答メッセージに対応するデータ受信領域を
保持しているので、同エントリのUAP指定アドレス
(302)に格納されている値を引数&addr(452)
が示す領域に格納した後、処理を終了する。
【0049】図7を用いてファイル読み込み時の、ファ
イルクライアント処理の詳細を説明する。UAP(12
1)がファイル読み込み要求を発行すると、ファイルク
ライアントはまず始めに引数チェックを行う(70
1)。UAP(121)が指定する引数は、少なくともフ
ァイルを識別するためのディスクリプタと、読み出した
ファイルデータを格納するための受信領域、および読み
込むサイズである。これらの引数が不正であれば、ファ
イルクライアントはエラーを返し、処理を終了する。引
数が正常の場合、次にトランザクションIDの割り当て処
理を行う(702)。トランザクションIDはファイルサ
ーバへの要求メッセージ、ファイルサーバからの応答メ
ッセージ、およびUAP(121)が指定したデータ受信
領域(122)の関連付けに用いる番号であり、ファイ
ルクライアントが一意に割り当てる。続いて、UAP(1
21)が指定したデータ受信領域(122)を、データ
受信領域管理テーブル(118)へ登録する(70
3)。登録する情報は、割り当てたトランザクションID
(301)、読み込み要求を発行したUAP(121)の
プロセスID(302)、UAP(121)が指定したデー
タ受信領域の開始アドレス(303)とサイズ(30
4)である。
イルクライアント処理の詳細を説明する。UAP(12
1)がファイル読み込み要求を発行すると、ファイルク
ライアントはまず始めに引数チェックを行う(70
1)。UAP(121)が指定する引数は、少なくともフ
ァイルを識別するためのディスクリプタと、読み出した
ファイルデータを格納するための受信領域、および読み
込むサイズである。これらの引数が不正であれば、ファ
イルクライアントはエラーを返し、処理を終了する。引
数が正常の場合、次にトランザクションIDの割り当て処
理を行う(702)。トランザクションIDはファイルサ
ーバへの要求メッセージ、ファイルサーバからの応答メ
ッセージ、およびUAP(121)が指定したデータ受信
領域(122)の関連付けに用いる番号であり、ファイ
ルクライアントが一意に割り当てる。続いて、UAP(1
21)が指定したデータ受信領域(122)を、データ
受信領域管理テーブル(118)へ登録する(70
3)。登録する情報は、割り当てたトランザクションID
(301)、読み込み要求を発行したUAP(121)の
プロセスID(302)、UAP(121)が指定したデー
タ受信領域の開始アドレス(303)とサイズ(30
4)である。
【0050】登録が完了すると、ファイルサーバ(13
6)に対してファイル読み込み要求を送信する(70
4)。ファイル読み込み要求の送信には、、send(40
3)を使用する。引数node(431)にはファイルサー
バの存在する受信ノード番号を、commID(432)には
ファイルサーバが作成した通信端点の通信端点IDを、ms
g(433)とsize(434)にはファイル読み込み要
求を格納したメッセージの開始アドレスとそのサイズ
を、uvalにはトランザクションIDを指定する。ファイル
読み込み要求で使用する通信メッセージは、ショートデ
ータのみで作成し、少なくとも読み込むファイルのディ
スクリプタ、読み込みサイズの情報を含む。
6)に対してファイル読み込み要求を送信する(70
4)。ファイル読み込み要求の送信には、、send(40
3)を使用する。引数node(431)にはファイルサー
バの存在する受信ノード番号を、commID(432)には
ファイルサーバが作成した通信端点の通信端点IDを、ms
g(433)とsize(434)にはファイル読み込み要
求を格納したメッセージの開始アドレスとそのサイズ
を、uvalにはトランザクションIDを指定する。ファイル
読み込み要求で使用する通信メッセージは、ショートデ
ータのみで作成し、少なくとも読み込むファイルのディ
スクリプタ、読み込みサイズの情報を含む。
【0051】ファイル読み込み要求を送信すると、recv
(404)を発行してファイルサーバからのデータ受信
を待つ(705)。引数commID(441)には、ファイ
ルクライアント初期化時に作成した通信端点のIDを、&m
sg(442)にはサーバからの応答メッセージを受信す
る領域へのポインタを、&size(443)には、応答メ
ッセージを受信する領域のサイズを格納した領域へのポ
インタを、&uval(444)には、受信したファイルデ
ータに付加されたトランザクションIDを格納する領域へ
のポインタを指定する。
(404)を発行してファイルサーバからのデータ受信
を待つ(705)。引数commID(441)には、ファイ
ルクライアント初期化時に作成した通信端点のIDを、&m
sg(442)にはサーバからの応答メッセージを受信す
る領域へのポインタを、&size(443)には、応答メ
ッセージを受信する領域のサイズを格納した領域へのポ
インタを、&uval(444)には、受信したファイルデ
ータに付加されたトランザクションIDを格納する領域へ
のポインタを指定する。
【0052】サーバからの応答メッセージを受信する
と、recv(404)がリターンし、&msg(442)に受
信した応答メッセージが、&size(443)に応答メッ
セージのサイズが、&uval(444)にトランザクショ
ンIDが格納される。&uval(444)のトランザクシ
ョンIDを用いて受信領域管理テーブルを検索し、UA
P(121)が指定した受信領域のエントリを取得す
る。データ受信完了後、受信領域管理テーブルの受信の
終了したエントリを削除する(706)。
と、recv(404)がリターンし、&msg(442)に受
信した応答メッセージが、&size(443)に応答メッ
セージのサイズが、&uval(444)にトランザクショ
ンIDが格納される。&uval(444)のトランザクシ
ョンIDを用いて受信領域管理テーブルを検索し、UA
P(121)が指定した受信領域のエントリを取得す
る。データ受信完了後、受信領域管理テーブルの受信の
終了したエントリを削除する(706)。
【0053】図9にファイルサーバのファイル読み込み
処理の流れを示す。ファイルサーバは、ファイルクライ
アントからのファイル読み込み要求を受信(901)す
ることでファイル読み込み処理を開始する。要求メッセ
ージを受信すると、メッセージの内容を解析し(90
2)、読み込むファイルのファイルディスクリプタ、お
よびサイズを取得する。次に取得した情報を用いて要求
されたファイルのデータを読み込む(903)。ファイ
ルデータの読み込みが完了すると、読み込んだデータを
ロングメッセージとしてファイルクライアントに送信す
る(904)。このとき送信するロングメッセージに
は、ファイルクライアントから受信した要求メッセージ
に付加されていたトランザクションIDを付加する。
処理の流れを示す。ファイルサーバは、ファイルクライ
アントからのファイル読み込み要求を受信(901)す
ることでファイル読み込み処理を開始する。要求メッセ
ージを受信すると、メッセージの内容を解析し(90
2)、読み込むファイルのファイルディスクリプタ、お
よびサイズを取得する。次に取得した情報を用いて要求
されたファイルのデータを読み込む(903)。ファイ
ルデータの読み込みが完了すると、読み込んだデータを
ロングメッセージとしてファイルクライアントに送信す
る(904)。このとき送信するロングメッセージに
は、ファイルクライアントから受信した要求メッセージ
に付加されていたトランザクションIDを付加する。
【0054】図12〜図14を用いて、本発明の第2の
実施例を説明する。先に説明した第1の実施例では、プ
ロトコル処理関数である受信領域割り当て関数を通信端
点作成時に指定した。しかし、このインタフェースで
は、従来の通信方法を本発明が提供する通信方法に改良
する場合に、通信端点作成インタフェースを新たに作成
する必要がある。これは、従来の通信端点作成インタフ
ェースを単に変更してしまうと、従来の通信端点作成イ
ンタフェースを使用していたアプリケーションが正しく
動作しないためである。従来のアプリケーションに影響
を与えず、作成するインタフェースを最小に押さえるた
めには、プロトコル処理関数の登録を通信端点作成と独
立させる必要がある。
実施例を説明する。先に説明した第1の実施例では、プ
ロトコル処理関数である受信領域割り当て関数を通信端
点作成時に指定した。しかし、このインタフェースで
は、従来の通信方法を本発明が提供する通信方法に改良
する場合に、通信端点作成インタフェースを新たに作成
する必要がある。これは、従来の通信端点作成インタフ
ェースを単に変更してしまうと、従来の通信端点作成イ
ンタフェースを使用していたアプリケーションが正しく
動作しないためである。従来のアプリケーションに影響
を与えず、作成するインタフェースを最小に押さえるた
めには、プロトコル処理関数の登録を通信端点作成と独
立させる必要がある。
【0055】図12に、プロトコル処理関数登録インタ
フェースを示す。プロトコル処理関数登録インタフェー
スcomm_protocol_reg(1201)は、commID(121
1)、func_vec(1212)、vec_len(1213)の
3つを引数にとる。commID(1211)はプロトコル処
理関数を登録する通信端点のIDである。func_vec(1
212)は、登録するプロトコル処理関数のベクタであ
る。vec_len(1213)にはfunc_vec(1212)の
長さを指定する。func_vec(1212)を用いれば、複
数のプロトコル処理関数を1度に登録する事ができる。
フェースを示す。プロトコル処理関数登録インタフェー
スcomm_protocol_reg(1201)は、commID(121
1)、func_vec(1212)、vec_len(1213)の
3つを引数にとる。commID(1211)はプロトコル処
理関数を登録する通信端点のIDである。func_vec(1
212)は、登録するプロトコル処理関数のベクタであ
る。vec_len(1213)にはfunc_vec(1212)の
長さを指定する。func_vec(1212)を用いれば、複
数のプロトコル処理関数を1度に登録する事ができる。
【0056】図13にプロトコル処理関数登録ベクタの
構成を示す。プロトコル処理関数ベクタの各エントリ
は、関数ID(1301)と関数ポインタ(1302)
の2つのフィールドで構成する。関数ID(1301)
は、登録する関数の種類を識別するIDであり、通信管
理部が定義する。通信の使用者は、再定義するプロトコ
ル処理関数のIDをこの関数ID(1301)に指定す
る。関数ポインタ(1302)には、通信の使用者が定
義した関数へのポインタを指定する。
構成を示す。プロトコル処理関数ベクタの各エントリ
は、関数ID(1301)と関数ポインタ(1302)
の2つのフィールドで構成する。関数ID(1301)
は、登録する関数の種類を識別するIDであり、通信管
理部が定義する。通信の使用者は、再定義するプロトコ
ル処理関数のIDをこの関数ID(1301)に指定す
る。関数ポインタ(1302)には、通信の使用者が定
義した関数へのポインタを指定する。
【0057】図14に、複数のプロトコル処理関数を保
持する通信端点管理テーブルの構成を示す。第1の実施
例図2に示した通信端点管理テーブル同様、通信端点の
ID(1401)およびメッセージキュー(1402)
を持つ。図2との違いは、関数ID毎にプロトコル処理
関数へのポインタを保持できる点である。図14では、
関数ID1ポインタ(1403)、関数ID2ポインタ
(1404)、関数ID3ポインタ(1405)の3つ
のプロトコル処理関数が登録できる。通信端点作成とプ
ロトコル処理関数登録方法以外のの通信手順や、ファイ
ルクライアント−ファイルサーバ間の通信方法は、第1
の実施例と同じである。
持する通信端点管理テーブルの構成を示す。第1の実施
例図2に示した通信端点管理テーブル同様、通信端点の
ID(1401)およびメッセージキュー(1402)
を持つ。図2との違いは、関数ID毎にプロトコル処理
関数へのポインタを保持できる点である。図14では、
関数ID1ポインタ(1403)、関数ID2ポインタ
(1404)、関数ID3ポインタ(1405)の3つ
のプロトコル処理関数が登録できる。通信端点作成とプ
ロトコル処理関数登録方法以外のの通信手順や、ファイ
ルクライアント−ファイルサーバ間の通信方法は、第1
の実施例と同じである。
【0058】
【発明の効果】本発明によれば、並列計算機のノード間
通信において、通信の使用者が通信プロトコル処理の一
部を再定義し、通信使用形態に最適化した通信プロトコ
ルを実現できる。
通信において、通信の使用者が通信プロトコル処理の一
部を再定義し、通信使用形態に最適化した通信プロトコ
ルを実現できる。
【図1】本発明が対象とする並列計算機の全体構成を示
す図である。
す図である。
【図2】通信端点テーブルの構成を示す図である。
【図3】受信領域管理テーブルの構成を示す図である。
【図4】通信インタフェースを示す図である。
【図5】ショートメッセージの転送手順を示す図であ
る。
る。
【図6】ロングメッセージの転送手順を示す図である。
【図7】ファイルクライアントのファイル読み込み処理
の流れを示す図である。
の流れを示す図である。
【図8】ネットワークパケットの構成を示す図である。
【図9】ファイルサーバのファイル読み込み処理の流れ
を示す図である。
を示す図である。
【図10】ファイルクライアントが定義する受信領域選
択関数の処理の流れを示す図である。
択関数の処理の流れを示す図である。
【図11】通信メッセージの構成を示す図である。
【図12】第2の実施例で用いるプロトコル処理関数登
録インタフェースを示す図である。
録インタフェースを示す図である。
【図13】第2の実施例で用いるプロトコル処理関数登
録ベクタの構成を示す図である。
録ベクタの構成を示す図である。
【図14】第2の実施例で用いる通信端点管理テーブル
を示す図である。
を示す図である。
101〜104 ノード 105 ネットワーク 106 ディスク 111、131 プロセッサ 112、132 ネットワークアダプタ 113、133 メモリ 114、134 OS 115、135 通信管理部 116 ファイルクライアント 117、137 通信端点管理テーブル 118 データ受信領域管理テーブル 119 受信領域選択関数 120、121、140 UAP 122 データ受信領域 123、141 プロトコル処理関数群 136 ファイルサーバ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 藤井 直大 神奈川県横浜市戸塚区戸塚町5030番地 株 式会社日立製作所ソフトウェア開発本部内
Claims (10)
- 【請求項1】 複数のノードをネットワークで結合し、
該複数のノードの各々は、メモリと、プロセッサと、ネ
ットワークアダプタを有し、該メモリには通信管理部が
設定され、該通信管理部はノード間で通信を行うための
通信プロトコル処理を行う構成の並列計算機における通
信方法であって、 該通信管理部のプロトコル処理の一部に、通信の使用者
が定義したプロトコル処理関数を登録し、 通信時に、該通信プロトコル処理の一部を行うプロトコ
ル処理関数が新たに定義され登録されていれば、該通信
プロトコル処理の一部を、該新たに定義されたプロトコ
ル処理関数を用いて行うことを特徴とする通信方法。 - 【請求項2】 複数のノードをネットワークで結合し、
該複数のノードの各々は、メモリと、プロセッサと、ネ
ットワークアダプタを有し、該メモリには通信管理部が
設定され、該通信管理部は、複数の通信端点を管理し、
ノード間で通信を行うための通信プロトコルの処理を行
う構成の並列計算機における通信方法であって、 通信の使用者が定義したプロトコル処理の一部を行うプ
ロトコル処理関数を、使用する通信端点に登録し、 通信時に、通信端点に該通信プロトコル処理の一部を行
うプロトコル処理関数が登録されていれば、該通信端点
に関する通信を処理する該通信プロトコル処理の一部を
該登録されたプロトコル処理関数を用いて行うことを特
徴とする通信方法。 - 【請求項3】 請求項2記載の通信方法において、 前記通信端点への通信プロトコル処理の一部を行うプロ
トコル処理関数の登録は、通信端点作成時に行うことを
特徴とする通信方法。 - 【請求項4】 請求項2記載の通信方法において、 前記通信端点への通信プロトコル処理の一部を行うプロ
トコル処理関数の登録は、通信端点作成から通信端点消
去までの間に行うことを特徴とする通信方法。 - 【請求項5】 請求項1または請求項2記載の通信方法
において、 前記通信の使用者が定義し登録する通信プロトコル処理
の一部を行うプロトコル処理関数は、受信するメッセー
ジデータの受信領域割り当て関数であることを特徴とす
る通信方法。 - 【請求項6】 複数のノードをネットワークで結合し、
該複数のノードの各々は、メモリと、プロセッサと、ネ
ットワークアダプタを有し、該メモリには通信管理部が
設定されている並列計算機において、 通信メッセージの送信側で、通信メッセージに任意の識
別子を付加し、受信側は、該識別子が付加された通信メ
ッセージに対応する受信領域を、該通信メッセージ受信
前に識別子とともにあらかじめ登録しておき、該識別子
が付加された通信メッセージ受信時に、該識別子に対応
する受信領域が登録されていれば、該登録されている受
信領域に通信メッセージを格納する通信方法。 - 【請求項7】 複数のノードをネットワークで結合した
並列計算機において、 該複数のノードの各々は、メモリと、プロセッサと、ネ
ットワークアダプタと、通信管理部を有し、該通信管理
部は、該複数のノード間で通信を行うための通信プロト
コル処理を行う手段と、該通信プロトコル処理の一部を
行うプロトコル処理手段を新たに設定、登録する手段を
有することを特徴とする並列計算機。 - 【請求項8】 複数のノードをネットワークで結合した
並列計算機において、 該複数のノードの各々は、メモリと、プロセッサと、ネ
ットワークアダプタと、通信管理部を有し、該通信管理
部は、複数の通信端点を管理する手段と、該複数のノー
ド上の通信端点間で通信を行うための通信プロトコル処
理を行う手段と、該通信プロトコル処理の一部を行うプ
ロトコル処理手段を該複数の通信端点毎に新たに設定、
登録する手段を有することを特徴とする並列計算機。 - 【請求項9】 複数のノードをネットワークで結合した
並列計算機において、 該複数のノードの各々は、メモリと、プロセッサと、ネ
ットワークアダプタと、通信管理部と、通信メッセージ
に対し任意の識別子を付加する手段と、該任意の識別子
が付加された通信メッセージの受信領域を、該任意の識
別子毎に登録する手段を有することを特徴とする並列計
算機。 - 【請求項10】 複数のノードをネットワークで結合
し、該複数のノードの各々は、メモリと、プロセッサ
と、ネットワークアダプタと、通信管理部を有し、 該通信管理部は、複数の通信端点を管理する手段と、該
複数の通信端点毎に、メッセージ受信領域割当手段を設
定、登録する手段と、通信メッセージに任意の識別子を
付加する手段を有し、 該複数のノードの少なくとも1つのノード上に、サービ
スを提供するサーバが存在し、該複数のノードの少なく
とも1つのノード上に、該サーバに対しサービスを要求
するクライアントが存在する並列計算機において、 該クライアントは、該サーバからの通信メッセージを受
信する通信端点に対し、通信メッセージ受信処理時に呼
び出される受信領域割当手段を登録しておき、 該クライアントは、該サーバに対しデータを要求するメ
ッセージを送信する際に、該データの受信領域に識別子
を付け、該サーバに送信する要求メッセージに該識別子
を付加し、 該要求メッセージを受信した該サーバは、該クライアン
トに返信する応答メッセージに該識別子を付加し、 該クライアントは、該応答メッセージ受信時に呼び出さ
れる該登録しておいた受信領域割当手段により該識別子
に対応する受信領域を選択し、 該通信管理部は、該選択された受信領域に対して受信メ
ッセージを格納することを特徴とするクライアント・サ
ーバ間通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10134390A JPH11312132A (ja) | 1998-04-28 | 1998-04-28 | 通信方法および並列計算機およびクライアント・サーバ間通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10134390A JPH11312132A (ja) | 1998-04-28 | 1998-04-28 | 通信方法および並列計算機およびクライアント・サーバ間通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH11312132A true JPH11312132A (ja) | 1999-11-09 |
Family
ID=15127291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10134390A Pending JPH11312132A (ja) | 1998-04-28 | 1998-04-28 | 通信方法および並列計算機およびクライアント・サーバ間通信方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH11312132A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6761968B2 (en) | 2000-12-01 | 2004-07-13 | Teijin Limited | Biaxially oriented polyester film |
JP2009245017A (ja) * | 2008-03-28 | 2009-10-22 | Nec Corp | データ交換システム、第1のサーバ、第2のサーバ及びデータ交換方法並びにプログラム |
-
1998
- 1998-04-28 JP JP10134390A patent/JPH11312132A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6761968B2 (en) | 2000-12-01 | 2004-07-13 | Teijin Limited | Biaxially oriented polyester film |
JP2009245017A (ja) * | 2008-03-28 | 2009-10-22 | Nec Corp | データ交換システム、第1のサーバ、第2のサーバ及びデータ交換方法並びにプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4624110B2 (ja) | 2つまたはそれ以上の機械の間でデータベース動作を行なうための直接メモリアクセスの用法 | |
US7111303B2 (en) | Virtual machine operating system LAN | |
EP0490980B1 (en) | Multiple facility operating system architecture | |
JP3606541B2 (ja) | 複数ノードの非同期データ通信システム内で早期到達メッセージを処理する方法 | |
US7992149B2 (en) | Virtual machine connection to a tangible network | |
US4768150A (en) | Application program interface to networking functions | |
EP0317466B1 (en) | Reverse flow control mechanism and method | |
US6125399A (en) | Computer system including a plurality of nodes for transferring through a data transfer network messages having distinguishing fields used for distinguishing the messages and controlling receipt thereof | |
JPS61289456A (ja) | 分散処理システムの作業要求通信方法 | |
CN111431757B (zh) | 虚拟网络的流量采集方法及装置 | |
US7640549B2 (en) | System and method for efficiently exchanging data among processes | |
JP2000020490A (ja) | 遠隔手続き呼出し機構またはオブジェクトリクエストブローカ機構を有する計算機、データ転送方法、および転送方法記憶媒体 | |
JPS61289458A (ja) | プロセス間通信装置 | |
TW200411403A (en) | System and method for transferring data between virtual machines or other computer entities | |
JPH0816540A (ja) | 並列計算機におけるメッセージ通信方式 | |
EP0317481B1 (en) | Remote storage management mechanism and method | |
US5204954A (en) | Remote storage management mechanism and method | |
JPH11312132A (ja) | 通信方法および並列計算機およびクライアント・サーバ間通信方法 | |
JP3006187B2 (ja) | 分散処理システム | |
KR19980086588A (ko) | Tcp/ip 소켓 애플리케이션을 이용한 시스템 자원 저감 툴 | |
JPH10143486A (ja) | 並列計算機におけるデータ送受信方法 | |
CN116132352A (zh) | 数据传输方法、装置及计算机系统 | |
JP2971119B2 (ja) | 複数プロセッサシステムにおける高速データ転送方式 | |
Bressler | Interprocess communication on the ARPA computer network. | |
KR19980086589A (ko) | Tcp/ip 소켓 애플리케이션을 이용한 시스템 자원 저감 툴 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20040317 |