(57)【特許請求の範囲】
【請求項１】
複数のホストと、前記ホストに共用される共有資源と、前記ホストからのコマンドを受けて前記共有資源をロックもしくはアンロックする複数台の運用系排他制御装置とが全て単一のネットワークで接続され、
前記ネットワーク上の全ての通信を監視し、前記運用系排他制御装置がすべて正常に運用されている間は前記ホストから前記運用系排他制御装置へ発せられたコマンドを蓄積し、前記ホストから前記運用系排他制御装置へ前記共有資源をロックもしくはアンロックするコマンドが発せられてから一定時間経過しても前記運用系排他制御装置が前記ホストに対して応答しないことを検出したときに前記運用系排他制御装置に障害が発生したと判断してこの障害が発生した運用系排他制御装置として動作する単数もしくは複数の待機系排他制御装置を前記ネットワーク上に装備した
ことを特徴とする疎結合システム。
【請求項２】
前記待機系排他制御装置は、前記運用系排他制御装置に障害が発生したときに、前記ホストに対して再試行要求を返信することを特徴とする、請求項１記載の疎結合システム。
【請求項３】
前記待機系排他制御装置は、前記運用系排他制御装置に障害が発生したときに、前記蓄積したコマンドに含まれる前記障害が発生した運用系排他制御装置に対するコマンドおよび該コマンドに対する応答を抽出し、前記障害が発生した運用系排他制御装置の排他制御情報を再生することを特徴とする、請求項１記載の疎結合システム。
【請求項４】
前記ホストと前記運用系排他制御装置は、前記ホストと前記運用系排他制御装置との間の通信を前記ネットワーク上にブロードキャスト送信することを特徴とする、請求項１記載の疎結合システム。
【請求項５】
複数のホストと、前記ホストに共用される共有資源と、前記ホストからのコマンドを受けて前記共有資源をロックもしくはアンロックする複数台の運用系排他制御装置とが全て単一のネットワークで接続された疎結合システムにおいて使用される待機系排他制御装置であって、
前記ネットワーク上の全ての通信を監視し、前記運用系排他制御装置がすべて正常に運用されている間は前記ホストから前記運用系排他制御装置へ発せられたコマンドを蓄積するロックデータ蓄積手段と、
前記ホストから前記運用系排他制御装置へ前記共有資源をロックもしくはアンロックするコマンドが発せられてからの経過時間を計測するタイマと、
前記タイマが計測した経過時間が一定時間に到達しても前記運用系排他制御装置が前記ホストに対して応答しないことを検出したときに前記運用系排他制御装置に障害が発生したと判断する応答監視手段と、
前記運用系排他制御装置のいずれかに障害が発生したときに前記待機系排他制御装置を前記障害が発生した運用系排他制御装置として動作させる待機系運用系切り替え手段と
を有することを特徴とする待機系排他制御装置。
【請求項６】
前記応答監視手段は、前記運用系排他制御装置に障害が発生したときに前記ホストに対して再試行要求を返信することを特徴とする、請求項５記載の待機系排他制御装置。
【請求項７】
前記待機系運用系切り替え手段は、前記運用系排他制御装置に障害が発生したときに、前記ロックデータ蓄積手段に蓄積されたコマンドに含まれる前記障害が発生した運用系排他制御装置に対するコマンドを抽出し、前記障害が発生した運用系排他制御装置の排他制御情報を再生することを特徴とする、請求項５記載の待機系排他制御装置。
【請求項８】
複数のホストと、前記ホストに共用される共有資源と、前記ホストに共用される共有資源をロックもしくはアンロックする複数台の運用系排他制御装置と、待機系排他制御装置とが全て単一のネットワークで接続された疎結合システムにあって前記運用系排他制御装置に障害が発生したときに前記疎結合システムをリカバリする方法であって、
前記ホストが前記運用系排他制御装置に対して、前記共有資源をロックもしくはアンロックするコマンドを送信し、
続いて前記待機系排他制御装置が前記ネットワーク上の全ての通信を監視して前記ロックもしくはアンロックするコマンドを蓄積し、
続いて前記待機系排他制御装置が前記共有資源をロックもしくはアンロックするコマンドが発せられてからの経過時間が一定時間に到達しても前記運用系排他制御装置が前記ホストに対して応答しないことを検出したときに前記運用系排他制御装置のいずれかに障害が発生したと判断し、
前記障害が発生した場合に前記待機系排他制御装置が前記障害が発生した運用系排他制御装置として動作する
することを特徴とするリカバリ方法。
【請求項９】
複数のホストと、前記ホストに共用される共有資源と、前記ホストに共用される共有資源をロックもしくはアンロックする複数台の運用系排他制御装置と、待機系排他制御装置とが全て単一のネットワークで接続された疎結合システムにおいて使用される待機系排他制御装置が備えているコンピュータに、
前記ネットワーク上の全ての通信を監視して前記ロックもしくはアンロックするコマンドを蓄積する機能と、
前記共有資源をロックもしくはアンロックするコマンドが発せられてからの経過時間が一定時間に到達しても前記運用系排他制御装置が前記ホストに対して応答しないことを検出したときに前記運用系排他制御装置のいずれかに障害が発生したと判断する機能と、
前記障害が発生した場合に前記コンピュータを前記障害が発生した運用系排他制御装置として動作させる機能と
を実行させることを特徴とするコンピュータプログラム。
【請求項１０】
請求項９記載のコンピュータプログラムをコンピュータが読み取り可能なように記憶した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のホストおよび排他制御装置を含む疎結合システムに関し、特に排他制御装置に障害が発生した場合に該疎結合システムをリカバリする方法に関する。
【背景技術】
【０００２】
コンピュータシステムにおいて、疎結合（Loose Coupling）とは、該システムを構成する各々のコンポーネント同士の結びつきが比較的緩やかで、独立性が強い状態をいう。疎結合システム（Loosely-Coupled System）は、多くのコンポーネントが連携して大規模な処理を行うことができ、かつ各々のコンポーネントの交換、改良、追加などを柔軟に行うことが可能である。
【０００３】
より具体的には、それぞれがプロセッサおよびローカルメモリを有して独立して動作する複数のホストと、データベースやディスクドライブなどのような共有資源がネットワークによって相互に接続された疎結合システムを考える。その場合、同一の共有資源に対して複数のホストから同時にアクセスがあると、動作に不都合が生じやすい。そのため、共有資源へのアクセスはＭＳＣＰ（Multi-System Control Processor、排他制御装置）によって制御される。
【０００４】
一つのホストが共有資源に対してアクセスしている間は、ＭＳＣＰは他のホストが同一の共有資源にアクセスすることを禁止する。これをロックという。逆に、アクセス禁止を解除することをアンロックという。共有資源が一つのホストにロックされている間、他のホストは該共有資源がアンロックされることを待ち、アンロックされたらすぐに該共有資源をロックするようにすることができる。これをロック待ちという。
【０００５】
なお、ネットワークの共有資源を二重化する技術として、たとえば以下のような技術が開示されている。特許文献１は、ネットワークにおいて共有されている複数のシステム結合装置の内のいずれか１台が故障した場合に、該システム結合装置をリカバリする技術に関するものである（詳細は後述）。特許文献２は、異なるコンピュータシステムのデータベース間のデータ連携をスムーズに行う二重化データベースのデータ連携装置であり、稼働系データベースの制御情報を待機系のそれに変換する技術に関するものである。特許文献３は、ネットワークに対してブロードキャストで送信されるデータを監視する技術に関するものである。
【０００６】
【特許文献１】特開平１１−３３８８４３号公報
【特許文献２】特開２００１−１４２７６２号公報
【特許文献３】特開２００７−７２８３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
図２５は、特許文献１の疎結合システム５０１において、障害が発生していない場合の動作を示す概念図である。疎結合システム５０１において、ＭＳＣＰに障害が発生することがある。同文献の発明では、そのような場合に備えて、複数あるＭＳＣＰのうちの１つを待機系ＭＳＣＰ５１２として、障害が発生したＭＳＣＰの代理として動作することが可能である。なお、待機系ＭＳＣＰ５１２以外の全てのＭＳＣＰを、運用系ＭＳＣＰ５１１という。ホスト５０３、運用系ＭＳＣＰ５１１、待機系ＭＳＣＰ５１２は全て、同一のネットワーク５０２に接続される。また運用系ＭＳＣＰ５１１によってアクセスを管理される共有資源については図示しない。
【０００８】
各々のホスト５０３は排他制御情報記録手段５０４を有し、運用系ＭＳＣＰ５１１にロックコマンド５２１を送信すると、同時に自らが送信したロックコマンド５２１の内容について排他制御情報記録手段５０４に記録する。
【０００９】
図２６は、疎結合システム５０１において、障害が発生した場合の動作を示す概念図である。運用系ＭＳＣＰの一つ５１１ｘに障害が発生すると、各々のホスト５０３は排他制御情報記録手段５０４を参照して、同期を取ってから自らが送信したロックコマンド５２１を待機系ＭＳＣＰ５１２に送信する。これによって待機系ＭＳＣＰ５１２は、障害が発生した運用系ＭＳＣＰ５１１ｘが持っていた排他制御情報を再生し、以後運用系ＭＳＣＰ５１１ｘの代理である運用系ＭＳＣＰ５１２ｘとして動作する。このことによって、運用系ＭＳＣＰ５１１ｘの復旧を待つことなく、疎結合システム５０１は動作を継続することができる。
【００１０】
しかし、特許文献１の技術においては、障害が発生した運用系ＭＳＣＰ５１１ｘの動作を待機系ＭＳＣＰ５１２に切り替えるにあたって、障害発生前と全く同じ排他制御情報を再生するために、ホスト５０３間で同期を取ってから、待機系ＭＳＣＰ５１２へ情報を送る必要があった。また、全てのホスト５０３から待機系ＭＳＣＰ５１２に情報を転送する必要もあった。これらの処理はホスト５０３およびネットワーク５０２に負荷がかかるので、その間ホスト５０３の運用を一時停止もしくは制限する必要があった。
【００１１】
また、運用系ＭＳＣＰ５１１が実際に行う処理には、ホスト５０３からの要求に基づいて行う処理と、タイマイベントのように該運用系ＭＳＣＰ５１１内部で発生する処理とがある。そのため、ホスト５０３間で同期を取っても、ホスト５０３から送られるコマンドの順番と実際に運用系ＭＳＣＰ５１１で実行される処理が、必ずしも同一であるとは限らない。従って、待機系ＭＳＣＰ５１２が運用系ＭＳＣＰ５１１と全く同じ動作ができるとは限らないので、疎結合システム５０１を正常にリカバリできるとは限らない。
【００１２】
さらに、各々のホスト５０３にロック要求を蓄積するのではなく、運用系ＭＳＣＰ５１１にホスト５０３からコマンドが送られるたびに、待機系ＭＳＣＰ５１２が運用系ＭＳＣＰ５１１と全く同じ動作を行うようにするという方法も考えられる。しかし、その場合の待機系ＭＳＣＰ５１２は、複数台の運用系ＭＳＣＰ５１１と全く同じ動作をまかなう必要があるので、１台で運用系ＭＳＣＰ５１１の台数分の性能を持つか、または運用系ＭＳＣＰ５１１と同じ台数の待機系ＭＳＣＰ５１２を用意する必要がある。コストなどの面から、この方法は現実的ではない。
【００１３】
本発明の目的は、１台の待機系ＭＳＣＰで、該運用系ＭＳＣＰに障害が発生しても運用を停止もしくは制限することなくリカバリが可能な疎結合システムと、そこに使用されるＭＳＣＰ、および疎結合システムのリカバリ方法とコンピュータプログラムと記憶媒体を提供することにある。
【課題を解決するための手段】
【００１４】
本発明の疎結合システムは、複数のホストと、複数のホストに共用される共有資源と、複数のホストからのコマンドを受けて共有資源をロックもしくはアンロックする複数台の運用系ＭＳＣＰと、単数もしくは複数の待機系ＭＳＣＰとが全て単一のネットワークで接続されてなる。この待機系ＭＳＣＰは、ネットワーク上の全ての通信を監視し、運用系ＭＳＣＰがすべて正常に運用されている間はホストから運用系ＭＳＣＰに発せられたコマンドを蓄積し、ホストから前記運用系ＭＳＣＰへ共有資源をロックもしくはアンロックするコマンドが発せられてから一定時間経過しても運用系ＭＳＣＰがホストに対して応答しないことを検出したときに運用系ＭＳＣＰに障害が発生したと判断してこの障害が発生した運用系ＭＳＣＰとして動作する。これによって、運用系ＭＳＣＰに障害が発生しても、ホストの動作を停止することなく疎結合システムを運用し続けることが可能となる。
【００１７】
また、障害が発生したときに、待機系ＭＳＣＰが障害が発生した運用系ＭＳＣＰの代わりにホストに対して再試行要求を返信すれば、その間に自身が障害が発生した運用系ＭＳＣＰとして動作するための準備を行うことができるので好都合である。
【００１８】
待機系ＭＳＣＰが障害が発生した運用系ＭＳＣＰとして動作するための準備は、正常に運用されている間に蓄積したコマンドの中から、障害が発生した運用系ＭＳＣＰに対するコマンドを抽出して、該運用系ＭＳＣＰの排他制御情報を再生することによって可能となる。
【００１９】
また、ホストと運用系ＭＳＣＰが、ホストと運用系ＭＳＣＰとの間の通信をネットワーク上にブロードキャスト送信するようにすれば、待機系ＭＳＣＰがそれらの通信内容を監視できるようにネットワークを構成することが容易となるであるので好都合である。
【００２０】
本発明の待機系ＭＳＣＰは、複数のホストと、複数のホストに共用される共有資源と、複数のホストからのコマンドを受けて共有資源をロックもしくはアンロックする複数台の運用系ＭＳＣＰとが全て単一のネットワークで接続された疎結合システムにおいて使用される待機系ＭＳＣＰである。この待機系ＭＳＣＰは、ネットワーク上の全ての通信を監視し、運用系排他制御装置がすべて正常に運用されている間はホストから運用系ＭＳＣＰへのコマンドを蓄積するロックデータ蓄積手段と、ホストから運用系ＭＳＣＰへ共有資源をロックもしくはアンロックするコマンドが発せられてからの経過時間を計測するタイマと、タイマが計測した経過時間が一定時間に到達しても運用系ＭＳＣＰがホストに対して応答しないことを検出したときに運用系ＭＳＣＰに障害が発生したと判断する応答監視手段と、運用系ＭＳＣＰのいずれかに障害が発生したときに障害が発生した待機系ＭＳＣＰを運用系ＭＳＣＰとして動作させる待機系運用系切り替え手段とを有する。
【００２１】
この待機系ＭＳＣＰは、障害が発生したときには、障害が発生した運用系ＭＳＣＰの代わりに応答監視手段がホストに対して再試行要求を返信するようにもできる。
【００２２】
さらに、障害が発生したときに、待機系運用系切り替え手段がロックデータ蓄積手段に蓄積されたコマンドに含まれる障害が発生した運用系ＭＳＣＰに対するコマンドを抽出して、該運用系ＭＳＣＰの排他制御情報を再生することによって、該運用系ＭＳＣＰとして動作することが可能となる。
【００２３】
本発明のリカバリ方法は、複数のホストと、複数のホストに共用される共有資源と、複数のホストに共用される共有資源をロックもしくはアンロックする複数台の運用系ＭＳＣＰと、待機系ＭＳＣＰとが全て単一のネットワークで接続された疎結合システムにおいて、運用系ＭＳＣＰに障害が発生したときに疎結合システムをリカバリする方法である。まずホストが運用系ＭＳＣＰに対して共有資源をロックもしくはアンロックするコマンドを送信すると、待機系ＭＳＣＰはネットワーク上の全ての通信を監視してロックもしくはアンロックするコマンドを蓄積して、共有資源をロックもしくはアンロックするコマンドが発せられてからの経過時間が一定時間に到達しても運用系ＭＳＣＰが前記ホストに対して応答しないことを検出したときに運用系ＭＳＣＰのいずれかに障害が発生したと判断する。障害が発生した場合には、待機系ＭＳＣＰが該障害が発生した運用系ＭＳＣＰとして動作する。
【００２４】
また本発明は、待機系ＭＳＣＰが備えているコンピュータに上記の方法を実行させるコンピュータプログラムと、このコンピュータプログラムをコンピュータが読み取り可能なように記憶した記憶媒体を提供することもできる。
【発明の効果】
【００２５】
本発明により、１台の待機系ＭＳＣＰで、該運用系ＭＳＣＰに障害が発生しても運用を停止もしくは制限することなくリカバリが可能な疎結合システムと、そこに使用されるＭＳＣＰ、および疎結合システムのリカバリ方法とコンピュータプログラムと記憶媒体を提供することができた。
【発明を実施するための最良の形態】
【００２６】
図１は、本発明の実施の形態に係る疎結合システム１の構成を示すブロック図である。ｍ台のホストコンピュータ３（以後単にホスト３という）と、ｎ台のＭＳＣＰ１０とが、同一のネットワーク２に接続されている。ｍとｎは、いずれも２以上の整数である。ｎ台のＭＳＣＰ１０のうち、ｎ−１台が運用系ＭＳＣＰ１１として、残る１台が待機系ＭＳＣＰ１２としてそれぞれ動作する。運用系ＭＳＣＰ１１と待機系ＭＳＣＰ１２とを総称してＭＳＣＰ１０という。各々の動作の詳細は後述する。
【００２７】
なお、ＭＳＣＰ１０による排他制御の対象となる共有資源の存在は自明なことであり、またネットワーク２におけるホスト３およびＭＳＣＰ１０との物理的な接続関係などは限定されないので、図１には図示していない。以後の説明において、共有資源のことを単に資源ということがある。
【００２８】
図２は、疎結合システム１上で通信されるデータの基本フォーマットを示すブロック図である。データ２０１は、該データの発信元のコンピュータのアドレスを表す送信元アドレス（FROM:）２０２と、該データが送信先のコンピュータのアドレスを表す送信先アドレス（TO:）２０３と、通信内容を表す個別データ２０４からなる。
【００２９】
図３は、ホスト３とＭＳＣＰ１０との間での排他制御関連の通信における個別データ２０４の内容を示すブロック図である。図３の（Ａ）に示すロック・アンロック要求データ２１１は、ホスト３からＭＳＣＰ１０に対してロック要求もしくはアンロック要求が送られるときの個別データ２０４であり、メッセージＩＤ２１２、要求種別２１３、資源ＩＤ２１４、タスクＩＤ２１５、遅延タイマ値２１６からなる。
【００３０】
メッセージＩＤ２１２は、「ロック・アンロック要求データ」「ロック・アンロック要求応答データ」などのようなメッセージの種別を表すＩＤである。要求種別２１３は、ロック要求およびアンロック要求のうちのいずれかである。資源ＩＤ２１４は、ロック要求もしくはアンロック要求の対象となる共有資源を表す。タスクＩＤ２１５は、ロック要求もしくはアンロック要求をしたホスト３上のタスクに対して付与されるＩＤである。遅延タイマ値２１６は後述する排他制御タイマ部１１５にセットされる遅延タイマの時刻である。
【００３１】
図３の（Ｂ）に示すロック・アンロック要求応答データ２２１は、ロック・アンロック要求データ２１１に対する返信としてＭＳＣＰ１０からホスト３に送られる個別データ２０４であり、メッセージＩＤ２１２、資源ＩＤ２１４、タスクＩＤ２１５、処理結果２２２からなる。メッセージＩＤ２１２、資源ＩＤ２１４、タスクＩＤ２１５については、図３の（Ａ）と同一の定義で表されるので、参照番号も同一として説明を省略する。処理結果２２２はロック要求もしくはアンロック要求に基づいてロックもしくはアンロックの処理を行った結果であり、ロック可、ロック待ち、アンロック完了、再試行応答のうちいずれか１つである。
【００３２】
図３の（Ｃ）に示すアテンション通知データ２３１は、ＭＳＣＰ１０からホスト３上のタスクへの通知に使用される個別データ２０４であり、メッセージＩＤ２１２、資源ＩＤ２１４、タスクＩＤ２１５、状態２３２からなる。メッセージＩＤ２１２、資源ＩＤ２１４、タスクＩＤ２１５については、図３の（Ａ）と同一の定義で表されるので、参照番号も同一として説明を省略する。
【００３３】
ホスト３上の特定のタスクが特定の共有資源に対してロックを保持していた場合、同一の共有資源にアクセスしようとした別のホスト３上のタスクはロック待ち状態となる。ここで、該共有資源に対してロックを保持していたタスクが該ロックをアンロックし、ロック待ち状態にあったタスクが該共有資源をロック可となる場合に、アテンション通知データ２３１が使用される。または、ロック待ち状態にあったタスクが、その状態が一定時間継続してもロック可とならない場合にも、アテンション通知データ２３１が使用される。状態２３２は、ロック可およびロック不可のいずれかである。
【００３４】
図４は、ＭＳＣＰ１０とＭＳＣＰ１０との相互間での排他制御関連の通信における個別データ２０４の内容を示すブロック図である。図４の（Ａ）に示す待機系ＭＳＣＰ１２から運用系ＭＳＣＰ１１へのモード移行要求２４１は、メッセージＩＤ２１２、自ＭＳＣＰ番号２４２、および要求モード２４３からなる。メッセージＩＤ２１２については、図３の（Ａ）と同一の定義で表されるので、参照番号も同一として説明を省略する。自ＭＳＣＰ番号２４２は、ＭＳＣＰ１０相互間で定義される通し番号である。要求モード２４３は、通常モードおよびリカバリモードのいずれかである。なお、通常モードおよびリカバリモードの各々の詳細については後述する。
【００３５】
図４の（Ｂ）に示す運用系ＭＳＣＰ１１から待機系ＭＳＣＰ１２へのモード移行完了応答２５１は、モード移行要求２４１への応答として送信されるものであり、メッセージＩＤ２１２および自ＭＳＣＰ番号２４２からなる。これらのデータ内容はモード移行要求２４１と同一の定義で表されるので、参照番号も同一として説明を省略する。
【００３６】
図５は、本実施の形態に係るＭＳＣＰ１０の構成を示すブロック図である。運用系ＭＳＣＰ１１と待機系ＭＳＣＰ１２とでは内部の構成は同一であるので、図５ではこれらの両者を総称してＭＳＣＰ１０として説明する。ＭＳＣＰ１０は、送受信処理部１０２、ＭＳＣＰモード管理部１０３、ロック処理監視部１０４、応答監視タイマ処理部１０５、待機系運用系切り替え処理部１０６、排他制御処理部１０７、タイマ部１０８、及び、初期記憶部１０１、運用モード記憶部１１１、リカバリフラグ記憶部１１２、応答カウンタ記憶部１１３、排他制御タイマ部１１５、ロックデータ蓄積部１２０、排他制御テーブル１３０、応答監視タイマテーブル１４０から構成される。
【００３７】
運用系ＭＳＣＰ１１の基本的な動作は、排他制御処理部１０７、排他制御タイマ部１１５、および排他制御テーブル１３０で実現される。排他制御処理部１０７は、ホスト３からロック・アンロック要求データ２１１に含まれる要求種別２１３によってロック要求を受け取ると、排他制御テーブル１３０に記録されたロック状態から、ロック要求された共有資源をロックすることが可能であるか否かについて判定する。以後、それが可能である状態をロック可、そうでない状態をロック不可という。なお、排他制御テーブル１３０については後述する。
【００３８】
ロック可であれば、ロック情報を排他制御テーブル１３０中の資源情報のロックリストに登録し、ロック要求を行ったホスト上のタスクに対して処理結果２２２をロック可として、ロック・アンロック要求応答データ２２１を送信する。ロック不可であれば、ロック情報を排他制御テーブル１３０中の資源情報のロック待ちリストに登録し、排他制御タイマ部１１５に遅延タイマをセットし、ロック要求を行ったホスト上のタスクに対して処理結果２２２をロック待ちとして、ロック・アンロック要求応答データ２２１を送信する。
【００３９】
なお、後述するタイマ部１０８は待機系ＭＳＣＰ１２において利用されるものであり、運用系ＭＳＣＰ１１において利用される排他制御タイマ部１１５とは異なる。排他制御タイマ部１１５の仕組みは本発明の要点ではなく、また当業者に公知であるので、詳細な説明は省略する。ただし、タイマ部１０８と排他制御タイマ部１１５とを、同一のモジュールもしくはルーチンなどによって機能させることを妨げるものではない。
【００４０】
排他制御処理部１０７が、ホスト３からロック・アンロック要求データ２１１に含まれる要求種別２１３によってアンロック要求を受け取ると、アンロック要求に該当するタスクのロック情報を、排他制御テーブル１３０の資源情報のロックリストから削除し、処理結果２２２をアンロック完了として、ロック・アンロック要求応答データ２２１を送信してアンロック完了を報告する。
【００４１】
更に、アンロックされた該共有資源に対してロック待ち状態であるタスクがあれば、排他制御テーブル１３０中の資源情報のロック待ちリスト上のロック情報をロックリストに移動し、状態２３２をロック可としたアテンション通知データ２３１によって当該タスクにロック可を通知する。排他制御タイマ部１１５にセットされた遅延タイマがタイムアウトした時は、状態２３２をロック不可としたアテンション通知データ２３１によって、タイムアウトしたロック待ち状態のロック要求の要求元であるホスト上のタスクにロック不可を通知する。
【００４２】
図６は、排他制御テーブル１３０で資源情報３０１のデータ構成を示すブロック図である。図７は、排他制御テーブル１３０でタスク情報３１１のデータ構成を示すブロック図である。図８は、排他制御テーブル１３０で資源情報３０１とタスク情報３１１との間のデータの関係を示すブロック図である。排他制御テーブル１３０は、ホスト３からのロック要求に基づいた共有資源の排他制御状態を管理するテーブル群で、通常は排他制御処理部１０７によって生成・更新される。但し、待機系ＭＳＣＰ１２においては、障害発生時に待機系運用系切り替え処理部１０６によりロックデータ蓄積部１２０のデータを元に生成される。
【００４３】
図６に示す資源情報３０１は、資源ＩＤ２１４、ロックリスト３０３、ロック待ちリスト３０４からなる。資源ＩＤ２１４は、図３の（Ａ）と同一の定義で表される。ロックリスト３０３は、資源ＩＤ２１４に該当する共有資源をロックしているタスクリストへのアドレスを表す。ロック待ちリスト３０４は、資源ＩＤ２１４に該当する共有資源でロック待ちの状態であるタスクリストへのアドレスを表す。
【００４４】
図７に示すタスク情報３１１は、タスクＩＤ２１５、ロック種別３１３、遅延タイマ値３１４、継続タスクリスト３１５からなる。タスクＩＤ２１５は、図３の（Ａ）と同一の定義で表される。ロック種別３１３は、各々のタスクが共有資源に対して取得するロックの種類であり、独占的にロックを取得するＸロックと、共有的にロックを取得するＳロックのいずれかである。遅延タイマ値３１４は、該タスクがロック待ちになった場合に、待ち状態の持続する最大時間を表す。継続タスクリスト３１５は、ロックやロック待ち列に繋がるタスク情報のアドレスを表す。
【００４５】
図８は排他制御テーブル１３０で資源情報３０１とタスク情報３１１との間のデータの関係を示す。資源情報３０１の資源ＩＤ２１４は資源Ｐを表す。ロックリスト３０３は、資源Ｐを現在ロックしているタスクＡの先頭アドレスを示す。ロック待ちリスト３０４は、資源Ｐに対してロック待ち状態となっているタスクＣの先頭アドレスを示す。
【００４６】
タスク情報３１１で、タスクＩＤ２１５ａで示されるタスクＡは、ロック種別３１３がＳロックで、遅延タイマ値３１４は空欄、そして継続タスクリスト３１５はタスクＢに続く。タスクＩＤ２１５ｂで示されるタスクＢは、ロック種別３１３がＳロックで、遅延タイマ値３１４および継続タスクリスト３１５は空欄（ＮＵＬＬ）である。
【００４７】
一方、タスクＩＤ２１５ｃで示されるロック待ち状態のタスクＣは、ロック種別３１３がＸロックで、遅延タイマ値３１４は「５秒」、継続タスクリスト３１５は空欄（ＮＵＬＬ）である。以上の各データは、次のことを表す。タスクＡとタスクＢが、資源ＰをＳロックしている。タスクＣは資源ＰをＸロックするため、タスクＡとタスクＢが資源Ｐをアンロックするのを最大５秒まで待つ。
【００４８】
図５に戻って、送受信処理部１０２はネットワーク２上に流れる全ての通信データを取り込み、ＭＳＣＰモード管理部１０３にデータを渡し、また、各処理部からの送信要求をネットワークに送信する処理部である。初期記憶部１０１は、自身の運用モード（運用系または待機系）の初期値を記憶している記憶媒体である。運用モード記憶部１１１は、現在の自身の役割が運用系か待機系かを記憶する記憶部である。リカバリフラグ記憶部１１２は、リカバリ中か否かを記憶するリカバリフラグを保存する記憶部である。
【００４９】
ＭＳＣＰモード管理部１０３は、送受信処理部１０２から渡された通信データを処理する処理部である。またＭＳＣＰモード管理部１０３は、ＭＳＣＰ１０を起動する時に初期記憶部１０１からＭＳＣＰ１０自身の運用モード（運用系または待機系）の初期値を取り出し、運用モード記憶部１１１に格納する。
【００５０】
ロック処理監視部１０４、ロックデータ蓄積部１２０、応答監視タイマ処理部１０５、待機系運用系切り替え処理部１０６、タイマ部１０８、応答カウンタ記憶部１１３、応答監視タイマテーブル１４０は待機系ＭＳＣＰ１２のみで機能する処理部である。ロック処理監視部１０４は、自身が待機系ＭＳＣＰ１２であるとき、ＭＳＣＰモード管理部１０３から他のホスト３またはＭＳＣＰ１０宛の通信データを受け取り、受け取ったデータの種類に応じて後述の処理を行う。
【００５１】
図９は、ロックデータ蓄積部１２０および応答監視タイマテーブル１４０に記録されるデータエントリの形式を示すブロック図である。図９の（Ａ）に示すロックデータ蓄積部１２０は、ロック処理監視部１０４によって登録されるエントリ４０１の集合である。エントリ４０１は、エントリアドレス４０２、資源ＩＤ２１４、タスクＩＤ２１５、状態４０３、管理ＭＳＣＰ４０４と遅延タイマ値２１６からなる。状態４０３は、資源ＩＤ２１４で表される共有資源の状態であり、ロック可、ロック待ち、ロック要求中、アンロック要求中のいずれかの状態を表す。管理ＭＳＣＰ４０４は、該資源ＩＤ２１４を管理するＭＳＣＰ１０のＩＤである。タスクＩＤ２１５および遅延タイマ値２１６は、該資源に対するロック・アンロック要求データ２１１に含まれるものが設定される。
【００５２】
図９の（Ｂ）に示す応答監視タイマテーブル１４０は、ロックデータ蓄積部１２０のエントリアドレス４０２と、タイマＩＤ４１２との間の対応を管理するエントリ４１１である。タイマがセットされると、エントリアドレス４０２とタイマＩＤ４１２とがエントリ４１１に登録され、タイマリセットされた場合およびタイムアウトした場合に消去される。
【００５３】
ロック・アンロック要求データ２１１を受けたら、ロック処理監視部１０４はロックデータ蓄積部１２０にエントリ４０１を蓄積し、タイマ部１０８にタイマをセットさせる。ここでタイマ部１０８にセットされる待ち時間は、ロック処理監視部１０４において任意に設定することができる。ロック・アンロック要求応答データ２２１を受けたら、ロック処理監視部１０４は、タイマ部１０８にタイマのリセットを依頼し、ロックデータ蓄積部１２０を検索し対応するデータに処理結果を反映する。アテンション通知データ２３１を受けたら、ロック処理監視部１０４はロックデータ蓄積部１２０を検索し対応するデータに処理結果を反映する。その他のデータを受けた場合は、ロック処理監視部１０４は特に何もしない。
【００５４】
タイマ部１０８は、ロック処理監視部１０４からのタイマセット指示時は、受け取ったロックデータ蓄積部１２０内のエントリアドレス４０２をキーにしてタイマをセットし、セットしたタイマＩＤ４１２とエントリアドレス４０２を応答監視タイマテーブル１４０に登録する。ロック処理監視部１０４からのタイマリセット指示時は、タイマ部１０８は受け取ったエントリアドレス４０２をキーに応答監視タイマテーブル１４０からタイマＩＤ４１２を検索して該当するタイマをリセットし、応答監視タイマテーブル１４０から該当するデータを削除する。
【００５５】
セットされたタイマがタイムアップとなったら、タイマ部１０８はタイムアップしたタイマＩＤ４１２をキーに応答監視タイマテーブル１４０からエントリアドレス４０２を検索し、応答監視タイマ処理部１０５に通知する。応答監視タイマ処理部１０５は、タイマ部１０８からエントリアドレス４０２を受け取ると、リカバリフラグ記憶部１１２にリカバリフラグをセットし、また、エントリ４０１に登録されたタスクＩＤから要求元ホスト３のタスクに障害の発生した運用系ＭＳＣＰ１１ｘに代わってリカバリ中のため再試行を促す応答を送信する。
【００５６】
また応答監視タイマ処理部１０５は、ロックデータ蓄積部１２０のエントリ４０１の管理ＭＳＣＰ４０４に登録された情報から障害の発生した運用系ＭＳＣＰ１１ｘを特定し、これ以外の運用系ＭＳＣＰ１１へリカバリモードへの移行を要求する。その際、リカバリモードへの移行要求を送信した運用系ＭＳＣＰ１１の台数を応答カウンタ記憶部１１３に設定する。
【００５７】
待機系運用系切り替え処理部１０６は、ロックデータ蓄積部１２０から運用系ＭＳＣＰ１１ｘが管理していたロック可またはロック待ちのデータのみを排他制御テーブル１３０に再生し、再生し終えたら運用系ＭＳＣＰ１１ｘを除く運用系ＭＳＣＰ１１に通常モードへのモード移行要求を送受信処理部１０２経由で送信し、自身の運用モード記憶部１１１を「運用系」に変更し、リカバリフラグ記憶部１１２のリカバリフラグを解除する。応答カウンタ記憶部１１３は、待機系ＭＳＣＰ１２から運用系ＭＳＣＰ１１への要求の応答を計数するカウンタである。
【００５８】
次に実施例の動作について説明する。図１０は、ＭＳＣＰ１０が起動されるとＭＳＣＰモード管理部１０３が実行する動作を表すフローチャートである。ＭＳＣＰ１０が起動されると（Ｓ１０）、ＭＳＣＰモード管理部１０３は初期記憶部１０１より自身の運用モード（運用系もしくは待機系）を読み出して運用モード記憶部１１１に設定し（Ｓ１１）、以後は送受信処理部１０２からの通信データを待ち合わせる（Ｓ１２）。
【００５９】
Ｓ１２で送受信処理部１０２が通信データを受信したら、ＭＳＣＰモード管理部１０３は該通信データが自身宛のものであるか否かを判断する（Ｓ１３）。自身宛であれば後述の図１１に示す処理を実行して（Ｓ１４）、Ｓ１２に戻る。自身宛でなければ（他宛）、該通信データがホスト３−ＭＳＣＰ１０間の排他制御関連の通信であるか否かを判断する（Ｓ１５）。ホスト３−ＭＳＣＰ１０間の排他制御関連の通信であり、かつ自身の運用モードが待機系であれば（Ｓ１６）、後述の図１６に示す処理を実行して（Ｓ１７）、Ｓ１２に戻る。それ以外は全て、そのままＳ１２に戻る。
【００６０】
ＭＳＣＰ１０の運用モードが運用系ＭＳＣＰ１１であり、ネットワーク２のどこにも障害が発生していない状態で運用されている状態（以後通常運用中という）での動作をまず説明する。この場合の動作においては、運用系ＭＳＣＰ１１は送受信処理部１０２でホスト３からのロック・アンロック要求データ２１１を受付け、ＭＳＣＰモード管理部１０３を介して排他制御処理部１０７で排他制御の処理を行い、その処理結果を排他制御テーブル１３０に格納し、ホスト３に処理結果を含むロック・アンロック要求応答データ２２１を送信する。また排他制御タイマ部１１５にセットされていた遅延タイマがタイムアウトした場合には、ホスト３に対して状態を含むアテンション通知データ２３１を通知する。
【００６１】
図１１は、ＭＳＣＰ１０が自身宛の通信データを受信した場合にＭＳＣＰモード管理部１０３が実行する動作を表すフローチャートである。まず、送受信処理部１０２で受信した自身宛の要求が、ホスト３−ＭＳＣＰ１０間の通信かＭＳＣＰ１０−ＭＳＣＰ１０間の通信かチェックする（Ｓ２０）。Ｓ２０でホスト３−ＭＳＣＰ１０間の通信であれば、リカバリフラグ記憶部１１２にリカバリフラグがセットされているか否かを判断する（Ｓ２１）。Ｓ２０でＭＳＣＰ１０−ＭＳＣＰ１０間の通信である場合の処理については後述する。
【００６２】
Ｓ２１でリカバリフラグがセットされていず、かつ自身の運用モードが運用系であれば（Ｓ２３）、後述の図１２に示す排他制御処理部１０７を実行して（Ｓ２４）、図１０に戻る。それ以外は全て、そのまま図１０に戻る。ここでは運用モードは運用系であり、通常運用中である（リカバリフラグがセットされていない）状態を考えているので、Ｓ２４の排他制御処理部１０７が実行される。また、この処理の対象となる自身宛の受信データは、ロック・アンロック要求データ２１１である。
【００６３】
図１２は、ＭＳＣＰ１０において排他制御処理部１０７が実行する動作を表すフローチャートである。ロック・アンロック要求データ２１１を受信して起動された排他制御処理部１０７は（Ｓ１００）、受信した要求の種類を判断する（Ｓ１０１）。ロック要求の場合は後述の図１３に示すロック要求処理を実行し（Ｓ１０２）、アンロック要求の場合は後述の図１４に示すアンロック要求処理を実行し（Ｓ１０３）、ホスト３にロック・アンロック要求応答データ２２１を送信して（Ｓ１０５）呼び出し元に戻る。
【００６４】
図１３は、排他制御処理部１０７が実行するロック要求処理（Ｓ１０２）の動作を表すフローチャートである。まず排他制御処理部１０７は、排他制御テーブル１３０から図４のロック・アンロック要求データ２１１の資源ＩＤ２１４と一致する資源情報を検索し（Ｓ１２１）、要求された資源をロックしているタスクが存在するか否かを判断する（Ｓ１２２）。存在しなければ、新規に資源情報３０１を作成し（Ｓ１２３）、次に要求データからタスク情報３１１を作成し（Ｓ１２４）、作成した資源情報３０１のロックリスト３０３にタスク情報３１１を図８に示した形でリンクする（Ｓ１２５）。Ｓ１０５に戻って、ホスト３に処理結果２２２「ロック成功」を含むロック・アンロック要求応答データ２２１を通知する。
【００６５】
Ｓ１２２で要求された資源を既にロックしているタスクが存在する場合は、既に該資源をロックしているタスクのロック種別３１３をチェックし、該タスクと同時にロックが可能（ロック種別３１３が「Ｓ」）であるか否かを判断する（Ｓ１２６）。同時にロックが可能であれば、Ｓ１２４に進んでタスク情報３１１を作成し、既存のタスクの継続タスクリスト３１５にタスク情報３１１をリンクする（Ｓ１２５）。Ｓ１０５に戻って、ホスト３に処理結果２２２「ロック成功」を含むロック・アンロック要求応答データ２２１を通知する。
【００６６】
Ｓ１２６で既存のタスクのロック種別３１３が「Ｘ」であり、同時にロックが不可能である場合は、Ｓ１２７に進んでタスク情報３１１を作成し、資源情報３０１のロック待ちリスト３０４にタスク情報３１１をリンクする（Ｓ１２５）。また、ロック・アンロック要求データ２１１に遅延タイマ値２１６が指定されている場合は、指定された値で排他制御タイマ部１１５に遅延タイマをセットする（Ｓ１２９）。Ｓ１０５に戻って、ホスト３に処理結果２２２「ロック待ち」を含むロック・アンロック要求応答データ２２１を通知する。
【００６７】
図１４は、排他制御処理部１０７が実行するアンロック要求処理（Ｓ１０３）の動作を表すフローチャートである。まず排他制御処理部１０７は、排他制御テーブル１３０からロック・アンロック要求データ２１１の資源ＩＤ２１４と一致する資源情報を検索し（Ｓ１４７）、要求された資源をロックしているタスク情報３１１を（Ｓ１２２）資源情報３０１から外す（Ｓ１４０）。次に、該資源の資源情報３０１のロック待ちリスト３０４に登録されているタスクが存在するか否かを判断する（Ｓ１４１）。
【００６８】
Ｓ１４１で、ロック待ちリスト３０４にタスクが存在しない場合は、さらに該資源の資源情報３０１のロックリスト３０３に登録されているタスクが存在するか否かを判断する（Ｓ１４２）。Ｓ１４２でロックリスト３０３にタスクが存在すれば、そのままＳ１０５に戻って、ホスト３には処理結果「アンロック完了」が通知される。Ｓ１４２でロックリスト３０３にタスクが存在しなければ、該資源情報３０１を削除して（Ｓ１４３）からＳ１０５に戻って、ホスト３に処理結果２２２「アンロック完了」を含むロック・アンロック要求応答データ２２１を通知する。
【００６９】
Ｓ１４１で、ロック待ちリスト３０４にタスクが存在する場合は、さらに該資源の資源情報３０１のロックリスト３０３に登録されているタスクが存在するか否かを判断する（Ｓ１４４）。Ｓ１４４でロックリスト３０３にタスクが存在すれば、そのままＳ１０５に戻って、ホスト３に処理結果２２２「アンロック完了」を含むロック・アンロック要求応答データ２２１を通知する。
【００７０】
Ｓ１４４でロックリスト３０３にタスクが存在しなければ、ロック待ちのタスクに遅延タイマが設定されていれば排他制御タイマ部１１５から該当する遅延タイマを解除して（Ｓ１４５）、ロック待ちリスト３０４に登録されていたタスクをロックリスト３０３に移動して、ホスト３に処理結果２２２「ロック成功」を含むロック・アンロック要求応答データ２２１が通知される（Ｓ１４６）。そしてＳ１０５に戻って、ホスト３に処理結果２２２「アンロック完了」を含むロック・アンロック要求応答データ２２１を通知する。
【００７１】
図１５は、排他制御タイマ部１１５にセットされていた遅延タイマがタイムアウトした場合に排他制御処理部１０７が実行するタイムアウト処理の動作を表すフローチャートである。排他制御処理部１０７は、該資源の資源情報３０１のロック待ちリスト３０４から、該遅延タイマをセットしたタスク情報３１１を外す（Ｓ１５０）。そしてタスク情報３１１のタスクＩＤ２１５の属するホスト３に対して状態２３２「ロック不可」を含むアテンション通知データ２３１を通知する。
【００７２】
次に、ＭＳＣＰ１０の運用モードが待機系ＭＳＣＰ１２であり、ネットワーク２が通常運用中である場合の動作について説明する。この場合の動作においては、待機系ＭＳＣＰ１２は送受信処理部１０２でネットワーク上の通信データを取り込み、図１０のＳ１５〜１７として既に示したように、取り込んだ通信データが「自身宛でなく、ホスト３−ＭＳＣＰ１０間の通信で排他制御に関わるもの」である場合に、ＭＳＣＰモード管理部１０３が該通信データをロック処理監視部１０４に処理させる。
【００７３】
図１６は、ＭＳＣＰ１０が自身宛でない通信データを受信した場合にロック処理監視部１０４が実行する動作を表すフローチャートである。図１７は、ＭＳＣＰ１０が受信した自身宛でない通信データがホスト３からＭＳＣＰ１０への要求通信である場合に、ロック処理監視部１０４が実行する動作を表すフローチャートである。まずロック処理監視部１０４は、送受信処理部１０２で受信した自身宛でない要求が、ホスト３からＭＳＣＰ１０へのロック・アンロック要求データ２１１であるか否かを判断する（Ｓ４０）。ロック・アンロック要求データ２１１であれば、図１７に示すホストコマンド要求処理を実行する（Ｓ４１）。
【００７４】
図１７のホストコマンド要求処理において、まずロック処理監視部１０４は該要求がロック要求かアンロック要求であるかを判断する（Ｓ５０）。ロック要求であれば、ロック処理監視部１０４はロックデータ蓄積部１２０に新規のエントリ４０１を作成し（Ｓ５１）、これにロック・アンロック要求データ２１１に含まれる資源ＩＤ２１４、タスクＩＤ２１５および遅延タイマ値２１６をセットする（Ｓ５２）。さらに該エントリ４０１の管理ＭＳＣＰ４０４に通信ヘッダ２０１の宛先アドレス２０３をセットし（Ｓ５３）、状態４０３に「ロック要求中」をセットする（Ｓ５４）。最後に、タイマ部１０８に作成したエントリアドレス４０２と共にタイマをセットさせる（Ｓ５７）。
【００７５】
Ｓ５０で、該要求がアンロック要求であれば、ロック処理監視部１０４はロックデータ蓄積部１２０からロック・アンロック要求データ２１１に含まれる資源ＩＤ２１４、タスクＩＤ２１５と一致するエントリ４０１を検索し（Ｓ５５）、該エントリ４０１の状態４０３に「ロック要求中」をセットする（Ｓ５６）。最後に、ロック要求の場合と同様にＳ５７に進み、タイマ部１０８に作成したエントリアドレス４０２と共にタイマをセットさせる。なお、Ｓ５７でタイマ部１０８にセットされる待ち時間は、ロック処理監視部１０４内部において任意に設定することができる。
【００７６】
Ｓ４０で、通信データがホスト３からＭＳＣＰ１０への要求通信でない場合は、該通信データはＭＳＣＰ１０からホスト３へのロック・アンロック要求応答データ２２１か、もしくはアテンション通知データ２３１のいずれかである。ロック処理監視部１０４は、該通信データがそのいずれであるかを判断する（Ｓ４２）。
【００７７】
ロック・アンロック要求応答データ２２１であれば、ロック処理監視部１０４はロックデータ蓄積部１２０から該ロック・アンロック応答データ２２１に含まれる資源ＩＤ２１４、タスクＩＤ２１５と一致するエントリ４０１を検索し（Ｓ４３）、タイマ部１０８にエントリ４０１に対応するタイマをリセットさせる（Ｓ４４）。ここでロック・アンロック要求応答データ２２１がロック要求に対する応答であるかアンロック要求に対する応答であるかを判定する（Ｓ４５）。
【００７８】
ロック・アンロック応答データ２２１の処理結果２２２が「ロック可」もしくは「ロック待ち」であれば、該ロック・アンロック応答データ２２１はロック要求に対する応答である。この場合は、処理結果２２２の「ロック可」もしくは「ロック待ち」と同一の状態を状態４０３にセットして（Ｓ４６ａ）参照元に戻る。Ｓ４５で、ロック・アンロック応答データ２２１の処理結果２２２が「ロック可」でも「ロック待ち」でもなければ、該ロック・アンロック応答データ２２１はアンロック要求に対する応答である。この場合は、該エントリを削除して（Ｓ４６ｂ）参照元に戻る。
【００７９】
Ｓ４２で、通信データがアテンション通知データ２３１であれば、ロック処理監視部１０４はロックデータ蓄積部１２０から該アテンション通知データ２３１に含まれる資源ＩＤ２１４、タスクＩＤ２１５と一致するエントリ４０１を検索する（Ｓ４７）。ここでアテンション通知データ２３１の状態２３２の内容を判断し（Ｓ４８）、状態２３２が「ロック成功」であれば、検索されたエントリの状態４０３を「ロック可」にセットして（Ｓ４９ａ）参照元に戻る。「ロック不可」であれば、該エントリ４０１を削除して（Ｓ４９ｂ）参照元に戻る。
【００８０】
運用系ＭＳＣＰ１１がロック・アンロック要求データ２１１を受けるとＳ５７でタイマ１０８がセットされ、それに対してロック・アンロック要求応答データ２２１を返すとＳ４４でタイマ１０８がリセットされる。運用系ＭＳＣＰ１１が正常に動作していれば、ロック・アンロック要求データ２１１を受けてからロック・アンロック要求応答データ２２１を返すまでの処理が所定の時間内で行われるので、タイマ１０８がタイムアップすることはない。
【００８１】
さて、ここで運用系ＭＳＣＰ１１の中の一つである運用系ＭＳＣＰ１１ｘに障害が発生した。その場合、運用系ＭＳＣＰ１１ｘが受けたロック・アンロック要求データ２１１に対するロック・アンロック要求応答データ２２１は無い。従って、ロック・アンロック要求データ２１１に対応してセットされたタイマ１０８は、リセットされずにタイムアップする。これによって、待機系ＭＳＣＰ１２は、運用系ＭＳＣＰ１１ｘに障害が発生したことを検出する。タイマ部１０８は、タイムアップが発生すると、該タイムアップしたエントリに対応するロックデータ蓄積部１２０のエントリアドレス４０２を応答監視タイマ処理部１０５に通知する。
【００８２】
図１８は、タイマ部１０８からの通知を受けた応答監視タイマ処理部１０５が実行する動作を表すフローチャートである。応答監視タイマ処理部１０５は、リカバリフラグ記憶部１１２のリカバリフラグをセットし（Ｓ６０）、障害が発生した運用系ＭＳＣＰ１１ｘ以外の運用系ＭＳＣＰ１１へ要求モード２４３が「リカバリモード」であるモード移行要求２４１を送信し（Ｓ６１）、モード移行要求２４１を送信した運用系ＭＳＣＰ１１の数を応答カウンタ記憶部１１３に設定する（Ｓ６２）。また、タイムアップの対象となったロック・アンロック要求データ２１１を送信したホスト３に対して、処理結果２２２が「再試行応答」であるロック・アンロック要求応答データ２２１を送信して（Ｓ６３）参照元に戻る。
【００８３】
リカバリモードへのモード移行要求２４１を受け取った運用系ＭＳＣＰ１１のＭＳＣＰモード管理部１０３は、モード移行要求２４１を図１０のＳ１３において自身宛の通信であると判断し、Ｓ１４で図１１の処理に進む。該通信はＭＳＣＰ１０−ＭＳＣＰ１０間の通信であるので、Ｓ２０においてホスト３−ＭＳＣＰ１０間の通信ではないと判断してＳ２５に進む。ここで自らの動作モードを運用系であると判断して、リカバリフラグ記憶部１１２のリカバリフラグをセットし（Ｓ２６）、モード移行要求２４１を発信した待機系ＭＳＣＰ１２に対してモード変更応答２４２を返信する（Ｓ２７）。
【００８４】
モード変更応答２４２を受け取った待機系ＭＳＣＰ１２のＭＳＣＰモード管理部１０３は、該モード変更応答２４２を図１０のＳ１３において自身宛の通信であると判断し、Ｓ１４で図１１の処理に進む。該通信はＭＳＣＰ１０−ＭＳＣＰ１０間の通信であるので、Ｓ２０においてホスト３−ＭＳＣＰ１０間の通信ではないと判断してＳ２５に進む。ここで自らの動作モードを待機系であると判断して、図１８のＳ６２でセットされた応答カウンタ記憶部１１３をディクリメントし（Ｓ２８）、続いて応答カウンタ記憶部１１３の設定値が０になったか否かを判断する（Ｓ２９）。
【００８５】
応答カウンタ記憶部１１３はモード移行要求２４１を送信した運用系ＭＳＣＰ１１の数が初期設定されているので、その設定値が０になったということは、モード移行要求２４１を送信した全ての運用系ＭＳＣＰ１１からモード変更応答２４２を受けたことを意味する。そこで、応答カウンタ記憶部１１３の設定値が０となれば、図１９に示す待機系運用系切り替え処理部１０６の処理を実行する。
【００８６】
ちなみに、ここでいうリカバリモードとは、運用系ＭＳＣＰ１１のリカバリフラグ記憶部１１２にリカバリフラグがセットされている状態である。リカバリモードでの動作となった運用系ＭＳＣＰ１１は、ホストからロック・アンロック要求データ２１１を受けると、該通信を図１０のＳ１３において自身宛の通信であると判断してＳ１４で図１１の処理に進み、さらにＳ２０においてホスト３−ＭＳＣＰ１０間の通信であると判断してＳ２１に進む。しかし、ここでリカバリフラグがセットされているので、排他制御処理を行わずに処理結果２２２が「再試行応答」であるロック・アンロック要求応答データ２２１を送信する（Ｓ２２）。
【００８７】
図１９は、待機系ＭＳＣＰ１２において、待機系運用系切り替え処理部１０６が実行する動作を表すフローチャートである。待機系運用系切り替え処理部１０６は、ロックデータ蓄積部１２０からエントリ４０１を１データずつ取り出し（Ｓ７１〜７２）、エントリ４０１の管理ＭＳＣＰ４０４が障害の発生した運用系ＭＳＣＰ１１ｘに該当し、かつ状態４０３が「ロック可」もしくは「ロック待ち」であるものについて、図２０に示す排他制御テーブル１３０の再生の処理を行う（Ｓ７３〜７４）。
【００８８】
図２０は待機系運用系切り替え処理部１０６が実行する排他制御テーブル１３０の再生の処理の動作を表すフローチャートである。待機系運用系切り替え処理部１０６は、エントリ４０１の資源ＩＤ２１４に一致する資源情報３０１が、排他制御テーブル１３０に存在するか否かを検索して判定する（Ｓ８０〜８１）。該資源が存在しなければ、資源情報３０１を作成する（Ｓ８２）。
【００８９】
続いてエントリ４０１からタスク情報３１１を作成し（Ｓ８３）、エントリ４０１の状態４０３を判断し（Ｓ８４）、状態４０３が「ロック状態」であればタスク情報３１１を該当する資源情報３０１のロックリスト３０３にリンクして（Ｓ８５）参照元に戻る。状態４０３が「ロック待ち状態」であれば、排他制御タイマ部１１５に遅延タイマをセットし（Ｓ８７）、タスク情報３１１を該当する資源情報３０１のロック待ちリスト３０４にリンクして（Ｓ８８）参照元に戻る。
【００９０】
これらの動作は、運用系ＭＳＣＰ１１ｘが排他制御テーブル１３０に対して実行していた動作と同一であるので、排他制御タイマ部１１５による動作が含まれたとしても、排他制御テーブル１３０を正確に再現することが可能である。
【００９１】
以上、ロックデータ蓄積部１２０から全てのエントリ４０１を読み取って排他制御テーブル１３０の再生を完了したら、待機系運用系切り替え処理部１０６は図１９のＳ７２で「データ無し」と判断してＳ７５に進む。Ｓ７５で、全ての運用系ＭＳＣＰ１１に要求モード２４３が「通常モード」であるモード移行要求２４１を送信する。運用系ＭＳＣＰ１１の側においては、前述のリカバリモードへの移行要求と同様の動作（図１１Ｓ２６）で、リカバリフラグ記憶部１１２のリカバリフラグを削除する。この場合はＳ２７のモード変更応答２４２は返信しない。
【００９２】
そして待機系運用系切り替え処理部１０６は、自身の運用モード記憶部１１１を「運用系」に変更し（Ｓ７６）、リカバリフラグ記憶部１１２のリカバリフラグを解除する（Ｓ７７）。以上の処理を経て、待機系ＭＳＣＰ１２は、障害の発生した運用系ＭＳＣＰ１１ｘの後継として動作する運用系ＭＳＣＰ１２ｘとなる。
【００９３】
以上、フローチャートによって説明してきた動作をまとめると、次のようになる。図２１は、本実施の形態に係るＭＳＣＰ１０が通信データを受信した際の動作をまとめた表である。
【００９４】
自らの動作モードが運用系ＭＳＣＰ１１である場合、自身宛の通信で、「リカバリフラグ記憶部１１２にリカバリフラグがセットされていて、かつロック・アンロック要求データ２１１を受信した場合」には、処理結果２２２が「再試行応答」であるロック・アンロック要求応答データ２２１を返信する（図１１Ｓ２１〜２２）。「リカバリフラグ記憶部１１２にリカバリフラグがセットされていて、かつ要求モード２４３が『通常モード』であるモード移行要求２４１を受信した場合」には、リカバリフラグ記憶部１１２のリカバリフラグを削除する（図１１Ｓ２５〜２６）。
【００９５】
「リカバリフラグ記憶部１１２にリカバリフラグがセットされていなくて、かつ要求モード２４３が『リカバリモード』であるモード移行要求２４１を受信した場合」には、リカバリフラグ記憶部１１２のリカバリフラグをセットして、モード変更応答２４２を返信する（図１１Ｓ２５〜２７）。「リカバリフラグ記憶部１１２にリカバリフラグがセットされていなくて、かつロック・アンロック要求データ２１１を受信した場合」には、排他制御処理部１０７が要求に基づいて排他制御処理を実行し、処理結果に対応したロック・アンロック要求応答データ２２１を返信する（図１１Ｓ２４）。それらの場合以外は何もしない。また、他宛の通信に対しても何もしない。
【００９６】
自らの動作モードが待機系ＭＳＣＰ１２である場合、自身宛の通信で「モード変更応答２４２を受信した場合」には、応答カウンタ記憶部１１３をディクリメントし、続いて応答カウンタ記憶部１１３の設定値が０になったか否かを判断する（図１１Ｓ２８〜３０）。また、他宛の通信で「ロック・アンロック要求データ２１１またはロック・アンロック要求応答データ２２１を受信した場合」には、ロック処理監視部１０４による動作を行う（図１０Ｓ１７）。それらの場合以外は何もしない。このとき、自身宛の通信でロック・アンロック要求データ２１１を受信することは通常あり得ないが、万一そのようなことがあったとしても何もしない。
【００９７】
図２２は、本発明の実施の形態に係る疎結合システム１において、全ての運用系ＭＳＣＰ１１が正常に動作している状態での各ホスト３およびＭＳＣＰ１０を表す概念図である。
【００９８】
ホスト３が、運用系ＭＳＣＰ１１にロック・アンロック要求データ２１１を送ると、運用系ＭＳＣＰ１１はそれに対してロック・アンロック要求応答データ２２１を返す。同時に、ネットワーク２上での全ての通信データを監視することのできる待機系ＭＳＣＰ１２は、それらのロック・アンロック要求データ２１１をロックデータ蓄積部１２０に蓄積し、同時にロック・アンロック要求データ２１１に対するロック・アンロック要求応答データ２２１が所定の時間内に返されたか否かを監視する。所定の時間内に返されたロック・アンロック要求応答データ２２１は、ロックデータ蓄積部１２０に反映される。
【００９９】
図２３は、本発明の実施の形態に係る疎結合システム１において運用系ＭＳＣＰ１１ｘに障害が発生した状態での各ホスト３およびＭＳＣＰ１０を表す概念図である。待機系ＭＳＣＰ１２は、ロック・アンロック要求データ２１１に対するロック・アンロック要求応答データ２２１が所定の時間内に返されなかったことを検出して、運用系ＭＳＣＰ１１ｘに障害が発生したことを検出する。その際待機系ＭＳＣＰ１２は、ロック・アンロック要求データ２１１を発したホスト３に対して、運用系ＭＳＣＰ１１ｘのかわりにロック・アンロック要求応答データ２２１を返して再試行応答を行い、引き続いてリカバリの処理に入る。
【０１００】
図２４は、本発明の実施の形態に係る疎結合システム１においてリカバリの処理を行った後の各ホスト３およびＭＳＣＰ１０を表す概念図である。待機系ＭＳＣＰ１２は、ロックデータ蓄積部１２０に蓄積されたデータの中から運用系ＭＳＣＰ１１ｘに関連するものを抽出し、運用系ＭＳＣＰ１１ｘの排他制御テーブル１３０を再生する。そして自身の動作モードを切り替えて運用系ＭＳＣＰ１２ｘとなり、障害が発生した運用系ＭＳＣＰ１１ｘの後継として動作する。
【０１０１】
このリカバリの処理の間、他の運用系ＭＳＣＰ１１は、一時的にロック・アンロック要求データ２１１を受け付けないリカバリモードとなる。しかし排他制御テーブル１３０を再生する作業は待機系ＭＳＣＰ１２内部に蓄積されたデータによって行われるので、人手による操作を必要とせず、またホスト３や他の運用系ＭＳＣＰ１１とのデータの同期なども必要とせず、短時間で完了する。運用系ＭＳＣＰ１１のリカバリモードは、ごく短時間で終了して通常の動作に戻る。従って、ホスト３の動作を一時停止もしくは制限する必要はない。
【０１０２】
障害が発生した運用系ＭＳＣＰ１１ｘが復帰しても、運用系ＭＳＣＰ１２ｘを元の待機系ＭＳＣＰ１２に戻す必要はなく、そのまま運用系ＭＳＣＰ１１としての動作を継続させることができる。そのかわり、リカバリの処理が行われた後の疎結合システム１には待機系ＭＳＣＰ１２が存在しないので、復帰したＭＳＣＰは待機系ＭＳＣＰ１２としてネットワーク２に接続して疎結合システム１に参加させるとよい。
【０１０３】
つまり、本実施の形態によって、ホスト３の動作を停止することなく、運用系ＭＳＣＰ１１のリカバリを行うことができる。この動作には、運用系ＭＳＣＰ１１と同一の性能を持つＭＳＣＰ１０を疎結合システム１に１台追加して待機系ＭＳＣＰ１２とするだけでよい。ホスト３および運用系ＭＳＣＰ１１に障害を検出する機能を追加する必要はなく、またホスト３にＭＳＣＰ１０と連携するモジュールを追加する必要もない。従って、本実施の形態を疎結合システム１に適用するために必要なコストは小さい。
【０１０４】
なお、本実施の形態は、待機系ＭＳＣＰ１２がネットワーク２上で、ホスト３と運用系ＭＳＣＰ１１との間の通信データを監視できることが前提となる。ネットワーク２がイーサネット（登録商標）であれば、基本的には接続された全てのホスト３およびＭＳＣＰ１０がネットワーク２上の全ての通信データを受信することが可能である。
【０１０５】
ただし、たとえばネットワーク２における接続にスイッチングハブを使用している場合などで、自身宛ではない通信データを受信できない場合がある。その場合は、全てのホスト３および運用系ＭＳＣＰ１１が、ホスト３と運用系ＭＳＣＰ１１との間の通信をブロードキャストで送信するようにすれば、本実施の形態を適用することができる。その際にホスト３および運用系ＭＳＣＰ１１に対して必要な設定変更は僅かで済む。
【０１０６】
１台の待機系ＭＳＣＰ１２が複数台の運用系ＭＳＣＰ１１の後継となることはできない。しかし、１つの疎結合システム１に対して待機系ＭＳＣＰ１２は１台だけに制限されることはないので、同時に複数台の運用系ＭＳＣＰ１１に障害が発生することが予想される場合は、想定される障害の規模に応じて、疎結合システム１が２台以上の待機系ＭＳＣＰ１２を持つようにすればよい。
【０１０７】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることは言うまでもないことである。
【産業上の利用可能性】
【０１０８】
疎結合システムを構成するコンピュータにおいて利用可能である。
【図面の簡単な説明】
【０１０９】
【図１】本発明の実施の形態に係る疎結合システムの構成を示すブロック図である。
【図２】本発明の実施の形態に係る疎結合システム上で通信されるデータの基本フォーマットを示すブロック図である。
【図３】ホストとＭＳＣＰとの間での排他制御関連の通信における個別データの内容を示すブロック図である
【図４】ＭＳＣＰ相互間での排他制御関連の通信における個別データの内容を示すブロック図である。
【図５】本発明の実施の形態に係るＭＳＣＰの構成を示すブロック図である。
【図６】本発明の実施の形態に係る排他制御テーブルで資源情報のデータ構成を示すブロック図である。
【図７】本発明の実施の形態に係る排他制御テーブルでタスク情報のデータ構成を示すブロック図である。
【図８】本発明の実施の形態に係る排他制御テーブルで資源情報とタスク情報との間のデータの関係を示すブロック図である。
【図９】ロックデータ蓄積部および応答監視タイマテーブルに記録されるデータエントリの形式を示すブロック図である。
【図１０】ＭＳＣＰが起動されるとＭＳＣＰモード管理部が実行する動作を表すフローチャートである。
【図１１】ＭＳＣＰが自身宛の通信データを受信した場合にＭＳＣＰモード管理部が実行する動作を表すフローチャートである。
【図１２】ＭＳＣＰにおいて排他制御処理部が実行する動作を表すフローチャートである。
【図１３】排他制御処理部が実行するロック要求処理の動作を表すフローチャートである。
【図１４】排他制御処理部が実行するアンロック要求処理の動作を表すフローチャートである。
【図１５】排他制御タイマ部にセットされていた遅延タイマがタイムアウトした場合に排他制御処理部が実行するタイムアウト処理の動作を表すフローチャートである。
【図１６】ＭＳＣＰが自身宛でない通信データを受信した場合にロック処理監視部が実行する動作を表すフローチャートである。
【図１７】ＭＳＣＰが受信した自身宛でない通信データがホストからＭＳＣＰへの要求通信である場合に、ロック処理監視部が実行する動作を表すフローチャートである。
【図１８】タイマ部からの通知を受けた応答監視タイマ処理部が実行する動作を表すフローチャートである。
【図１９】待機系ＭＳＣＰにおいて、待機系運用系切り替え処理部が実行する動作を表すフローチャートである。
【図２０】待機系運用系切り替え処理部が実行する排他制御テーブルの再生の処理の動作を表すフローチャートである。
【図２１】本発明の実施の形態に係るＭＳＣＰが通信データを受信した際の動作をまとめた表である。
【図２２】本発明の実施の形態に係る疎結合システムにおいて、全ての運用系ＭＳＣＰが正常に動作している状態での各ホストおよびＭＳＣＰを表す概念図である。
【図２３】本発明の実施の形態に係る疎結合システムにおいて運用系ＭＳＣＰに障害が発生した状態での各ホストおよびＭＳＣＰを表す概念図である。
【図２４】本発明の実施の形態に係る疎結合システムにおいてリカバリの処理を行った後の各ホストおよびＭＳＣＰを表す概念図である。
【図２５】従来の疎結合システムにおいて、障害が発生していない場合の動作を示す概念図である。
【図２６】従来の疎結合システムにおいて、障害が発生した場合の動作を示す概念図である。
【符号の説明】
【０１１０】
１  疎結合システム
２  ネットワーク
３  ホスト
１０  ＭＳＣＰ
１１  運用系ＭＳＣＰ
１１ｘ  運用系ＭＳＣＰ（故障）
１２  待機系ＭＳＣＰ
１２ｘ  運用系ＭＳＣＰ（後継）
１０１  初期記憶部
１０２  送受信処理部
１０３  ＭＳＣＰモード管理部
１０４  ロック処理監視部
１０５  応答監視タイマ処理部
１０６  待機系運用系切り替え処理部
１０７  排他制御処理部
１０８  タイマ部
１１１  運用モード記憶部
１１２  リカバリフラグ記憶部
１１３  応答カウンタ記憶部
１１５  排他制御タイマ部
１２０  ロックデータ蓄積部
１３０  排他制御テーブル
１４０  応答監視タイマテーブル
２０１  データ
２０２  送信元アドレス（FROM:）
２０３  送信先アドレス（TO:）
２０４  個別データ
２１１  ロック・アンロック要求データ
２１２  メッセージＩＤ
２１３  要求種別
２１４  資源ＩＤ
２１５、２１５ａ、２１５ｂ、２１５ｃ  タスクＩＤ
２１６  遅延タイマ値
２２１  ロック・アンロック要求応答データ
２２２  処理結果
２３１  アテンション通知データ
２３２  状態
２４１  モード移行要求
２４２  自ＭＳＣＰ番号
２４３  要求モード
２５１  モード移行完了応答
３０１  資源情報
３０３  ロックリスト
３０４  ロック待ちリスト
３１１  タスク情報
３１３、３１３ａ、３１３ｂ、３１３ｃ  ロック種別
３１４、３１４ａ、３１４ｂ、３１４ｃ  遅延タイマ値
３１５、３１５ａ、３１５ｂ、３１５ｃ  継続タスクリスト
４０１  エントリ
４０２  エントリアドレス
４０３  状態
４０４  管理ＭＳＣＰ
４１１  エントリ
４１２  タイマＩＤ
【図１】
0005067075.tif 000002
【図２】
0005067075.tif 000003
【図３】
0005067075.tif 000004
【図４】
0005067075.tif 000005
【図５】
0005067075.tif 000006
【図６】
0005067075.tif 000007
【図７】
0005067075.tif 000008
【図８】
0005067075.tif 000009
【図９】
0005067075.tif 000010
【図１０】
0005067075.tif 000011
【図１１】
0005067075.tif 000012
【図１２】
0005067075.tif 000013
【図１３】
0005067075.tif 000014
【図１４】
0005067075.tif 000015
【図１５】
0005067075.tif 000016
【図１６】
0005067075.tif 000017
【図１７】
0005067075.tif 000018
【図１８】
0005067075.tif 000019
【図１９】
0005067075.tif 000020
【図２０】
0005067075.tif 000021
【図２１】
0005067075.tif 000022
【図２２】
0005067075.tif 000023
【図２３】
0005067075.tif 000024
【図２４】
0005067075.tif 000025
【図２５】
0005067075.tif 000026
【図２６】
0005067075.tif 000027