(57)【要約】メッセージングシステム（１０８）内のプロセス間通信のためのメッセージングエンティティ（サーバ１１０ａまたはクライアント１１０ｂ）は、ソフトウェアコンポーネントによる当該メッセージングシステムへの登録を可能にし、登録されたソフトウェアコンポーネント間のユニキャスト通信を可能にし、ソフトウェアコンポーネントによるマルチキャストイベントの登録を可能にし、登録されたソフトウェアコンポーネント間のマルチキャスト通信を可能にする。メッセージングサーバ（１１０ａ）は、分散コンピューティングシステム（１００）内で新しいメッセージングクライアント（１１０ｂ）を発見し、登録されたメッセージングクライアント（１１０ｂ）が使用可能であることを検証し、登録されたメッセージングクライアント（１１０ｂ）間の同期を維持し、リソースロケーションキャッシュのマスターバージョン（１１４ａ）を管理し、マルチキャスト登録データ構造のマスターバージョン（１１６ａ）を管理する。
2010529524.tif 000002
【特許請求の範囲】
【請求項１】
プロセス間通信のための装置であって、
プロセッサと、
ソフトウェアコンポーネントによる前記メッセージングシステムへの登録を可能にし、登録されたソフトウェアコンポーネント間のユニキャスト通信を可能にし、ソフトウェアコンポーネントによるマルチキャストイベントの登録を可能にし、登録されたソフトウェアコンポーネント間のマルチキャスト通信を可能にするように構成された、前記プロセッサに結合された回路と、
を備える装置。
【請求項２】
ソフトウェアコンポーネントによる前記メッセージングシステムへの登録を可能にするために、前記プロセッサに結合された前記回路は、前記ソフトウェアコンポーネント用の論理名を決定し、前記ソフトウェアコンポーネント用の物理アドレスを決定し、前記ソフトウェアコンポーネント用の前記論理名と前記ソフトウェアコンポーネント用の前記物理アドレスとを関連付けるエントリをリソースロケーションキャッシュに追加させるようにさらに構成される、請求項１に記載の装置。
【請求項３】
登録されたソフトウェアコンポーネント間のユニキャスト通信を可能にするために、前記プロセッサに結合された前記回路は、ソフトウェアコンポーネントに宛てられたメッセージを受信し、前記ソフトウェアコンポーネントを特定する論理名を物理アドレスに解決し、前記メッセージを前記物理アドレスに送信するようにさらに構成される、請求項１に記載の装置。
【請求項４】
ソフトウェアコンポーネントによるマルチキャストイベントの登録を可能にするために、前記プロセッサに結合された前記回路は、マルチキャストイベントに対応するマルチキャスト登録メッセージを受信し、前記ソフトウェアコンポーネントの前記物理アドレスと前記マルチキャストイベント用の論理名とを関連付けるエントリを、マルチキャスト登録データ構造中に生成させるようにさらに構成される、請求項１に記載の装置。
【請求項５】
登録されたソフトウェアコンポーネント間のマルチキャスト通信を可能にするために、前記プロセッサに結合された前記回路は、マルチキャストイベントに対応するマルチキャストメッセージを送信者ソフトウェアコンポーネントから受信し、どのソフトウェアコンポーネントが前記マルチキャストイベントを登録したかをマルチキャスト登録データ構造を参照することによって判断し、前記マルチキャストイベントを登録した前記ソフトウェアコンポーネントに前記マルチキャストメッセージを送信し、前記マルチキャストメッセージを受信した前記ソフトウェアコンポーネントから肯定応答メッセージを受信し、前記送信者ソフトウェアコンポーネントに肯定応答メッセージを送信するようにさらに構成される、請求項１に記載の装置。
【請求項６】
プロセス間通信のための装置であって、
プロセッサと、
前記分散コンピューティングシステム内で新しいメッセージングクライアントを発見し、登録されたメッセージングクライアントが使用可能であることを検証し、前記登録されたメッセージングクライアント間の同期を維持し、リソースロケーションキャッシュのマスターバージョンを管理し、マルチキャスト登録データ構造のマスターバージョンを管理するように構成された、前記プロセッサに結合された回路と、
を備える装置。
【請求項７】
新しいメッセージングクライアントを発見し、登録されたメッセージングクライアントが使用可能であることを検証し、前記登録されたメッセージングクライアント間の同期を維持するために、前記プロセッサに結合された前記回路は、ハートビートメッセージを前記メッセージングシステム内のメッセージングクライアントに送信し、前記ハートビートメッセージに対する応答を処理するようにさらに構成される、請求項６に記載の装置。
【請求項８】
前記リソースロケーションキャッシュの前記マスターバージョンを管理するために、前記プロセッサに結合された前記回路は、前記リソースロケーションキャッシュに対して変更が行われるときはいつでも、前記メッセージングシステム内のメッセージングクライアントに通知するようにさらに構成され、前記マルチキャスト登録データ構造の前記マスターバージョンを管理するために、前記プロセッサに結合された前記回路は、前記マルチキャスト登録データ構造に対して変更が行われるときはいつでも、前記メッセージングシステム内のメッセージングクライアントに通知するようにさらに構成される、請求項６に記載の装置。
【請求項９】
メッセージングシステム内のメッセージングエンティティによって実行される、プロセス間通信のための方法であって、
ソフトウェアコンポーネントによる前記メッセージングシステムへの登録を可能にすることと、
登録されたソフトウェアコンポーネント間のユニキャスト通信を可能にすることと、
ソフトウェアコンポーネントによるマルチキャストイベントの登録を可能にすることと、
登録されたソフトウェアコンポーネント間のマルチキャスト通信を可能にすることと、
を含む方法。
【請求項１０】
ソフトウェアコンポーネントによる前記メッセージングシステムへの登録を可能にすることは、
前記ソフトウェアコンポーネント用の論理名を決定することと、
前記ソフトウェアコンポーネント用の物理アドレスを決定することと、
前記ソフトウェアコンポーネント用の前記論理名と前記ソフトウェアコンポーネント用の前記物理アドレスとを関連付けるエントリを、リソースロケーションキャッシュに追加させることと、
を含む、請求項９に記載の方法。
【請求項１１】
登録されたソフトウェアコンポーネント間のユニキャスト通信を可能にすることは、
論理名によって特定されるソフトウェアコンポーネントに宛てられたメッセージを受信することと、
前記論理名を物理アドレスに解決することと、
前記メッセージを前記物理アドレスに送信することと、
を含む、請求項９に記載の方法。
【請求項１２】
ソフトウェアコンポーネントによるマルチキャストイベントの登録を可能にすることは、
マルチキャストイベントに対応するマルチキャスト登録メッセージを受信することと、
前記ソフトウェアコンポーネントの前記物理アドレスと前記マルチキャストイベント用の論理名とを関連付けるエントリを、マルチキャスト登録データ構造中に生成させることと、
を含む、請求項９に記載の方法。
【請求項１３】
登録されたソフトウェアコンポーネント間のマルチキャスト通信を可能にすることは、
マルチキャストイベントに対応するマルチキャストメッセージを、送信者ソフトウェアコンポーネントから受信することと、
マルチキャスト登録データ構造を参照することによって、どのソフトウェアコンポーネントが前記マルチキャストイベントを登録したかを判断することと、
前記マルチキャストイベントを登録した前記ソフトウェアコンポーネントに前記マルチキャストメッセージを送信することと、
前記マルチキャストメッセージを受信した前記ソフトウェアコンポーネントから肯定応答メッセージを受信することと、
前記送信者ソフトウェアコンポーネントに肯定応答メッセージを送信することと、
を含む、請求項９に記載の方法。
【請求項１４】
分散コンピューティングシステム内に実施されたメッセージングシステム内のメッセージングサーバによって実行される、プロセス間通信のための方法であって、
前記分散コンピューティングシステム内で新しいメッセージングクライアントを発見することと、
登録されたメッセージングクライアントが使用可能であることを検証することと、
前記登録されたメッセージングクライアント間の同期を維持することと、
リソースロケーションキャッシュのマスターバージョンを管理することと、
マルチキャスト登録データ構造のマスターバージョンを管理することと、
を含む方法。
【請求項１５】
新しいメッセージングクライアントを発見することと、登録されたメッセージングクライアントが使用可能であることを検証することと、前記登録されたメッセージングクライアント間の同期を維持することとは、
前記メッセージングシステム内のメッセージングクライアントにハートビートメッセージを送信することと、
前記ハートビートメッセージに対する応答を処理することと、
を含む、請求項１４に記載の方法。
【請求項１６】
前記リソースロケーションキャッシュの前記マスターバージョンを管理することは、前記リソースロケーションキャッシュに対して変更が行われるときはいつでも、前記メッセージングシステム内のメッセージングクライアントに通知することを含み、前記マルチキャスト登録データ構造の前記マスターバージョンを管理することは、前記マルチキャスト登録データ構造に対して変更が行われるときはいつでも、前記メッセージングシステム内のメッセージングクライアントに通知することを含む、請求項１４に記載の方法。
【請求項１７】
分散コンピューティングシステムにおいてソフトウェアコンポーネント間のプロセス間通信を可能にするように構成されたメッセージングエンティティを備えるハードウェアユニットであって、前記メッセージングエンティティが、
ソフトウェアコンポーネントによる前記メッセージングシステムへの登録を可能にするように構成された登録コンポーネントと、
登録されたソフトウェアコンポーネント間のユニキャスト通信を可能にするように構成されたリソースロケーションサーバと、
ソフトウェアコンポーネントによるマルチキャストイベントの登録を可能にするように構成されたマルチキャスト登録コンポーネントと、
登録されたソフトウェアコンポーネント間のマルチキャスト通信を可能にするように構成されたマルチキャスト通信コンポーネントと、
を備える、ハードウェアユニット。
【請求項１８】
前記登録コンポーネントは、
前記ソフトウェアコンポーネント用の論理名を決定し、
前記ソフトウェアコンポーネント用の物理アドレスを決定し、
前記ソフトウェアコンポーネント用の前記論理名と前記ソフトウェアコンポーネント用の前記物理アドレスとを関連付けるエントリをリソースロケーションキャッシュに追加させる、
ようにさらに構成される、請求項１７に記載のハードウェアユニット。
【請求項１９】
前記リソースロケーションサーバは、
論理名によって特定されるソフトウェアコンポーネントに宛てられたメッセージを受信し、
前記論理名を物理アドレスに解決し、
前記物理アドレスに前記メッセージを送信する、
ようにさらに構成される、請求項１７に記載のハードウェアユニット。
【請求項２０】
前記マルチキャスト登録コンポーネントは、
マルチキャストイベントに対応するマルチキャスト登録メッセージを受信し、
前記ソフトウェアコンポーネントの前記物理アドレスと前記マルチキャストイベント用の論理名とを関連付けるエントリを、マルチキャスト登録データ構造中に生成させる、
ようにさらに構成される、請求項１７に記載のハードウェアユニット。
【請求項２１】
前記マルチキャスト通信コンポーネントは、
マルチキャストイベントに対応するマルチキャストメッセージを送信者ソフトウェアコンポーネントから受信し、
マルチキャスト登録データ構造を参照することによって、どのソフトウェアコンポーネントが前記マルチキャストイベントを登録したかを判断し、
前記マルチキャストイベントを登録した前記ソフトウェアコンポーネントに前記マルチキャストメッセージを送信し、
前記マルチキャストメッセージを受信した前記ソフトウェアコンポーネントから肯定応答メッセージを受信し、
前記送信者ソフトウェアコンポーネントに肯定応答メッセージを送信する、
ようにさらに構成された、請求項１７に記載のハードウェアユニット。
【請求項２２】
分散コンピューティングシステムにおいてソフトウェアコンポーネント間のプロセス間通信を可能にするように構成されたメッセージングサーバを備えるハードウェアユニットであって、前記メッセージングサーバが、
前記分散コンピューティングシステム内で新しいメッセージングクライアントを発見するように構成されたクライアント発見コンポーネントと、
登録されたメッセージングクライアントが使用可能であることを検証するように構成された検証コンポーネントと、
前記登録されたメッセージングクライアント間の同期を維持するように構成された同期コンポーネントと、
リソースロケーションキャッシュのマスターバージョンを管理するように構成されたキャッシュマネージャと、
マルチキャスト登録データ構造のマスターバージョンを管理するように構成されたマルチキャスト登録マネージャと、
を備えるハードウェアユニット。
【請求項２３】
前記クライアント発見コンポーネントと前記検証コンポーネントと前記同期コンポーネントとは、それぞれ
前記メッセージングシステム内のメッセージングクライアントにハートビートメッセージを送信し、
前記ハートビートメッセージに対する応答を処理する、
ように構成される、請求項２２に記載のハードウェアユニット。
【請求項２４】
前記キャッシュマネージャは、前記リソースロケーションキャッシュに対して変更が行われるときはいつでも、前記メッセージングシステム内のメッセージングクライアントに通知するように構成され、前記マルチキャスト登録マネージャは、前記マルチキャスト登録データ構造に対して変更が行われるときはいつでも、前記メッセージングシステム内のメッセージングクライアントに通知するように構成される、請求項２２に記載のハードウェアユニット。
【請求項２５】
分散コンピューティングシステムにおいてソフトウェアコンポーネント間のプロセス間通信を可能にするように構成されたメッセージングエンティティを備える装置であって、前記メッセージングエンティティが、
ソフトウェアコンポーネントによる前記メッセージングシステムへの登録を可能にするための手段と、
登録されたソフトウェアコンポーネント間のユニキャスト通信を可能にするための手段と、
ソフトウェアコンポーネントによるマルチキャストイベントの登録を可能にするための手段と、
登録されたソフトウェアコンポーネント間のマルチキャスト通信を可能にするための手段と、
を備える装置。
【請求項２６】
ソフトウェアコンポーネントによる前記メッセージングシステムへの登録を可能にするための前記手段は、
前記ソフトウェアコンポーネント用の論理名を決定するための手段と、
前記ソフトウェアコンポーネント用の物理アドレスを決定するための手段と、
前記ソフトウェアコンポーネント用の前記論理名と前記ソフトウェアコンポーネント用の前記物理アドレスとを関連付けるエントリを、リソースロケーションキャッシュに追加させるための手段と、
を備える、請求項２５に記載の装置。
【請求項２７】
登録されたソフトウェアコンポーネント間のユニキャスト通信を可能にするための前記手段は、
論理名によって特定されるソフトウェアコンポーネントに宛てられたメッセージを受信するための手段と、
前記論理名を物理アドレスに解決するための手段と、
前記メッセージを前記物理アドレスに送信するための手段と、
を備える、請求項２５に記載の装置。
【請求項２８】
ソフトウェアコンポーネントによるマルチキャストイベントの登録を可能にするための前記手段は、
マルチキャストイベントに対応するマルチキャスト登録メッセージを受信するための手段と、
前記ソフトウェアコンポーネントの前記物理アドレスと前記マルチキャストイベント用の論理名とを関連付けるエントリを、マルチキャスト登録データ構造中に生成させるための手段と、
を備える、請求項２５に記載の装置。
【請求項２９】
登録されたソフトウェアコンポーネント間のマルチキャスト通信を可能にするための前記手段は、
マルチキャストイベントに対応するマルチキャストメッセージを送信者ソフトウェアコンポーネントから受信するための手段と、
マルチキャスト登録データ構造を参照することによって、どのソフトウェアコンポーネントが前記マルチキャストイベントを登録したかを判断するための手段と、
前記マルチキャストイベントを登録した前記ソフトウェアコンポーネントに前記マルチキャストメッセージを送信するための手段と、
前記マルチキャストメッセージを受信した前記ソフトウェアコンポーネントから肯定応答メッセージを受信するための手段と、
前記送信者ソフトウェアコンポーネントに肯定応答メッセージを送信するための手段と、
を備える、請求項２５に記載の装置。
【請求項３０】
分散コンピューティングシステムにおいてソフトウェアコンポーネント間のプロセス間通信を可能にするように構成されたメッセージングサーバを備える装置であって、
前記分散コンピューティングシステム内で新しいメッセージングクライアントを発見するための手段と、
登録されたメッセージングクライアントが使用可能であることを検証するための手段と、
前記登録されたメッセージングクライアント間の同期を維持するための手段と、
リソースロケーションキャッシュのマスターバージョンを管理するための手段と、
マルチキャスト登録データ構造のマスターバージョンを管理するための手段と、
を備える装置。
【請求項３１】
新しいメッセージングクライアントを発見するための前記手段と、登録されたメッセージングクライアントが使用可能であることを検証するための前記手段と、前記登録されたメッセージングクライアント間の同期を維持するための前記手段とは、それぞれ、
前記メッセージングシステム内のメッセージングクライアントにハートビートメッセージを送信するための手段と、
前記ハートビートメッセージに対する応答を処理するための手段と、
を備える、請求項３０に記載の装置。
【請求項３２】
前記リソースロケーションキャッシュの前記マスターバージョンを管理するための前記手段は、前記リソースロケーションキャッシュに対して変更が行われるときはいつでも、前記メッセージングシステム内のメッセージングクライアントに通知するための手段を備え、前記マルチキャスト登録データ構造の前記マスターバージョンを管理するための前記手段は、前記マルチキャスト登録データ構造に対して変更が行われるときはいつでも、前記メッセージングシステム内のメッセージングクライアントに通知するための手段を備える、請求項３０に記載の装置。
【請求項３３】
分散コンピューティングシステムにおいてソフトウェアコンポーネント間のプロセス間通信を可能にするためのコンピュータプログラム製品であって、その上に命令を有するコンピュータ可読媒体を備え、前記命令が、
ソフトウェアコンポーネントによる前記メッセージングシステムへの登録を可能にするためのコードと、
登録されたソフトウェアコンポーネント間のユニキャスト通信を可能にするためのコードと、
ソフトウェアコンポーネントによるマルチキャストイベントの登録を可能にするためのコードと、
登録されたソフトウェアコンポーネント間のマルチキャスト通信を可能にするためのコードと、
を備えるコンピュータプログラム製品。
【請求項３４】
ソフトウェアコンポーネントによる前記メッセージングシステムへの登録を可能にするための前記コードが、
前記ソフトウェアコンポーネント用の論理名を決定するためのコードと、
前記ソフトウェアコンポーネント用の物理アドレスを決定するためのコードと、
前記ソフトウェアコンポーネント用の前記論理名と前記ソフトウェアコンポーネント用の前記物理アドレスとを関連付けるエントリをリソースロケーションキャッシュに追加させるためのコードと、
を備える、請求項３３に記載のコンピュータプログラム製品。
【請求項３５】
登録されたソフトウェアコンポーネント間のユニキャスト通信を可能にするための前記コードは、
論理名によって特定されるソフトウェアコンポーネントに宛てられたメッセージを受信するためのコードと、
前記論理名を物理アドレスに解決するためのコードと、
前記物理アドレスに前記メッセージを送信するためのコードと、
を備える、請求項３３に記載のコンピュータプログラム製品。
【請求項３６】
ソフトウェアコンポーネントによるマルチキャストイベントの登録を可能にするための前記コードは、
マルチキャストイベントに対応するマルチキャスト登録メッセージを受信するためのコードと、
前記ソフトウェアコンポーネントの前記物理アドレスと前記マルチキャストイベント用の論理名とを関連付けるエントリを、マルチキャスト登録データ構造中に生成させるためのコードと、
を備える、請求項３３に記載のコンピュータプログラム製品。
【請求項３７】
登録されたソフトウェアコンポーネント間のマルチキャスト通信を可能にするための前記コードは、
マルチキャストイベントに対応するマルチキャストメッセージを送信者ソフトウェアコンポーネントから受信するためのコードと、
マルチキャスト登録データ構造を参照することによって、どのソフトウェアコンポーネントが前記マルチキャストイベントを登録したかを判断するためのコードと、
前記マルチキャストメッセージを、前記マルチキャストイベントを登録した前記ソフトウェアコンポーネントに送信するためのコードと、
前記マルチキャストメッセージを受信した前記ソフトウェアコンポーネントから肯定応答メッセージを受信するためのコードと、
前記送信者ソフトウェアコンポーネントに肯定応答メッセージを送信するためのコードと、
を備える、請求項３３に記載のコンピュータプログラム製品。
【請求項３８】
分散コンピューティングシステムにおいてソフトウェアコンポーネント間のプロセス間通信を可能にするためのコンピュータプログラム製品であって、その上に命令を有するコンピュータ可読媒体を備え、前記命令が、
前記分散コンピューティングシステム内で新しいメッセージングクライアントを発見するためのコードと、
登録されたメッセージングクライアントが使用可能であることを検証するためのコードと、
前記登録されたメッセージングクライアント間の同期を維持するためのコードと、
リソースロケーションキャッシュのマスターバージョンを管理するためのコードと、
マルチキャスト登録データ構造のマスターバージョンを管理するためのコードと、
を備えるコンピュータプログラム製品。
【請求項３９】
新しいメッセージングクライアントを発見するための前記コードと、登録されたメッセージングクライアントが使用可能であることを検証するための前記コードと、前記登録されたメッセージングクライアント間の同期を維持するための前記コードとは、それぞれ、
前記メッセージングシステム内のメッセージングクライアントにハートビートメッセージを送信するためのコードと、
前記ハートビートメッセージに対する応答を処理するためのコードと、
を備える、請求項３８に記載のコンピュータプログラム製品。
【請求項４０】
前記リソースロケーションキャッシュの前記マスターバージョンを管理するための前記コードは、前記リソースロケーションキャッシュに対して変更が行われるときはいつでも、前記メッセージングシステム内のメッセージングクライアントに通知するためのコードを備え、前記マルチキャスト登録データ構造の前記マスターバージョンを管理するための前記コードは、前記マルチキャスト登録データ構造に対して変更が行われるときはいつでも、前記メッセージングシステム内のメッセージングクライアントに通知するためのコードを備える、請求項３８に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
米国特許法１１９条による優先権の主張
本特許出願は、本出願の譲受人に譲渡され、参照により明白に本明細書に組み込まれる、２００７年５月４日に出願された米国仮出願第６０／９１６，２４７号の優先権を主張するものである。
【０００２】
本開示は、一般に、遠隔通信システムに関する。より詳細には、本開示は、スケーラブル／冗長遠隔通信システムを構築するためのプロセス間通信方法および装置に関する。
【背景技術】
【０００３】
分散冗長遠隔通信システムを構築するとき、ある種のメッセージングレイヤが、プロセス間（または、スレッド間）通信を行うために使用される。これは、分散ソフトウェアの有限状態機械に、サービスを提供するために通信することを許す。
【０００４】
典型的なメッセージングシステムは、コンポーネント間でポイントツーポイントメッセージを送信する方法を提供する。メッセージをマルチキャストまたはブロードキャストする能力は、時々提供されるが、常に提供されるわけではない。
【０００５】
多くのプロセス間通信方式も、オペレーティングシステムおよび／またはバックプレーン固有である。メッセージングは、通常、他のすべてのソフトウェアが記録される基本的なサービスであるので、これは、それらのサービスの移植を困難にし、システムの全ソフトウェアアーキテクチャに影響を及ぼす。
【０００６】
多くの他のシステムは、他のアプリケーションと同様、メッセージングのトップに、名前解決、ネットワーク時間分配、および分散ハートビートの階層化のようなサービスを提供する。このことは処理の非効率をももたらす。
【図面の簡単な説明】
【０００７】
【図１】図１は、分散コンピューティングシステム内に実施されるメッセージングシステムの一例を示す図である。
【図２】図２は、ソフトウェアコンポーネントがメッセージングシステムにどのように登録することができるかを示す一例を示す図である。
【図３】図３は、メッセージングエンティティが登録されたソフトウェアコンポーネント間のユニキャスト通信をどのように可能にするかを示す一例を示す図である。
【図４】図４は、ソフトウェアコンポーネントがマルチキャストイベントをどのように登録することができるかを示す一例を示す図である。
【図５】図５は、メッセージングエンティティが登録されたソフトウェアコンポーネント間のマルチキャスト通信をどのように可能にするかを示す一例を示す図である。
【図６】図６は、メッセージングサーバによって実行される機能のいくつかを示す図である。
【図７】図７は、メッセージングサーバによって実行されるプロセス間通信のための方法の一例を示す図である。
【図７Ａ】図７Ａは、図７の方法に対応する手段（means-plus-function）ブロックを示す図である。
【図８】図８は、メッセージングエンティティによって実行されるプロセス間通信のための方法の一例を示す図である。
【図８Ａ】図８Ａは、図８の方法に対応する手段ブロックを示す図である。
【図９】図９は、本明細書に記載のメッセージングシステムがどのように実施されるかを示す例を示す図である。
【図１０】図１０は、本明細書に記載のメッセージングシステムがどのように実施されるかを示す例を示す図である。
【図１１】図１１は、本明細書に記載のメッセージングシステムがどのように実施されるかを示す例を示す図である。
【図１２】図１２は、分散コンピューティングシステムにおいてソフトウェアコンポーネント間のプロセス間通信を可能にするための装置のハードウェア実装の一部を示す図である。
【発明を実施するための形態】
【０００８】
プロセス間通信のための装置が開示される。本装置はメッセージングシステムにおいてメッセージングエンティティとして使用できる。本装置は、プロセッサと、前記プロセッサに結合された回路と、を含むことができる。該回路は、ソフトウェアコンポーネントによるメッセージングシステムへの登録を可能にし、登録されたソフトウェアコンポーネント間のユニキャスト通信を可能にし、ソフトウェアコンポーネントによるマルチキャストイベントの登録を可能にし、登録されたソフトウェアコンポーネント間のマルチキャスト通信を可能にするように構成できる。
【０００９】
プロセス間通信のための装置が開示される。本装置はメッセージングシステムにおいてメッセージングサーバとして使用できる。本装置は、プロセッサと、前記プロセッサに結合された回路と、を含むことができる。該回路は、分散コンピューティングシステム内で新しいメッセージングクライアントを発見し、登録されたメッセージングクライアントが使用可能であることを検証し、登録されたメッセージングクライアント間の同期を維持し、リソースロケーションキャッシュのマスターバージョンを管理し、マルチキャスト登録データ構造のマスターバージョンを管理するように構成できる。
【００１０】
メッセージングシステム内のメッセージングエンティティによって実行され得るプロセス間通信のための方法が開示される。本方法は、ソフトウェアコンポーネントによるメッセージングシステムへの登録を可能にすることを含むことができる。本方法は、登録されたソフトウェアコンポーネント間のユニキャスト通信を可能にすることを含むこともできる。本方法は、ソフトウェアコンポーネントによるマルチキャストイベントの登録を可能にすることを含むこともできる。本方法は、登録されたソフトウェアコンポーネント間のマルチキャスト通信を可能にすることを含むこともできる。
【００１１】
メッセージングシステム内のメッセージングサーバによって実行され得るプロセス間通信のための方法が開示される。本方法は、分散コンピューティングシステム内で新しいメッセージングクライアントを発見することを含むことができる。本方法は、登録されたメッセージングクライアントが使用可能であることを検証することを含むこともできる。本方法は、登録されたメッセージングクライアント間の同期を維持することを含むこともできる。本方法は、リソースロケーションキャッシュのマスターバージョンを管理することを含むこともできる。本方法は、マルチキャスト登録データ構造のマスターバージョンを管理することを含むこともできる。
【００１２】
分散コンピューティングシステムにおいてソフトウェアコンポーネント間のプロセス間通信を可能にするように構成されたメッセージングエンティティを備えるハードウェアユニットが開示される。メッセージングエンティティは、ソフトウェアコンポーネントによるメッセージングシステムへの登録を可能にするように構成された登録コンポーネントを含むことができる。メッセージングエンティティは、登録されたソフトウェアコンポーネント間のユニキャスト通信を可能にするように構成されたリソースロケーションサーバを含むこともできる。メッセージングエンティティは、ソフトウェアコンポーネントによるマルチキャストイベントの登録を可能にするように構成されたマルチキャスト登録コンポーネントを含むこともできる。メッセージングエンティティは、登録されたソフトウェアコンポーネント間のマルチキャスト通信を可能にするように構成されたマルチキャスト通信コンポーネントを含むこともできる。
【００１３】
また、分散コンピューティングシステムにおいてソフトウェアコンポーネント間のプロセス間通信を可能にするように構成されたメッセージングサーバを備えるハードウェアユニットが開示される。メッセージングサーバは、分散コンピューティングシステム内で新しいメッセージングクライアントを発見するように構成されたクライアント発見コンポーネントを含むことができる。メッセージングサーバは、登録されたメッセージングクライアントが使用可能であることを検証するように構成された検証コンポーネントを含むこともできる。メッセージングサーバは、登録されたメッセージングクライアント間の同期を維持するように構成された同期コンポーネントを含むこともできる。メッセージングサーバは、リソースロケーションキャッシュのマスターバージョンを管理するように構成されたキャッシュマネージャを含むこともできる。メッセージングサーバは、マルチキャスト登録データ構造のマスターバージョンを管理するように構成されたマルチキャスト登録マネージャを含むこともできる。
【００１４】
分散コンピューティングシステムにおいてソフトウェアコンポーネント間のプロセス間通信を可能にするように構成されたメッセージングエンティティを備える装置も開示される。メッセージングエンティティは、ソフトウェアコンポーネントによるメッセージングシステムへの登録を可能にするための手段を含むことができる。メッセージングエンティティは、登録されたソフトウェアコンポーネント間のユニキャスト通信を可能にするための手段を含むこともできる。メッセージングエンティティは、ソフトウェアコンポーネントによってマルチキャストイベントの登録を可能にするための手段を含むこともできる。メッセージングエンティティは、登録されたソフトウェアコンポーネント間のマルチキャスト通信を可能にするための手段を含むこともできる。
【００１５】
分散コンピューティングシステムにおいてソフトウェアコンポーネント間のプロセス間通信を可能にするように構成されたメッセージングサーバを備える装置も開示される。本装置は、分散コンピューティングシステム内で新しいメッセージングクライアントを発見するための手段を含むことができる。本装置は、登録されたメッセージングクライアントが使用可能であることを検証するための手段を含むこともできる。本装置は、登録されたメッセージングクライアント間の同期を維持するための手段を含むこともできる。本装置は、リソースロケーションキャッシュのマスターバージョンを管理するための手段を含むこともできる。本装置は、マルチキャスト登録データ構造のマスターバージョンを管理するための手段を含むこともできる。
【００１６】
分散コンピューティングシステムにおいてソフトウェアコンポーネント間のプロセス間通信を可能にするためのコンピュータプログラム製品も開示される。コンピュータプログラム製品は、その上に命令を有するコンピュータ可読媒体を含むことができる。命令は、ソフトウェアコンポーネントによるメッセージングシステムへの登録を可能にするためのコードを含むことができる。命令は、登録されたソフトウェアコンポーネント間のユニキャスト通信を可能にするためのコードを含むこともできる。命令は、ソフトウェアコンポーネントによってマルチキャストイベントの登録を可能にするためのコードを含むこともできる。命令は、登録されたソフトウェアコンポーネント間のマルチキャスト通信を可能にするためのコードを含むこともできる。
【００１７】
分散コンピューティングシステムにおいてソフトウェアコンポーネント間のプロセス間通信を可能にするためのコンピュータプログラム製品が開示される。コンピュータプログラム製品は、その上に命令を有するコンピュータ可読媒体を含むことができる。命令は、分散コンピューティングシステム内で新しいメッセージングクライアントを発見するためのコードを含むことができる。命令は、登録されたメッセージングクライアントが使用可能であることを検証するためのコードを含むこともできる。命令は、登録されたメッセージングクライアント間の同期を維持するためのコードを含むこともできる。命令は、リソースロケーションキャッシュのマスターバージョンを管理するためのコードを含むこともできる。命令は、マルチキャスト登録データ構造のマスターバージョンを管理するためのコードを含むこともできる。
【００１８】
本開示は、メッセージのメッセージユニキャストおよびマルチキャスト（ブロードキャストを含む）が可能なメッセージングレイヤを提供する分散ソフトウェアアーキテクチャに関する。メッセージングシステムは、システムの分散性質を隠すこと、論理名を物理アドレスに解決するための方法を提供すること、ならびにネットワーク時間を分散モジュールに分配し、分散モジュールがまだ使用可能であることを検証することが可能である。
【００１９】
本明細書に記載のいくつかの態様の利点は、システムの分散性質を隠すことが可能なソフトウェアの共通のレイヤを提供するために、多くの様々なシステム（たとえば、＊ＮＩＸ、Ｓｕｎ  Ｓｏｌａｒｉｓ、ＲＴＯＳ、ＤＳＰ）に移植できるメッセージングシステムである。これは、柔軟なソフトウェアアーキテクチャを提供する。記載のソフトウェアコンポーネントは、他のコンポーネントについての知識なしにハードウェア／ソフトウェアアーキテクチャ内で随所に移動することができる。
【００２０】
本明細書に記載のメッセージングシステムは、ソフトウェアコンポーネント間のユニキャスト、マルチキャストまたはブロードキャストメッセージのうちの少なくとも１つを実行する能力を提供する単一の統一インターフェースを提供することができる。さらに、ユニキャスト、マルチキャスト、またはブロードキャストメッセージのうちの少なくとも１つは、肯定応答されることができる。マルチキャストメッセージ受信者は、送信者にとって未知とすることができる。これはマルチキャストメッセージの送信者を受信者から切り離す。この切り離しは、適切に進化する非常に柔軟なソフトウェアアーキテクチャを構築することを可能にする。受信者は、送信者を変更する必要なしに自由に往来することができる。これは、イベント駆動型有限状態機械ソフトウェア開発モデルに好適である。
【００２１】
メッセージングシステム中のすべての、またはいくつかのソフトウェアコンポーネントは、論理名によって特定できる。論理名のシステム全体にわたるロケーションは、ソフトウェアコンポーネントがメッセージングシステムに登録する実行時に構築されることができる。この登録は、新しいエントリを名前キャッシュに入れさせることができる。新しいエントリは、名前キャッシュに追加されると、メッセージングソフトウェアを実行することが可能なすべてのハードウェアエンティティにもブロードキャストされることができる。キャッシュが変更されるたびに、シーケンス番号がキャッシュの現在のレベルを表すためにインクリメントされる。このシーケンス番号は、すべてのハードウェアエンティティが矛盾の無い名前キャッシュを有することを確認するために、ハートビート動作中に使用されることができる。効率のために、名前キャッシュの更新は、フル更新またはインクリメンタル更新のいずれかとすることができる。メッセージングシステムは、フル更新のほうが速くなるほど要求側が古くない限り、インクリメンタル更新を得ようとするように構成され得る。
【００２２】
特定のコンポーネントに送信されるすべてのメッセージは、コンポーネントの論理名を利用することができる。メッセージングシステム自体は、メッセージが送信のために処理されているときに論理名を物理的ロケーションに変換することができる。この特徴は、システムの分散性質を隠し、コンポーネントがいかなるソフトウェアにも影響を及ぼすことなくシステム内で移動することを可能にする。
【００２３】
分散ハードウェアアーキテクチャ上で使用されているとき、メッセージングレイヤは、すべての必要とされるコンポーネントが応答していることを確認するために「ハートビート」機構を提供することもできる。ハートビートメッセージは、マスターネットワーク時間と、ならびに名前キャッシュを表す整数と、を含むことができる。ネットワーク時間は、システム中のすべてエンティティの時間同期をとるために使用されることができる。名前キャッシュシーケンス番号は、スレーブキャッシュの各々が最新であるか否かを判断するために使用されることができる。古いと判断されたキャッシュは、それらをマスターと再び同期をとるためにフル更新またはインクリメンタル更新を要求することができる。
【００２４】
メッセージングレイヤは、（Ｓｕｎ  Ｓｏｌａｒｉｓベースのサーバのような）単一のオペレーティングシステムタイプの環境で、または、遠隔通信装置に特有の分散マルチＣＰＵ環境内で使用できるようにも構成可能である。この能力は、１つの環境で書かれたソフトウェアに、再コンパイルのみで異なる環境において使用されることを許す。この能力は、メッセージングレイヤの上に構築されたソフトウェアに非常に高いレベルの移植性を与える。
【００２５】
図１に分散コンピューティングシステム１００を示す。分散コンピューティングシステム１００は、通信バス１０４を介して互いに電子通信している複数のハードウェアユニット１０２を含む。ハードウェアユニット１０２は遠隔通信装置およびデータ通信装置で利用されることができる。たとえば、ハードウェアユニット１０２は、ルータ、スイッチ、基地局などの中に含まれている様々な処理モジュールまたはボードとすることができる。ハードウェアユニット１０２は、１つ以上のタスクを実行するように協働する様々なソフトウェアコンポーネント１０６を含む。
【００２６】
メッセージングシステム１０８は、分散コンピューティングシステム１００内に実施される。メッセージングシステム１０８は、メッセージングサーバ１１０ａと、１つ以上のメッセージングクライアント１１０ｂとを含む。「メッセージングエンティティ」１１０という用語は、本明細書では、メッセージングサーバ１１０ａまたはメッセージングクライアント１１０ｂのいずれかを指すために使用されることができる。
【００２７】
メッセージングシステム１０８は、分散コンピューティングシステム１００内のソフトウェアコンポーネント１０６に互いに通信することを許す。ソフトウェアコンポーネント１０６は有限状態機械とすることができ、メッセージングシステム１０８の目的は、通信している有限状態機械を同期状態に保つこととすることができる。
【００２８】
ソフトウェアコンポーネント１０６間の通信は、ユニキャスト、マルチキャスト、またはブロードキャストとすることができる。有利なことに、メッセージングシステム１０８は、分散コンピューティングシステム１００の分散性質を隠すことが可能である。分散コンピューティングシステム１００内のソフトウェアコンポーネント１０６は、物理アドレスの代わりに論理名によって特定されることができる。したがって、ソフトウェアコンポーネント１０６は、分散コンピューティングシステム１００のトポロジ内のそれらのそれぞれのロケーションにかかわらず、互いに通信することが可能である。
【００２９】
メッセージングサーバ１１０ａは、リソースロケーションキャッシュのマスターバージョン１１４ａとマルチキャスト登録データ構造のマスターバージョン１１６ａとを管理する。メッセージングクライアント１１０ｂの各々は、リソースロケーションキャッシュのローカルコピー１１４ｂと、マルチキャスト登録データ構造のローカルコピー１１６ｂとを用いて作動する。
【００３０】
各メッセージングエンティティ１１０（すなわち、メッセージングサーバ１１０ａまたはメッセージングクライアント１１０ｂのいずれか）は、分散コンピューティングシステム１００内のソフトウェアコンポーネント１０６にメッセージングシステム１０８に登録することを許すように構成されることができる。各メッセージングエンティティ１１０はまた、登録されたソフトウェアコンポーネント１０６間の通信を可能にすることができる。
【００３１】
これらの機能を実行することに加えて、メッセージングサーバ１１０ａは、分散コンピューティングシステム１００内で新しいメッセージングクライアント１１０ｂを発見するようにも構成されることができる。メッセージングサーバ１１０ａは、登録されたメッセージングクライアント１１０ｂが使用可能であることを検証することもできる。メッセージングサーバ１１０ａは、登録されたメッセージングクライアント１１０ｂ間の同期を維持することもできる。メッセージングサーバ１１０ａは、リソースロケーションキャッシュのマスターバージョン１１４ａとマルチキャスト登録データ構造のマスターバージョン１１６ａとを管理することもできる。
【００３２】
図２は、ソフトウェアコンポーネント１０６がメッセージングシステム１０８にどのように登録することができるかを示す一例を示す。ソフトウェアコンポーネント１０６は、登録メッセージ２２２をメッセージングサーバ１１０ａに送信することができる。登録メッセージ２２２は、ソフトウェアコンポーネント１０６の物理アドレス２２４を含むことができる。登録メッセージ２２２は、ソフトウェアコンポーネント１０６用の論理名２２６を含むこともできる。登録メッセージ２２２は、論理名２２６用の１つ以上のエイリアス２２８を含むこともできる。
【００３３】
登録メッセージ２２２の受信に応答して、メッセージングサーバ１１０ａは、リソースロケーションキャッシュのマスターバージョン１１４ａ中にソフトウェアコンポーネント１０６用のエントリ２３０を生成することができる。該エントリ２３０は、ソフトウェアコンポーネント１０６の物理アドレス２２４と、ソフトウェアコンポーネント１０６の論理名２２６と、論理名２２６用のエイリアス２２８とを関連付けることができる。
【００３４】
メッセージングサーバ１１０ａは、ブロードキャストメッセージ２３２をメッセージングシステム１０８内のすべてメッセージングクライアント１１０ｂに送信することもできる。ブロードキャストメッセージ２３２は、リソースロケーションキャッシュのマスターバージョン１１４ａに追加されたエントリ２３０を含むことができる。ブロードキャストメッセージ２３２の受信に応答して、各メッセージングクライアント１１０ｂは、そのリソースロケーションキャッシュのローカルコピー１１４ｂを、リソースロケーションキャッシュのマスターバージョン１１４ａに追加されたエントリ２３０を含むように更新することができる。
【００３５】
メッセージングサーバ１１０ａは、登録コンポーネント２３４を有して示されている。登録コンポーネント２３４は、ソフトウェアコンポーネント１０６によるメッセージングシステム１０８への登録を可能にするように構成されることができる。より詳細には、登録コンポーネント２３４は、登録メッセージ２２２を処理し、適切なエントリ２３０をリソースロケーションキャッシュのマスターバージョン１１４ａに追加し、エントリ２３０をもつブロードキャストメッセージ２３２をメッセージングシステム１０８内のすべてのメッセージングクライアント１１０ｂに送信するように構成されることができる。
【００３６】
図２の例では、ソフトウェアコンポーネント１０６は、登録メッセージ２２２をメッセージングサーバ１１０ａに送信する。代替として、ソフトウェアコンポーネント１０６は、登録メッセージ２２２をメッセージングクライアント１１０ｂに送信することができ、メッセージングクライアント１１０ｂは、関連する情報（たとえば、物理アドレス２２４、論理名２２６、およびエイリアス２２８）をメッセージングサーバ１１０ａに転送することができる。
【００３７】
図３は、メッセージングエンティティ１１０（すなわち、メッセージングサーバ１１０ａまたはメッセージングクライアント１１０ｂのいずれか）が、登録されたソフトウェアコンポーネント１０６間のユニキャスト通信をどのように可能にするかを示す一例を示す。この例では、メッセージングシステム１０８内のソフトウェアコンポーネント１０６ａが、メッセージングシステム１０８内の別のソフトウェアコンポーネント１０６ｂによって最終的に受信されるメッセージ３３６を送信すると仮定する。ただし、送信者ソフトウェアコンポーネント１０６ａは、受信者ソフトウェアコンポーネント１０６ｂの物理アドレス２２４を知らなくてよい。代わりに、送信者ソフトウェアコンポーネント１０６ａによって送信されるメッセージ３３６の宛先は、ソフトウェアコンポーネント１０６ｂの論理名２２６によって特定される。
【００３８】
送信者ソフトウェアコンポーネント１０６ａからメッセージ３３６を受信すると、メッセージングエンティティ１１０は、受信者ソフトウェアコンポーネント１０６ｂの論理名２２６を受信者ソフトウェアコンポーネント１０６ｂの物理アドレス２２４に解決する。これは、リソースロケーションキャッシュ１１４（メッセージングエンティティ１１０がメッセージングサーバ１１０ａであるならば、リソースロケーションキャッシュのマスターバージョン１１４ａ、または、メッセージングエンティティ１１０がメッセージングクライアント１１０ｂであるならば、リソースロケーションキャッシュのローカルコピー１１４ｂのいずれか）を参照することによって達成できる。そして、メッセージングエンティティ１１０は、当該メッセージ３３６を受信者ソフトウェアコンポーネント１０６ｂに転送する。
【００３９】
メッセージングエンティティ１１０は、リソースロケーションサーバ３４０を有して示されている。リソースロケーションサーバ３４０は、登録されたソフトウェアコンポーネント１０６間のユニキャスト通信を可能にするように構成されることができる。より詳細には、リソースロケーションサーバ３４０は、送信者ソフトウェアコンポーネント１０６ａからのメッセージ３３６を処理し、受信者ソフトウェアコンポーネント１０６ｂの論理名２２６を受信者ソフトウェアコンポーネント１０６ｂの物理アドレス２２４に解決し、メッセージ３３６を受信者ソフトウェアコンポーネント１０６ｂに転送するように構成されることができる。
【００４０】
受信者ソフトウェアコンポーネント１０６ｂは、メッセージ３３６の受信に肯定応答することができる。受信者ソフトウェアコンポーネント１０６ｂは、肯定応答メッセージ３３８をメッセージングエンティティ１１０に返送することができる。メッセージングエンティティ１１０は、該肯定応答メッセージ３３８を送信者ソフトウェアコンポーネント１０６ａに転送することができる。
【００４１】
メッセージングシステム１０８は、分散コンピューティングシステム１００においてソフトウェアコンポーネント１０６間のマルチキャスト通信を可能にする。図４は、ソフトウェアコンポーネント１０６がマルチキャストイベントをどのように登録することができるかを示す一例を示す。
【００４２】
ソフトウェアコンポーネント１０６は、マルチキャスト登録メッセージ４４２をメッセージングサーバ１１０ａに送信することができる。マルチキャスト登録メッセージ４４２は、当該ソフトウェアコンポーネント１０６の物理アドレス２２４を含むことができる。マルチキャスト登録メッセージ４４２は、当該ソフトウェアコンポーネント１０６が登録しているマルチキャストイベントの論理名４４４を含むこともできる。
【００４３】
マルチキャスト登録メッセージ４４２の受信に応答して、メッセージングサーバ１１０ａは、マルチキャスト登録データ構造のマスターバージョン１１６ａ中にソフトウェアコンポーネント１０６用のエントリ４４６を生成することができる。このエントリ４４６は、ソフトウェアコンポーネント１０６の物理アドレス２２４、およびソフトウェアコンポーネント１０６が登録しているマルチキャストイベントの論理名４４４を関連付ける。
【００４４】
メッセージングサーバ１１０ａは、ブロードキャストメッセージ４４８をメッセージングシステム１０８内のすべてメッセージングクライアント１１０ｂに送信することもできる。ブロードキャストメッセージ４４８は、マルチキャスト登録データ構造のマスターバージョン１１６ａに追加されたエントリ４４６を含むことができる。ブロードキャストメッセージ４４８の受信に応答して、各メッセージングクライアント１１０ｂは、マルチキャスト登録データ構造のマスターバージョン１１６ａに追加されたエントリ４４６を含むように、そのマルチキャスト登録データ構造１１６ａのローカルコピーを更新することができる。
【００４５】
メッセージングサーバ１１０ａは、マルチキャスト登録コンポーネント４５０を有して示されている。マルチキャスト登録コンポーネント４５０は、ソフトウェアコンポーネント１０６によるマルチキャストイベントの登録を可能にするように構成されることができる。より詳細には、マルチキャスト登録コンポーネント４５０は、マルチキャスト登録メッセージ４４２を処理し、適切なエントリ４４６をマルチキャスト登録データ構造のマスターバージョン１１６ａに追加し、エントリ４４６をもつブロードキャストメッセージ４４８をメッセージングシステム１０８内のすべてのメッセージングクライアント１１０ｂに送信するように構成できる。
【００４６】
図４の例では、ソフトウェアコンポーネント１０６は、マルチキャスト登録メッセージ４４２をメッセージングサーバ１１０ａに送信する。代替として、ソフトウェアコンポーネント１０６は、マルチキャスト登録メッセージ４４２をメッセージングクライアント１１０ｂに送信することができ、メッセージングクライアント１１０ｂは、関連する情報（たとえば、ソフトウェアコンポーネント１０６の物理アドレス２２４、およびソフトウェアコンポーネント１０６が登録しているマルチキャストイベントの論理名４４４）をメッセージングサーバ１１０ａに転送することができる。
【００４７】
図５は、メッセージングエンティティ１１０（すなわち、メッセージングサーバ１１０ａまたはメッセージングクライアント１１０ｂのいずれか）が登録されたソフトウェアコンポーネント１０６間のマルチキャスト通信をどのように可能にするかを示す一例を示す。この例では、メッセージングシステム１０８内のソフトウェアコンポーネント１０６ａが、メッセージングシステム１０８内の複数のソフトウェアコンポーネント１０６ｂ〜１０６ｄによって最終的に受信されるマルチキャストメッセージ５５２を送信すると仮定する。ただし、送信者ソフトウェアコンポーネント１０６ａは、受信者ソフトウェアコンポーネント１０６ｂ〜１０６ｄの物理アドレス２２４ｂ〜２２４ｄを知らなくてよい。代わりに、送信者ソフトウェアコンポーネント１０６ａによって送信されたマルチキャストメッセージ５５２の宛先は、マルチキャストイベント用の論理名４４４によって特定される。
【００４８】
送信者ソフトウェアコンポーネント１０６ａからマルチキャストメッセージ５５２を受信すると、メッセージングエンティティ１１０は、マルチキャストイベントを登録したソフトウェアコンポーネント１０６ｂ〜１０６ｄの物理アドレス２２４ｂ〜２２４ｄを特定する。これは、マルチキャスト登録データ構造１１６を参照することによって達成できる。そして、メッセージングエンティティ１１０は、マルチキャストメッセージ５５２を受信者ソフトウェアコンポーネント１０６ｂ〜１０６ｄに転送する。
【００４９】
受信者ソフトウェアコンポーネント１０６ｂ〜１０６ｄの各々は、肯定応答メッセージ５５４をメッセージングエンティティ１１０に返送することによって、マルチキャストメッセージ５５２に応答することができる。マルチキャストメッセージ５５２を受信するようになされたソフトウェアコンポーネント１０６ｂ〜１０６ｄのすべてが肯定応答メッセージ５５４で応答した後、次いで、メッセージングエンティティ１１０は、単一の肯定応答メッセージ５５６を送信者ソフトウェアコンポーネント１０６ａに返送する。
【００５０】
メッセージングエンティティ１１０は、マルチキャスト通信コンポーネント５５８を有して示されている。マルチキャスト通信コンポーネント５５８は、登録されたソフトウェアコンポーネント１０６間のマルチキャスト通信を可能にするように構成されることができる。より詳細には、マルチキャスト通信コンポーネント５５８は、送信者ソフトウェアコンポーネント１０６ａから受信されたマルチキャストメッセージ５５２を処理し、マルチキャストイベントを登録したソフトウェアコンポーネント１０６ｂ〜１０６ｄの物理アドレス２２４ｂ〜２２４ｄを特定し、マルチキャストメッセージ５５２をこれらの物理アドレス２２４ｂ〜２２４ｄに転送するように構成されることができる。マルチキャスト通信コンポーネント５５８は、受信者ソフトウェアコンポーネント１０６ｂ〜１０６ｄから受信された肯定応答メッセージ５５４を処理し、単一の肯定応答メッセージ５５６を送信者ソフトウェアコンポーネント１０６ａに返送するようにも構成されることができる。
【００５１】
図６は、メッセージングサーバ１１０ａによって実行されることができる機能のいくつかを示す。メッセージングサーバ１１０ａは、検証コンポーネント６８０を有して示されている。検証コンポーネント６８０は、登録されたメッセージングクライアント１１０ｂが使用可能であることを検証するように構成されることができる。
【００５２】
メッセージングサーバ１１０ａは、ハートビートメッセージ６６２をメッセージングシステム１０８中のすべてのメッセージングクライアント１１０ｂに周期的に送信することができる。すべての登録されたメッセージングクライアント１１０ｂは、ハートビート応答６６４をメッセージングサーバ１１０ａに送信することによって、受信された各ハートビートメッセージ６６２に応答するように構成されることができる。特定のメッセージングクライアント１１０ａが送信されたハートビートメッセージ６６２に応答し続ける限り、メッセージングサーバ１１０ａは、メッセージングクライアント１１０ｂがまだ使用可能であると結論付けることができる。ただし、特定のメッセージングクライアント１１０ｂが連続ハートビートメッセージ６６２（たとえば、３つの連続ハートビートメッセージ６６２）のうちのいくつかに応答することができない場合、メッセージングサーバ１１０ａは、メッセージングクライアント１１０ｂがもはや使用可能でないと結論付けることができる。
【００５３】
メッセージングサーバ１１０ａはまた、同期コンポーネント６８２を有して示されている。同期コンポーネント６８２は、登録されたメッセージングクライアント１１０ｂ間の同期を維持するように構成されることができる。登録されたメッセージングクライアント１１０ｂ間の同期を維持するために、メッセージングサーバ１１０ａによって送信されたハートビートメッセージ６６２は、メッセージングシステム１０８のためのマスター時間６６６を含むことができる。各メッセージングクライアント１１０ｂは、ハートビートメッセージ６６２中で受信されたマスター時間６６６に基づいて、そのローカル時間６６８を更新する（すなわち、ローカル時間６６８がマスター時間６６６と同じになるようにする）ことができる。
【００５４】
メッセージングサーバ１１０ａはまた、キャッシュマネージャ６８４を有して示されている。キャッシュマネージャ６８４は、リソースロケーションキャッシュのマスターバージョン１１４ａを管理するように構成されることができる。キャッシュマネージャ６８４は、リソースロケーションキャッシュ１１４ａに対する変更が行なわれるときはいつでも、メッセージングシステム１０８内のメッセージングクライアント１１０ｂに通知するように構成されることができる。そして、各メッセージングクライアント１１０ｂは、そのリソースロケーションキャッシュのローカルコピー１１４ｂを更新することができる。
【００５５】
メッセージングサーバ１１０ａによって送信されたハートビートメッセージ６６２は、キャッシュシーケンス番号６７２ａを含むことができる。キャッシュシーケンス番号６７２ａは、リソースロケーションキャッシュのローカルコピー１１４ｂがリソースロケーションキャッシュのマスターバージョン１１４ａに対して最新であることを保証するために、メッセージングクライアント１１０ｂによって使用されることができる。
【００５６】
リソースロケーションキャッシュのマスターバージョン１１４ａが更新されるときはいつでも、メッセージングサーバ１１０ａはキャッシュシーケンス番号６７２ａをインクリメントすることができる。各メッセージングクライアント１１０ｂは、ローカルキャッシュシーケンス番号６７２ｂを、ハートビートメッセージ６６２中に含まれるマスターキャッシュシーケンス番号６７２ａと比較することができる。ローカルキャッシュシーケンス番号６７２ｂがマスターキャッシュシーケンス番号６７２ａと一致する場合には、メッセージングクライアント１１０ｂは、リソースロケーションキャッシュのローカルコピー１１４ｂが最新であると結論付けることができる。しかしながら、ローカルキャッシュシーケンス番号６７２ｂがマスターキャッシュシーケンス番号６７２ａと一致しない場合には、メッセージングクライアント１１０ｂは、リソースロケーションキャッシュのローカルコピー６１４ｂが古いと結論付けることができる。そして、メッセージングクライアント１１０ｂは、更新要求６７４をメッセージングサーバ１１０ａに送信する。
【００５７】
メッセージングクライアント１１０ｂから更新要求６７４を受信すると、メッセージングサーバ１１０ａは、リソースロケーションキャッシュ更新６７６をメッセージングクライアント１１０ｂに送信する。リソースロケーションキャッシュ更新６７６は、フル更新とすることができる、すなわち、リソースロケーションキャッシュのマスターバージョン１１４ａ全体のコピーがメッセージングクライアント１１０ｂに送信されることができる。代替として、リソースロケーションキャッシュ更新６７６は、インクリメンタル更新とすることができる、すなわち、ローカルキャッシュ１１４ｂが最後に更新されてから行われた上記キャッシュ１１４ａに対する変更のみが送信されることができる。
【００５８】
メッセージングサーバ１１０ａはまた、クライアント発見コンポーネント６７８を有して示されている。クライアント発見コンポーネント６７８は、分散コンピューティングシステム１００内の新しいメッセージングクライアント１１０ｂを発見するように構成されることができる。ハートビートメッセージ６６２を分散コンピューティングシステム１００中のすべてのメッセージングクライアント１１０ｂに送信することによって、新しいメッセージングクライアント１１０ｂは、メッセージングサーバ１１０ａの身元（identity）を判断することが可能である。そして、新しいメッセージングクライアント１１０ｂは、メッセージングシステム１０８に登録することに関して（たとえば、メッセージングサーバ１１０ａに応答６６４を送信することによって）メッセージングサーバ１１０ａと交信することができる。
【００５９】
メッセージングサーバ１１０ａはまた、マルチキャスト登録マネージャ６８６を有して示されている。マルチキャスト登録マネージャ６８６は、マルチキャスト登録データ構造のマスターバージョン１１６ａを管理するように構成されることができる。マルチキャスト登録マネージャ６８６は、マルチキャスト登録データ構造１１６ａに対して変更が行われるときはいつでも、メッセージングシステム１０８内のメッセージングクライアント１１０ｂに通知するように構成されることができる。そして、各メッセージングクライアント１１０ｂは、そのマルチキャスト登録データ構造のローカルコピー１１６ｂを更新する。
【００６０】
図７は、分散コンピューティングシステム１００内に実施されるメッセージングシステム１０８内のメッセージングサーバ１１０ａによって実行されることができるプロセス間通信のための方法７００の一例を示す。
【００６１】
図示の方法７００によれば、メッセージングサーバ１１０ａは、分散コンピューティングシステム１００内で新しいメッセージングクライアント１１０ｂを発見する７０２。これは、ハートビートメッセージ６６２を分散コンピューティングシステム１００中のすべてのメッセージングクライアント１１０ｂに送信することによって達成されることができる。ハートビートメッセージ６６２を受信すると、新しいメッセージングクライアント１１０ｂは、メッセージングサーバ１１０ａの身元を判断することが可能である。そして、新しいメッセージングクライアント１１０ｂは、メッセージングシステム１０８に登録することに関してメッセージングサーバ１１０ａと交信することができる。
【００６２】
メッセージングサーバ１１０ａは、登録されたメッセージングクライアント１１０ｂが使用可能であることを検証することもできる７０４。これは、ハートビートメッセージ６６２を分散コンピューティングシステム１００中のすべてのメッセージングクライアント１１０ｂに周期的に送信することによって達成されることができる。すべての登録されたメッセージングクライアント１１０ｂは、応答６６４をメッセージングサーバ１１０ａに送信することによって、受信された各ハートビートメッセージ６６２に応答するように構成されることができる。特定のメッセージングクライアント１１０ａが、送信されたハートビートメッセージ６６２に応答し続ける限り、メッセージングサーバ１１０ａは、当該メッセージングクライアント１１０ｂがまだ使用可能であると結論付けることができる。しかしながら、特定のメッセージングクライアント１１０ｂが連続するハートビートメッセージ６６２のうちのいくつか（たとえば、３つの連続するハートビートメッセージ６６２）に応答することができない場合には、メッセージングサーバ１１０ａは、当該メッセージングクライアント１１０ｂがもはや使用可能でないと結論付けることができる。
【００６３】
メッセージングサーバ１１０ａは、登録されたメッセージングクライアント１１０ｂの間の同期を維持することもできる７０６。メッセージングサーバ１１０ａによって送信されたハートビートメッセージ６６２は、メッセージングシステム１０８用のマスター時間６６６を含むことができる。各メッセージングクライアント１１０ｂは、ハートビートメッセージ６６２中で受信されたマスター時間６６６に基づいて、そのローカル時間６６８を更新することができる。
【００６４】
メッセージングサーバ１１０ａは、メッセージングリソースロケーションキャッシュのマスターバージョン１１４ａを管理することもできる７０８。メッセージングサーバ１１０ａは、メッセージングリソースロケーションキャッシュのマスターバージョン１１４ａに対して行われる変更（たとえば、新しいソフトウェアコンポーネント１０６がメッセージングシステム１０８に登録するとき）に関して、メッセージングシステム１０８内のメッセージングクライアント１１０ｂに通知することができる。
【００６５】
メッセージングサーバ１１０ａは、マルチキャスト登録データ構造のマスターバージョン１１６ａを管理することもできる。メッセージングサーバ１１０ａは、マルチキャスト登録データ構造のマスターバージョン１１６ａに対して行われる変更（たとえば、ソフトウェアコンポーネント１０６がマルチキャストイベントを登録するとき）に関して、メッセージングシステム１０８内のメッセージングクライアント１１０ｂに通知することができる。
【００６６】
上述の図７の方法７００は、図７Ａに示す手段（means-plus-function）ブロック７００Ａに対応する様々なハードウェア、および／または１つまたは複数のソフトウェアコンポーネント、および／または１つまたは複数のモジュールによって実行されることができる。言い換えれば、図７に示すブロック７０２〜７１０は、図７Ａに示す手段ブロック７０２Ａ〜７１０Ａに対応する。
【００６７】
図８は、分散コンピューティングシステム１００内に実施されるメッセージングシステム１０８内のメッセージングエンティティ１１０（すなわち、メッセージングサーバ１１０ａまたはメッセージングクライアント１１０ｂのいずれか）によって実行されることができるプロセス間通信のための方法８００の一例を示す。
【００６８】
図示の方法８００によれば、メッセージングエンティティ１１０は、ソフトウェアコンポーネント１０６によるメッセージングシステム１０８への登録を可能にすることができる８０２。ソフトウェアコンポーネント１０６は、登録メッセージ２２２をメッセージングエンティティ１１０に送信する。登録メッセージ２２２の受信に応答して、メッセージングエンティティ１１０は、ソフトウェアコンポーネント１０６用のエントリ２３０に、リソースロケーションキャッシュのマスターバージョン１１４ａ中に生成させられることができる。エントリ２３０は、ソフトウェアコンポーネント１０６の物理アドレス２２４、ソフトウェアコンポーネント１０６の論理名２２６、および該論理名２２６について存在する全てのエイリアス２２８を関連付けることができる。メッセージングシステム１０８内のすべてのメッセージングクライアント１１０ｂは、リソースロケーションキャッシュのマスターバージョン１１４ａに追加されたエントリ２３０について通知されることができる。
【００６９】
メッセージングエンティティ１１０はまた、登録されたソフトウェアコンポーネント１０６間のユニキャスト通信を可能にすることができる８０４。メッセージングエンティティ１１０は、宛先が受信者ソフトウェアコンポーネント１０６ｂの論理名２２６によって特定されたメッセージ３３６を受信することができる。メッセージングエンティティ１１０は、受信者ソフトウェアコンポーネント１０６ｂの論理名２２６を、受信者ソフトウェアコンポーネント１０６ｂの物理アドレス２２４に解決することができる。これは、リソースロケーションキャッシュ１１４を参照することによって達成できる。そして、メッセージングエンティティ１１０は、メッセージ３３６を受信者ソフトウェアコンポーネント１０６ｂの物理アドレス２２４に転送する。
【００７０】
メッセージングエンティティ１１０はまた、分散コンピューティングシステム１００内のソフトウェアコンポーネント１０６によるマルチキャストイベントの登録を可能にすることができる８０６。マルチキャスト登録メッセージ４４２の受信に応答して、メッセージングエンティティ１１０は、ソフトウェアコンポーネント１０６用のエントリ４４６に、マルチキャスト登録データ構造のマスターバージョン１１６ａ中に生成させられることができる。該エントリ４４６は、ソフトウェアコンポーネント１０６の物理アドレス２２４、およびソフトウェアコンポーネント１０６が登録しているマルチキャストイベントの論理名４４４を関連付けることができる。
【００７１】
メッセージングエンティティ１１０はまた、登録されたソフトウェアコンポーネント１０６間のマルチキャスト通信を可能にすることができる８０８。マルチキャストイベント用の論理名４４４を含むマルチキャストメッセージ５５２を受信すると、メッセージングエンティティ１１０は、マルチキャストイベントを登録したソフトウェアコンポーネント１０６ｂ〜１０６ｄの物理アドレス２２４ｂ〜２２４ｄを特定することができる。これは、マルチキャスト登録データ構造１１６を参照することによって達成されることができる。そして、メッセージングエンティティ１１０は、マルチキャストメッセージ５５２を適切な受信者ソフトウェアコンポーネント１０６ｂ〜１０６ｄに転送することができる。
【００７２】
上述の図８の方法８００は、図８Ａに示す手段ブロック８００Ａに対応する様々なハードウェア、および／または１つまたは複数のソフトウェアコンポーネント、および／または１つまたは複数のモジュールによって実行されることができる。言い換えれば、図８に示すブロック８０２〜８０８は、図８Ａに示す手段ブロック８０２Ａ〜８０８Ａに対応する。
【００７３】
図９は、本明細書に記載のメッセージングシステムがＵＮＩＸ（登録商標）ベースのシステム上でどのように実施されるかについての例を示す。図示の例では、メッセージングシステムは、イーサネット（登録商標）バックプレーン上に階層化（layered）されており、ユーザカーネルインターフェースがソケットレイヤを使用して実施される。本アーキテクチャは、ＵＮＩＸロード可能カーネルモジュールに、メッセージングシステムの一部となり、カーネルコンポーネントとユーザスペースコンポーネントとの間の区分をぼやかすことを許す。メッセージングシステムは、メッセージングカーネルモジュール９０２と、リソースロケーションサーバ９０４と、リソースロケーションキャッシュ９０６と、マルチキャストメッセージ肯定応答処理コンポーネント９０８とを含む。
【００７４】
図１０は、本明細書に記載のメッセージングシステムがＳｕｎ  Ｓｏｌａｒｉｓシステム上でどのように実施されるかについての例を示す。本システムは、単一のＯＳシステム上で実行していても、コンポーネント間で同じメッセージングインターフェースを維持することができる。本アーキテクチャでは、ハートビートすることおよびローカルキャッシュ保守のようなメッセージング機能は、自動的に使用不能にできる。メッセージングカーネルモジュールが再加工され、ユーザスペースソフトウェアがＬｉｎｕｘ（登録商標）用に再コンパイルされたならば、同じソフトウェアシステムはＬｉｎｕｘベースのシステム上で動作することができる。メッセージングシステムは、制御メッセージングコンポーネント１００２と、リソースロケーションキャッシュ１００６と、マルチキャストメッセージ肯定応答処理コンポーネント１００８とを含む。
【００７５】
図１１は、本明細書に記載のメッセージングシステムがリアルタイムオペレーティングシステム（ＲＴＯＳ）上でどのように実施されるかについての例を示す。メッセージングシステムは、リソースロケーションサーバ１１０４と、リソースロケーションキャッシュ１１０６と、マルチキャストメッセージ肯定応答処理コンポーネント１１０８とを含む。
【００７６】
すべてのメッセージ宛先が動的に構築され、解決されることができるので、冗長性が本システム内でサポートされることもできる。このことは、特定のハードウェアユニットが故障したとき、メッセージングシステムがそれらの論理名を登録せず、任意の分散キャッシュを更新することができることを意味する。取り替えがオンラインで行われるとき、新しいユニットは、同じ論理名ではあるが新しい物理的ロケーションに登録することができる。アプリケーションへのいかなる変更もなしに、新しいユニットは、システムに完全に参加する準備ができている。スタンバイユニットは、いくつかの論理名のためのスタンバイユニットレジスタを持つことによって「ホット」に保つこともできる。これにより、アクティブユニットに、（名前を解決することが可能であることによって）それらの存在を判断し、また、スタンバイユニットを同期状態に保つために更新メッセージをそれに送信することを許す。スタンバイユニットは、アクティブユニットが死んだことを検出したとき、そのアクティブユニットの論理名のすべてを登録することができる。これにより、ホットとウォームの両方の冗長性を実施することが可能になる。
【００７７】
図１２は、上述の分散コンピューティングシステム１００においてソフトウェアコンポーネント１０６間のプロセス間通信を可能にするための装置のハードウェア実装の一部を示す。回路装置は、参照番号１２００によって示され、ルータ、スイッチ、基地局などに含まれている様々な処理モジュール中またはボード中に実装されることができる。
【００７８】
装置１２００は、いくつかの回路を連結する中央データバス１２０２を備える。回路は、ＣＰＵ（中央処理装置）またはコントローラ１２０４と、受信回路１２０６と、送信回路１２０８と、メモリユニット１２１０とを含む。
【００７９】
装置１２００が無線デバイスの一部である場合、受信回路１２０６および送信回路１２０８はＲＦ（無線周波数）回路に接続できるが、それは図面に示されていない。受信回路１２０６は、受信信号をデータバス１２０２に送信する前に、それらの信号を処理し、バッファリングする。一方、送信回路１２０８は、データバス１２０２からのデータをデバイス１２００から送信する前に、そのデータを処理し、バッファリングする。装置１２００が無線デバイスの一部でない場合、受信回路１２０６および送信回路１２０８は、有線接続を介して、他の装置（たとえば、他のハードウェアユニット１０２）からデータを受信し、他の装置にデータを送信するように構成されることができる。ＣＰＵ／コントローラ１２０４は、データバス１２０２のデータ管理の機能と、さらには、メモリユニット１２１０の命令内容を実行することを含む一般的なデータ処理の機能とを実行する。
【００８０】
図１２に示すように別々に配設する代わりに、代替として、送信回路１２０８および受信回路１２０６はＣＰＵ／コントローラ１２０４の一部とすることができる。
【００８１】
メモリユニット１２１０は、参照番号１２１２によって全体的に示されるモジュールおよび／または命令のセットを含む。本実施形態において、モジュール／命令１２１２は、とりわけ、ソフトウェアコンポーネント１０６によるメッセージングシステム１０８への登録を可能にするための登録機能１２３４と、登録されたソフトウェアコンポーネント１０６間のユニキャスト通信を可能にするためのユニキャスト通信機能１２１８と、ソフトウェアコンポーネント１０６によるマルチキャストイベントの登録を可能にするためのマルチキャスト登録機能１２２０と、登録されたソフトウェアコンポーネント１０６間のマルチキャスト通信を可能にするためのマルチキャスト通信機能１２２２と、分散コンピューティングシステム１００内で新しいメッセージングクライアント１１０ｂを発見するための発見機能１２２４と、登録されたメッセージングクライアント１１０ｂが使用可能であることを検証するための検証機能１２２６と、登録されたメッセージングクライアント１１０ｂ間の同期を維持するための同期機能１２２８と、リソースロケーションキャッシュ１２１４を管理するためのキャッシュ管理機能１２３０と、マルチキャスト登録データ構造１２１６を管理するためのマルチキャスト管理機能１２３２と、を含む。登録機能１２３４、ユニキャスト通信機能１２１８、マルチキャスト登録機能１２２０、マルチキャスト通信機能１２２２、発見機能１２２４、検証機能１２２６、同期機能１２２８、キャッシュ管理機能１２３０、およびマルチキャスト管理機能１２３２は、図１〜図１１において図示および説明したプロセスステップを実行するためのコンピュータ命令またはコードを含む。
【００８２】
エンティティに特定の固有の命令は、選択的に実施できる。たとえば、装置１２００がメッセージングクライアント１１０ｂの機能を提供する場合、登録機能１２３４、ユニキャスト通信機能１２１８、マルチキャスト登録機能１２２０、およびマルチキャスト通信機能１２２２が実施されることができる。装置１２００がメッセージングサーバ１１０ａの機能を提供する場合、図示の機能のすべてが実施されることができる。
【００８３】
さらに、リソースロケーションキャッシュ１２１４およびマルチキャスト登録データ構造１２１６は、メモリユニット１２１０中に含められることができる。代替として、リソースロケーションキャッシュ１２１４およびマルチキャスト登録データ構造１２１６は、上記ユニット１２１０以外の１つ以上の他のメモリユニット中に記憶されることができる。
【００８４】
本実施形態では、メモリユニット１２１０はＲＡＭ（ランダムアクセスメモリ）回路である。例示的な機能（登録機能１２３４、ユニキャスト通信機能１２１８、マルチキャスト登録機能１２２０、マルチキャスト通信機能１２２２、発見機能１２２４、検証機能１２２６、同期機能１２２８、キャッシュ管理機能１２３０、およびマルチキャスト管理機能１２３２など）は、ソフトウェアルーチン、モジュールおよび／またはデータセットである。メモリユニット１２１０は、揮発性タイプまたは不揮発性タイプのいずれかとすることができる別のメモリ回路（図示せず）に接続される（tied）ことができる。代替として、メモリユニット１２１０は、ＥＥＰＲＯＭ（電気的に消去可能なプログラム可能な読出し専用メモリ）、ＥＰＲＯＭ（電気的にプログラム可能な読出し専用メモリ）、ＲＯＭ（読出し専用メモリ）、ＡＳＩＣ（特定用途向け集積回路）、磁気ディスク、光ディスク、および当技術分野でよく知られている他のものなど、他の回路タイプとされることができる。
【００８５】
さらに、説明した本発明のプロセスを、当技術分野で知られている任意のコンピュータ可読媒体上で搬送されるコンピュータ可読命令としてコード化することもできることに留意されたい。本明細書および添付の特許請求の範囲において、「コンピュータ可読媒体」という用語は、図１２において図示および説明したＣＰＵ／コントローラ１２０４など、実行用の任意のプロセッサに命令を与えることに関与する任意の媒体を指す。そのような媒体は、記憶タイプとすることができ、たとえば、図１２中のメモリユニット１２１０の説明において、同じく前述した揮発性または不揮発性の記憶媒体の形態をとることができる。そのような媒体は、また、伝送タイプとすることができ、同軸ケーブル、銅線、光ケーブル、機械またはコンピュータによって読取り可能な信号を搬送することが可能な音波、電磁波または光波を搬送するエアインターフェースを含むことができる。コンピュータ可読媒体は、装置１２００とは別個のコンピュータ製品の一部とすることができる。
【００８６】
本明細書で使用する「判断」という用語は、多種多様な動作を包含し、したがって、「判断」は、計算、算出、処理、導出、調査、探索（たとえば、テーブル、データベースまたは別のデータ構造での探索）、確認などを含むことができる。また、「判断」は、受信（たとえば、情報を受信すること）、アクセス（たとえば、メモリ中のデータにアクセスすること）などを含むことができる。また、「判断」は、解決、選択、選出、確立などを含むことができる。
【００８７】
「に基づいて」という句は、別段に明示されていない限り、「のみに基づいて」を意味しない。言い換えれば、「に基づいて」という句は、「のみに基づいて」と「に少なくとも基づいて」の両方を表す。
【００８８】
上記に加えて、本開示に関連して説明した様々な他の例示的な論理ブロック、モジュールおよび回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ信号（ＦＰＧＡ）または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタロジック、個別ハードウェアコンポーネント、または本明細書に記載の機能を実行するように設計されたその任意の組合せを用いて実施または実行できる。
【００８９】
本開示に関連して説明した方法またはアルゴリズムのステップは、直接ハードウェアか、プロセッサによって実行されるソフトウェアモジュールか、またはその２つの組合せで実施できる。ソフトウェアモジュールは、当技術分野で知られている任意の形式の記憶媒体中に存在することができる。使用できる記憶媒体のいくつかの例には、前述のように、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭなどがある。ソフトウェアモジュールは、単一の命令、または多数の命令を備えることができ、いくつかの異なるコードセグメント上で、異なるプログラム間で、および複数の記憶媒体にわたって分散できる。記憶媒体は、プロセッサがその記憶媒体から情報を読み取ることができ、その記憶媒体に情報を書き込むことができるように、プロセッサに結合できる。代替として、記憶媒体はプロセッサに一体化することができる。
【００９０】
さらに、図７〜図８によって示されたものなど、本明細書に記載の方法および技法を実行するためのモジュールおよび／または他の適切な手段は、適用可能な場合にモバイルデバイスおよび／または基地局によってダウンロードおよび／または他の方法で取得できることを諒解されたい。たとえば、そのようなデバイスは、本明細書に記載の方法を実行するための手段の転送を可能にするために、サーバに結合できる。
【００９１】
特許請求の範囲は、上記の正確な構成およびコンポーネントに限定されないことを理解されたい。特許請求の範囲を逸脱することなく、本明細書に記載のシステム、方法および装置の構成、動作および詳細において、様々な改変、変更および変形を行うことができる。
【図１】
2010529524.tif 000003
【図２】
2010529524.tif 000004
【図３】
2010529524.tif 000005
【図４】
2010529524.tif 000006
【図５】
2010529524.tif 000007
【図６】
2010529524.tif 000008
【図７】
2010529524.tif 000009
【図７Ａ】
2010529524.tif 000010
【図８】
2010529524.tif 000011
【図８Ａ】
2010529524.tif 000012
【図９】
2010529524.tif 000013
【図１０】
2010529524.tif 000014
【図１１】
2010529524.tif 000015
【図１２】
2010529524.tif 000016
【国際調査報告】
2010529524.tif 000017
2010529524.tif 000018
2010529524.tif 000019