(57)【要約】【課題】運用系計算機１０１から待機系計算機１０２への複写処理を高速化すること。【解決手段】状態複写処理部１１０は、複写対象の情報を運用系計算機１０１から待機系計算機１０２へ複写するに際して、アプリケーション１０８のうち第一のアプリケーション（ＡＰ＃１）の実行が完了したときを同期点とし、この同期点において、メモリの記憶領域４００の中から、ＯＳ１０６の利用領域４０１と第二のアプリケーション（ＡＰ＃２）の利用領域４０３に記憶されている情報のみを抽出し、抽出した情報を、処理継続に必要な複写対象の情報として、運用系計算機１０１から待機系計算機１０２へ転送する。【選択図】  図１
2010218481.tif 000002
【特許請求の範囲】
【請求項１】
入出力装置と記憶装置および処理装置を含む運用系ハードウェア資源と、前記記憶装置に格納されて、前記運用系ハードウェア資源を動作させるための運用系ソフトウェア資源とを有する運用系計算機と、
前記運用系ハードウェア資源に相当する待機系ハードウェア資源と前記運用系ソフトウェア資源に相当する待機系ソフトウェア資源とを有し、前記運用系計算機と結合網を介して接続された待機系計算機とを備え、
前記運用系ソフトウェア資源は、複数のプログラムを有し、前記複数のプログラムに対して、前記ハードウェア資源を仮想化するとともに、前記複数のプログラムの状態を監視して、前記記憶装置の情報を処理するシステム仮想化処理部を備え、
前記システム仮想化処理部は、前記プログラムの実行状態を監視して、前記待機系計算機と状態同期を行うための同期点を検出するとともに、前記検出した同期点において前記記憶装置から処理継続に必要な複写対象の情報を抽出し、前記抽出した複写対象の情報を前記結合網を介して待機系計算機に転送する、高信頼性計算機システム。
【請求項２】
前記システム仮想化処理部は、前記プログラムのうち前記記憶装置に格納された複数のアプリケーションプログラムの実行状態を監視して、前記複数のアプリケーションプログラムの中のいずれかのアプリケーションプログラムの終了点を前記同期点として検出し、前記記憶装置の中から、前記複写対象の情報として、前記同期点後に使用予定のアプリケーションプログラムを抽出する、請求項１に記載の高信頼性計算機システム。
【請求項３】
前記システム仮想化処理部は、前記プログラムのうち前記記憶装置に格納されたアプリケーションプログラムを構成する複数の処理フェーズの実行状態を監視して、前記複数の処理フェーズの中のいずれかの処理フェーズの終了点を前記同期点として検出し、前記記憶装置の中から、前記複写対象の情報として、前記同期点後に使用予定の処理フェーズに属する情報を抽出する、請求項１に記載の高信頼性計算機システム。
【請求項４】
前記運用系ソフトウェア資源は、前記プログラムのうちアプリケーションプログラムを格納する記憶領域の中からガーベージコレクション対象のデータを収集し、前記記憶領域を、前記アプリケーションプログラムで使用するデータを格納する使用中データ格納領域と前記収集したガーベージコレクション対象のデータを格納するための未使用データ格納領域とに分けて構成するアプリケーション仮想化処理部を備え、
前記システム仮想化処理部は、前記アプリケーション仮想化処理部により、前記記憶領域の中に前記未使用データ格納領域が確定された時点を前記同期点とし、前記記憶装置から前記複写対象の情報として、前記使用中データ格納領域に格納されたデータを抽出する、請求項１に記載の高信頼性計算機システム。
【請求項５】
前記システム仮想化処理部は、前記プログラムのうち前記記憶装置に格納された複数のアプリケーションプログラムの実行状態を監視して、前記各アプリケーションプログラムに記載されたアプリケーション・プログラマブル・インタフェースで指示された同期点を前記同期点として検出し、前記記憶装置から前記複写対象の情報として、アプリケーション・プログラマブル・インタフェースで指示された情報以外の情報であって、前記同期点後に使用予定のアプリケーションプログラムを抽出する、請求項１に記載の高信頼性計算機システム。
【請求項６】
入出力装置と記憶装置および処理装置を含む運用系ハードウェア資源と、前記記憶装置に格納されて、前記運用系ハードウェア資源を動作させるための運用系ソフトウェア資源とを有する運用系計算機と、
前記運用系ハードウェア資源に相当する待機系ハードウェア資源と前記運用系ソフトウェア資源に相当する待機系ソフトウェア資源とを有し、前記運用系計算機と結合網を介して接続された待機系計算機とを備え、
前記運用系ソフトウェア資源は、複数のプログラムを有し、前記複数のプログラムに対して、前記ハードウェア資源を仮想化するとともに、前記複数のプログラムの状態を監視して、前記記憶装置の情報を処理するシステム仮想化処理部を備え、
前記システム仮想化処理部は、前記プログラムの実行状態を監視して、前記待機系計算機と状態同期を行うための同期点を検出するステップと、
前記ステップで検出した同期点において前記記憶装置から処理継続に必要な複写対象の情報を抽出するステップと、
前記ステップで抽出した複写対象の情報を前記結合網を介して待機系計算機に転送するステップを実行する、高信頼性計算機システムの構成方法。
【請求項７】
前記システム仮想化処理部は、
前記プログラムのうち前記記憶装置に格納された複数のアプリケーションプログラムの実行状態を監視して、前記複数のアプリケーションプログラムの中のいずれかのアプリケーションプログラムの終了点を前記同期点として検出するステップと、
前記記憶装置の中から、前記複写対象の情報として、前記同期点後に使用予定のアプリケーションプログラムを抽出するステップを実行する、請求項６に記載の高信頼性計算機システムの構成方法。
【請求項８】
前記システム仮想化処理部は、
前記プログラムのうち前記記憶装置に格納されたアプリケーションプログラムを構成する複数の処理フェーズの実行状態を監視して、前記複数の処理フェーズの中のいずれかの処理フェーズの終了点を前記同期点として検出するステップと、
前記記憶装置の中から、前記複写対象の情報として、前記同期点後に使用予定の処理フェーズに属する情報を抽出するステップを実行する、請求項６に記載の高信頼性計算機システムの構成方法。
【請求項９】
前記運用系ソフトウェア資源は、
前記プログラムのうちアプリケーションプログラムを格納する記憶領域の中からガーベージコレクション対象のデータを収集し、前記記憶領域を、前記アプリケーションプログラムで使用するデータを格納する使用中データ格納領域と前記収集したガーベージコレクション対象のデータを格納するための未使用データ格納領域とに分けて構成するアプリケーション仮想化処理部を備え、
前記システム仮想化処理部は、
前記アプリケーション仮想化処理部により、前記記憶領域の中に前記未使用データ格納領域が確定された時点を前記同期点とするステップと
前記記憶装置から前記複写対象の情報として、前記使用中データ格納領域に格納されたデータを抽出するステップを実行する、請求項６に記載の高信頼性計算機システムの構成方法。
【請求項１０】
前記システム仮想化処理部は、
前記プログラムのうち前記記憶装置に格納された複数のアプリケーションプログラムの実行状態を監視して、前記各アプリケーションプログラムに記載されたアプリケーション・プログラマブル・インタフェースで指示された同期点を前記同期点として検出するステップと、
前記記憶装置から前記複写対象の情報として、アプリケーション・プログラマブル・インタフェースで指示された情報以外の情報であって、前記同期点後に使用予定のアプリケーションプログラムを抽出するステップを実行する、請求項６に記載の高信頼性計算機システムの構成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高い信頼性が求められる用途に対し、高信頼性計算機システムを構成する技術に関する
【背景技術】
【０００２】
金融・公共システム分野などミッションクリティカル用途では、システムに対し高い可用性が求められる。一方、ハードウェア高性能化や仮想化機構を用いた業務の集約によりハードウェア故障などに起因するシステム障害の発生の可能性は、従来と比べ高まっていくものと考えられる。
【０００３】
このような高可用性を実現する手法の１つとして、運用系と待機系を用意し、運用系に問題が生じた時点で運用系から待機系に切り替えるクラスタリングと呼ばれるシステム構成技術が知られている。
【０００４】
クラスタリングの手法としては、（ａ）運用系が処理状態を保持しないようにし、運用系の障害を検知した時点で運用系と待機系を切り替えるだけですませる手法や、（ｂ）運用系と待機系の状態を一致させておき、障害を検知した時点で障害検知時点における処理を回復する手法が知られている。（ａ）の手法は運用系に状態を持たせることが困難であることから、（ｂ）の手法の方がより高い適用性を持つ。
【０００５】
上記のように、（ｂ）の手法により高信頼化を実現するためには、運用系と待機系の状態を一致させる必要がある。このためには、（１）特別なハードウェア機構などを利用して２つの系の上で同じ命令列を同時平行して動作させることにより、２つの系の状態を常に一致させる方式や、（２）運用系のメモリ状態を待機系に定期的にコピーすると共に、運用系と待機系の間のＩ／Ｏ操作をバッファリングしておくことにより、定期的に待機系の実行を再開可能なポイントを構成する方式がある。
【０００６】
（２）の方式について、メモリ状態の同期が完了する迄の間Ｉ／Ｏ状態を運用系においてバッファリングしておき、システム間の同期が完了した時点でＩ／Ｏ状態を反映させ、このときを再開点とし、障害が検知された場合には、待機系を再開点から再実行させる技術が示されている（非特許文献１参照）。
【０００７】
この技術では、運用系および待機系のシステムについて、ＯＳを含めたソフトウェアをハイパバイザ上で動作させ、ハイパバイザの機能によって、上記のようなシステム間メモリの同期や、Ｉ／Ｏのバッファリングを行う。ハイパバイザはアプリケーションおよびＯＳを実行するハードウェアシステムをソフトウェアによりシステム全体を仮想化（システム仮想化）する。
【非特許文献１】Ｙ．Ｔａｍｕｒａ,Ｋｅｍａｒｉ: Ｖｉｒｔｕａｌ  ＭａｃｈｉｎｅＳｙｎｃｈｒｏｎａｉｚａｔｉｏｎ  ｆｏｒ  Ｆａｕｌｔ  Ｔｏｌｅｒａｎｃｅｕｓｉｎｇ  ＤｏｍＴ,Ｘｅｎ  Ｓｕｍｍｉｔ  Ｂｏｓｔｏｎ  ２００８，２００８．
【発明の概要】
【発明が解決しようとする課題】
【０００８】
システム仮想化のみを利用した従来の高信頼性計算機システムの構成方法では、システム仮想化上で動作しているソフトウェアの動作を考慮していない。そのため、ソフトウェアの実行状況によって未使用と判定されるような領域の情報についても、複写対象の情報とり、状態同期に伴って、未使用領域の情報も複写されることになる。しかも、未使用領域の情報は、冗長であり、高信頼性計算機システムを構成する場合、複写処理が高速化されず、システム性能が低下することになる。
【０００９】
本発明は、前記従来技術の課題に鑑みて為されたものであり、複写処理を高速化することができる高信頼性計算機システムおよびその構成方法を提供することを目的とするものである。
【課題を解決するための手段】
【００１０】
前記目的を達成するために、本発明は、運用系計算機のプログラムの状態を監視して、運用系計算機と待機系計算機との間で状態同期を行うための同期点を検出するとともに、同期点後の処理継続に必要な情報のみを複写対象の情報として運用系計算機の記憶装置から抽出し、抽出した複写対象の情報を運用系計算機から待機系計算機に複写するようにすることを特徴とするものである。
【発明の効果】
【００１１】
本発明によれば、複写処理を高速化することで、高信頼性計算機システムの実行性能を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施の形態を示す高信頼性計算機システムの構成図である。
【図２】Ｉ／Ｏバッファリング処理を説明するための構成図である。
【図３】運用系計算機と待機系計算機の処理を説明するためのシーケンス図である。
【図４】（ａ）は、アプリケーション実行中のメモリの状態を示す状態図、（ｂ）は、アプリケーション終了時のメモリの状態を示す状態図である。
【図５】アプリケーション終了時を同期点とした場合の高信頼性計算機システムの作用を説明するためのフローチャートである。
【図６】アプリケーション終了時を同期点とする場合の同期点判定処理を説明するためのフローチャートである。
【図７】（ａ）は、処理フェーズ＃１終了時のメモリの状態を示す状態図、（ｂ）は、処理フェーズ＃２終了時のメモリの状態を示す状態図である。
【図８】処理フェーズ切替時を同期点とする場合の同期点判定処理を説明するためのフローチャートである。
【図９】（ａ）は、ＧＣ完了前のメモリの状態を示す状態図、（ｂ）は、ＧＣ完了後のメモリの状態を示す状態図である。
【図１０】ＧＣ完了時を同期点とする場合の同期点判定処理を説明するためのフローチャートである。
【図１１】同期点・対象外領域を指示するためのＡＰＩの構成を説明するための図である。
【発明を実施するための形態】
【実施例１】
【００１３】
以下、本発明の第１実施例を図面に基づいて説明する。本実施例は、アプリケーションプログラム（以下、アプリケーションと称する。）の終了時点を同期点とし、不要な領域（未使用領域）の情報の複写を行わないようにしたものである。
【００１４】
図１は、本発明の第１実施例を示す高信頼性計算機システムの構成図である。高信頼性計算機システムは、運用系計算機１０１と待機系計算機１０１から構成され、運用系計算機１０１と待機系計算機１０２は、ネットワークあるいはバスなどの結合網１０３で接続されているとともに、結合網１０３を介して共有外部記憶装置１２０に接続されている。
【００１５】
運用系計算機１０１は、運用系ハードウェア資源として、ハードウェア１０４を備え、運用系ソフトウェア資源として、システム仮想化処理部１０５と、アプリケーション実行用ＯＳ（Ｏｐｅｒａｔｉｎｇ    Ｓｙｓｔｅｍ）１０６と、アプリケーション仮想化処理部１０７と、アプリケーション１０８および管理ＯＳ１０９を備えて構成される。
【００１６】
待機系計算機１０２は、運用系計算機１０１と基本的に同様の構成であり、待機系ハードウェア資源として、ハードウェア１１４を備え、待機系ソフトウェア資源として、システム仮想化処理部１１５と、アプリケーション実行用ＯＳ１１６と、アプリケーション仮想化処理部１１７と、アプリケーション１１８および管理ＯＳ１１９を備えて構成される。
【００１７】
ハードウェア１０４、１１４は、例えば、入出力装置と、記憶装置（以下、メモリと称する。）および処理装置（いずれも図示せず）などを備えて構成されている。各メモリには、制御プログラムや処理プログラムを含む複数のプログラムが格納されているともに、各ソフトウェア資源を構成する情報が格納されている。
【００１８】
システム仮想化処理部１０５は、アプリケーション実行用ＯＳ（Ｏｐｅｒａｔｉｎｇ    Ｓｙｓｔｅｍ）１０６と、アプリケーション仮想化処理部１０７と、アプリケーション１０８および管理ＯＳ１０９に対して、ハードウェア１０４を仮想化して処理を実行し、アプリケーション仮想化処理部１０７は、アプリケーション実行用ＯＳ１０６に対して、アプリケーション１０８を仮想化して処理を実行する。
【００１９】
例えば、システム仮想化処理部１０５は、アプリケーション実行用ＯＳとアプリケーション１０８の実行状態を監視して、待機系計算機１０２と状態同期を行うための同期点を検出するとともに、検出した同期点において、メモリから処理継続に必要な複写対象の情報を抽出し、抽出した複写対象の情報を結合網１０３を介して待機系計算機１０２に転送する。
【００２０】
具体的には、システム仮想化処理部１０５は、本発明の特徴的な処理である状態複写処理部１１０を備えている。この状態複写処理部１１０は、システム仮想化処理部１０５の上で動作するＯＳ１０６と、アプリケーション仮想化処理部１０７およびアプリケーション１０８の利用するメモリの状態に関する状態情報を複写対象の情報としてメモリから抽出し、抽出した状態情報を、結合網１０３を介して待機系計算機１０２へ転送し、待機系計算機１０２に状態情報の複写を指示する。
【００２１】
一方、運用系計算機１０１に障害が生じた場合、運用系計算機１０１による処理から待機系計算機１０２による処理への切り替えが実行され、待機系計算機１０２は、運用系計算機１０１から複写された状態情報を基に動作を実行する。これにより、高信頼性計算機システムとしては、運用系計算機１０１に障害が生じても、運用系計算機１０１での処理が待機系計算機１０２によって継続されることになる。
【００２２】
運用系計算機１０１から待機系計算機１０２へ動作を切り替えるためには、状態情報を複写した時点と障害が発生した時点との間で発生したＩ／Ｏ動作を再現する必要がある。
【００２３】
このため、運用系計算機１０１は、図２に示すように、ＯＳ１０６からシステム仮想化処理部１０５へ発行されたＩ／Ｏ動作を一度管理ＯＳ１０９へ送り、管理ＯＳ１０９でＩ／Ｏ動作のバッファリングを行い、バッファリングに伴うデータをバッファ２０１に保持させる。管理ＯＳ１０９でバッファリングされたＩ／Ｏ動作は、運用系計算機１０１から待機系計算機１０２への状態情報の複写が完了した時点で、システム仮想化部１０５によってバッファ２０１からハードウェア１０４に反映される。ハードウェア１０４に反映されたＩ／Ｏ動作については、外部からの入力情報を運用系計算機１０１と待機系計算機１０２に送付することで、同様に運用系計算機１０１と待機系計算機１０２でバッファリングされる。
【００２４】
このシーケンスを図３に示す。図３は、運用系計算機１０１の処理シーケンス３０１と待機系計算機１０２の処理シーケンス３０２を示している。まず、運用系計算機１０１が同期点３０３を検出したときに、この同期点３０３において、運用系計算機１０１は、メモリの状態情報３０４を待機系計算機１０２に複写する。この後、運用系計算機１０１は、同期点３０３以降のＩ／Ｏ動作をバッファリングする（３０５）。
【００２５】
次に、運用系計算機１０１がＩ／Ｏ動作をバッファリングしている過程で、障害が発生した場合は、障害発生点３０６で運用系計算機１０１から待機系計算機１０２への切り替えが実行される。この切り替えが実行されると、待機系計算機１０２は、障害発生点３０６に対応した開始点３０７から、複写された状態情報３０４を基に処理を継続する。
【００２６】
この際、同期点３０３から障害発生点３０６までのＩ／Ｏ動作は状態情報３０４に反映されていないため、待機系計算機１０２は、複写された状態情報３０４を基に開始点３０７から処理を再開することなる。これにより、高信頼性計算機システムとしては、運用系計算機１０１に障害が生じても、運用系計算機１０１での処理が待機系計算機１０２によって継続されることになる。
【００２７】
次に、アプリケーション１０８の実行に伴うメモリの状態を図４（ａ）、（ｂ）に示す。図４（ａ）は、アプリケーション１０８実行中におけるメモリの状態を示している。この場合、メモリの記憶領域４００は、ＯＳ１０６の利用領域４０１と、第一のアプリケーション（ＡＰ＃１）の利用領域４０２と、第二のアプリケーション（ＡＰ＃２）の利用領域４０３と、未使用領域４０４から構成される。
【００２８】
図４（ｂ）は、第一のアプリケーション（ＡＰ＃１）の実行が終了（完了）した状態を示している。この場合、メモリの記憶領域４００は、ＯＳ１０６の利用領域４０１と、実行終了領域４０５と、第二のアプリケーション（ＡＰ＃２）の利用領域４０３と、未使用領域４０４から構成される。実行終了領域４０５は、第一のアプリケーション（ＡＰ＃１）が使用していた利用領域４０２に対応する領域であって、未使用領域とみなされる。
【００２９】
ここで、従来の高信頼性計算機システムのように、アプリケーション１０８の状態を考慮せずに、メモリの記憶領域４００内の情報を全て運用系計算機１０１から待機系計算機１０２へ複写すると、ＯＳ１０６の利用領域４０１と、第一のアプリケーション（ＡＰ＃１）の利用領域４０２と、第二のアプリケーション（ＡＰ＃２）の利用領域４０３および未使用領域４０４に関する情報が全て運用系計算機１０１から待機系計算機１０２へ複写されることになる。
【００３０】
この場合、図４（ｂ）の状態では、未使用領域４０４と実行終了領域４０５の内容は、待機系計算機１０２で処理を継続するためには不要である。このため、第一のアプリケーション（ＡＰ＃１）の実行が完了したにもかかわらず、メモリの記憶領域４００内の情報を全て運用系計算機１０１から待機系計算機１０２へ複写すると、待機系計算機１０２で処理を継続するために不要な情報まで複写されるので、それだけ状態情報を複写するのに余計な時間を要し、処理速度が低下することになる。
【００３１】
そこで、本実施例では、アプリケーション１０８の終了時点を同期点とし、不要な領域（未使用領域）の情報の複写を行わないことで、状態情報の複写処理を高速化することとしている。
【００３２】
次に、アプリケーション１０８の終了時点を同期点としたときの作用を図５のフローチャートに従って説明する。図５に示す処理は、システム仮想化処理部１０５における状態複写処理部１１０によって実行される。状態複写処理部１１０による処理は、システム仮想化を実現する過程で、適当な要因に対応して起動される。
【００３３】
まず、状態複写処理部１１０は、ステップ４０１で処理を開始し、続いて、システム仮想化処理部１０５上で動作しているＯＳ１０６、アプリケーション仮想化処理部１０７、アプリケーション１０８の動作を調査し、アプリケーション１０８の実行状態を基に同期点か否かを判別し（ステップ５０２）、アプリケーション１０８の実行が終了しているときには、ステップ５０３の処理に移行し、アプリケーションの実行が終了していないときには、ステップ５０９の処理に移行し、このルーチンでの処理を終了する。
【００３４】
ステップ５０２の具体的な処理内容を図６に示す。図６に示す処理では、同期点の判定および対象外領域集合の計算が状態複写処理部１１０によって実行される。
【００３５】
まず、状態複写処理部１１０は、ステップ６０１で処理を開始し、次に、アプリケーション１０８が終了したか否かを判定する（ステップ６０２）。ステップ６０２で、アプリケーション１０８が終了したと判定した場合、状態複写処理部１１０は、同期点であるとして、判定値Ｓを、例えば、「１」にし、対象外領域Ｎを、アプリケーションの実行を終了した実行終了領域とし（ステップ６０３）、その後、ステップ６０５に移行して、このルーチンでの処理を完了する。
【００３６】
この場合、アプリケーション１０８のうち第一のアプリケーション（ＡＰ＃１）の実行が終了し、メモリの記憶領域４００が図４（ｂ）に示すように構成された場合、アプリケーション（ＡＰ＃１）が使用していた使用領域４０２に対応する実行終了領域４０５が複写対象から除かれ、対象外領域Ｎとされる。
【００３７】
一方、ステップ６０２で、アプリケーション１０８が終了していないと判定した場合、状態複写処理部１１０は、非同期点であるとして、判定値Ｓを、例えば、「０」にし（ステップ６０４）、その後、ステップ６０５に移行して、このルーチンでの処理を完了する。
【００３８】
この場合、状態複写処理部１１０は、例えば、メモリの記憶領域４００が図４（ａ）に示すように構成され、第一のアプリケーション（ＡＰ＃１）と第二のアプリケーション（ＡＰ＃２）が実行状態にあるときには、同期点でないと判別することになる。
【００３９】
同期点の判定処理を終了し、同期点と判定したときには、状態複写処理部１１０は、図５のステップ５０３の処理に移行する。ステップ５０３では、状態複写処理部１１０は、変数Ｒにシステム仮想化処理部１０５上で動作しているＯＳ１０６、アプリケーション仮想化処理部１０７、アプリケーション１０８の利用している領域の集合を、変数Ｎに複写対象外の領域集合を求める。
【００４０】
例えば、アプリケーション１０８のうち第一のアプリケーション（ＡＰ＃１）の実行が終了し、メモリの記憶領域４００が図４（ｂ）に示すように構成された場合、メモリの記憶領域４００が４つの領域（ＯＳ１０６の利用領域４０１と、実行終了領域４０５と、第二のアプリケーション（ＡＰ＃２）の利用領域４０３と、未使用領域４０４）に分割されているので、領域集合の変数Ｒが４として求められ、対象外領域集合の変数Ｎが２として求められる。この場合、対象外領域集合は、実行終了領域４０５と未使用領域４０４から構成される。
【００４１】
次に、状態複写処理部１１０は、領域集合の変数Ｒが空集合か否かを判定し（ステップ５０４）、空集合でない場合、ステップ５０５の処理に移行し、領域集合の変数Ｒから変数ｒへ要素を１つ取り出す。続いて、状態複写処理部１１０は、変数ｒが対象外領域集合の変数Ｎに含まれるか否かを判定し（ステップ５０６）、変数ｒが対象外領域集合の変数Ｎに含まれる場合には、ステップ５０４の処理に戻り、領域集合の変数Ｒが空集合となるまで、ステップ５０４からステップ５０６の処理を繰り返す。
【００４２】
ステップ５０６で、変数ｒが対象外領域集合の変数Ｎに含まれないと判定したときには、状態複写処理部１１０は、ステップ５０７に移行して、対象外領域から外れた領域、すなわち、複写対象となる領域である、ＯＳ１０６の利用領域４０１と第二のアプリケーション（ＡＰ＃２）の利用領域４０３に格納された情報を、複写対象の情報として、運用系計算機１０１から待機系計算機１０２へ複写するための処理を実行する。
【００４３】
また、ステップ５０４で、領域集合の変数Ｒが空集合であると判定したときには、状態複写処理部１１０は、複写対象の情報を運用系計算機１０１から待機系計算機１０２へ全て複写したとして、ステップ５０８の処理に移行して、バッファリングされていたＩ／Ｏ動作をハードウェア１０４に反映して、ステップ５０９の処理に移行し、このルーチンでの処理を終了する。
【００４４】
本実施例によれば、アプリケーション１０８のうち第一のアプリケーション（ＡＰ＃１）の実行が終了したときを同期点とし、この同期点において、メモリの記憶領域４００の中から、ＯＳ１０６の利用領域４０１と第二のアプリケーション（ＡＰ＃２）の利用領域４０３に記憶されている情報（同期点後に使用予定のアプリケーションプログラムに属する情報）のみを抽出し、抽出した情報を、処理継続に必要な複写対象の情報として、運用系計算機１０１から待機系計算機１０２へ複写するようにしたため、処理継続に必要な情報の複写処理を高速化することができ、高信頼性計算機システムの実行性能の向上に寄与することができる。
【００４５】
本実施例においては、アプリケーション１０８のうち第一のアプリケーション（ＡＰ＃１）の実行が終了したときを同期点としたが、第二のアプリケーション（ＡＰ＃２）の実行が終了したときを同期点とすることもできる。この場合は、ＯＳ１０６の利用領域４０１に記憶されている情報のみが処理継続に必要な複写対象の情報として、運用系計算機１０１から待機系計算機１０２へ複写されることになる。
【実施例２】
【００４６】
次に、本発明の第２実施例を図７に基づいて説明する。本実施例は、アプリケーション１０８を構成する処理フェーズの切替点を同期点としたものであり、他の構成は、第１実施例と同様である。
【００４７】
まず、アプリケーション１０８を複数の処理フェーズ＃１〜＃ｎで構成した場合のメモリの状態として、例えば、第一の処理フェーズ＃１におけるメモリの状態を図７（ａ）に示し、第二の処理フェーズ＃２におけるメモリの状態を図７（ｂ）に示す。
【００４８】
図７（ａ）に示すメモリの記憶領域４００は、ＯＳ使用領域４１１と、アプリケーション１０８の利用領域４１２および未使用領域４１３から構成される。アプリケーション１０８の利用領域４１２には、第一の処理フェーズ＃１のみで利用されるアプリケーション利用領域４１４、４１５、４１６が含まれている。このため、第二の処理フェーズ＃２にプログラムが以降すると、第一の処理フェーズ＃１におけるアプリケーション利用領域４１４、４１５、４１６は、それぞれ処理フェーズが終了したことを示す実行終了領域４１７、４１８、４１９となり、アプリケーション１０８の利用領域４１２はアプリケーション利用領域４２０となる。
【００４９】
ここで、従来の高信頼性計算機システムのように、アプリケーション１０８の状態を考慮せずに、メモリの記憶領域４００内の情報を全て運用系計算機１０１から待機系計算機１０２へ複写すると、ＯＳ使用領域４１１と、アプリケーションの利用領域４１２または４２０、および未使用領域４１３に関する情報が全て運用系計算機１０１から待機系計算機１０２へ複写されることになる。
【００５０】
この場合、図７（ｂ）の状態では、未使用領域４１３と実行終了領域４１７、４１８、４１９の内容は、待機系計算機１０２で処理を継続するためには不要である。
【００５１】
このため、第一の処理フェーズ＃１の実行が終了したにもかかわらず、メモリの記憶領域４００内の情報を全て運用系計算機１０１から待機系計算機１０２へ複写すると、待機系計算機１０２で処理を継続するのに不要な情報まで複写されるので、それだけ状態情報を複写するのに余計な時間を要し、処理速度が低下することになる。
【００５２】
そこで、本実施例では、処理フェーズの切替点を同期点とし、不要な領域（未使用領域４１３、実行終了領域４１７、４１８、４１９）の情報の複写を行わないことで、状態情報の複写処理を高速化することとしている。
【００５３】
次に、処理フェーズの切替点を同期点としたときの作用を図８のフローチャートに従って説明する。なお、本実施例における処理は、同期点の判定と対象外領域Ｎの設定以外は、第１実施例と同様であるので、本実施例では、同期点の判定と対象外領域Ｎの設定処理についてのみ説明する。また、図８に示す処理は、システム仮想化処理部１０５における状態複写処理部１１０によって実行される。
【００５４】
まず、状態複写処理部１１０は、ステップ８０１で処理を開始し、次に、アプリケーション１０８の実行状態を監視して、処理フェーズが終了したか否かを判定する（ステップ８０２）。ステップ８０２で、例えば、処理フェーズ＃１が終了したと判定した場合、状態複写処理部１１０は、同期点であるとして、判定値Ｓを、例えば、「１」にし、対象外領域Ｎを、処理フェーズの実行を終了した実行終了領域とし（ステップ８０３）、その後、ステップ８０５に移行して、このルーチンでの処理を完了する。
【００５５】
この場合、アプリケーション１０８のうち第一の処理フェーズ＃１の実行が完了し、メモリの記憶領域４００が図７（ｂ）に示すように構成された場合、第一の処理フェーズ＃１におけるアプリケーション利用領域４１４、４１５、４１６は、それぞれ実行終了領域４１７、４１８、４１９であるとして、複写対象から除かれ、対象外領域Ｎとされる。
【００５６】
すなわち、状態複写処理部１１０は、複写対象から外れた対象外領域Ｎを旧処理フェーズ（処理フェーズ＃１）の使用領域４１２から新処理フェーズ（処理フェーズ＃２）の使用領域４２０を除いた領域（実行終了領域４１７、４１８、４１９、未使用領域４１３）とする処理を実行する。
【００５７】
一方、ステップ８０２で、処理フェーズが終了していないと判定した場合、状態複写処理部１１０は、非同期点であるとして、判定値Ｓを、例えば、「０」にし（ステップ８００４）、その後、ステップ８０５に移行して、このルーチンでの処理を完了する。
【００５８】
本実施例によれば、アプリケーション１０８のうち第一の処理フェーズ＃１の実行が終了した、処理フェーズの切替点を同期点とし、この同期点において、メモリの記憶領域４００の中から、ＯＳ１０６の利用領域４１１と、アプリケーション利用領域４２０から実行終了領域４１７、４１８、４１９を除いた領域に記憶されている情報（同期点後に使用予定の処理フェーズに属する情報）のみを抽出し、抽出した情報を、処理継続に必要な複写対象の情報として、運用系計算機１０１から待機系計算機１０２へ複写するようにしたため、処理継続に必要な情報の複写処理を高速化することができ、高信頼性計算機システムの実行性能の向上に寄与することができる。
【００５９】
本実施例においては、アプリケーション１０８のうち第一の処理フェーズ＃１の実行が終了した、処理フェーズの切り替え点を同期点としたが、他の処理フェーズの実行が終了した、処理フェーズの切り替え点を同期点とすることもできる。この場合は、同期点後に使用予定の処理フェーズに属する情報のみが処理継続に必要な複写対象の情報として、運用系計算機１０１から待機系計算機１０２へ複写されることになる。
【実施例３】
【００６０】
次に、本発明の第３実施例を図面に基づいて説明する。本実施例は、アプリケーション１０８の未使用領域を確定した時点を同期点としたものであり、他の構成は、第１実施例と同様である。
【００６１】
具体的には、本実施例は、アプリケーション仮想化処理部１０７がガーベージコレクション（ＧＣ）を備えた実行系である場合に、ガーベージコレクション（ＧＣ）によって未使用領域を確定した時点を同期点としたものである。
【００６２】
図９（ａ）に、ガーベージコレクション（ＧＣ）前のメモリの状態を示し、図９（ｂ）に、ガーベージコレクション（ＧＣ）後のメモリの状態を示す。
【００６３】
図９（ａ）に示すメモリの記憶領域４００は、ＯＳ使用領域４２１と、アプリケーションの利用領域４２１および未使用領域４２３から構成される。アプリケーションの利用領域４２１には、複数の未使用データ領域４２４が分散して存在している。
【００６４】
ここで、従来の高信頼性計算機システムのように、アプリケーション１０８の状態を考慮せずに、メモリの記憶領域４００内の情報を全て運用系計算機１０１から待機系計算機１０２へ複写すると、ＯＳ使用領域４２１と、アプリケーションの利用領域４２１および未使用領域４２３に関する情報が全て運用系計算機１０１から待機系計算機１０２へ複写されることになる。
【００６５】
この場合、図９（ａ）の状態では、未使用領域４２３と複数の未使用データ領域４２４の内容は、待機系計算機１０２で処理を継続するためには不要である。
【００６６】
このため、アプリケーション１０８の利用領域４２１に属する複数の未使用データ領域４２４が確定していない状態で、メモリの記憶領域４００内の情報を全て運用系計算機１０１から待機系計算機１０２へ複写すると、待機系計算機１０２で処理を継続するのに不要な情報まで複写されるので、それだけ状態情報を複写するのに余計な時間を要し、処理速度が低下することになる。
【００６７】
そこで、本実施例では、ガーベージコレクション（ＧＣ）によって未使用領域を確定した時点を同期点とし、不要な領域（未使用領域４２３、複数の未使用データ領域４２４）の情報の複写を行わないことで、状態情報の複写処理を高速化することとしている。
【００６８】
次に、ガーベージコレクション（ＧＣ）によって未使用領域を確定した時点を同期点としたときの作用を図１０のフローチャートに従って説明する。なお、本実施例における処理は、ガーベージコレクション（ＧＣ）の判定と対象外領域Ｎの設定以外は、第１実施例と同様であるので、本実施例では、ガーベージコレクション（ＧＣ）の判定と対象外領域Ｎの設定処理についてのみ説明する。また、図１０に示す処理は、アプリケーション仮想化処理部１０７と状態複写処理部１１０によって実行される。
【００６９】
まず、状態複写処理部１１０は、ステップ１００１で処理を開始し、アプリケーション仮想化処理部１０７にガーベージコレクション（ＧＣ）の実行を指示し、ガーベージコレクション（ＧＣ）が完了したか否かを判定する（ステップ１００２）。
【００７０】
このとき、アプリケーション仮想化処理部１０７は、ガーベージコレクション（ＧＣ）を用いて、アプリケーション仮想化利用領域４２１に属する複数の未使用データ領域４２４に関する情報を収集し、収集した情報を、図９（ｂ）に示すように、アプリケーション仮想化利用領域４２５のうち未使用データ領域４２６内に格納し、アプリケーション仮想化利用領域４２５を、未使用データを格納する未使用データ領域４２６と使用中のデータを格納する使用中データ領域４２７とに分けて構成するための処理を実行し、未使用データ領域４２６が確定したときに（未使用データの収集が終了したとき）、その旨を状態複写処理部１１０に通知する。
【００７１】
状態複写処理部１１０は、アプリケーション仮想化処理部１０７から、未使用データ領域４２６が確定した旨の通知を受けたときには、ガーベージコレクション（ＧＣ）の完了によって未使用領域が確定した時点を示す同期点であるとして、判定値Ｓを、例えば、「１」にし、対象外領域Ｎを、ガーベージコレクション（ＧＣ）の完了によって確定した未使用領域とし（ステップ１００３）、その後、ステップ１００５に移行して、このルーチンでの処理を完了する。
【００７２】
ガーベージコレクション（ＧＣ）の完了によって未使用領域が確定し、メモリの記憶領域４００が図９（ｂ）に示すように構成された場合、アプリケーション仮想化利用領域４２５のうち未使用データ領域４２６は、複写対象領域から除かれ、対象外領域Ｎとされる。
【００７３】
この場合、状態複写処理部１１０は、対象外領域Ｎとは異なる領域、すなわち、複写対象となる領域である、ＯＳ１０６の利用領域４２１と使用中データ領域４２７に格納された情報を、運用系計算機１０１から待機系計算機１０２へ複写するための処理を実行する。
【００７４】
一方、ステップ１００２で、ガーベージコレクション（ＧＣ）が完了していないと判定した場合、状態複写処理部１１０は、非同期点であるとして、判定値Ｓを、例えば、「０」にし（ステップ１００４）、その後、ステップ８０５に移行して、このルーチンでの処理を完了する。
【００７５】
本実施例によれば、ガーベージコレクション（ＧＣ）の完了によって未使用領域が確定した時点を同期点とし、この同期点において、メモリの記憶領域４００に記憶されている情報として、ＯＳ１０６の利用領域４２１と、アプリケーション仮想化利用領域４２５の中の使用中データ領域４２７に記憶されている情報のみを抽出し、抽出した情報を、処理継続に必要な複写対象の情報として、運用系計算機１０１から待機系計算機１０２へ複写するようにしたため、処理継続に必要な情報の複写処理を高速化することができ、高信頼性計算機システムの実行性能の向上に寄与することができる。
【実施例４】
【００７６】
次に、本発明の第４実施例を図面に基づいて説明する。本実施例は、システム仮想化処理部１０５上で動作するＯＳ１０６、アプリケーション仮想化処理部１０７、または、アプリケーション１０８からのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）呼び出しによって、同期点と対象外領域を指示し、ＡＰＩにより指示された点を同期点とし、未使用領域の状態複写を行わないことで、状態複写処理を高速化するものであり、他の構成は第１実施例と同様である。
【００７７】
具体的には、プログラムを作成するときに、例えば、アプリケーション１０８のプログラムを作成するときに、図１１に示すように、アプリケーション１０８の実行に関する情報の中にＡＰＩに関する情報を予め作成しておく。
【００７８】
例えば、アプリケーション１０８のプログラム上の地点のうち、あるアプリケーションの終了を示す地点あるいや処理フェーズの切り替え点を示す地点を呼び出し地点とし、この呼び出し地点が同期点であることを示すＡＰＩ１１０１を、予め関数「ｉｓ＿ｓｙｎｃ＿ｐｏｉｎｔ」で作成するとともに、複写対象領域とは異なる対象外領域（状態複写の対象としない領域、例えば、図４（ｂ）の場合には、実行終了領域４０５、未使用領域４０４）であることを示すＡＰＩ１１０２を、予め関数「ｒｅｇｉｓｔｅｒ＿ｕｎｕｓｅｄ」で作成しておく。
【００７９】
アプリケーション１０８にＡＰＩ１１０１やＡＰＩ１１０２が作成されている場合、アプリケーション１０８は、その処理の過程で、ＡＰＩ１１０１になったときには、ＡＰＩ呼び出しにより、呼び出し地点が同期点であることをシステム仮想化処理部１０５に指示するとともに、ＡＰＩ１１０２を複写対象領域とは異なる対象外領域でることを指示する。
【００８０】
これらの指示に応答して、システム仮想化処理部１０５は、ＡＰＩ呼び出しにより、同期点であると判定し、この同期点において、メモリの記憶領域４００の中から、ＡＰＩ１１０２で指示された対象外領域とは異なる複写対象領域の情報として、例えば、メモリの記憶領域４００が、図４（ｂ）の場合には、ＯＳ１０６の利用領域４０１と第二のアプリケーション（ＡＰ＃２）の利用領域４０３に記憶されている情報（例えば、同期点後に使用予定のアプリケーションプログラム）のみを抽出し、抽出した情報を、処理継続に必要な複写対象の情報として、運用系計算機１０１から待機系計算機１０２へ複写する。
【００８１】
本実施例によれば、アプリケーション１０８からＡＰＩ呼び出しに応答して、このＡＰＩ呼び出し地点を同期点とし、この同期点において、メモリの記憶領域４００の中から、ＡＰＩ１１０２で指示された対象外領域とは異なる複写対象領域の情報のみを抽出し、抽出した情報を、処理継続に必要な複写対象の情報として、運用系計算機１０１から待機系計算機１０２へ複写するようにしたため、処理継続に必要な情報の複写処理を高速化することができ、高信頼性計算機システムの実行性能の向上に寄与することができる。
【産業上の利用可能性】
【００８２】
本発明は、運用系計算機１０１と待機系計算機１０２から構成された高信頼性計算機システムにおいて、運用系計算機１０１と待機系計算機１０２との間の状態複写に要する性能を向上するために用いることができる。
【符号の説明】
【００８３】
１０１・・・運用系計算機
１０２・・・待機系計算機
１０３・・・結合網
１０４、１１４・・・ハードウェア
１０５、１１５・・・システム仮想化処理部
１０６、１１６・・・ＯＳ
1０７、１１７・・・アプリケーション仮想化処理部
１０８、１１８・・・アプリケーション
１０９、１１９・・・管理ＯＳ
１１０・・・状態複写処理部
【図１】
2010218481.tif 000003
【図２】
2010218481.tif 000004
【図３】
2010218481.tif 000005
【図４】
2010218481.tif 000006
【図５】
2010218481.tif 000007
【図６】
2010218481.tif 000008
【図７】
2010218481.tif 000009
【図８】
2010218481.tif 000010
【図９】
2010218481.tif 000011
【図１０】
2010218481.tif 000012
【図１１】
2010218481.tif 000013