(57)【特許請求の範囲】
【請求項１】
複数の発信源（ＳＲ１、ＳＲ２）から送られてくる複数のメッセージ、及びこれらメッセージのデータを処理することができる複数の適用プロセス（ＭＲ、ＳＬ１、ＳＬ２）宛の複数のメッセージの順序を決定するための方法であって、各発信源が一連のメッセージを確実かつ順序通りに送信し、宛先の各適用プロセスが一連のメッセージを全適用プロセスに向けて確実かつ順序通りに再送信することができ、
宛先の全適用プロセスがこれらメッセージを同じ順序で受け取るようにするため、
適用プロセスの中から、唯一であって全ての発信源に共通なリレープロセスと呼ばれるプロセス（ＭＲ）（他の適用プロセス（ＳＬ１、ＳＬ２）はスレーブプロセスと呼ばれる）を選択すること、
発信源によって送信された全メッセージを、このリレープロセスから、このリレープロセスも含めて全適用プロセスに向けて再送信すること、
リレープロセスが再送信する全メッセージ（ｍ１’−ｍ２’）のデータをリレープロセス（ＭＲ）内で処理すること、及び
発信源から直接受信したメッセージ（ｍ１、ｍ２）のデータは処理せず、リレープロセス（ＭＲ）を経由して受信したメッセージ（ｍ１’−ｍ２’）のデータのみをスレーブプロセス（ＳＬ１、ＳＬ２）内で処理すること
から成ることを特徴とする方法。
【請求項２】
現在のリレープロセス（ＭＲ）の不良を修復するために、メッセージを受信する各スレーブプロセス（ＳＬ１、ＳＬ２）において、
このスレーブプロセスがリレープロセスを経由してまだメッセージを受信していない場合、このメッセージを記憶する（１２）こと、及び
次に、このスレーブプロセスがリレープロセス（ＭＲ）を経由してこのメッセージを受信した場合、このメッセージを消去する（２２）こと
から成り、
さらに、現在のリレープロセス（ＭＲ）に異常が発生し、当該スレーブプロセスが全発信源に共通な新規リレープロセスになった場合、記憶されていてまだ消去されていないメッセージを全て再送信し、次いで消去することから成ることを特徴とする請求項１に記載の方法。
【請求項３】
発信源が送信したメッセージ（ｍ３）をスレーブプロセスが発信源から直接受信する前に、リレープロセス（ＭＲ）を経由してすでに受信したかどうかを、各スレーブプロセス（ＳＬ１）内で判定するために、
スレーブプロセス（ＳＬ１）が、リレープロセスを経由してこの発信源（ＳＲ１）からのメッセージを受信する毎に、このスレーブプロセス（ＳＬ１）及びこの発信源に固有のカウンタ（Ｃ１１）を減分する（２０）こと、
スレーブプロセス（ＳＬ１）がこの発信源からメッセージを直接受信する毎に、このカウンタ（Ｃ１１）を増分する（１０）こと、及び
カウンタの代数値が厳密に正である場合にのみ、発信源から送られたメッセージ（ｍ３）をこのスレーブプロセスがリレープロセスを経由してまだ受信していないと結論すること
から成ることを特徴とする請求項１に記載の方法。
【請求項４】
複数の発信源（ＳＲ１、ＳＲ２）から送られてくる複数のメッセージ、及び複数の適用プロセス（ＭＲ、ＳＬ１、ＳＬ２）宛の複数のメッセージの順序を決定するための方法であって、各発信源が一連のメッセージを確実かつ順序通りに送信し、宛先の各適用プロセスが一連のメッセージを全適用プロセスに向けて確実かつ順序通りに再送信するため同一のプロトコルを使用することができ、
宛先の全適用プロセスがこれらメッセージを同じ順序で受け取るようにするため、
各発信源（ＳＲ１、ＳＲ２）について、この発信源用のリレープロセスと呼ばれる適用プロセス（ＭＲ１、ＭＲ２）を選択することにより、適用プロセスの中から、リレープロセスと呼ばれるプロセス（他の適用プロセス（ＳＬ１、ＳＬ２）はこの発信源用のスレーブプロセスと呼ばれ同一の適用プロセスが複数の発信源のリレープロセスとして選択できるが、各発信源は唯一のリレープロセスしか有さない）を選択すること、
発信源（ＳＲ１またはＳＲ２）によって送信されたメッセージを、発信源用のリレーすなわち確実かつ順序に従った同一の送信プロトコルを使用する選択適用プロセス（ＭＲ１またはＭＲ２）を使用して全適用プロセスに向けて確実かつ順序に従って再送信すること、
発信源について、リレープロセス（ＭＲ１またはＭＲ２）がこの発信源（ＳＲ１またはＳＲ２）から直接受信する全メッセージのデータをリレープロセス内で処理すること、及び
発信源から直接受信したメッセージ（ｍ７、ｍ８）のデータは処理せず、リレープロセス（ＭＲ３−ＭＲ４）を経由して受信したメッセージ（ｍ７’−ｍ７’）のデータのみをスレーブプロセス（ＳＬ５、ＳＬ６）内で処理すること
から成ることを特徴とする方法。
【請求項５】
ある発信源（ＳＲ１またはＳＲ２）について現在のリレープロセス（ＭＲ１またはＭＲ２）の不良を修復するために、対象となる発信源からのメッセージを受信する各スレーブプロセス（ＳＬ５、ＳＬ６）において、
このスレーブプロセスがこの発信源のリレープロセス（ＭＲ３）を経由してまだメッセージを受信していない場合、このメッセージを記憶する（１２）こと、及び
次に、このスレーブプロセスがこの発信源のリレープロセス（ＭＲ３）を経由してこのメッセージを受信した場合、このメッセージを消去する（２２）こと
から成り、
さらに、現在のリレープロセスに不良が発生し、当該スレーブプロセスが全発信源に共通な新規リレープロセスになった場合、記憶されていてまだ消去されていないメッセージを全て再送信し、次いで消去することから成ることを特徴とする請求項４に記載の方法。
【請求項６】
発信源が送信したメッセージをスレーブプロセスが発信源から直接受信する前に、リレープロセスを経由してすでに受信したかどうかを、発信源の各スレーブプロセス内で判定するために、
スレーブプロセスが、発信源についてのリレープロセスを経由してこの発信源からのメッセージを受信する毎に、このスレーブプロセス及びこの発信源に固有のカウンタを減分する（２０）こと、
スレーブプロセスがこの発信源からメッセージを直接受信する毎に、このカウンタを増分する（１０）こと、及び
カウンタの代数値が厳密に正である場合にのみ、このスレーブプロセスがリレープロセスを経由してまだメッセージを受信していないと結論すること
から成ることを特徴とする請求項４に記載の方法。
【請求項７】
複数の発信源（ＳＲ１、ＳＲ２）から送られてくる複数のメッセージ、及びこれらメッセージのデータを処理することができる複数の適用プロセス（ＭＲ、ＳＬ１、ＳＬ２）宛の複数のメッセージの順序を決定するためのシステムであって、各発信源が一連のメッセージを確実かつ順序通りに送信し、宛先の各適用プロセスが一連のメッセージを全適用プロセスに向けて確実かつ順序通りに再送信することができ、
宛先の全適用プロセスがこれらメッセージを同じ順序で受け取るようにするため、
適用プロセスの中から、唯一であって全ての発信源に共通なリレープロセスと呼ばれるプロセス（ＭＲ）（他の適用プロセス（ＳＬ１、ＳＬ２）はスレーブプロセスと呼ばれる）を選択する手段と、
発信源によって送信された全メッセージを、このリレープロセスから、このリレープロセスも含め全適用プロセスに向けて再送信する手段と、
リレープロセスが再送信する全メッセージ（ｍ１’−ｍ２’）のデータをリレープロセス（ＭＲ）内で処理する手段と、
発信源から直接受信したメッセージ（ｍ１、ｍ２）のデータは処理せず、リレープロセス（ＭＲ）を経由して受信したメッセージ（ｍ１’−ｍ２’）のデータのみをスレーブプロセス（ＳＬ１、ＳＬ２）内で処理する手段と
を含むことを特徴とするシステム。
【請求項８】
現在のリレープロセス（ＭＲ）の不良を修復するために、メッセージを受信する各スレーブプロセス（ＳＬ１、ＳＬ２）において、
このスレーブプロセスがリレープロセスを経由してまだメッセージを受信していない場合、このメッセージを記憶する（１２）手段と、
次に、このスレーブプロセスがリレープロセス（ＭＲ）を経由してこのメッセージを受信した場合、このメッセージを消去する（２２）手段と
さらに、現在のリレープロセス（ＭＲ）に異常が発生し、当該スレーブプロセスが全発信源に共通な新規リレープロセスになった場合、記憶されていてまだ消去されていないメッセージを全て再送信し、次いで消去する手段（３４、３５）とを含むことを特徴とする請求項７に記載のシステム。
【請求項９】
発信源が送信したメッセージ（ｍ３）をスレーブプロセスが発信源から直接受信する前に、リレープロセス（ＭＲ）を経由してすでに受信したかどうかを、各スレーブプロセス（ＳＬ１）内で判定するために、
スレーブプロセス（ＳＬ１）が、リレープロセスを経由してこの発信源（ＳＲ１）からのメッセージを受信する毎に、このスレーブプロセス（ＳＬ１）及びこの発信源に固有のカウンタ（Ｃ１１）を減分する（２０）手段と、
スレーブプロセス（ＳＬ１）がこの発信源からメッセージを直接受信する毎に、このカウンタ（Ｃ１１）を増分する（１０）手段と、
カウンタの代数値が厳密に正である場合にのみ、発信源から送られたメッセージ（ｍ３）をこのスレーブプロセスがリレープロセスを経由してまだ受信していないと結論する手段と
を含むことを特徴とする請求項７に記載のシステム。
【請求項１０】
複数の発信源（ＳＲ１、ＳＲ２）から送られてくる複数のメッセージ、及び複数の適用プロセス（ＭＲ、ＳＬ１、ＳＬ２）宛の複数のメッセージの順序を決定するためのシステムであって、各発信源が一連のメッセージを確実かつ順序通りに送信し、宛先の各適用プロセスが一連のメッセージを全適用プロセスに向けて確実かつ順序通りに再送信するため同一のプロトコルを使用することができ、
宛先の全適用プロセスがこれらメッセージを同じ順序で受け取るようにするため、
各発信源（ＳＲ１、ＳＲ２）について、この発信源用のリレープロセスと呼ばれる適用プロセス（ＭＲ１、ＭＲ２）を選択することにより、適用プロセスの中から、リレープロセスと呼ばれるプロセス（他の適用プロセス（ＳＬ１、ＳＬ２）はこの発信源用のスレーブプロセスと呼ばれ、同一の適用プロセスが複数の発信源のリレープロセスとして選択できるが、各発信源は唯一のリレープロセスしか有さない）を選択する手段と、
発信源（ＳＲ１またはＳＲ２）によって送信されたメッセージを、発信源用のリレーすなわち確実かつ順序に従った同一の送信プロトコルを使用する選択適用プロセス（ＭＲ１またはＭＲ２）を使用して全適用プロセスに向けて再送信する手段と、
各発信源について、リレープロセス（ＭＲ１またはＭＲ２）がこの発信源（ＳＲ１またはＳＲ２）から直接受信する全メッセージのデータをリレープロセス内で処理する手段と、
発信源から直接受信したメッセージ（ｍ７、ｍ８）のデータは処理せず、リレープロセス（ＭＲ３−ＭＲ４）を経由して受信したメッセージ（ｍ７’−ｍ８’）のデータのみをスレーブプロセス（ＳＬ５、ＳＬ６）内で処理する手段と
を含むことを特徴とするシステム。
【請求項１１】
ある発信源（ＳＲ１またはＳＲ２）について現在のリレープロセス（ＭＲ１またはＭＲ２）の不良を修復するために、発信源からのメッセージを受信する各スレーブプロセス（ＳＬ５、ＳＬ６）において、
このスレーブプロセスがこの発信源のリレープロセス（ＭＲ３）を経由してまだメッセージを受信していない場合、このメッセージを記憶する（１２）手段と、
次に、このスレーブプロセスがこの発信源のリレープロセス（ＭＲ３）を経由してこのメッセージを受信した場合、このメッセージを消去する（２２）手段と、
さらに、現在のリレープロセス（ＭＲ１）に不良が発生し、当該スレーブプロセスがこの発信源の新規リレープロセスになった場合、記憶されていてまだ消去されていないメッセージを全て再送信し、次いで消去する手段（３４、３５）とを含むことを特徴とする請求項１０に記載のシステム。
【請求項１２】
発信源が送信したメッセージをスレーブプロセスが発信源から直接受信する前に、リレープロセスを経由してすでに受信したかどうかを、発信源についての各スレーブプロセス内で判定するために、
スレーブプロセスが、発信源についてのリレープロセスを経由してこの発信源からのメッセージを受信する毎に、このスレーブプロセス及びこの発信源に固有のカウンタを減分する（２０）手段と、
スレーブプロセスがこの発信源からメッセージを直接受信する毎に、このカウンタを増分する（１０）手段と、
カウンタの代数値が厳密に正である場合にのみ、このスレーブプロセスがリレープロセスを経由してまだメッセージを受信していないと結論する手段
を含むことを特徴とする請求項１０に記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、全適用プロセスが、複数の発信源から送られてくるメッセージ及び複数の適用プロセス宛のメッセージを同一の順序で受信するよう、これらメッセージの順序を決定するための方法及びシステムに関する。本発明は、同一の適用プロセスの複製である複数の適用プロセスを含む情報処理システムに特に適用することができる。複製は例えばシステムの信頼性を向上させるために行われる。
【０００２】
【従来の技術】
このようなシステムにおけるデータの一貫性を保証するために、全ての適用プロセスが同じ状態の機械として挙動するよう、すなわち適用プロセスの挙動がもっぱらこのプロセスの入力部に与えられたデータ及びこれらデータの入力命令のみに依存するようこのシステムのソフトウェアを設計する方法が知られている。その結果、同一のデータストリーム（flot de donnees）を同一の適用プロセスの全複製に供給する場合、これら複製は一貫した挙動を有することは確かである。あるシステムの種々の適用プロセスに供給されるデータは通常、複数の発信源から送られてくる。一連のメッセージをこれらメッセージの宛先である複数の適用プロセスに確実かつ順序通りに送信するデータ発信源をつくることは可能である。宛先の全プロセスが発信された各メッセージを確実に受信する時、この発信は確実であるという。宛先の各プロセスが一連のメッセージを同じ順序で受信する時、この発信は順序通りであるという。
【０００３】
複数の発信源が複数の適用プロセスに宛ててそれぞれ一連のメッセージを送信する場合には、たとえ個別に選択した各発信源が確実かつ順序通りにメッセージを送信したとしても、宛先の種々のプロセスがこれらメッセージを同じ順番で受信するという保証はなんらない。異なる発信源について、確実かつ順序に従った同一のプロトコル（protocole）を使用することは考えられる。しかしながらこの解決方法は常に適用可能であるとは限らない。なぜなら、場合によっては、データ発信源が使用する送信プロトコルを掌握することができないからである。
【０００４】
米国特許５３６３５０３号は、プロセッサの故障による重大な結果からシステムを保護するため、一次プロセスと呼ばれる適用プロセスが少なくとも一回、バックアッププロセス（processus de secours）の形態で複製される多重プロセッサ（multiprocesseur）情報処理システムにおける、データの一貫性を維持するための方法について説明している。本プロセスはディスクへの書き込みなど継続的な作業を行う。
【０００５】
本方法は、
−  各プロセッサに、メッセージメモリ、及びこのメッセージメモリへの書き込みにおけるアクセスをカウントするカウンタを設けること、
−  外部イベント（evenement）ならびに内部イベントに関する外部イベントの出現を記述するデータを記憶すること、
−  継続的な作業の前に、一次プロセスをサポートするプロセッサからバックアッププロセスに、記憶されているメッセージの少なくともいくつか及び外部イベントならびに内部イベントに関する外部イベントの出現を記述するデータを送信すること、及び
−  一次プロセスをサポートするプロセッサの故障時、バックアッププロセスに送信されたメッセージ及びデータをバックアッププロセスに処理させ、バックアッププロセスが一次プロセスの代替となるようにすること
から成る。
【０００６】
この方法は、実施に際し複雑であるという欠点を有する。
【０００７】
【発明が解決しようとする課題】
本発明の目的は、この既知の方法よりも実施が簡単な方法を提供することである。
【０００８】
【課題を解決するための手段】
本発明の第一の方法は、複数の発信源から送られてくる複数のメッセージ、及びこれらメッセージのデータを処理することができる複数の適用プロセス宛のメッセージの順序を決定するための方法であって、各発信源が一連のメッセージを確実かつ順序通りに送信し、宛先の各適用プロセスが一連のメッセージを全適用プロセスに向けて確実かつ順序通りに再送信することができ、宛先の全適用プロセスがこれらメッセージを同じ順序で受け取るようにするため、
−  適用プロセスの中から、唯一であって全ての発信源に共通なリレー（relais）プロセスと呼ばれるプロセス（他の適用プロセスはスレーブ（esclaves）プロセスと呼ばれる）を選択すること、
−  発信源によって送信された全メッセージを、このリレープロセスから、このリレープロセスも含めて全適用プロセスに向けて再送信すること、
−  リレープロセスが再送信する全メッセージのデータをリレープロセス内で処理すること、及び
−  発信源から直接受信したメッセージのデータは処理せず、リレープロセスを経由して受信したメッセージのデータのみをスレーブプロセス内で処理すること
から成る方法である。
【０００９】
本発明は、複数のリレープロセスを選択することから成り、複数の発信源について一つのリレープロセスが選択されるが、各発信源は唯一のリレープロセスしか有さず、全リレープロセスが確実かつ順序に従った同一の送信プロトコルを適用する、この方法の変形も対象とする。
【００１０】
このような特徴を有する方法により、確実かつ順序に従った送信が確保される。なぜなら、通信路は、種々の発信源から送られてくるメッセージを所与の順序に配列しこれらメッセージを確実に再送信する一つ（または複数）のリレープロセスを経由するからである。
【００１１】
好ましい実施形態によれば、現在のリレープロセスの欠点を解消するために、本方法は、メッセージを受信する各スレーブプロセスにおいて、
−  このスレーブプロセスがリレープロセスを経由してまだメッセージを受信していない場合、このメッセージを記憶することと、
−  次に、このスレーブプロセスがリレープロセスを経由してこのメッセージを受信した場合、このメッセージを消去すること
から成り、
さらに、現在のリレープロセスに異常が発生し、当該スレーブプロセスが全発信源に共通な新規リレープロセスになった場合、記憶されていてまだ消去されていないメッセージを全て再送信し、次いで消去することから成る。
【００１２】
好ましい実施形態によれば、発信源からメッセージを直接受信する前に、発信源によって送信されたメッセージをスレーブプロセスがリレープロセスを経由してすでに受信したかどうかを、スレーブプロセス内で判定するために、本方法は、
−  スレーブプロセスが、リレープロセスを経由してこの発信源からのメッセージを受信する毎に、このスレーブプロセス及びこの発信源に固有のカウンタを減分することと、
−  スレーブプロセスがこの発信源からメッセージを直接受信する毎に、このカウンタを増分することと、
−  カウンタの代数値が正である場合にのみ、発信源から送信されたメッセージをこのスレーブプロセスがリレープロセスを経由してまだ受信していないと結論すること
から成る。
【００１３】
この実施形態はきわめて簡単である。なぜならこの態様により、各スレーブプロセス内において唯一のカウンタを使用してリレープロセスの良好な動作を監視することができるからである。
【００１４】
本発明はまた、この方法の実施のためのシステムも対象とする。
【００１５】
下記の説明及び添付の図面により、本発明はよりよく理解され他の詳細が明らかになろう。
【００１６】
【発明の実施の形態】
例として機能略図を図１に示す情報処理システムは、二つのデータ発信源ＳＲ１、ＳＲ２及びこれらデータの宛先の三つの適用プロセスＭＲ、ＳＬ１、ＳＬ２を含む。データ発信源ＳＲ１、ＳＲ２は適用プロセスであってもよい。各発信源は他方の発信源から発信されたデータの宛先にはならない。各発信源ＳＲ１、ＳＲ２は、適用プロセスＭＲ、ＳＬ１、ＳＬ２のアセンブリに向けてメッセージストリーム（flot de messages）を送信する。各発信源は確実かつ順序通りにそのメッセージストリームを発信するが、少なくともこの例においては、各適用プロセスＭＲ、ＳＬ１、ＳＬ２における受信時、二つのメッセージストリームが同一順にインターリーブ（imbriquent）されるよう二つのメッセージストリームの発信を調整することは不可能である。
【００１７】
適用プロセスＭＲ、ＳＬ１、ＳＬ２はそれぞれ、これら適用プロセスがそれぞれ受信したメッセージのデータを処理するため、処理部分Ｔ０、Ｔ１、Ｔ２と呼ばれる部分を含む。
【００１８】
各適用プロセスＭＲ、ＳＬ１、ＳＬ２は、一連のメッセージを、同一の適用プロセス内にある処理部分も含め全適用プロセスに向けて確実かつ順序通りに再送信することができる部分Ｒ０、Ｒ１、Ｒ２をそれぞれ含む。
【００１９】
本発明による方法の第一の実施形態によれば、本方法は、適用プロセスＭＲ、ＳＬ１、ＳＬ２の中から、唯一であって全ての発信源ＳＬ１、ＳＬ２に共通なリレープロセスと呼ばれるプロセスを選択することから成る。この例においては、リレープロセスとしてプロセスＭＲが選択される。他の適用プロセス、ＳＬ１、ＳＬ２はスレーブプロセスと呼ばれる。このリレープロセスＭＲは、全発信源ＳＲ１、ＳＲ２によって送信された全メッセージを受信し、このリレープロセス（その処理部分Ｔ０宛て）自体も含め全適用プロセスに向けて確実かつ順序通りに再送信する役割を有する。
【００２０】
リレープロセスＭＲ内では、リレープロセスＭＲが受信することができる全メッセージを確実かつ順序通りに再送信するために部分Ｒ０が起動される。再送信されたメッセージは再送信されたことを識別することができる。スレーブプロセスＳＬ１、ＳＬ２内では、部分Ｒ１及びＲ２は非起動状態であるが、後記においてわかるように、後に、現在のリレープロセスＭＲが故障した場合には起動することができる。
【００２１】
本発明による方法の第一の特徴によれば、本方法は、発信源ＳＲ１、ＳＲ２から直接受信したメッセージのデータをスレーブプロセスＳＬ１、ＳＬ２内で処理することを拒否することから成る。この例においては、発信源ＳＲ１、ＳＲ２は、それぞれ適用プロセスＭＲが任意の順序で受信するメッセージｍ１及びメッセージｍ２を発信する。適用プロセスＳＬ１内ではメッセージは、任意であって直前の順序とは無関係の順序で受信され、適用プロセスＳＬ２内ではメッセージは、それ以前の順序とは無関係の順序で受信される。
【００２２】
リレープロセスＭＲは、発信源ＳＲ１、ＳＲ２が発信したメッセージｍ１及びｍ２を例えばｍ１−ｍ２の順序で受信する。部分Ｒ０は、リレープロセスＭＲが含む処理Ｔ０に向けて、ならびにこれらメッセージに含まれているデータをそれぞれ処理Ｔ０、Ｔ１、Ｔ２により直ちに処理するためスレーブプロセスＳＬ１、ＳＬ２に向けて、これらメッセージを参照記号ｍ１’−ｍ２’を付したメッセージの形態で確実かつ順序通りに再送信する。二つのメッセージｍ１及びｍ２は同一のリレープロセスＭＲによって再送信されることから、処理Ｔ０、Ｔ１、Ｔ２は、メッセージｍ１−ｍ２の複製ｍ１’−ｍ２’を同一の順序で受信する。
【００２３】
本発明による方法の付加的な特徴により、リレーとして使用される適用プロセスが万一不良となった場合でもこれを解決することができる。この例においては、これら付加的な特徴は、スレーブプロセスＳＬ１においては二つのカウンタＣ１１、Ｃ２１及び四つのジャーナル（journaux）レジスタＬ１１、Ｌ１２、Ｌ１１’、Ｌ２１’を使用し、スレーブプロセスＳＬ２においては二つのカウンタＣ１２、Ｃ２２及び四つのジャーナルレジスタＬ１２、Ｌ２２、Ｌ１２’、Ｌ２２’を使用する。カウンタＣ１１、Ｃ１２及びジャーナルレジスタＬ１１、Ｌ１１’、Ｌ１２、Ｌ１２’は発信源ＳＲ１に固有である。カウンタＣ２１、Ｃ２２及びジャーナルレジスタＬ２１、Ｌ２１’、Ｌ２２、Ｌ２２’は発信源ＳＲ２に固有である。これらの動作については後述する。ジャーナルレジスタＬ１１’、Ｌ１２’、Ｌ２１’、Ｌ２２’は初期化の段階中にのみ使用され、リレープロセスＭＲを経由して受信したメッセージのみを記憶する。ジャーナルレジスタＬ１１及びＬ１２は、発信源ＳＲ１から発信され直接受信されたメッセージを保存するのに使われる。ジャーナルレジスタＬ２１及びＬ２２は、発信源ＳＲ２から発信され直接受信されたメッセージを保存するのに使われる。これらジャーナルレジスタは全て先入れ先出し（premier-entre-premier-sorti）型のメモリである。
【００２４】
図２は、この第一の実施形態において実施される動作のフローチャートの第一部分を示す。この第一部分は、唯一であって全ての発信源に共通なリレープロセスの通常動作の場合に関する。図３は、現在のリレープロセスが不良であることを適用スレーブプロセスに示すメッセージをスレーブプロセスが受け取る場合に行われる動作を含む別の部分を示す。次いで図５から図７は、例によりこれらの動作を示す。
【００２５】
図２においては、動作１としてメッセージのために待機する。動作２として、「不良リレー(relais defaillant)」メッセージ以外のメッセージを受信する。動作３として、受信メッセージの発信元を判定する：
−  動作３が、メッセージは発信源ＳＲ１、ＳＲ２から直接来たものであると結論した場合、動作４としてメッセージを受信した適用プロセスがリレープロセスであるかまたはスレーブプロセスであるかを判定する。
【００２６】
−−  当該適用プロセスがリレープロセスＭＲである場合、動作５として、受信メッセージを、当該プロセス内にある処理部分も含め全適用プロセスに向けて確実かつ順序通りに再送信する。次いで動作６として新規メッセージのために待機する。
【００２７】
−−  当該プロセスがリレープロセスＭＲでない場合、動作１０として、当該プロセス内にあり当該メッセージを送信した発信源に対応するカウンタを増分する。これは例えば、当該プロセスがスレーブプロセスＳＬ１であって当該メッセージを送信した発信源が発信源ＳＲ１である場合には、カウンタＣ１１である。次いで動作１１としてこのカウンタの代数値を０と比較する。
【００２８】
−−  代数値が負の値または０の場合、次の動作は新規メッセージのために待機することを内容とする動作６である。なぜなら、この代数値は、発信源ＳＲ１から例としての当該スレーブプロセスＳＬ１に向けてメッセージを直接送信するのに比べ、リレープロセスによる送信の方が若干先行していることを意味するからである。
【００２９】
−−  カウンタの代数値が厳密に正の値である場合、動作１２として、当該スレーブプロセス内にあり当該メッセージを送信した発信源に対応するジャーナルレジスタ内にメッセージを記憶する。これは例えば、発信源ＳＲ１から送信されたメッセージ用のスレーブプロセスＳＬ１内にあるジャーナルレジスタＬ１１である。次いで動作６として新規メッセージのために待機する。この厳密に正の値の代数値は、この例において発信源ＳＲ１から送信されたメッセージをリレープロセスＭＲが再送信する際の遅れに相当する。この遅れはリレープロセスＭＲの不良を原因とすることがある。従って動作１２として、メッセージを保存するためにジャーナルレジスタＬ１１内に記憶させる。スレーブプロセスはこのメッセージのデータを処理する権利をもたない。なぜならメッセージは発信源ＳＲ１から直接受信されているからである。
【００３０】
−  動作３が、受信メッセージはリレープロセスＭＲによって再送信されたメッセージであると結論した場合、動作１５として、このメッセージを受信したプロセスがリレープロセスであるかまたはスレーブプロセスであるかを判定する。
【００３１】
−−  当該プロセスがリレープロセスＭＲである場合、動作２３として、このメッセージ内に含まれるデータをこのプロセスの処理部分Ｔ０内で処理する。次いで動作６として、新規メッセージのために待機する。
【００３２】
−−  当該プロセスがスレーブプロセスＳＬ１またはＳＬ２である場合、動作２０として、当該プロセス内にあり当該メッセージを送信した発信源に対応するカウンタを減分する。これは例えば当該メッセージが発信源ＳＲ１から送信された場合には、スレーブプロセスＳＬ１内のカウンタＣ１１である。次いで動作２１としてこのカウンタの代数値を０と比較する。
【００３３】
−−  代数値が厳密に負の値である場合、動作２３として、受信メッセージ内に含まれるデータを処理する。ただしこのメッセージは、発信源ＳＲ１に対応するジャーナルレジスタには登録されない。なぜなら、カウンタの負の値は、発信源ＳＲ１からメッセージを直接送信するのに比べ、リレープロセスによる送信の方が先行していることを示すからである。したがって特に問題はない。
【００３４】
−−  カウンタの代数値が正の値または０である場合、動作２２として、受信メッセージの発信源に対応するジャーナルレジスタに登録されている最も古いメッセージを消去する。なぜなら、リレープロセスを経由してこのメッセージが受信されることにより、直接送信に対するリレー送信の遅れが部分的にあるいは完全に挽回されるからである。次いで動作２３として、受信メッセージのデータをメッセージを受信したプロセスの処理部分内で処理する。最後に動作６として、新規メッセージのために待機する。
【００３５】
スレーブプロセスＳＬ１、ＳＬ２のいずれかがリレープロセスＭＲの不良を検出した場合、全プロセスをリンクする確実かつ順序に従った送信のプロトコルは、「不良リレー(relais defaillant)」メッセージを全適用プロセスに向けて送信する。スレーブプロセスの集合は、例えば種々のスレーブプロセスの作業負荷の最適分布の基準により、新規リレープロセスの選出プロトコルを実行する。新規リレープロセスとして選出されたスレーブプロセスは、一連のメッセージを確実かつ順序通りに送信することができる自己の部分を起動する。この部分はスレーブプロセスＳＬ１及びＳＬ２内でＲ１及びＲ２の参照番号を付してある。
【００３６】
図３は、本発明による方法の第一の実施形態の動作のフローチャートの第二部分を示し、この部分はより詳細には、適用プロセスが「不良リレー」メッセージを受信した際に行う動作に関する。
【００３７】
第一の動作３０として、この「不良リレー」メッセージを受信する。次いで動作３１として、新規リレープロセスの選出に参加する。テスト（test）３２により、当該プロセスが、全発信源に共通な新規リレープロセスであるかどうかを判定する：
−  当該プロセスが新規リレープロセスではない場合、動作３３として、ただ新規メッセージのために待機する。
【００３８】
−  新規リレープロセスである場合、動作３４として、このプロセスの各ジャーナルレジスタの中を読み、このジャーナルレジスタ内に含まれる全メッセージを送信する。次いで動作３５として、このプロセスの各ジャーナルレジスタが含むメッセージを消去する。次いで動作３３として、ただ新規メッセージのために待機する。
【００３９】
図４は図１と同様のシステムの図であって、本発明による方法のこの第一の実施形態の初期化ステップを示す図である。例えば図４は、
−  スレーブプロセスＳＬ１内にあり、発信源ＳＲ１に対応する、第一ジャーナルレジスタＬ１１及び第二ジャーナルレジスタＬ１１’と、
−  スレーブプロセスＳＬ２内にあり、発信源ＳＲ１に対応する、第一ジャーナルレジスタＬ１２及び第二ジャーナルレジスタＬ１２’を示す。発信源ＳＲ２に対応する一対の同様のジャーナルレジスタＬ２１及びＬ２２はスレーブプロセスＳＬ１内にあるが、見やすくするための配慮から図４には示さない。同様に、発信源ＳＲ２に対応する別の一対のジャーナルレジスタＬ２２及びＬ２２’はスレーブプロセスＳＬ２内にあるが、図４には示さない。
【００４０】
スレーブプロセスＳＬｊ（ここでｊ＝１、２、．．．）は、リレープロセスＭＲを経由して発信源ＳＲｉ（ここでｉ＝１、２、．．．）からメッセージを受信すると、発信源ＳＲｉに対応する二つのジャーナルレジスタＬｉｊ及びＬｉｊ’の内容を比較する。スレーブプロセスが、同じメッセージを直接受信したこと（メッセージはＬｉｊ内にある）、及びリレープロセスＭＲを経由して受信したこと（メッセージはＬｉｊ’内にある）を検出した場合、初期化段階は終了する。スレーブプロセスは、自分が確認した遅れまたは進みに相当する値をカウンタｃｉｊにロードする：
−  発信源ＳＲ１からの直接送信に対しリレープロセスＭＲ経由の受信がなんら遅れていない場合（スレーブプロセスがリレープロセスを経由して受信したメッセージが、発信源から直接受信した最新メッセージに相当する時）、スレーブプロセスはカウンタに０の値をロードする。次いで、受信最新メッセージを処理し、ジャーナルレジスタＬｉｊ及びＬｉｊ’の内容が存在していればそれを消去する。
【００４１】
−  発信源ＳＲ１からの直接送信に対しリレープロセスＭＲ経由の受信がｎ個メッセージ分遅れている場合（スレーブプロセスがリレープロセスを経由して受信したメッセージに引き続いて、発信源から直接受信したメッセージを記憶するジャーナルレジスタ内にｎ個のメッセージがある時）、スレーブプロセスはカウンタに＋ｎの値をロードする。次いで、受信最新メッセージを処理し、ジャーナルレジスタＬｉｊ及びＬｉｊ’の内容が存在していればそれを消去する。ただし、Ｌｉｊ内に記憶されているがまだリレープロセスＭＲを経由しては受信されていないメッセージは除く。
【００４２】
図４は、例えば発信源ＳＲ１が全適用プロセスＭＲ、ＳＬ１、ＳＬ２に向けて一連のメッセージｍ４、ｍ５、ｍ６を送信する初期化段階を示す。これらメッセージはリレープロセスＭＲによりｍ４−ｍ５−ｍ６の順序で受信され、部分Ｒ０により一連のメッセージｍ４’−ｍ５’−ｍ６’の形態で確実かつ順序通りに再送信され、従ってリレープロセスＭＲの処理Ｔ０及びスレーブプロセスＳＬ１、ＳＬ２はこの順序でメッセージを受信する。
【００４３】
スレーブプロセスＳＬ１は、受信するこのような条件下でメッセージｍ６及びｍ６’のみを起動する。スレーブプロセスはｍ６を第一ジャーナルレジスタＬ１１に登録し、ｍ６’を第二ジャーナルレジスタＬ１１’に登録する。スレーブプロセスは、発信源ＳＲ１に対応する二つのジャーナルレジスタＬ１１及びＬ１１’の内容を比較し、同じメッセージを直接ならびにリレープロセスＭＲを経由して受信したことを検出する。ｍ６’はＬｉｊの最新メッセージに対応するので、スレーブプロセスはカウンタＣ１１に０の値をロードする。スレーブプロセスはメッセージｍ６’を処理部分Ｔ１に送信する。次いでジャーナルレジスタＬ１１及びＬ１１’の内容を消去する。
【００４４】
スレーブプロセスＳＬ２は、発信源ＳＲ１から直接受信するこのような条件下でメッセージｍ５及びｍ６を起動する。スレーブプロセスはこれらメッセージを第一ジャーナルレジスタＬ１２に登録する。スレーブプロセスはさらに、リレープロセスＭＲを経由して送信されたメッセージｍ５’を受信する。しかしながら、メッセージｍ５’の直前のメッセージｍ４’は決して受信しない。スレーブプロセスはメッセージｍ５’を第二ジャーナルレジスタＬ１２’に登録する。二つのジャーナルレジスタＬ１２及びＬ１２’の内容を比較し、リレープロセスＭＲ経由の受信が一つのメッセージすなわちメッセージｍ６に対応する遅れを取っていると結論する。従ってスレーブプロセスは発信源ＳＲ１に対応するカウンタＣ１２に＋１の値をロードする。スレーブプロセスはメッセージｍ５を処理部分Ｔ２に送信する。次いで、メッセージｍ６を除くジャーナルレジスタＬ１２の全メッセージを消去し、ジャーナルレジスタＬ１２’の内容を消去する。
【００４５】
初期化段階が終了すると、リレープロセスの不良による送信の遅れを検出し修復することができる。その結果、リレープロセスの不良に対しメッセージの順序及び一貫性が保護される。
【００４６】
図５は初期化段階の直後の同一システムの動作を示す。図示例においては、メッセージｍ１０はリレープロセスＭＲを介して、直接送信よりも早くスレーブプロセスＳＬ２に到達する。一方、リレープロセスＭＲの部分Ｒ０によって送信される複製ｍ１０’は、元のメッセージｍ１０よりも早くスレーブプロセスＳＬ１に到達する。
【００４７】
スレーブプロセスＳＬ１は、メッセージｍ１０’を受信すると、カウンタＣ１１の値を一つだけ減分する。当該時点でカウンタＣ１１が０の値を含んでいたとすると、これ以降は、厳密に負の値である−１を含むことになり、そのことは、プロセスＳＬ１から見てリレープロセスによる送信は一つのメッセージに対応する分だけ先行していることを意味する。メッセージｍ１０’はリレープロセスを経由した後、このメッセージが含むデータを処理するために、処理部分Ｔ１に送信される。第一ジャーナルレジスタＬ１１は依然として空である。
【００４８】
スレーブプロセスＳＬ２がメッセージｍ１０を受信することにより、０の値を含んでいたカウンタＣ１２が一つ増分する。カウンタＣ１２はこれ以降、厳密に正の値である＋１を含むことになり、そのことは、プロセスＳＬ２から見てリレープロセスＭＲによる送信は発信源ＳＲ１からの直接送信と比べ若干遅れていることを意味する。するとメッセージｍ１０は、空であったジャーナルレジスタＬ１２内に登録される。
【００４９】
図６は、スレーブプロセスＳＬ２が、メッセージｍ１０の複製であるメッセージｍ１０’を受信し、スレーブプロセスＳＬ１がメッセージｍ１０を受信した後、引き続いて発生することを示す。スレーブプロセスＳＬ１においてメッセージｍ１０を受信することにより、カウンタＣ１１が一つ増分する。カウンタの内容は０の値になり、そのことは、プロセスＳＬ１から見てリレープロセスＭＲによる送信は発信源ＳＲ１からの直接送信と比べて全く遅れていないことを意味する。ジャーナルレジスタＬ１１は依然として空である。
【００５０】
スレーブプロセスＳＬ２は、メッセージｍ１０’を受信すると、カウンタＣ１２の値を１ずつ減分する。この値は＋１から０になる。この値が０であるということは、リレープロセスＭＲによる再送信は直接送信に対しもはや全く遅れがないことを意味する。このメッセージｍ１０’はこのメッセージのデータを処理するため処理部分Ｔ２に送信されるが、メッセージｍ１０はジャーナルレジスタＬ１２から消去される。
【００５１】
図７はリレープロセスＭＲが不良である場合を示す。全適用プロセスをリンクする確実かつ順序に従った送信プロトコルにより「不良リレー」メッセージがすでに送信されている。スレーブプロセスＳＬ１及びＳＬ２は新規リレープロセスをすでに選出している。当該時点において選出が終了し、適用プロセス全体は新規リレープロセスがＳＬ１であることを知らされている。適用プロセスＳＬ２はスレーブプロセスのままである。新規リレープロセスＳＬ１内では、リレー機能を可能にするために、一連のメッセージを確実かつ順序通りに再送信することができる部分Ｒ１が起動される。特にＣ１１などカウンタは非動作状態にされる。
【００５２】
図７に示す例においては、スレーブプロセスＳＬ１内にあり発信源ＳＲ１に対応するジャーナルレジスタＬ１１は、発信源ＳＲ２から直接到着したがリレープロセスＭＲの不良のためリレープロセスＭＲを経由して再送信されなかった唯一のメッセージｍ７を含む。プロセスＳＬ１は、自分がリレープロセスに選出されたことを知らされると、その全てのジャーナルレジスタの内容を読み、レジスタＬ１１においてメッセージｍ７を見つける。新規リレープロセスＳＬ１の部分Ｒ１は、メッセージｍ７’の形態のメッセージｍ７を全適用プロセスに向けて再送信する。新規リレープロセスＳＬ１はこのようにして、不良リレープロセスＭＲによって行えなかったメッセージｍ７の送信を完了する。
【００５３】
スレーブプロセスＳＬ２もそのジャーナルレジスタＬ１２にメッセージｍ７を記憶しており、対応するカウンタＣ１２は値＋１を含む。メッセージｍ７’を受信すると、プロセスＳＬ２はカウンタ１２の値を１だけ減分する。カウンタＣ１２の値は０となり、このことはリレープロセスによる再送信は直接送信に対しもはや全く遅れがないことを意味する。メッセージｍ７’は処理部分Ｔ２に送信されるが、これと同じメッセージｍ７はジャーナルレジスタＬ１２から消去される。
【００５４】
前述の本発明による方法の第一の実施形態においては、全発信源ＳＲ１、ＳＲ２に共通なリレープロセスＭＲは一つしかない。その場合、リレープロセスが一つしかないことにより、異なるスレーブプロセスＳＬ１、ＳＬ２が受信する一連のメッセージが同一であることが保証される。なぜなら、一連のメッセージは、リレーとして使われる唯一のプロセスの部分Ｒ０によって送信されるからである。本発明による方法の第二の実施形態においては、複数の適用プロセスがリレーとして使われる。特に、各発信源についてそれぞれ別のリレープロセスをもつことができる。ただし、同一の発信源について複数のプロセスが同時にリレーとなることはできない。また、一つのリレープロセスを一部の発信源に共通であるようにすることも考えられるが、全発信源に共通であるようにすることはできない。
【００５５】
その場合、リレーとして使われるプロセスは確実かつ順序に従ったメッセージの送信のプロトコルを使用し、再送信された一連のメッセージが確実に所与の順序を有するように、これらリレープロセス全体によるメッセージの再送信が調整されるようにすることが不可欠である。欧州特許出願第０６５０２８０号は、複数の適用プロセスが同時に使用することができ確実かつ順序に従ったこのような送信プロトコルについて説明している。
【００５６】
図８は、二つの発信源ＳＲ３、ＳＲ４から送信されたメッセージを再送信する二つのリレープロセスＭＲ３及びＭＲ４を含むシステムの例における、本発明による方法の第二の実施形態を示す。この二つのリレープロセスはそれぞれ発信源ＳＲ３、ＳＲ４のスレーブプロセスでもあることに注意すべきである。リレープロセスＭＲ３及びＭＲ４はそれぞれ、処理Ｔ３及びＴ４、ならびに同一のプロトコルにより一連のメッセージを確実かつ順序通りに再送信することができる二つの部分Ｒ３及びＲ４を含む。さらにこの例は、二つの発信源ＳＲ３、ＳＲ４についてのスレーブである二つのプロセスＳＬ５及びＳＬ６を含む。このプロセスはそれぞれ、これらスレーブプロセスのいずれかが、不良リレープロセスの代わりとしてリレープロセスになった場合のために、受信メッセージのデータを処理するための処理Ｔ５及びＴ６、ならびに部分Ｒ３及びＲ４と同一のプロトコルにより一連のメッセージを確実かつ順序通りに再送信することができる部分Ｒ５及びＲ６を含む。使用されるプロトコルは例えば、欧州特許出願第０６５０２８０号に記載されている。
【００５７】
図８は例えば、発信源ＳＲ３から送信されたメッセージｍ７の再送信及び発信源ＳＲ４から送信されたメッセージｍ８の再送信を示す。発信源ＳＲ３に対応するリレープロセスＭＲ３の部分Ｒ３がメッセージｍ７を受信すると、この部分はこのメッセージが発信源ＳＲ３から送信されてきたものであることを認識する。この部分Ｒ３はメッセージをメッセージｍ７’の形態で、適用プロセスＳＬ５、ＳＬ６、ＭＲ４、ならびにリレープロセスＭＲ３を構成する処理Ｔ３に向けて再送信する。するとメッセージｍ７’のデータは処理Ｔ３、Ｔ４、Ｔ５、Ｔ６により処理される。同時に、発信源ＳＲ４からメッセージｍ８が送信される。発信源ＳＲ４に対応するリレープロセスＲ４の部分Ｒ４がメッセージｍ８を受信すると、この部分はこのメッセージが発信源ＳＲ４から送信されてきたものであることを認識する。この部分Ｒ４はメッセージをメッセージｍ８’の形態で、適用プロセスＭＲ３、ＳＬ５、ＳＬ６、ならびにリレープロセスＭＲ４を構成する処理Ｔ４に向けて再送信する。するとメッセージｍ８’のデータは処理Ｔ３、Ｔ４、Ｔ５、Ｔ６により処理される。ｍ７’の送信及びｍ８’の送信は、全プロセスが例えばｍ７’−ｍ８’など同一の順序でこれらメッセージを受信するように、確実かつ順序に従った送信のプロトコルにより調整される。
【００５８】
スレーブプロセスＳＬ５、ＳＬ６及びリレープロセスＭＲ３、ＭＲ４内で行われる動作は、図２及び図３を参照しながら第一の実施形態に関して説明した動作と同じである。唯一の違いは、当該プロセスが共通リレープロセスであるかどうかを判定する動作４及び動作１５が、第二の実施形態においては、当該プロセスが、当該メッセージの発信源に対応するリレープロセスであるかどうかを判定する。第一の実施形態の例についての説明と同様、スレーブプロセスはそれぞれ、カウンタ、第一ジャーナルレジスタ、及び各発信源用の第二ジャーナルレジスタを含むが、第二の実施形態は、当該スレーブプロセスの起動時の初期化段階中にのみ使用される。
【００５９】
本発明による方法の他の実施形態の例においては、リレープロセスの数を発信源の数と同じくすることなく一つよりも多い数にすることができる。なぜなら、同一のリレープロセスを複数の発信源用として使うことができるからである。唯一の条件は、リレーとして使用される全プロセスが、同一のプロトコルにより一連のメッセージを確実かつ順序通りに再送信することができる部分を含むことである。
【図面の簡単な説明】
【図１】本発明による方法の第一の実施形態を示す情報処理システムの一例の機能略図である。
【図２】この第一の実施形態の動作のフローチャートである。
【図３】この第一の実施形態の動作のフローチャートである。
【図４】この第一の実施形態の初期化ステップを示す図である。
【図５】適用プロセスが、リレープロセスによって再送信されたメッセージを受信する前に、同じメッセージを発信源から直接受信する場合を示す図である。
【図６】適用プロセスが、リレープロセスによって再送信されたメッセージを受信する前に、同じメッセージを発信源から直接受信する場合を示す図である。
【図７】現在のリレープロセスが不良であって新規リレープロセスに替えられた場合を示す図である。
【図８】複数の発信源にそれぞれ対応する複数のリレープロセスがある、本発明による方法の第二の実施形態を示す情報処理システムの一例の機能略図である。
【符号の説明】
Ｃ１１，Ｃ１２，２１，Ｃ２２  カウンタ
Ｌ１１，１１’，Ｌ１２，１２’，Ｌ２１，Ｌ２１’，Ｌ２２，Ｌ２２’  ジャーナルレジスタ
ｍ１，ｍ２，ｍ３，ｍ７，ｍ８，ｍ１’，ｍ２’，ｍ７’，ｍ８’  メッセージ
ＭＲ  リレープロセス
Ｒ０，Ｒ１，Ｒ２  再送信部分
ＳＬ１，ＳＬ２，ＳＬ５，ＳＬ６  スレーブプロセス
ＳＲ１，Ｒ２  発信源
Ｔ０，Ｔ１，Ｔ２  処理部分
【図１】
0003787200.tif 000002
【図２】
0003787200.tif 000003
【図３】
0003787200.tif 000004
【図４】
0003787200.tif 000005
【図５】
0003787200.tif 000006
【図６】
0003787200.tif 000007
【図７】
0003787200.tif 000008
【図８】
0003787200.tif 000009