(57)【特許請求の範囲】
【請求項１】
複数の通信装置間で放送通信にてメッセージを送受信するための通信方法であって、
前記複数の通信装置のそれぞれは、少なくとも他の通信装置との間で送受信したメッセージ数の累積値である通信カウントと送信済みのメッセージの宛先のプロセスを識別するための宛先メッセージＩＤとメッセージを受信すべきプロセスを識別するための必要メッセージＩＤとを記憶手段に記憶し、
メッセージを送信する際には、該メッセージに少なくとも前記記憶された通信カウントと送信済みのメッセージの宛先メッセージＩＤとを書き込み、
メッセージを受信した際には、該受信メッセージに書き込まれた通信カウントと前記記憶された通信カウントとに基づき未受信のメッセージの有無を検出し、該未受信のメッセージの存在が検出されたとき、その再送の必要性を、前記受信メッセージに書き込まれた送信済みのメッセージの宛先メッセージＩＤと前記記憶された必要メッセージＩＤとに基づき判断し、再送が必要と判断された該未受信のメッセージについてのみ再送要求を行うことを特徴とする通信方法。
【請求項２】
前記メッセージに書き込む送信済みのメッセージの宛先メッセージＩＤの個数が予め定められていることを特徴とする請求項１記載の通信方法。
【請求項３】
前記メッセージに書き込む送信済みのメッセージの宛先メッセージＩＤのデータ長を短縮することを特徴とする請求項１または２記載の通信方法。
【請求項４】
放送通信にてメッセージを送受信する通信装置において、
少なくとも、他の通信装置との間で送受信したメッセージ数の累積値である通信カウントと送信済みのメッセージの宛先のプロセスを識別するための宛先メッセージＩＤとメッセージを受信すべきプロセスを識別するための必要メッセージＩＤとを記憶する記憶手段と、
少なくとも前記記憶手段で記憶された通信カウントと送信済みのメッセージの宛先メッセージＩＤとが書き込まされたメッセージを送信するメッセージ送信手段と、
メッセージを受信した際、該受信メッセージに書き込まれた通信カウントと前記記憶手段で記憶された通信カウントとに基づき未受信のメッセージの有無を検出する検出手段と、
この検出手段で未受信のメッセージの存在を検出したとき、前記受信メッセージに書き込まれた送信済みのメッセージの宛先メッセージＩＤと前記記憶手段で記憶された必要メッセージＩＤとに基づき、該未受信のメッセージの再送の必要性を判定する再送必要性判定手段と、
この再送必要性判定手段で再送が必要と判定された前記未受信のメッセージの再送要求のためのメッセージを送信する再送要求手段と、
を具備したことを特徴とする通信装置。
【請求項５】
前記メッセージに書き込む送信済みのメッセージの宛先メッセージＩＤの個数が予め定められていることを特徴とする請求項４記載の通信装置。
【請求項６】
前記メッセージに書き込む送信済みのメッセージの宛先メッセージＩＤのデータ長を短縮することを特徴とする請求項４または５記載の通信装置。
【請求項７】
放送通信にてメッセージを送受信するためのプログラムを記録した機械読み取り可能な記録媒体であって、
少なくとも、他の通信装置との間で送受信したメッセージ数の累積値である通信カウントと送信済みのメッセージの宛先のプロセスを識別するための宛先メッセージＩＤとメッセージを受信すべきプロセスを識別するための必要メッセージＩＤとを記憶させる記憶手段と、
少なくとも前記記憶手段で記憶された通信カウントと送信済みのメッセージの宛先メッセージＩＤとが書き込まされたメッセージを送信させるメッセージ送信手段と、
メッセージを受信した際、該受信メッセージに書き込まれた通信カウントと前記記憶手段で記憶された通信カウントとに基づき未受信のメッセージの有無を検出させる検出手段と、
この検出手段で未受信のメッセージの存在を検出したとき、前記受信メッセージに書き込まれた送信済みのメッセージの宛先メッセージＩＤと前記記憶手段で記憶された必要メッセージＩＤとに基づき、該未受信のメッセージの再送の必要性を判定させる再送必要性判定手段と、
この再送必要性判定手段で再送が必要と判定された前記未受信のメッセージの再送要求のためのメッセージを送信させる再送要求手段と、
を実行するプログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
複数の計算機（コンピュータ）を通信可能なように接続してなる分散システムにおけるメッセージの通信方法（特に、メッセージの再送制御方法）およびそれを用いた通信装置に関する。
【０００２】
【従来の技術】
ネットワークに接続した複数の計算機（コンピュータ）間で、放送通信（ブロードキャストまたはマルチキャスト）を用いてメッセージ交換するシステムでは、メッセージには識別情報としてのメッセージＩＤ（例えば、宛先情報）が送信元にて付加され、受信側ではそのメッセージＩＤを元に、当該メッセージを必要とするか否か判断する。
【０００３】
従来の放送通信を用いた全計算機で同一順序でメッセージを受信することを保証した全順序放送通信機構や、送信元からの送信順序の同一性を保証する送信元順序保証通信機構では、計算機単位でのメッセージ順序の同一性のみに着目していた。即ち、計算機単位に通信カウントをメッセージに付加して送受信し、通信カウントの抜けが生じたときに抜けた番号のメッセージを再送処理している。このとき、再送要求するメッセージが自計算機に必要か否かは、抜けたメッセージに関する情報（メッセージＩＤ）が不明なため知るすべがなく、抜けメッセージを全て再送してもらう必要があった。
【０００４】
よって、自計算機に不要なメッセージまでも再送処理する事となり、ネットワークと計算機の負荷を増大させていた。
【０００５】
また、自計算機が過去に受信したメッセージ履歴情報を送信メッセージに付加して送信する方法も存在するが、これはメッセージの抜けを検出することを目的とした方法であり、再送処理の無駄を省くためのものではない。
【０００６】
【発明が解決しようとする課題】
そこで、本発明は上記問題点に鑑みてなされたもので、放送通信において、必要なメッセージの順序関係を保証したまま、受信できなかったメッセージの再送処理の負荷を軽減できる通信方法を提供することを目的とする。
【０００７】
また、本発明は、放送通信において、必要なメッセージの順序関係を保証したまま、受信できなかったメッセージの再送処理（ネットワーク上、装置内）の負荷を軽減できる通信装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
（１）本発明の通信方法は、複数の通信装置間で放送通信にてメッセージを送受信するための通信方法であって、
前記複数の通信装置のそれぞれは、少なくとも他の通信装置との間で送受信したメッセージ数の累積値である通信カウントと送信済みのメッセージの識別情報と受信すべきメッセージの識別情報とを記憶手段に記憶し、
メッセージを送信する際には、該メッセージに少なくとも前記記憶された通信カウントと送信済みのメッセージの識別情報とを書き込み、
メッセージを受信した際には、該受信メッセージに書き込まれた通信カウントと前記記憶された通信カウントとに基づき未受信のメッセージの有無を検出し、該未受信のメッセージの存在が検出されたとき、その再送の必要性を、前記受信メッセージに書き込まれた送信済みのメッセージの識別情報と前記記憶された受信すべきメッセージの識別情報とに基づき判断し、再送が必要と判断された該未受信のメッセージについてのみ再送要求を行うことを特徴とする。
【０００９】
本発明によれば、通信カウントと過去に送ったメッセージの識別情報（メッセージＩＤ）をメッセージ中に付加して送受信し、メッセージ欠損を検出したときに、再送対象メッセージが自装置（自プロセス）に必要か否かを判定した後、自装置（自プロセス）に必要な場合のみ再送処理を行なうことにより、受信すべき必要なメッセージの順序関係を保証したまま、通信路や通信装置内の再送処理にかかる負荷を軽減できる。
【００１０】
また、好ましくは、前記メッセージに書き込む送信済みのメッセージの識別情報の個数が予め定められていることにより、通信路や通信装置内の再送処理にかかる負荷をより軽減できる。
【００１１】
また、好ましくは、前記メッセージに書き込む送信済みのメッセージの識別情報のデータ長を短縮することにより、通信路や通信装置内の再送処理にかかる負荷をより軽減できる。
【００１２】
（２）本発明の通信装置は、放送通信にてメッセージを送受信する通信装置において、
少なくとも、他の通信装置との間で送受信したメッセージ数の累積値である通信カウントと送信済みのメッセージの識別情報と受信すべきメッセージの識別情報とを記憶する記憶手段と、
少なくとも前記記憶手段で記憶された通信カウントと送信済みのメッセージの識別情報とが書き込まされたメッセージを送信するメッセージ送信手段と、
メッセージを受信した際、該受信メッセージに書き込まれた通信カウントと前記記憶手段で記憶された通信カウントとに基づき未受信のメッセージの有無を検出する検出手段と、
この検出手段で未受信のメッセージの存在を検出したとき、前記受信メッセージに書き込まれた送信済みのメッセージの識別情報と前記記憶手段で記憶された受信すべきメッセージの識別情報とに基づき、該未受信のメッセージの再送の必要性を判定する再送必要性判定手段と、
この再送必要性判定手段で再送が必要と判定された前記未受信のメッセージの再送要求のためのメッセージを送信する再送要求手段と、
を具備したことを特徴とする。
【００１３】
本発明によれば、通信カウントと過去に送ったメッセージの識別情報（メッセージＩＤ）をメッセージ中に付加して送受信し、メッセージ欠損を検出したときに、再送対象メッセージが自装置（自プロセス）に必要か否かを判定した後、自装置（自プロセス）に必要な場合のみ再送処理を行なうことにより、受信すべき必要なメッセージの順序関係を保証したまま、通信路や通信装置内の再送処理にかかる負荷を軽減できる。
【００１４】
また、好ましくは、前記メッセージに書き込む送信済みのメッセージの識別情報の個数が予め定められていることにより、通信路や通信装置内の再送処理にかかる負荷をより軽減できる。
【００１５】
また、好ましくは、前記メッセージに書き込む送信済みのメッセージの識別情報のデータ長を短縮することにより、通信路や通信装置内の再送処理にかかる負荷をより軽減できる。
【００１６】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して説明する。
【００１７】
図１は、本発明の通信方法を適用した通信装置（例えば、計算機にて実現されていて、以下、計算機と呼ぶ）を用いて構成された分散システムの全体構成を概略的に示したものである。複数の（例えば３つの）計算機（計算機１ａと計算機１ｂと計算機１ｃ）がネットワーク（ＬＡＮ）に通信可能なように接続されていて、この複数の計算機のうちの１つから送信されたメッセージは、３つの全計算機に対して放送ないしマルチキャストされる。
【００１８】
図２は、本発明の通信方法を適用した通信装置としての計算機を用いて構成された他の分散システムの全体構成を概略的に示したものである。異なる複数の（例えば３つの）ネットワーク１１、１２、１３のそれぞれには複数の計算機が接続され、それら計算機がゲートウエイやルータを介して複数のネットワーク１１、１２、１３にまたがってマルチキャストを用いて互いに通信可能なように接続されて構成されている。
【００１９】
図２において、マルチキャストで通信しあう複数の計算機には、同一のマルチキャストアドレスが振られており、論理的には図１と同様の環境で通信しあっていると見なされる。よって、以下の説明では、説明の簡単のため、図１の分散システムを例にとり説明を行なう。
【００２０】
図３は、図１および図２に示した各計算機（以下、まとめて計算機１と呼ぶ）の本発明の通信方法に係る要部の構成を示したものである。計算機１は、大きく分けて本体処理部３３０と通信処理部３２０とから構成され、本体処理部３３０には計算機１上で動作する１または複数のプロセス群が存在する。図３では、これら複数のプロセスのメッセージ送信処理を実行するための情報やプログラム、サブルーチンなどの集まりであるライブラリをまとめてメッセージ処理部３１１とし、また、複数のプロセスのメッセージ受信処理を実行するための情報やプログラム、サブルーチンなどの集まりであるライブラリをまとめてメッセージ処理部３１０と表している。
【００２１】
通信処理部３２０は、本体処理部３３０に登録された各プロセスからの送信要求を受け、ネットワーク上に送信するとともに、ネットワークからメッセージを受信して該当するプロセスに対して受信メッセージを配送する。そのメッセージ送受信の間に、メッセージ受信に失敗した場合には、通信処理部３２０内で当該メッセージの再送処理を行い、本体処理部３３０に対してメッセージ受信順序を保証して提供する。
【００２２】
送信メッセージバッファ３０９には、メッセージ処理部３１１から送信されるメッセージが格納される。
【００２３】
通信履歴記憶部３０３には、図５（ａ）に示すようなメッセージ抜け検出用テーブル３０３ａと図５（ｂ）に示すような送信記録用テーブル３０３ｂとを保持し、メッセージを送信、受信する度に、それぞれ送信記録用テーブル３０３ｂ、メッセージ抜け検出用テーブル３０３ａを更新するようになっている。
【００２４】
メッセージ送信部３０２は、送信メッセージバッファ３０９に記憶された送信メッセージに、通信履歴記憶部３０３を参照して、通信カウント、過去に送信したメッセージＩＤ情報をセットして、当該メッセージをネットワークへ送出するようになっている。
【００２５】
メッセージ受信部３０１は、ネットワークから受信したメッセージを受信し、受信メッセージバッファ３０４へ格納する。
【００２６】
メッセージ抜け検出部３０５は、メッセージ受信部３０１で受信されたメッセージに書き込まれている通信カウントと、通信履歴記憶部３０３のメッセージ抜け検出用テーブル３０３ａに記憶されている通信カウントとを比較して、受信すべきメッセージであったにもかかわらず受信できなかったメッセージ（抜けメッセージの通信カウント）を検出する。
【００２７】
必要メッセージＩＤ記憶部３０７には、受信すべきメッセージの識別情報（ＩＤ）が予め登録されている。
【００２８】
再送必要性判定部３０６は、受信メッセージ中の過去に送信したメッセージＩＤ情報のうち、未受信であった通信カウントのメッセージＩＤが必要メッセージＩＤ記憶部３０７に記憶されているときは、当該抜けメッセージの再送要求を行う必要があると判定する。抜けメッセージの再送要求を行う場合には、送信メッセージバッファ３０９、メッセージ送信部３０２を介して再送要求を行う。
【００２９】
受信メッセージディスパッチ部３０８は、受信メッセージ中のメッセージＩＤが必要メッセージＩＤ記憶部３０７に登録されているときに、当該メッセージＩＤに対応したメッセージ処理部３１０を起動する。
【００３０】
図３の送信メッセージバッファ３０９および受信メッセージバッファ３０４は、図４に示す構造のメッセージが複数登録できる構造となっており、古いメッセージエリアから順に再利用される構造となっているとする。
【００３１】
図４は、ネットワークを介して、他の計算機との間で送受信されるメッセージの構造を示したもので、エリア４００には通信モード、エリア４０１には通信カウント、エリア４０２にはメッセージＩＤ、エリア４０３には送信元ＩＤ、エリア４０４には過去の（既に送信済みの）メッセージＩＤ情報、エリア４０５にはメッセージ本体が、それぞれ書き込まれるようになっている。
【００３２】
通信モードは、通常にメッセージを送信するため「通常モード」と、メッセージ抜けを検出して再送を要求するための「再送要求モード」とがある。通信カウントは、当該計算機からのメッセージ送信回数である。メッセージＩＤは、当該メッセージをネットワーク内で一義的に識別するための識別情報で、ここでは、例えば、受信先を特定するための情報（例えば宛先プロセス名）である。送信元ＩＤは、当該メッセージの送信元の計算機を識別するための情報で、例えば送信元の計算機ＩＤである。
【００３３】
エリア４０４には、当該送信元から送信したメッセージＩＤの一覧が書き込まれ、例えば過去に送信した宛先プロセス名の一覧が書き込まれる。
【００３４】
エリア４０５に書き込まれるメッセージ本体は、プロセス間で交換する情報本体である。
【００３５】
計算機１の通信履歴記憶部３０３は、図５に示すように２つのテーブル（メッセージ抜け検出用テーブル３０３ａ、送信記録用テーブル３０３ｂ）が記憶されている。各テーブルは初期状態では、次のように初期化されている。
【００３６】
メッセージ抜け検出用テーブル３０３ａは、図５（ａ）に示すように、少なくともネットワークに接続された通信対象の計算機数分の通信カウント記憶領域を持ち、各計算機毎のメッセージ送受信カウントを記憶する。すなわち、計算機ＩＤ記憶領域５０１には、通信対象となる計算機のＩＤ（例えば、ａ、ｂ、ｃ、…、Ｎ）が予め登録され、通信カウント記憶領域５０２には、計算機ＩＤ記憶領域５０１に登録されたＩＤのそれぞれに対応する計算機との間で送受信された通信回数が書き込まれる。よって、図１に示した分散システムの場合、初期状態では、各計算機とも、計算機ＩＤ記憶領域５０１には、通信対象となる計算機１ａ、計算機１ｂ、計算機１ｃの３つＩＤ（ａ、ｂ、ｃ）が登録され、それぞれに該当する通信カウント記憶領域５０２には初期値「０」がセットされている。
【００３７】
送信記録用テーブル３０３ｂは、図５（ｂ）に示すように、自計算機から送信したメッセージ情報を記憶するものであり、送信した各メッセージ毎の通信カウント記憶領域５０３、メッセージＩＤ記憶領域５０４、当該メッセージが記憶されている送信メッセージバッファ３０９上のアドレス情報の記憶領域（ＴｘＢｕｆ−Ｉｎｄｅｘ）５０５を持つ。
【００３８】
通信カウント記憶領域５０３には、当該メッセージを送信したときの通信カウントの値が記憶され、メッセージＩＤ記憶領域５０４には、当該メッセージのメッセージＩＤ（例えば、宛先プロセス名）が記憶される。
【００３９】
よって、図１に示した分散システムの場合、初期状態では、全計算機ともまだメッセージを送信していないので、何も登録されていない状態である。
【００４０】
なお、本実施形態にかかる通信装置は、例えば、タッチパネル、マイクロフォン、マウス、キーボード等の入力手段、スピーカ、ディスプレイ（表示装置）、等の出力手段、フロッピーディスク装置、ＣＰＵ、主メモリ、必要に応じてハードディスク装置等の大容量記憶装置等を備えたパーソナルコンピュータ（計算機）を用いて実現される。
【００４１】
特に、図３の通信装置の中心をなす通信処理部３２０の持つ機能は、その機能を上記のパーソナルコンピュータにより実行させるためのプログラムを記録した記憶媒体、例えばフロッピーディスクを用い、当該記録媒体を上記パーソナルコンピュータ中のフロッピーディスク装置に装着して、当該フロッピーディスクに記録されているプログラムを上記パーソナルコンピュータ（中のＣＰＵ）で読み取り実行させることにより実現される。
【００４２】
また、図３の通信装置の中心をなす通信処理部３２０の持つ機能は、その機能を上記のパーソナルコンピュータにより実行させるためのプログラムを記録したＲＯＭ等の半導体メモリを上記パーソナルコンピュータに実装して、当該半導体メモリに記録されているプログラムを上記パーソナルコンピュータ（中のＣＰＵ）で読み取り実行させることにより実現される。
【００４３】
以下、図９に示すように３台の計算機１ａ、１ｂ、１ｃにプロセスが配置されている場合を例にとり、計算機１のメッセージ送信／受信処理動作について説明する。すなわち、計算機１ａにはプロセスＡ、プロセスＢ、プロセスＣが存在し、計算機１ｂにはプロセスＢ、プロセスＤ、プロセスＥが存在し、計算機１ｃにはプロセスＡ、プロセスＢ、プロセスＥ、プロセスＦが配置されている。
【００４４】
このとき、各計算機１ａ〜１ｃの必要メッセージＩＤ記憶部３０７には、図９に示すような情報が記憶されている。すなわち、計算機１ａの必要メッセージＩＤ記憶部３０７には、計算機１ａに配置されている｛プロセスＡ、プロセスＢ、プロセスＣ｝が記憶されており、同様に計算機１ｂの必要メッセージＩＤ記憶部３０７には｛プロセスＢ、プロセスＤ、プロセスＥ｝が、計算機１ｃの必要メッセージＩＤ記憶部３０７には｛プロセスＡ、プロセスＢ、プロセスＥ、プロセスＦ｝が記憶されている。
【００４５】
次に、図１０〜図１１を参照して、計算機１ａ〜１ｃの間でメッセージの送受信を行う際のメッセージ抜け検出用テーブル３０３ａと送信記録用テーブル３０３ｂの更新処理と、メッセージ抜け検出処理と、抜けメッセージの再送要求処理とについて説明する。
【００４６】
まず、計算機１ａからメッセージを送信する場合を例にとり、計算機１ａでのメッセージ抜け検出用テーブル３０３ａと送信記録用テーブル３０３ｂの更新処理と、計算機１ｂ〜１ｃでのメッセージ抜け検出用テーブル３０３ａの更新処理について説明する。
【００４７】
ステップＳ１：初期状態では、前述のように各計算機１ａ〜１ｃ上の通信履歴記憶部３０３は初期化されており、各計算機１ａ〜１ｃとも、メッセージ抜け検出用テーブル３０３ａは初期状態として、通信対象となる計算機１ａ、計算機１ｂ、計算機１ｃの３つのエリアが初期値「０」である。初期状態では、まだメッセージが送信されていないので、計算機１ａの送信記録用テーブル３０３ｂには、何も登録されていない。
【００４８】
ステップＳ２：この状況にて、計算機１ａ上のプロセスＢがプロセスＡ宛てにメッセージを送信する。なお、プロセスＢは、図３のメッセージ処理部３１１に相当する。
【００４９】
ここで、図６に示すフローチャートを参照して、ステップＳ２における計算機１ａのメッセージ送信処理動作について詳細に説明する。
【００５０】
まず、メッセージ処理部３１１は、送信メッセージバッファ３０９に当該メッセージを送信するためのバッファエリアを確保し（このときの当該バッファエリアのインデックスを「α」とする）、その確保したバッファ内のメッセージ本体を格納するエリアに、プロセスＡ宛てに送ろうとするメッセージ本体をコピーする（ステップＳ６０１）。続いて、確保した当該バッファ内のメッセージＩＤを格納するエリアに宛先プロセス名である「プロセスＡ」をセットし、送信元ＩＤを格納するエリアに自計算機ＩＤである「ａ」をセットする（ステップＳ６０２）。
【００５１】
これらメッセージ情報をセット完了したならば、メッセージ送信部３０２に対して送信メッセージバッファ３０９上のインデックス「α」を引数に送信要求を送る（ステップＳ６０３）。
【００５２】
メッセージ送信部３０２は、送信要求を受けると、通信履歴記憶部３０３内のメッセージ抜け検出用テーブル３０３ａの自計算機ＩＤ（すなわち「ａ」）に対応するところの通信カウントの値（ここでは、「０」）を読み出し、その値を送信メッセージバッファ３０９内のインデックス「α」に対応するバッファエリア内の送信メッセージの通信カウントを格納するエリアにセットする（ステップＳ６０４）。さらに、メッセージ送信部３０２は、通信履歴記憶部３０３内の送信記録用テーブル３０３ｂから、該読み出した通信カウント以前の過去に既に送信したメッセージＩＤを取りだし、それらを送信メッセージバッファ３０９内のインデックス「α」内の送信メッセージの過去のメッセージＩＤ情報を格納するエリア４０４にセットする（ステップＳ６０５）。ここでは、まだ初期化状態であるため、通信カウントの値は「０」であり、過去のメッセージＩＤ情報は何もないことを意味する「ＮＵＬＬ」となる。なお、過去のメッセージＩＤ情報が複数あるときは、例えば、予め定められた順番で（例えば、通信カウントの値が小さいものから順に、あるいは、通信カウントの値が大きいものから順に）送信メッセージの過去のメッセージＩＤ情報を格納するエリア４０４に書き込んでいけばよい。
【００５３】
送信メッセージバッファ３０９内のインデックス「α」内の通信モードを格納するエリアには、通常のメッセージ送信処理なので「通常モード」をセットする。このようにして、メッセージ構造内の全ての情報がセットされると、メッセージ送信部３０２は当該メッセージを通信路に対して送信する（ステップＳ６０６）。
【００５４】
その後、通信履歴記憶手部３０３内のメッセージ抜け検出用テーブル３０３ａには、自計算機ＩＤ（すなわち、「ａ」）に対応する通信カウントの値に「１」を加算し（ステップＳ６０７）、送信記録用テーブル３０３ｂの通信カウント記憶領域５０３に当該送信したメッセージに付加した通信カウントの値「０」、メッセージＩＤ記憶領域５０４に当該送信したメッセージのメッセージＩＤ、すなわち「プロセスＡ」、ＴｘＢｕｆ−Ｉｎｄｅｘ５０５に送信メッセージバッファ３０９内のインデックス、すなわち、「α」を登録する（ステップＳ６０８）。
【００５５】
次に、上述のように送信されたメッセージを計算機１ａ、１ｂ、１ｃにて正常に受信する場合について説明する。すなわち、図７に示すフローチャートを参照して、計算機１ａのプロセスＢからプロセスＡ宛てに送信されたメッセージの受信処理について説明する。
【００５６】
ネットワーク上に送信されたメッセージは、全ての計算機のメッセージ受信部３０１にて受信され、受信メッセージバッファ３０４に保存される（ステップＳ７００）。メッセージ受信部３０１は、受信メッセージ中のエリア４００にある通信モードをチェックする。ここでは、「通常モード」であるため再送要求でないと判断し、メッセージ抜け検出部３０５を起動する（ステップＳ７０１）。
【００５７】
メッセージ抜け検出部３０５は、受信メッセージ中のエリア４０１と４０３にある通信カウントと送信元ＩＤとを取りだし、それらと通信履歴記憶部３０３中のメッセージ抜け検出用テーブル３０３ａとを照合する。ここでは、受信メッセージ中の送信元ＩＤが「ａ」、通信カウントの値が「０」であり、メッセージ抜け検出用テーブル３０３ａ内の計算機ＩＤが「ａ」に対応する通信カウントの値が「０」である。よって、受信メッセージ中の通信カウントと自計算機上の通信履歴記憶部３０３内の通信カウントの値が一致するので、メッセージ抜けが生じていないと判断し、受信メッセージディスパッチ部３０８を起動する（ステップＳ７０２）。
【００５８】
受信メッセージディスパッチ部３０８は、受信メッセージ中のエリア４０２にあるメッセージＩＤを参照して、ここでは、宛先プロセスが「プロセスＡ」であることを知り、「プロセスＡ」が必要メッセージＩＤ記憶部３０７に存在するか確認する。存在する場合は、プロセスＡを起動し、存在しない場合は当該メッセージを受信メッセージバッファ３０４から削除する（ステップＳ７０７）。
【００５９】
ここでは、図９に示したように、計算機１ａと１ｃには「プロセスＡ」が登録されているためプロセスＡ（メッセージ処理部３１０に相当）を起動するが、計算機１ｂには「プロセスＡ」が登録されていないため、受信メッセージバッファ３０４から当該メッセージ中の送信元ＩＤを取り出した後、当該受信メッセージを削除する。
【００６０】
受信メッセージディスパッチ部３０８は、さらに、受信メッセージ中の送信元ＩＤが自計算機のＩＤと異なる場合、通信履歴記憶部３０３内のメッセージ抜け検出用テーブル３０３ａの当該送信元ＩＤに対応する通信カウントに「１」を加える（ステップＳ７０８）。すなわち、ここでは、送信元ＩＤが「ａ」であるので、計算機１ａでは自計算機ＩＤと一致するため通信カウントを更新しないがが、計算機１ｂと１ｃは当該送信元ＩＤと自計算機ＩＤが異なるため、通信履歴記憶部３０３内のメッセージ抜け検出用テーブル３０３ａの当該送信元ＩＤ「ａ」に対応する通信カウントに「１」を加算する。
【００６１】
このようにして、図１０に示すように、ステップＳ２の段階では、全計算機とも、メッセージ抜け検出用テーブル３０３ａ上では、計算機１ａに対応する通信カウントの値が「１」になり、その他の計算機に対応する通信カウントは「０」のままである。
【００６２】
続いて、受信メッセージディスパッチ部３０８は、受信メッセージバッファ３０４内に退避メッセージが存在するか調べる（ステップＳ７０９）が、この場合、（現在までメッセージは正常受信されているので）存在しないため処理を終了する。
【００６３】
次に、メッセージの受信側で抜けメッセージが検出されて、当該抜けメッセージが再送されるまでの処理について説明する。例えば、図１０のステップＳ１、ステップＳ２に示したように、計算機１ａからのメッセージが正常に全計算機で受信され、その後、ステップＳ３で、計算機１ａ上のプロセスＣからプロセスＥ宛てにメッセージが送信されたが、計算機１ｂのみ受信に失敗している場合を前提とする。
【００６４】
すなわち、図１０のステップＳ３に示すように、計算機１ａ上のプロセスＣからプロセスＥ宛てのメッセージを計算機１ｂが受信ミスした段階では、計算機１ａ上の通信履歴記憶部３０３には、ステップＳ２の説明と同様にして送信記録用テーブル３０３ｂには、通信カウントが「１」、メッセージＩＤが「プロセスＥ」、ＴｘＢｕｆ−Ｉｎｄｅｘが「β」なる列が追加され、メッセージ抜け検出用テーブル３０３ａの計算機１ａに対応する通信カウントは「２」になる。
【００６５】
計算機１ｃ上の通信履歴記憶部３０３には、図１０のステップＳ３に示すように、
ステップＳ２と同様にしてメッセージ抜け検出用テーブル３０３ａの計算機１ａに対応する通信カウントが「２」になる。当然のごとく計算機１ｂはメッセージを受信していないので、計算機１ｂの通信履歴記憶部３０３上のテーブル３０３ａは更新されない。
【００６６】
このような状況において、図１１のステップＳ４にて、計算機１ａ上のプロセスＣからプロセスＤ宛てにメッセージが放送されたとき、計算機１ｂにてプロセスＥ宛てのメッセージ受信ミスを検出し、プロセスＥ宛てメッセージの再送処理が実行され、一方、計算機１ｃは、このプロセスＤ宛てのメッセージを受信ミスしたとする。
【００６７】
図１１のステップＳ４に示すように、計算機１ａ上の通信履歴記憶部３０３は、図１０のステップＳ２と同様にして、プロセスＣからプロセスＤ宛てのメッセージ送信する。この際、図６のステップＳ６０５において、送信メッセージバッファ３０９内のインデックス「γ」内の送信メッセージの過去のメッセージＩＤ情報を格納するエリアには、通信履歴記憶部３０３内の送信記録用テーブル３０３ｂに記録されているメッセージＩＤ一覧、即ち｛プロセスＡ、プロセスＥ｝がセットされる。
【００６８】
計算機１ａから、通信カウントが「２」で、メッセージＩＤが「プロセスＤ」のメッセージを送信完了した段階では、図１１のステップＳ４に示すように、計算機１ａの送信記録用テーブル３０３ｂには、通信カウントが「２」、メッセージＩＤが「プロセスＤ」、ＴｘＢｕｆ−Ｉｎｄｅｘが「γ」なる列が追加され、メッセージ抜け検出用テーブル３０３ａの計算機１ａに対応する通信カウントの値は「３」になる。当然のごとく計算機１ｃはメッセージを受信していないので、計算機１ｃの通信履歴記憶部３０３上のテーブル３０３ａは更新されない。
【００６９】
さて、このときの計算機１ｂのメッセージ受信処理動作について、再び図７に示すフローチャートを参照して説明する。
【００７０】
計算機１ｂのメッセージ受信部３０１は、通信モードが「通常モード」、通信カウントが「２」、メッセージＩＤが「プロセスＤ」、送信元ＩＤが「ａ」、過去のメッセージＩＤ情報が｛プロセスＡ、プロセスＥ｝なるメッセージを受信し、受信メッセージバッファ３０４に保存する（ステップＳ７００）。メッセージ受信部３０１は、受信メッセージ中の通信モードをチェックする。ここでは、「通常モード」であるため再送要求でないと判断し、メッセージ抜け検出部３０５を起動する（ステップＳ７０１）。
【００７１】
メッセージ抜け検出部３０５は、受信メッセージ中の通信カウントと送信元ＩＤとを取りだし、それらと通信履歴記憶部３０３中のメッセージ抜け検出用テーブル３０３ａとを照合する。ここでは、受信メッセージ中の送信元ＩＤが「ａ」、通信カウントの値が「２」であり、メッセージ抜け検出用テーブル３０３ａ内の計算機ＩＤが「ａ」に対応する通信カウントの値が「１」である。よって、受信メッセージ中の通信カウントが自計算機上の通信履歴記憶部３０３内の通信カウントより大きいので、メッセージ抜けが生じていると判断し、再送必要性判断部３０６を起動する（ステップＳ７０２）。
【００７２】
再送必要性判定部３０６は、通信カウントの差が「１」であることから１つ前のメッセージを受信ミスしていると判断し、受信メッセージ中の過去のメッセージＩＤ情報より１つ前のメッセージのメッセージＩＤを求める。即ち、計算機１ａからの現在受信したメッセージよりも１つ前のメッセージを受信ミスしており、過去のメッセージＩＤ情報が｛プロセスＡ、プロセスＥ｝であるので、その受信ミスしたメッセージのメッセージＩＤが「プロセスＥ」であることを求める（ステップＳ７１２）。そして、必要メッセージＩＤ記憶部３０７を参照すると、図９に示すように計算機１ｂには「プロセスＥ」が存在するため、当該受信ミスしているメッセージは再送処理する必要があると判断する（ステップＳ７１３）。
【００７３】
よって、再送必要性判定部３０６は、通信カウントが「２」、メッセージＩＤが「プロセスＤ」なる今回の受信メッセージを、受信メッセージバッファ３０４内の退避エリアに退避しておく（ステップＳ７１５）。
【００７４】
さらに、再送必要性判定部３０６は、送信メッセージバッファ３０９内に送信用のバッファを確保し、当該バッファに対して、通信モードが「再送要求モード」、通信カウントが「１」、メッセージＩＤが「プロセスＥ」、送信元ＩＤが「ｂ」なるメッセージをセットし、メッセージ送信部３０２に対して送信要求を行なう。メッセージ送信部３０２は、再送要求メッセージの送信を要求されるとそのメッセージをそのままネットワークに対して送信する（図８のステップＳ７３０〜ステップＳ７３１）。
【００７５】
なお、ここでは、抜けメッセージが１つのみの場合を示したが、複数の抜けメッセージが検出される場合（すなわち、通信カウントの差が「２」以上の場合）もある。例えば、受信メッセージ中の送信元ＩＤが「ａ」、通信カウントの値が「４」であり、メッセージ抜け検出用テーブル３０３ａ内の計算機ＩＤが「ａ」に対応する通信カウントの値が「１」であるとき、通信カウントの差が「３」であることから３つのメッセージを受信ミスしていると判断できる。このとき、受信メッセージ中の過去のメッセージＩＤ情報が｛プロセスＡ、プロセスＥ、プロセスＡ、プロセスＥ｝であれば、現在から３つ前に受信ミスした通信カウントが「２」でメッセージＩＤが「プロセスＥ」のメッセージから順に、図８のステップＳ７３０〜ステップＳ７３３の処理を実行して、全ての抜けメッセージのそれぞれについて再送要求（ステップＳ７３１）、あるいは、再送不要の場合には通信カウントの更新（ステップＳ７３２）を行う。すなわち、通信カウントが「２」でメッセージＩＤが「プロセスＥ」のメッセージ、通信カウントが「４」でメッセージＩＤが「プロセスＥ」のメッセージについては、計算機１ｂには「プロセスＥ」が存在するため、ステップＳ７３１に進み、再送要求を送信する。一方、通信カウントが「３」でメッセージＩＤが「Ａ」のメッセージについては、計算機１ｂには「プロセスＡ」が存在しないため、ステップＳ７３２に進み、通信カウントの更新（「１」を加算）を行う。
【００７６】
また、複数の抜けメッセージが検出された場合、その抜けメッセージの全てが再送不要のとき、すなわち、当該受信メッセージ中の過去のメッセージＩＤ情報に、自装置の必要メッセージＩＤ記憶部３０７に登録されているプロセス宛のものが存在しないとき（ステップＳ７１２〜ステップＳ７１３）は、まず、ステップＳ７１４へ進み、検出された抜けメッセージの数（Ｎ）を通信カウントに加算し、その後、図８のステップＳ７１８へ進む。
【００７７】
次に、図１１のステップＳ５における再送要求メッセージを受信した計算機１ａ〜１ｃの処理動作について、再び図７に示すフローチャートを参照して説明する。
【００７８】
再送要求メッセージは、全ての計算機１ａ〜１ｃのメッセージ受信部３０１にて受信され（ステップＳ７００）、当該メッセージ中の通信モードから再送要求メッセージであることが判定され、受信メッセージディスパッチ部３０８が起動される（ステップＳ７０１）。
【００７９】
受信メッセージディスパッチ部３０８は、通信履歴記憶部３０３内の送信記録用テーブル３０３ｂを参照して、再送要求されたメッセージ（通信カウントが「１」、メッセージＩＤが「プロセスＥ」）が存在するか調べる（ステップＳ７０４）。
【００８０】
計算機１ａの通信履歴記憶部３０３内の送信記録用テーブル３０３ｂには、図１１に示すように該当するメッセージが存在するため、当該メッセージの送信メッセージバッファ３０９上のインデックスをＴｘＢｕｆ−Ｉｎｄｅｘより「β」と求め、それを送信するようにβを引数にメッセージ送信部３０２に対して送信要求する。メッセージ送信部３０２は、再送指令を受けると、指定されたメッセージをそのまま（すなわち、送信メッセージバッファ３０９に存在するメッセージをそのまま、通信モードが「通常モード」、通信カウントが「１」、メッセージＩＤが「プロセスＥ」、送信元ＩＤが「ａ」、過去のメッセージＩＤ情報が｛プロセスＡ｝なるメッセージ）ネットワークに対して送信する（ステップＳ７０５）。さらに、受信メッセージディスパッチ部３０８は、当該再送要求メッセージを受信メッセージバッファ３０４から削除する（ステップＳ７０６）。
【００８１】
一方、計算機１ｂと計算機１ｃの通信履歴記憶部３０３内の送信記録用テーブル３０３ｂには、該当するメッセージが存在しないため、再送処理を行なうことなく、当該再送要求メッセージを受信メッセージバッファ３０４から削除する（ステップＳ７０６）。
【００８２】
再送されたメッセージは、全ての計算機１ａ〜１ｃのメッセージ受信部３０１にて受信され（ステップＳ７００）、再送要求メッセージであるか否かが判定され（ステップＳ７０１）、通常モードの通信のためメッセージ抜けが生じているか調べられる（ステップＳ７０２）。すなわち、受信メッセージ中の送信元ＩＤが「ａ」であるため、通信履歴記憶部３０３のメッセージ抜け検出用テーブル３０３ａの計算機ＩＤが「ａ」に該当するところの通信カウントと受信メッセージ中の通信カウントを比較する。
【００８３】
計算機１ａでは、通信履歴記憶部３０３中の対応する通信カウントが既に「３」で、受信メッセージ中の通信カウント「１」より大きいため、当該受信メッセージは既に受信済みと判断して、受信メッセージを破棄する（ステップＳ７０３）。同様に計算機１ｃでは、通信履歴記憶部３０３中の対応する通信カウントが既に「２」で、受信メッセージ中の通信カウント「１」より大きいため、当該受信メッセージは既に受信済みと判断して、受信メッセージを破棄する（ステップＳ７０３）。
【００８４】
一方、計算機１ｂは、通信履歴記憶部３０３中の対応する通信カウントが「１」で、受信メッセージ中の通信カウント「１」と一致するため、抜けなしと判断し、受信メッセージディスパッチ部３０８を起動する。
【００８５】
受信メッセージディスパッチ部３０８は、当該受信メッセージのメッセージＩＤを参照し、宛先プロセスが「プロセスＥ」であることを知り、プロセスＥが必要メッセージＩＤ記憶部３０７に存在するか確認する。この場合、図９に示すように、計算機１ｂには、プロセスＥが存在しているので、プロセスＥ（メッセージ処理部３１０に相当）を起動する（ステップＳ７０７）。
【００８６】
さらに、受信メッセージディスパッチ部３０８は、通信履歴記憶部３０３のメッセージ抜け検出用テーブル３０３ａの送信元ＩＤが「ａ」に対応する通信カウントの値に「１」を加算し（ステップＳ７０８）、受信メッセージバッファ３０４内に所望の退避メッセージが存在するか調べる（ステップＳ７０９）。すなわち、自計算機上の通信履歴記憶部３０３内のメッセージ抜け検出用テーブル３０３ａの通信カウントと一致するメッセージが退避されているか調べる。
【００８７】
受信メッセージバッファ３０４中には、退避メッセージとして、送信元ＩＤが「ａ」、通信カウントが「２」のメッセージが存在し、自計算機上のメッセージ抜け検出用テーブル３０３ａの通信カウントと一致するので、この退避メッセージを取りだす。退避メッセージのメッセージＩＤを参照し、宛先プロセスが「プロセスＤ」であることを知り、プロセスＤが必要メッセージＩＤ記憶部３０７に存在するか確認する。図９に示すように、計算機１ｂにはプロセスＤが存在しているので、プロセスＤ（メッセージ処理部３１０に相当）を起動する（ステップＳ７１０）。さらに、受信メッセージディスパッチ部３０８は、通信履歴記憶部３０３内のメッセージ抜け検出用テーブル３０３ａの送信元ＩＤが「ａ」に対応する通信カウントの値に「１」を加算する（ステップＳ７１１）。
【００８８】
所望の退避メッセージが存在しなくなるまでこの処理を繰り返すが、ここでは、次の退避メッセージが存在しないため（ステップＳ７０９）、処理を終了する。
【００８９】
これによって、計算機１ｂは、図１１のステップＳ５に示すように、計算機１ａからのプロセスＥ宛てメッセージに続き、プロセスＤ宛てメッセージを、送信元計算機１ａと同一順序で受信できたことが確認できる。さらに、計算機１ａと計算機１ｂの通信履歴記憶部３０３のメッセージ抜け検出用テーブル３０３ａの送信元ＩＤが「ａ」に対応する通信カウントの値が「３」となり、一致したことが確認できる。
【００９０】
次に、図１１のステップＳ６の、抜けメッセージを検出したときに当該抜けメッセージの再送要求を行わない場合の計算機１の処理動作について、再び図７に示すフローチャートを参照して説明する。
【００９１】
ここでは、図１１のステップＳ４で計算機１ａ上のプロセスＣからプロセスＤ宛てに送信されたメッセージ（通信カウントが「２」）が、計算機１ｃでのみ受信失敗している場合を前提とする。このような状況において、図１１のステップＳ６において、計算機１ａ上のプロセスＣからプロセスＢ宛てにメッセージが放送されたとき、計算機１ｃにてプロセスＤ宛てのメッセージ受信ミスが検出されるが、計算機１ｃにはプロセスＤが存在しないため再送不要と判断することとなる。
【００９２】
図１１のステップＳ６では、まず、計算機１ａ上の通信履歴記憶部３０３は、図１０のステップＳ２と同様にして、プロセスＣからプロセスＢ宛てのメッセージを送信する。このとき、図６のステップ６０５では、送信メッセージ中の過去のメッセージＩＤ情報として、通信履歴記憶部３０３の送信記録用テーブル３０３ｂに記録されているメッセージＩＤ一覧、すなわち｛プロセスＡ、プロセスＥ、プロセスＤ｝をセットして送信する。
【００９３】
計算機１ａから通信カウント「３」（メッセージＩＤが「プロセスＢ」）のメッセージを送信完了した段階で、図１１に示すように、送信記録用テーブル３０３ｂには、通信カウントが「３」、メッセージＩＤが「プロセスＢ」、ＴｘＢｕｆ−Ｉｎｄｅｘが「ε」なる列が追加され、メッセージ抜け検出用テーブル３０３ａの計算機１ａに対応する通信カウントの値が「４」に更新される。
【００９４】
計算機１ａと計算機１ｂでは、図１０のステップＳ２と同様に、通信モードが「通常モード」で、通信カウントが一致し、しかもメッセージＩＤ（宛先プロセスが「Ｂ」）が存在するため、それぞれの計算機上のプロセスＢが起動され、通信履歴記憶部３０３のメッセージ抜け検出用テーブル３０３ａの計算機１ａに対応する通信カウントの値は「４」に更新される。
【００９５】
一方、計算機１ｃ上のメッセージ受信部３０１は、通信モードが「通常モード」、通信カウントが「３」、メッセージＩＤが「プロセスＢ」、送信元ＩＤが「ａ」、過去のメッセージＩＤ情報が｛プロセスＡ、プロセスＥ、プロセスＤ｝なるメッセージを受信し、受信メッセージバッファ３０４に保存する（ステップＳ７００）。メッセージ受信部３０１は、受信メッセージ中の通信モードを参照して、「通常モード」であるため再送要求でないと判断し、メッセージ抜け検出部３０５を起動する（ステップＳ７０１）。
【００９６】
メッセージ抜け検出部３０５は、受信メッセージ中の通信カウントと送信元ＩＤとを取りだし、それらと通信履歴記憶部３０３のメッセージ抜け検出用テーブル３０３ａとを参照する。ここでは、受信メッセージ中の送信元ＩＤが「ａ」、通信カウントの値が「３」で、メッセージ抜け検出用テーブル３０３ａ中の計算機ＩＤが「ａ」に対応する通信カウントを参照すると「２」である。よって、受信メッセージ中の通信カウントの値が自計算機上の通信履歴記憶部３０３内の通信カウントの値より大きいので、メッセージ抜けが生じていると判断し、再送必要性判定部３０６を起動する（ステップＳ７０２）。
【００９７】
再送必要性判定部３０６は、通信カウントの差が「１」であることから１つ前のメッセージを受信ミスしていると判断し、受信メッセージ中の過去のメッセージＩＤ情報から、現在受信したメッセージの１つ前のメッセージのメッセージＩＤを求める。すなわち、計算機１ａからの１つ前のメッセージを受信ミスしており、現在受信したメッセージ中の過去のメッセージＩＤ情報が｛プロセスＡ、プロセスＥ、プロセスＤ｝であるので、その受信ミスしたメッセージのメッセージＩＤが「プロセスＤ」であることを求める（ステップＳ７１２）。そして、必要メッセージＩＤ記憶部３０７を参照すると、図９に示すように計算機１ｃには「プロセスＤ」が存在しないため、再送不要と判断する（ステップＳ７１３）。よって、再送必要性判定部３０６は、通信カウントが「２」、メッセージＩＤが「プロセスＤ」のメッセージを受信したものと見なして、通信履歴記憶部３０３のメッセージ抜け検出用テーブル３０３ａの計算機１ａに相当するところの通信カウントの値に検出された抜けメッセージの個数Ｎ、すなわち、ここでは、「１」を加算し、その結果「３」と更新される（ステップＳ７１４）。その後、図８のステップＳ７１８に進み、受信メッセージディスパッチ部３０８を起動する。
【００９８】
なお、図８のステップＳ７１８〜ステップＳ７２２は、図７のステップＳ７０７〜ステップＳ７１１と同様である。
【００９９】
受信メッセージディスパッチ部３０８は、受信メッセージのメッセージＩＤを参照し、宛先プロセスが「プロセスＢ」であることを知り、プロセスＢが必要メッセージＩＤ記憶部３０７に存在するか確認する。図９に示すように、計算機１ｃには、プロセスＢが存在しているので、プロセスＢ（メッセージ処理部３１０に相当）を起動する（ステップＳ７１８）。
【０１００】
さらに、受信メッセージディスパッチ部３０８は、通信履歴記憶部３０３のメッセージ抜け検出用テーブル３０３ａの送信元ＩＤが「ａ」に対応する通信カウントの値に「１」を加算し、その結果、「４」と更新される（ステップＳ７１９）。そして、受信メッセージバッファ３０４内に所望の退避メッセージが存在するか調べる（ステップＳ７２０）。すなわち、自計算機上の通信履歴記憶部３０３のメッセージ抜け検出用テーブル３０３ａの通信カウントと一致するメッセージが退避されているか調べるが、ここでは存在しないので処理を終了する。
【０１０１】
なお、退避メッセージが存在する場合には、前述のステップＳ７１０〜ステップＳ７１１と同様に処理を行い、その後、ステップＳ７１７へ進む。
【０１０２】
これにより、計算機１ｃがメッセージ受信ミスを犯したが、そのメッセージを再送する必要がないと判断でき、無駄な再送処理をすることなく、全計算機間の通信カウントを合わせることができた。
【０１０３】
上記実施形態において、図３に示すように計算機１内を通信処理部３２０と本体処理部３３０とに分け、本体処理部３３０内にメッセージ処理部３１１であるプロセス群が存在し、それを起動するとして説明した。このため、メッセージ中に付加するメッセージＩＤは、プロセス名として説明した。しかし、本体処理部３３０内の全プロセスが既に起動済みで、必要なメッセージをメッセージＩＤ（例えばデータ名）で待っている場合は、必要メッセージＩＤ記憶部３０７に各プロセスが必要とするデータ名のようなメッセージ識別情報を登録しておくことにより対応する事ができる。この場合は、メッセージ中のメッセージＩＤにもデータ名のようなメッセージの識別情報を付加することとなる。
【０１０４】
また、図３の計算機１を１つのプロセスとして見なすことも可能である。即ち、各プロセス内で通信処理部３２０に相当するスレッド群、本体処理部３３０に相当するか、あるいは、メッセージ処理部３１０、３１１に相当するスレッド群を動作させることによって実現可能である。この場合、ネットワークに流れるメッセージは全てのプロセスに対して配送され、各プロセスにて受信メッセージの必要性を判定することになる。また、必要メッセージＩＤ記憶部３０７には、当該プロセス内のスレッド群が必要とするメッセージの識別情報（例えばデータ名）を登録しておくことになり、メッセージ中のメッセージＩＤにもデータ名のようなメッセージの識別情報を付加することとなる。
【０１０５】
また、上記実施形態では、メッセージ送信時に、自計算機から送信した全メッセージのＩＤ一覧を過去のメッセージＩＤ情報として送信メッセージに付加する例を示したが、その一部、ないしは予め付加するメッセージＩＤの個数を決めておき最新のものから順に決められた個数だけのメッセージＩＤを付加するようにすることもできる。
【０１０６】
メッセージＩＤが宛先プロセス名のような長い場合は、ハッシュ関数等を用いて短い長さのＩＤ（短縮型ＩＤ）に変換した後、メッセージに付加して送信することも可能である。例えば、元のメッセージＩＤが整数値の場合、適当な大きさの整数（素数が望ましい）で割った余りを短縮型ＩＤとする。メッセージＩＤがバイト列（文字列）の場合、各バイトごとに重みをかけて加え、この値を適当な大きさの整数（素数が望ましい）で割った値を短縮型ＩＤとするなどがある。これにより、メッセージに付加する情報量を減らし、通信路及び計算機の負荷を更に軽減する事が可能となる。
【０１０７】
また、過去のメッセージＩＤ情報のエリア４０４に書き込むメッセージＩＤの数が多い、あるいは、１つのメッセージＩＤのビット長が長くしかも数多くのメッセージＩＤを書き込む必要がある等の理由で、メッセージ中の過去のメッセージＩＤ情報のエリア４０４に書き込むデータ長が所定値以上となった場合には、これら複数のメッセージＩＤを一括してハッシュ関数等を用いて圧縮するようにしてもよい。
【０１０８】
さらに、上記実施形態では、受信ミスしたメッセージと同一の送信元計算機から正しくメッセージを受信できたとき、メッセージの抜けを検出できる例を示した。しかし、受信ミスしたメッセージと同一の送信元計算機からでなくても、他の計算機からのメッセージ受信によっても、メッセージ欠落を検出することができる。その場合は、メッセージ中の通信カウントの格納エリア４０１に、通信履歴記憶部３０３のメッセージ抜け検出用テーブル３０３ａの内容を書込み、過去のメッセージＩＤ情報のエリア４０４には、過去に送信したメッセージのメッセージＩＤのみでなく、｛送信元計算機ＩＤ、送信元計算機ＩＤに対応する通信カウント、メッセージＩＤ｝に拡張してメッセージに添付することによって解決することができる。
【０１０９】
以上説明したように、上記実施形態によれば、複数の計算機をネットワークによって接続した分散システム上に配置されたプロセス間で、放送通信を用いて情報交換する際、メッセージの順序性を保証しながら、自計算機や自プロセスに必要なメッセージだけの再送処理だけを行ない、不要なメッセージの再送処理を排除することによって、計算機と通信路上の再送処理にかかる負荷を軽減し処理効率を向上させることが可能となる。
【０１１０】
【発明の効果】
以上説明したように、本発明によれば、放送通信において、必要なメッセージの順序関係を保証しながら、受信できなかったメッセージの再送処理にかかる負荷を軽減できる。
【図面の簡単な説明】
【図１】本発明の実施形態に係る通信装置（例えば、計算機）を用いて構成された分散システムの全体構成を概略的に示した図。
【図２】本発明の実施形態に係る通信装置（例えば、計算機）を用いて構成された他の分散システムの全体構成を概略的に示した図。
【図３】通信装置（例えば、計算機）の要部の構成例を示した図。
【図４】メッセージ構造の一例を示した図。
【図５】通信履歴記憶部に保持されるメッセージ抜け検出用テーブルと送信記録用テーブルの一例を示した図。
【図６】メッセージ送信処理動作を説明するためのフローチャート。
【図７】メッセージ受信処理動作を説明するためのフローチャート。
【図８】メッセージ受信処理動作を説明するためのフローチャート。
【図９】各計算機におけるプロセスの配置と、必要メッセージＩＤ記憶部の記憶内容との対応関係を概念的に示した図。
【図１０】計算機１ａ〜１ｃの間でメッセージの送受信を行う際のメッセージ抜け検出用テーブルと送信記録用テーブルの更新処理と、メッセージ抜け検出処理と、抜けメッセージの再送要求処理とについて説明するための図。
【図１１】計算機１ａ〜１ｃの間でメッセージの送受信を行う際のメッセージ抜け検出用テーブルと送信記録用テーブルの更新処理と、メッセージ抜け検出処理と、抜けメッセージの再送要求処理とについて説明するための図。
【符号の説明】
１ａ、１ｂ、１ｃ…計算機（通信装置）
３０１…メッセージ受信部
３０２…メッセージ送信部
３０３…通信履歴記憶部
３０３ａ…メッセージ抜け検出用テーブル
３０３ｂ…送信記録用テーブル
３０４…受信メッセージバッファ
３０５…メッセージ抜け検出部
３０６…再送必要性判定部
３０７…必要メッセージＩＤ記憶部
３０８…受信メッセージディスパッチ部
３０９…送信メッセージバッファ
３１０、３１１…メッセージ処理部
３２０…通信処理部
３３０…本体処理部
【図１】
0003679935.tif 000002
【図２】
0003679935.tif 000003
【図３】
0003679935.tif 000004
【図４】
0003679935.tif 000005
【図５】
0003679935.tif 000006
【図６】
0003679935.tif 000007
【図７】
0003679935.tif 000008
【図８】
0003679935.tif 000009
【図９】
0003679935.tif 000010
【図１０】
0003679935.tif 000011
【図１１】
0003679935.tif 000012