(57)【特許請求の範囲】
【請求項１】
コンピュータ上で動作するＯＳ（Operating  System）に発生するＯＳ障害を検出するＯＳ障害検出手段を備えたＯＳ障害検出システムであって、前記ＯＳ障害検出手段は前記ＯＳ障害の監視対象である前記ＯＳとは独立の外部に存在し、かつ、前記ＯＳ障害検出手段は、前記ＯＳ障害が発生した際に前記ＯＳが表示部に対して出力する画面出力命令をＯＳ障害時動作パターンとしてあらかじめ記憶するＯＳ障害時動作パターンデータベースと、前記ＯＳが前記表示部に出力する画面出力命令を捕捉する画面出力命令取得部と、前記画面出力命令取得部にて捕捉された前記画面出力命令と前記ＯＳ障害時動作パターンデータベースにあらかじめ記憶されている前記ＯＳ障害時動作パターンとを比較し、一致しているか否かに基づいて、前記ＯＳ障害が発生したか否かを判定する判定部とを少なくとも備えていることを特徴とするＯＳ障害検出システム。
【請求項２】
前記ＯＳ障害時動作パターンデータベースにあらかじめ記憶される前記ＯＳ障害時動作パターンは、前記ＯＳ障害の障害種別ごとに対応付けて用意されていることを特徴とする請求項１に記載のＯＳ障害検出システム。
【請求項３】
前記ＯＳが前記ＯＳ障害の障害種別の如何により複数個の画面出力命令を連続的に前記表示部に出力する場合、前記ＯＳ障害時動作パターンデータベースにあらかじめ記憶される前記ＯＳ障害時動作パターンは、当該ＯＳ障害の障害種別に対応付けて複数個の画面出力命令を登録し、前記判定部は、前記画面出力命令取得部にて捕捉された一連の前記画面出力命令と前記ＯＳ障害時動作パターンデータベースにあらかじめ記憶されている複数個の画面出力命令からなる前記ＯＳ障害時動作パターンのすべてとが一致しているか否かに基づいて、前記ＯＳ障害が発生したか否かを判定することを特徴とする請求項２に記載のＯＳ障害検出システム。
【請求項４】
前記ＯＳ障害検出手段が仮想マシン上で動作するゲストＯＳのＯＳ障害を検出する場合、当該仮想マシンの外部に存在し、当該仮想マシンの動作をモニタする仮想マシンモニタ上に前記ＯＳ障害検出手段を配置し、前記ＯＳ障害検出手段がハードウェア内のプロセッサ上で動作するＯＳのＯＳ障害を検出する場合、当該プロセッサと前記表示部を駆動するためのビデオアダプタとの間に介在させる形態で前記ＯＳ障害検出手段を配置することを特徴とする請求項１ないし３のいずれかに記載のＯＳ障害検出システム。
【請求項５】
コンピュータ上で動作するＯＳ（Operating  System）に発生するＯＳ障害を検出するＯＳ障害検出手段を有するＯＳ障害検出方法であって、前記ＯＳ障害検出手段は前記ＯＳ障害の監視対象である前記ＯＳとは独立の外部に存在し、かつ、前記ＯＳ障害検出手段は、前記ＯＳ障害が発生した際に前記ＯＳが表示部に対して出力する画面出力命令をＯＳ障害時動作パターンとしてあらかじめ記憶し、前記ＯＳが前記表示部に出力する画面出力命令を捕捉することにより、捕捉した該画面出力命令とあらかじめ記憶されている前記ＯＳ障害時動作パターンとを比較し、一致しているか否かに基づいて、前記ＯＳ障害が発生したか否かを判定することを特徴とするＯＳ障害検出方法。
【請求項６】
あらかじめ記憶される前記ＯＳ障害時動作パターンは、前記ＯＳ障害の障害種別ごとに対応付けて用意されていることを特徴とする請求項５に記載のＯＳ障害検出方法。
【請求項７】
前記ＯＳが前記ＯＳ障害の障害種別の如何により複数個の画面出力命令を連続的に前記表示部に出力する場合、あらかじめ記憶される前記ＯＳ障害時動作パターンとして、当該ＯＳ障害の障害種別に対応付けて複数個の画面出力命令を登録し、前記ＯＳが前記表示部に出力する一連の前記画面出力命令を捕捉することにより、捕捉した一連の該画面出力命令とあらかじめ記憶されている複数個の画面出力命令からなる前記ＯＳ障害時動作パターンのすべてとが一致しているか否かに基づいて、前記ＯＳ障害が発生したか否かを判定することを特徴とする請求項６に記載のＯＳ障害検出方法。
【請求項８】
請求項５ないし７のいずれかに記載のＯＳ障害検出方法を、コンピュータによって実行可能なプログラムとして実施していることを特徴とするＯＳ障害検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＯＳ障害検出システム、ＯＳ障害検出方法、ＯＳ障害検出プログラムおよびプログラム記録媒体に関する。
【背景技術】
【０００２】
従来、コンピュータに搭載されているＯＳ（Operating  System）が障害の発生を検出した場合、ＯＳは、障害内容を解析して、コンピュータシステムへの影響を判断し、当該障害が深刻なダメージをもたらす致命的な障害である可能性が高い場合には、エラーメッセージの表示部への出力が可能であれば、該エラーメッセージを出力して、ＯＳ自らの動作を停止する。一方、ＯＳ障害検出システムは、このようなＯＳの動作を停止させるような致命的な障害の発生を検出し、エラー表示処理や復旧処理を行うためのシステムである。
【０００３】
従来のＯＳ障害検出システムの一例が、特許文献１の特開２００５−２３４８７３号公報「コンピュータ、システム復旧方法、プログラムおよび情報記憶媒体」に記載されている。該特許文献１に記載されたＯＳ障害検出システムは、ＯＳにて致命的なエラーが発生したか否かを判定し、致命的なエラーが発生していると判定した場合には、表示部の背景画面の表示を、致命的なエラーが発生している旨を示すブルースクリーン表示を行う代わりに、正常な動作が可能となるように初期化を行うための復帰処理を実行させることを可能とする仕組みを提供している。
【０００４】
つまり、該特許文献１においては、まず、ＯＳの起動前に、ＯＳの書き換えを行い、致命的なエラーが発生しているか否かを判定するカーネルクラッシュ判定モジュールにおいて致命的なエラーの発生を検出した際に、表示部の画面表示をブルースクリーンに設定するブルースクリーン表示モジュールを呼び出す代わりに、復帰処理を実行する復帰処理モジュールを呼び出すように更新する。而して、致命的なエラーであるカーネルクラッシュ（つまりカーネルパニック）が発生した場合、カーネルクラッシュ判定モジュールから迅速に復帰処理モジュールを呼び出して実行させることができる。また、前記特許文献１においては、致命的なエラーであるカーネルクラッシュが発生した場合に、ブルースクリーン表示を行うか、あるいは、復旧処理を行うかをユーザに選択させることも可能としている。
【０００５】
従来のＯＳ障害検出システムの別の例が、特許文献２の特開２００９−１１６６９９号公報「情報処理システム」に記載されている。該特許文献２に記載されたＯＳ障害検出システムは、マスターＯＳと複数のスレーブＯＳとから構成される。複数のスレーブＯＳは、それぞれ、マスターＯＳの動作状況を監視する。ここで、複数のスレーブＯＳによるマスターＯＳの監視は、ウォッチドッグタイマによる正常性の確認や信号の送受信、通信量の監視等によって行う。さらに、複数のスレーブＯＳによりマスターＯＳの監視を行うため、精度良くマスターＯＳの故障を検出することが可能である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２３４８７３号公報（第５−７頁）
【特許文献２】特開２００９−１１６６９９号公報（第４−６頁）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、前記特許文献１に記載の技術には、ＯＳメーカ独自の仕様で改造が困難なプロプライエタリ（Proprietary）なＯＳには適用することが難しいという問題があった。その理由は、ＯＳメーカそれぞれで独自に作成されているＯＳの書き換えを行うべき場所を検索して、検索した当該場所に適合する正しい形式の書き替え処理を吟味することが必要であり、かかる手順を踏んだ後で、初めて、正しい内容に基づく書き替え処理を行うことによって、モジュールの呼び出し先をブルースクリーン表示モジュールか復帰処理モジュールかのいずれかに変更しなければならないからである。
【０００８】
また、前記特許文献２に記載の技術には、マスターＯＳの障害を検出するまでに時間を要し、致命的な障害に即座に対応することができないという問題があった。その理由は、ウォッチドッグタイマによる監視やあらかじめ定めた時間内における信号の送受信状態、通信量等により監視を行うために、マスターＯＳの故障と判断するまでには一定の時間が必要となるからである。
【０００９】
本発明は、かかる問題に鑑みてなされたものであり、致命的なＯＳ障害が発生した場合に、ＯＳの書き換えを行うことなく、迅速に復旧処理を実行することを可能とするＯＳ障害検出システム、ＯＳ障害検出方法、ＯＳ障害検出プログラムおよびプログラム記録媒体を提供することを、その目的としている。
【課題を解決するための手段】
【００１０】
前述の課題を解決するため、本発明によるＯＳ障害検出システム、ＯＳ障害検出方法、ＯＳ障害検出プログラムおよびプログラム記録媒体は、次のような特徴的な構成を採用している。
【００１１】
（１）コンピュータ上で動作するＯＳ（Operating  System）に発生するＯＳ障害を検出するＯＳ障害検出手段を備えたＯＳ障害検出システムであって、前記ＯＳ障害検出手段は前記ＯＳ障害の監視対象である前記ＯＳとは独立の外部に存在し、かつ、前記ＯＳ障害検出手段は、前記ＯＳ障害が発生した際に前記ＯＳが表示部に対して出力する画面出力命令をＯＳ障害時動作パターンとしてあらかじめ記憶するＯＳ障害時動作パターンデータベースと、前記ＯＳが前記表示部に出力する画面出力命令を捕捉する画面出力命令取得部と、前記画面出力命令取得部にて捕捉された前記画面出力命令と前記ＯＳ障害時動作パターンデータベースにあらかじめ記憶されている前記ＯＳ障害時動作パターンとを比較し、一致しているか否かに基づいて、前記ＯＳ障害が発生したか否かを判定する判定部とを少なくとも備えていることを特徴とする。
（２）コンピュータ上で動作するＯＳ（Operating  System）に発生するＯＳ障害を検出するＯＳ障害検出手段を有するＯＳ障害検出方法であって、前記ＯＳ障害検出手段は前記ＯＳ障害の監視対象である前記ＯＳとは独立の外部に存在し、かつ、前記ＯＳ障害検出手段は、前記ＯＳ障害が発生した際に前記ＯＳが表示部に対して出力する画面出力命令をＯＳ障害時動作パターンとしてあらかじめ記憶し、前記ＯＳが前記表示部に出力する画面出力命令を捕捉することにより、捕捉した該画面出力命令とあらかじめ記憶されている前記ＯＳ障害時動作パターンとを比較し、一致しているか否かに基づいて、前記ＯＳ障害が発生したか否かを判定することを特徴とする。
（３）前記（２）に記載のＯＳ障害検出方法を、コンピュータによって実行可能なプログラムとして実施していることを特徴とするＯＳ障害検出プログラム。
【発明の効果】
【００１２】
本発明のＯＳ障害検出システム、ＯＳ障害検出方法、ＯＳ障害検出プログラムおよびプログラム記録媒体によれば、以下のような効果を奏することができる。
【００１３】
第１の効果は、致命的なＯＳ障害が発生した場合に、ＯＳの書き換え（改造）を行ったり、ＯＳへ専用ドライバを追加したりすることなく、発生したＯＳ障害を確実に検出して、復旧処理を実行させることができることにある。この結果、ＯＳの書き換え（改造）やドライバの追加が困難なプロプライエタリなＯＳに対しても、本発明におけるＯＳ障害の検出の仕組みを容易に適用することが可能となる。
【００１４】
その理由は、ＯＳ障害の監視対象となるＯＳ（例えば、仮想マシン（ＶＭ：Virtual  Machine）上のゲストＯＳを監視対象とする場合には、該ゲストＯＳ、ハードウェア内のプロセッサ上で動作するＯＳを監視対象とする場合には、該ＯＳ）の外部に存在するＯＳ障害検出手段（例えば、仮想マシン上のゲストＯＳを監視する場合には、該仮想マシンとは独立して外部に存在する仮想マシンモニタ（ＶＭＭ：Virtual  Machine  Monitor）内に配置したＯＳ障害検出手段、ハードウェア内のプロセッサ上で動作するＯＳを監視する場合には、該プロセッサとは独立したデバイスとして外部に配置したＯＳ障害検出手段）において、監視対象のＯＳが表示部に出力する画面出力命令の動作を監視し、当該ＯＳのＯＳ障害時動作パターンと同一の画面出力命令が送出されているか否かを監視することにより、ＯＳ障害の有無を検出し、ＯＳ障害を検出した場合は、直ちに、復旧処理を起動する仕組みを採用しているためである。
【００１５】
第２の効果は、正常動作を監視するためのウォッチドッグタイマや定期的に正常性を示す信号を送受信するハートビート等を用いた場合のような時間を要する監視によってＯＳ障害を検出する場合に比較して、より迅速に、致命的なＯＳ障害を検出することができることにある。
【００１６】
その理由は、ＯＳ障害の監視対象となるＯＳに致命的なＯＳ障害が発生した際に、ユーザに通知するために表示部に対して画面出力命令を送出した時点で、かかる画面出力命令の送出動作をモニタリングしているＯＳ障害検出手段にて直ちにＯＳ障害を判定することができるので、ウォッチドッグタイマやハートビート等のようにタイムアウトを待つ必要がないためである。
【図面の簡単な説明】
【００１７】
【図１】本発明に係るＯＳ障害検出システムの一構成例を示すシステム構成図である。
【図２】図１に示すＯＳ障害検出システムのＯＳ障害時動作パターンデータベースにＯＳ障害時動作パターンとしてあらかじめ登録されている画面出力命令の動作シーケンスの一例を示す動作パターンテーブルである
【図３】図１に示すＯＳ障害検出システムの動作の一例を説明するためのフローチャートである。
【図４】図１の仮想マシンモニタにおけるＯＳ障害の監視対象である仮想マシン上のゲストＯＳがＷｉｎｄｏｗｓ（登録商標）ＯＳであった場合のＯＳ障害の検出動作の一例を示すフローチャートである。
【図５】本発明に係るＯＳ障害検出システムの他の構成例を示すシステム構成図である。
【発明を実施するための形態】
【００１８】
以下、本発明によるＯＳ障害検出システム、ＯＳ障害検出方法、ＯＳ障害検出プログラムおよびプログラム記録媒体の好適な実施形態について添付図を参照して説明する。なお、以下の説明においては、本発明によるＯＳ障害検出システムおよびＯＳ障害検出方法について説明するが、かかるＯＳ障害検出方法をコンピュータにより実行可能なＯＳ障害検出プログラムとして実施するようにしても良いし、あるいは、ＯＳ障害検出プログラムをコンピュータにより読み取り可能な記録媒体に記録するようにしても良いことは言うまでもない。
【００１９】
（本発明の特徴）
本発明の実施形態の説明に先立って、本発明の特徴についてその概要をまず説明する。本発明は、カーネルクラッシュなどの致命的なＯＳの障害を外部から検出することを可能とする仕組みを実現するものであり、例えば、表示部すなわちビデオアダプタデバイスへの出力を監視して、ＯＳが、致命的な障害を検出した際に、ＯＳからの指示に基づいてビデオアダプタデバイスに対して出力される、致命的な障害を検出した旨のエラーメッセージやブルースクリーン等を画面表示しようとする画面出力命令の動作パターンを検出することによって、致命的なＯＳ障害の発生の有無を判定し、致命的なＯＳ障害の発生と判断した場合、直ちに、適切な復旧処理を起動することを特徴としている。而して、本発明においては、従来のＯＳ障害検出システムのように、ＯＳの改変（書き替え）や専用ドライバ等の導入の必要がなく、プロプライエタリなＯＳについても適用することが可能であり、かつ、正常動作を監視するためのウォッチドッグタイマや定期的に正常性を示す信号を送受信するハートビート等を用いた場合のような時間を要する監視によることなく、致命的なＯＳの障害を迅速に検出することができる。
【００２０】
（実施形態の構成例）
次に、本発明に係るＯＳ障害検出システムの構成について、その一例を、図１を用いて説明する。図１は、本発明に係るＯＳ障害検出システムの一構成例を示すシステム構成図である。図１に示すＯＳ障害検出システムは、ハードウェア１００と、仮想マシンモニタ（ＶＭＭ：Virtual  Machine  Monitor）１１０と、仮想マシン（ＶＭ：Virtual  Machine）１２０とを少なくとも含んで構成される。
【００２１】
ここで、仮想マシンモニタ１１０は、仮想マシン１２０の動作をモニタリングして、仮想マシン１２０に搭載のゲストＯＳ１２１の動作異常を監視する仮想的な障害監視手段（または、場合によっては、物理的な障害監視装置）であり、ＯＳ障害の監視対象となるＯＳつまり仮想マシン１２０上のゲストＯＳ１２１とは独立した形態で外部に存在しており、仮想プロセッサ１１１と、仮想ビデオアダプタ１１２と、ＯＳ障害検出部１１３と、復旧処理部１１７とを少なくとも備え、仮想マシン１２０と同一のハードウェア１００上（つまり同一ノード内）において動作している。
【００２２】
仮想プロセッサ１１１は、仮想マシン１２０から見える仮想的なプロセッサリソースである。仮想ビデオアダプタ１１２は、仮想マシン１２０から見える仮想的なビデオアダプタデバイスである。仮想プロセッサ１１１、仮想ビデオアダプタ１１２は、いずれも、ソフトウェアによって物理的なデバイスのエミュレーションを行っている。なお、仮想マシンモニタ１１０は、仮想マシン１２０に搭載のゲストＯＳ１２１がデバイスに対して出力する加工されていないＩＯ命令例えば画面出力命令の動作を、仮想プロセッサ１１１から仮想ビデオアダプタ１１２に対して出力する加工されていないＩＯ命令例えば画面出力命令としてモニタリングしている。
【００２３】
また、仮想マシンモニタ１１０内に配置されたＯＳ障害検出部１１３は、仮想マシン１２０に搭載のゲストＯＳ１２１がデバイスに対して出力する加工されていないＩＯ命令例えば画面出力命令の動作を、前述したように、仮想プロセッサ１１１から仮想ビデオアダプタ１１２に対して出力するＩＯ命令例えば画面出力命令としてモニタリングし、該画面出力命令の動作パターンに基づいて、仮想マシン１２０に搭載のゲストＯＳ１２１のＯＳ障害の有無を検出する部位であり、画面出力命令取得部１１４と、ＯＳ障害時動作パターンデータベース１１５と、判定部１１６とを少なくとも備えている。
【００２４】
画面出力命令取得部１１４は、仮想プロセッサ１１１からの仮想ビデオアダプタ１１２に対する画面出力命令を監視して捕捉する。ＯＳ障害時動作パターンデータベース１１５は、ＯＳ障害が起こった場合の仮想ビデオアダプタ１１２に対する画面出力命令の動作パターンをＯＳ障害時動作パターンとしてあらかじめ記憶している。なお、ＯＳ障害時動作パターンデータベース１１５にあらかじめ記憶するＯＳ障害時動作パターンは、一種類のＯＳ障害を検出するための画面出力命令の動作パターンとして、複数の画面出力命令からなる複数種類の動作パターンのセットを登録することもできる。
【００２５】
判定部１１６は、画面出力命令取得部１１４にて捕捉した画面出力命令をＯＳ障害時動作パターンデータベース１１５に記憶しているＯＳ障害時動作パターンと比較し、比較結果に応じて、ＯＳ障害の発生の有無を判定する。ここで、ＯＳ障害時動作パターンデータベース１１５に登録されている一種類のＯＳ障害を検出するためのＯＳ障害時動作パターンが複数種類の動作パターンのセットからなっている場合には、判定部１１６は、画面出力命令取得部１１４にて連続的に捕捉した複数の画面出力命令のすべてがＯＳ障害時動作パターンを構成する複数種類の動作パターンのセットのそれぞれの動作パターンと一致しているか否かに応じて、ＯＳ障害が発生しているか否かを判定する。
【００２６】
すなわち、判定部１１６は、画面出力命令取得部１１４にて最初に捕捉した画面出力命令を、複数種類のＯＳ障害時動作パターンのセットのうち、最初に比較すべきＯＳ障害時動作パターンと比較して一致していた場合には、次のＯＳ障害時動作パターンと同一の画面出力命令が続けて捕捉されるか否かを判定し、捕捉した場合には、さらに次のＯＳ障害時動作パターンと同一の画面出力命令が続けて捕捉されるか否かを判定するという動作を繰り返し、複数種類のＯＳ障害時動作パターンのセットの全てについて一致している画面出力命令が捕捉された場合に、該当するＯＳ障害が発生しているものと判定する。
【００２７】
復旧処理部１１７は、ＯＳ障害検出部１１３内の判定部１１６によりＯＳ障害の発生を検出した場合に、ＯＳ障害検出部１１３からの通知に基づいて、コンピュータの再起動等の適切な復旧処理を行う。
【００２８】
また、仮想マシン１２０は、ゲストＯＳ１２１を備えている。ゲストＯＳ１２１は、仮想マシン１２０内で動作するＯＳであり、仮想マシンモニタ１１０内のＯＳ障害検出部１１３によってＯＳ障害の発生を監視される対象のＯＳとなっている。
【００２９】
例えば、コンピュータに搭載するＯＳとして、図１に示すように、仮想マシン１２０内で動作するゲストＯＳ１２１であり、かつ、該ゲストＯＳ１２１がＷｉｎｄｏｗｓ（登録商標）ＯＳであった場合に、ゲストＯＳ１２１のＷｉｎｄｏｗｓ  ＯＳがカーネルパニックを引き起こして、ＯＳ障害の発生をユーザに通知するために、表示部にブルースクリーンの画面表示を出力した場合の動作について説明する。かかる仮想マシン１２０の動作をモニタリングする仮想マシンモニタ１１０においては、ゲストＯＳ１２１のＷｉｎｄｏｗｓ  ＯＳの動作をモニタリングしており、ゲストＯＳ１２１のＷｉｎｄｏｗｓ  ＯＳにＯＳ障害が発生した場合、仮想プロセッサ１１１上で動作するＷｉｎｄｏｗｓ  ＯＳにおいても、仮想ビデオアダプタ１１２に対して画面出力命令を連続的に出力して、画面をＶＧＡ（Video  Graphics  Array：低解像度）モードに切り替え、しかる後、画面を青色にクリアし、かつ、エラーメッセージを表示した後、ＯＳ動作を停止する。
【００３０】
ＯＳ障害の発生時にかかる画面出力命令の動作を行う場合、ＯＳ障害時動作パターンデータベース１１５には、例えば、ＶＧＡモードへの切り替えの画面出力命令および画面の青色クリアの画面出力命令を、ＯＳ障害時動作パターンとしてあらかじめ登録しておく。判定部１１６は、画面出力命令取得部１１４にて捕捉されたデバイスすなわち仮想ビデオアダプタ１１２への画面出力命令について、最初にＶＧＡモードへの切り替えの画面出力命令を検出し、次に、画面の青色クリアの画面出力命令を検出することによって、Ｗｉｎｄｏｗｓ  ＯＳのＯＳ障害時における表示部の画面表示動作としてのブルースクリーン表示動作を検出し、ゲストＯＳ１２１のＷｉｎｄｏｗｓ  ＯＳにおけるＯＳ障害の発生を検出する。
【００３１】
（実施形態の動作の説明）
次に、図１に示したＯＳ障害検出システムの動作の一例について、図２の動作テーブルおよび図３のフローシャートを参照しながら詳細に説明する。図２は、図１に示すＯＳ障害検出システムのＯＳ障害時動作パターンデータベース１１５にＯＳ障害時動作パターンとしてあらかじめ登録されている画面出力命令の動作シーケンスの一例を示す動作パターンテーブルである。図３は、図１に示すＯＳ障害検出システムの動作の一例を説明するためのフローチャートである。
【００３２】
本実施形態においては、図２の動作パターンテーブルに示すように、ＯＳ障害時動作パターンデータベース１１５には、障害種別毎の一連の動作パターンのセットがＯＳ障害時動作パターンとしてあらかじめ登録されており、ＯＳ障害の発生時に、どのような画面出力命令が連続して発生するかを、各障害種別に対応付けて記憶している。
【００３３】
つまり、図２の動作パターンテーブルは、障害種別２０１、動作パターン１  ２０２−１、動作パターン２  ２０２−２、…から構成されており、障害種別２０１には、Ｗｉｎｄｏｗｓ  ＯＳの障害時にブルースクリーン表示に切り替えられる場合、ＶＭｗａｒｅの障害時にパープルスクリーン表示に切り替えられる場合、…などのＯＳ障害の種別に応じた項目が配置され、それぞれのＯＳ障害種別に応じて、仮想ビデオアダプタ１１２に対して順次出力される画面出力命令の内容が、動作パターン１  ２０２−１、動作パターン２  ２０２−２、…に示すように、ＯＳ障害時動作パターンとして順番に配置されている。例えば、Ｗｉｎｄｏｗｓ  ＯＳの障害時の場合は、動作パターン１  ２０２−１、動作パターン２  ２０２−２、…に示すように、仮想ビデオアダプタ１１２に対する画面出力命令が、ＶＧＡモードへの切替命令、画面の青色クリア命令、…の順番に複数出力される旨があらかじめ設定登録されている。
【００３４】
次に、動作パターンテーブルとして図２のようなＯＳ障害時動作パターンが設定登録されていた場合における図１のＯＳ障害検出システムの動作例について、図３のフローチャートを用いて説明する。
【００３５】
まず、判定部１１６は、仮想マシン１２０上で動作しているゲストＯＳ１２１のＯＳ種別に対応して、ＯＳ障害時動作パターンデータベース１１５の動作パターンテーブルに記憶されているＯＳ障害時動作パターンを読み込む（ステップＳ３０１）。例えば、ゲストＯＳ１２１がＷｉｎｄｏｗｓ  ＯＳの場合には、図２の動作パターンテーブルにおける障害種別２０１にＷｉｎｄｏｗｓブルースクリーンとして記憶されている障害種別に対応するＯＳ障害時動作パターンである、ＶＧＡモードへの切替命令（動作パターン１  ２０２−１）、画面の青色クリア命令（動作パターン２  ２０２−２）、…が読み込まれる。
【００３６】
ここで、仮想マシン１２０内におけるゲストＯＳ１２１の実行中においては、仮想マシンモニタ１１０内のＯＳ障害検出部１１３は、ゲストＯＳ１２１の動作をモニタリングしている仮想プロセッサ１１１からの仮想ビデオアダプタ１１２に対する画面出力命令を常時監視しており、画面出力命令が出力されると、ＯＳ障害検出部１１３内の画面出力命令取得部１１４は、出力された画面出力命令を捕捉して、判定部１１６に送出する（ステップＳ３０２）。
【００３７】
判定部１１６は、ＯＳ障害時動作パターンデータベース１１５の動作パターンテーブルからあらかじめ読み込んでおいたＯＳ障害時動作パターンのセットのうち、最初の動作パターン１  ２０２−１としてあらかじめ記憶されている動作パターン（例えば、Ｗｉｎｄｏｗｓ  ＯＳ障害時の場合、ＶＧＡモードへの切替命令）と、画面出力命令取得部１１４にて捕捉された画面出力命令とを比較する（ステップＳ３０３）。両者の命令が一致していなかった場合は（ステップＳ３０３の「いいえ」の場合）、ＯＳ障害が発生していない場合と看做して、ステップＳ３０２に復帰し、仮想ビデオアダプタ１１２に対する最初の動作パターン１  ２０２−１に相当する画面出力命令の出力を監視する動作を継続する。
【００３８】
一方、両者の命令が一致していた場合（ステップＳ３０３の「はい」の場合）、ＯＳ障害時に最初に出力すべき画面出力命令が出力されている状態が発生しているものと看做して、ステップＳ３０４に移行して、次の画面出力命令の出力を監視・捕捉する動作を行う。画面出力命令取得部１１４は、次に出力された画面出力命令を捕捉すると、判定部１１６に送出し（ステップＳ３０４）、判定部１１６は、次の動作パターン２  ２０２−２としてあらかじめ記憶されている動作パターン（例えば、Ｗｉｎｄｏｗｓ  ＯＳ障害時の場合、画面の青色クリア命令）と、画面出力命令取得部１１４にて次に捕捉された画面出力命令とを比較する（ステップＳ３０５）。両者の命令が一致していなかった場合は（ステップＳ３０５の「いいえ」の場合）、ＯＳ障害が発生していない場合と看做して、ステップＳ３０２に復帰し、仮想ビデオアダプタ１１２に対する最初の動作パターン１  ２０２−１に相当する画面出力命令の出力を監視する動作を継続する。
【００３９】
一方、両者の命令が一致していた場合（ステップＳ３０５の「はい」の場合）、ＯＳ障害時に第２番目に出力すべき画面出力命令が出力されている状態が発生しているものと看做して、次の第３番目の画面出力命令の出力を監視する捕捉動作に移行する。かかる動作を、ＯＳ障害時動作パターンのセットとしてＯＳ障害時動作パターンデータベース１１５の動作パターンテーブルに記憶されている複数の動作パターン（画面出力命令）のすべてについて繰り返す。
【００４０】
そして、ＯＳ障害時動作パターンのセットとしてＯＳ障害時動作パターンデータベース１１５の動作パターンテーブルにあらかじめ記憶されている最後の第Ｎ番目の動作パターンに達して、該最後の第Ｎ番目の動作パターンと画面出力命令取得部１１４にて捕捉された第Ｎ番目の画面出力命令との比較結果とが一致していなかった場合は（ステップＳ３０６の「いいえ」の場合）、ＯＳ障害が発生していない場合と看做して、ステップＳ３０２に復帰し、仮想ビデオアダプタ１１２に対する最初の動作パターン１  ２０２−１に相当する画面出力命令の出力を監視する動作を継続する。
【００４１】
一方、両者の命令が一致していた場合（ステップＳ３０６の「はい」の場合）、画面出力命令取得部１１４にて捕捉された一連の画面出力命令とＯＳ障害時動作パターンのセットとしてＯＳ障害時動作パターンデータベース１１５の動作パターンテーブルに記憶されているすべての動作パターン（画面出力命令）とが一致した場合であり、監視対象のゲストＯＳ１２１においてＯＳ障害が発生したものと看做すことができる。したがって、ステップＳ３０７に移行して、仮想マシン１２０上のゲストＯＳ１２１を動作可能な状態に復旧させるために、例えば、仮想マシン１２０の初期化・再起動を行ったり、あるいは、バックアップファイルからのリストア処理を行ったりすることにより、復旧処理を行う（ステップＳ３０７）。
【００４２】
次に、図３に示すフローチャートの動作について、ＯＳ障害の監視対象である仮想マシン１２０上のゲストＯＳ１２１として、Ｗｉｎｄｏｗｓ  ＯＳを使用しているという具体例を用いて、さらに詳細に説明する。図４は、図１の仮想マシンモニタ１１０におけるＯＳ障害の監視対象である仮想マシン１２０上のゲストＯＳ１２１がＷｉｎｄｏｗｓ  ＯＳであった場合のＯＳ障害の検出動作の一例を示すフローチャートである。図４（Ａ）は、仮想マシン１２０上のゲストＯＳ１２１であるＷｉｎｄｏｗｓ  ＯＳのＯＳ障害発生時の動作を示し、図４（Ｂ）は、仮想マシンモニタ１１０上のＯＳ障害検出部１１３におけるＯＳ障害検出時の動作を示している。
【００４３】
ここで、仮想マシン１２０上のゲストＯＳ１２１のＷｉｎｄｏｗｓ  ＯＳにＯＳ障害が発生した場合、ゲストＯＳ１２１は、表示部に対して、低解像度モードのＶＧＡ（Video  Graphics  Array）モードへの切替命令というＩＯ命令を送出した後、連続的に、致命的なＯＳ障害が発生した旨をユーザに通知するために青色背景（ブルースクリーン）を表示するための画面の青色クリア命令というＩＯ命令を送出する。したがって、仮想マシン１２０の動作をモニタリングしている仮想マシンモニタ１１０においては、仮想プロセッサ１１１から仮想ビデオアダプタ１１２に対して、ＶＧＡモードへの切替命令を送出した後、連続的に、画面の青色クリア命令を送出する動作が実行される。
【００４４】
図４（Ａ）のフローチャートにおいて、仮想マシン１２０上で動作するゲストＯＳ１２１のＷｉｎｄｏｗｓ  ＯＳにて致命的なＯＳ障害が発生すると（ステップＳ４０１）、Ｗｉｎｄｏｗｓ  ＯＳは、まず、表示部の画面を低解像度モードのＶＧＡモードに切り替える切替命令を、表示部に対して出力する（ステップＳ４０２）。次に、Ｗｉｎｄｏｗｓ  ＯＳは、画面の背景をブルースクリーン表示に設定するために、表示部の画面の青色クリア命令を、表示部に対して出力する（ステップＳ４０３）。さらに、青色の背景に設定された画面上に、ＯＳ障害が発生した旨のエラーメッセージを出力する（ステップＳ４０４）。しかる後、プロセッサの動作を停止させる（ステップＳ４０５）。
【００４５】
一方、仮想マシン１２０上のゲストＯＳ１２１の動作を監視している仮想マシンモニタ１１０においては、該仮想マシンモニタ１１０上のＯＳ障害検出部１１３におけるＯＳ障害時動作パターンデータベース１１５に、図２の動作パターンテーブルの動作パターン１  ２０２−１、動作パターン２  ２０２−２に示したように、監視対象のゲストＯＳ１２１がＷｉｎｄｏｗｓ  ＯＳであった場合におけるＯＳ障害時動作パターンとして、仮想ビデオアダプタ１１２に対する画面出力命令が、ＶＧＡモードへの切替命令、画面の青色クリア命令の順番に出力される旨があらかじめ設定登録されている。また、ＯＳ障害検出部１１３における判定部１１６は、仮想マシン１２０上のゲストＯＳ１２１の起動に先立って、図３のフローチャートにて説明したように、ＯＳ障害時動作パターンデータベース１１５からゲストＯＳ１２１がＷｉｎｄｏｗｓ  ＯＳであった場合におけるＯＳ障害時動作パターンをあらかじめ読み込んで保存している。
【００４６】
かかる状態において、仮想マシンモニタ１１０上のＯＳ障害検出部１１３における画面出力命令取得部１１４にて、ゲストＯＳ１２１のＷｉｎｄｏｗｓ  ＯＳが画面出力命令を出力すると、該画面出力命令は、仮想プロセッサ１１１から仮想ビデオアダプタ１１２に対する画面出力命令として捕捉されて、判定部１１６に送出される（ステップＳ４１１）。
【００４７】
判定部１１６は、ＯＳ障害時動作パターンデータベース１１５からあらかじめ読み込んでいるＷｉｎｄｏｗｓ  ＯＳのＯＳ障害時動作パターンのセットのうち、最初のＯＳ障害時動作パターンであるＶＧＡモードへの切替命令と、画面出力命令取得部１１４にて捕捉された画面出力命令とを比較する（ステップＳ４１２）。両者の命令が一致していなく、画面出力命令取得部１１４にて捕捉された画面出力命令がＶＧＡモードへの切替命令ではなかった場合は（ステップＳ４１２の「いいえ」の場合）、ＯＳ障害が発生していない場合と看做して、ステップＳ４１１に復帰し、仮想ビデオアダプタ１１２に対する最初の動作パターン１  ２０２−１に相当する画面出力命令の出力を監視する動作を継続する。
【００４８】
一方、両者の命令が一致していて、画面出力命令取得部１１４にて捕捉された画面出力命令がＶＧＡモードへの切替命令であった場合（ステップＳ４１２の「はい」の場合）、Ｗｉｎｄｏｗｓ  ＯＳ障害時に最初に出力すべき画面出力命令が出力されている状態が発生しているものと看做して、ステップＳ４１３に移行して、次の画面出力命令の出力を監視・捕捉する動作を行う。画面出力命令取得部１１４は、ゲストＯＳ１２１のＷｉｎｄｏｗｓ  ＯＳが次の画面出力命令を出力すると、該画面出力命令は、仮想プロセッサ１１１から仮想ビデオアダプタ１１２に対する次の画面出力命令として捕捉されて、判定部１１６に送出される（ステップＳ４１３）。
【００４９】
判定部１１６は、ＯＳ障害時動作パターンデータベース１１５からあらかじめ読み込んでいるＷｉｎｄｏｗｓ  ＯＳのＯＳ障害時動作パターンのセットのうち、次のＯＳ障害時動作パターンである画面の青色クリア命令と、画面出力命令取得部１１４にて捕捉された画面出力命令とを比較する（ステップＳ４１４）。両者の命令が一致していなく、画面出力命令取得部１１４にて捕捉された画面出力命令が画面の青色クリア命令ではなかった場合は（ステップＳ４１４の「いいえ」の場合）、ＯＳ障害が発生していない場合と看做して、ステップＳ４１１に復帰し、仮想ビデオアダプタ１１２に対する最初の動作パターン１  ２０２−１に相当する画面出力命令の出力を監視する動作を継続する。
【００５０】
一方、両者の命令が一致していて、画面出力命令取得部１１４にて捕捉された画面出力命令が画面の青色クリア命令であった場合（ステップＳ４１４の「はい」の場合）、画面出力命令取得部１１４にて捕捉された一連の画面出力命令とＯＳ障害時動作パターンのセットとしてＯＳ障害時動作パターンデータベース１１５の動作パターンテーブルに記憶されているすべての動作パターン（画面出力命令）とが一致した場合であり、監視対象のゲストＯＳ１２１のＷｉｎｄｏｗｓ  ＯＳにおいて致命的なＯＳ障害が発生したものと看做すことができる。したがって、ステップＳ４１５に移行して、仮想マシン１２０上のゲストＯＳ１２１のＷｉｎｄｏｗｓＯＳを動作可能な状態に復旧させるために、例えば、仮想マシン１２０の初期化・再起動を行ったり、あるいは、バックアップファイルからのリストア処理を行ったりすることにより、適切な復旧処理を行う（ステップＳ４１５）。
【００５１】
（本実施形態の効果の説明）
以上に詳細に説明したように、本実施形態のＯＳ障害検出システムによれば、次のような効果が得られる。
【００５２】
第１の効果は、致命的なＯＳ障害が発生した場合に、ＯＳの書き換え（改造）を行ったり、ＯＳへ専用ドライバを追加したりすることなく、発生したＯＳ障害を確実に検出して、復旧処理を実行させることができることにある。この結果、ＯＳの書き換え（改造）やドライバの追加が困難なプロプライエタリなＯＳに対しても、本実施形態におけるＯＳ障害の検出の仕組みを容易に適用することが可能となる。
【００５３】
その理由は、ＯＳ障害の監視対象となるＯＳつまり仮想マシン（ＶＭ：Virtual  Machine）１２０上のゲストＯＳ１２１の外部に存在する仮想マシンモニタ（ＶＭＭ：Virtual  Machine  Monitor）１１０において、ゲストＯＳ１２１が表示部に出力する画面出力命令の動作をモニタリングした結果である仮想ビデオアダプタ１１２への画面出力命令を監視し、ＯＳつまりゲストＯＳ１２１のＯＳ障害時動作パターンと同一の画面出力命令が送出されているか否かを監視することにより、ＯＳ障害の有無を検出して、ＯＳ障害を検出した場合は、直ちに、復旧処理を起動する仕組みを採用しているためである。
【００５４】
第２の効果は、正常動作を監視するためのウォッチドッグタイマや定期的に正常性を示す信号を送受信するハートビート等を用いた場合のような時間を要する監視によってＯＳ障害を検出する場合に比較して、より迅速に、致命的なＯＳ障害を検出することができることにある。
【００５５】
その理由は、ＯＳ障害の監視対象となるＯＳつまり仮想マシン１２０上のゲストＯＳ１２１に致命的なＯＳ障害が発生した際に、ユーザに通知するために表示部に対して画面出力命令を送出した時点で、かかる画面出力命令の送出動作をモニタリングしている仮想マシンモニタ１１０のＯＳ障害検出部１１３にて直ちにＯＳ障害を判定することができるので、ウォッチドッグタイマやハートビート等のようにタイムアウトを待つ必要がないためである。
【００５６】
（他の実施形態の構成例）
次に、本発明に係るＯＳ障害検出システムの他の実施形態として、図１のシステム構成とは異なる構成例について、図５を参照して、詳細に説明する。図５は、本発明に係るＯＳ障害検出システムの他の構成例を示すシステム構成図である。
【００５７】
図５に示すＯＳ障害検出システムにおいては、図１における仮想マシン１２０上で動作するゲストＯＳ１２１の代わりに、ハードウェア５００内のプロセッサ５０１上で動作するＯＳ５２０が、ＯＳ障害監視対象のＯＳとして実装されている。また、図１における仮想マシンモニタ１１０上で動作するＯＳ障害検出部１１３の代わりに、ハードウェア５００内のプロセッサ５０１とビデオアダプタ５０２との間に介在させた形態で、デバイスとしてＯＳ障害検出部５０３が実装されており、該ＯＳ障害検出部５０３には、図１のＯＳ障害検出部１１３における各機能と同様に、画面出力命令取得部５０４、ＯＳ障害時動作パターンデータベース５０５、判定部５０６が少なくとも備えられている。さらに、図１における仮想マシンモニタ１１０上で動作する復旧処理部１１７の代わりに、プロセッサ５０１上で動作するＯＳ５２０とは別個のファームウェア５１０内に復旧処理部５１１が実装されている。
【００５８】
図５に示すように、仮想マシン構成によらずに物理的なリアルマシンを用いてＯＳ障害検出システムを構成する場合であっても、プロセッサ５０１上で動作するＯＳ５２０におけるＯＳ障害の発生を検出する動作は、前述の実施形態における図３、図４のフローチャートと略同様であり、プロセッサ５０１上のＯＳ５２０がビデオアダプタ５０２に対して送出する画面出力命令を、プロセッサ５０１とビデオアダプタ５０２との間に介在するＯＳ障害検出部５０３にて監視することによって実現することができる。
【００５９】
以下に図５に示すＯＳ障害検出システムのＯＳ障害検出動作について、前述した図２の動作テーブルおよび図３のフローシャートを参照しながら詳細に説明する。デバイスとして実装したＯＳ障害検出部５０３内のＯＳ障害時動作パターンデータベース５０５は、ＯＳ障害検出部５０３のＲＯＭ領域やハードディスク等に格納されており、ＯＳ障害時動作パターンデータベース５０５には、図２に示したように、障害種別毎の一連の動作パターンのセットがＯＳ障害時動作パターンとしてあらかじめ登録されており、ＯＳ障害の発生時に、どのような画面出力命令が連続して発生するかを、各障害種別に対応付けて記憶している。
【００６０】
図３のフローチャートに示したように、本実施形態においても、まず、ＯＳ障害検出部５０３の判定部５０６は、ＯＳ障害時動作パターンデータベース５０５の動作パターンテーブルにあらかじめ記憶されているＯＳ障害時動作パターンを読み込む（ステップＳ３０１）。
【００６１】
ここで、プロセッサ５０１上のＯＳ５２０の実行中においては、プロセッサ５０１とビデオアダプタ５０２との間に介在するＯＳ障害検出部５０３は、プロセッサ５０１上のＯＳ５２０からのビデオアダプタ５０２に対する画面出力命令を常時監視しており、画面出力命令が出力されると、ＯＳ障害検出部５０３内の画面出力命令取得部５０４は、出力された画面出力命令を捕捉して、判定部５０６に送出する（ステップＳ３０２）。この場合、画面出力命令取得部５０４は、プロセッサ５０１の出力ポートから出力される物理的な信号として画面出力命令を捕捉する。
【００６２】
判定部５０６は、ＯＳ障害時動作パターンデータベース５０５の動作パターンテーブルからあらかじめ読み込んでおいたＯＳ障害時動作パターンのセットのうち、図２に示した最初の動作パターン１  ２０２−１としてあらかじめ記憶されている動作パターン（例えば、Ｗｉｎｄｏｗｓ  ＯＳ障害時の場合、ＶＧＡモードへの切替命令）と、画面出力命令取得部５０４にて捕捉された画面出力命令とを比較する（ステップＳ３０３）。両者の命令が一致していなかった場合は（ステップＳ３０３の「いいえ」の場合）、ＯＳ障害が発生していない場合と看做して、ステップＳ３０２に復帰し、ビデオアダプタ５０２に対する最初の動作パターン１  ２０２−１に相当する画面出力命令の出力を監視する動作を継続する。
【００６３】
一方、両者の命令が一致していた場合（ステップＳ３０３の「はい」の場合）、ＯＳ障害時に最初に出力すべき画面出力命令が出力されている状態が発生しているものと看做して、ステップＳ３０４に移行して、次の画面出力命令の出力を監視・捕捉する動作を行う。画面出力命令取得部５０４は、次に出力された画面出力命令を捕捉すると、判定部５０６に送出し（ステップＳ３０４）、判定部５０６は、図２に示した次の動作パターン２  ２０２−２としてあらかじめ記憶されている動作パターン（例えば、Ｗｉｎｄｏｗｓ  ＯＳ障害時の場合、画面の青色クリア命令）と、画面出力命令取得部５０４にて次に捕捉された画面出力命令とを比較する（ステップＳ３０５）。両者の命令が一致していなかった場合は（ステップＳ３０５の「いいえ」の場合）、ＯＳ障害が発生していない場合と看做して、ステップＳ３０２に復帰し、ビデオアダプタ５０２に対する最初の動作パターン１  ２０２−１に相当する画面出力命令の出力を監視する動作を継続する。
【００６４】
一方、両者の命令が一致していた場合（ステップＳ３０５の「はい」の場合）、ＯＳ障害時に第２番目に出力すべき画面出力命令が出力されている状態が発生しているものと看做して、次の第３番目の画面出力命令の出力を監視する捕捉動作に移行する。かかる動作を、ＯＳ障害時動作パターンのセットとしてＯＳ障害時動作パターンデータベース５０５の動作パターンテーブルに記憶されている複数の動作パターン（画面出力命令）のすべてについて繰り返す。
【００６５】
そして、ＯＳ障害時動作パターンのセットとしてＯＳ障害時動作パターンデータベース５０５の動作パターンテーブルにあらかじめ記憶されている最後の第Ｎ番目の動作パターンに達して、該最後の第Ｎ番目の動作パターンと画面出力命令取得部５０４にて捕捉された第Ｎ番目の画面出力命令との比較結果とが一致していなかった場合は（ステップＳ３０６の「いいえ」の場合）、ＯＳ障害が発生していない場合と看做して、ステップＳ３０２に復帰し、ビデオアダプタ５０２に対する最初の動作パターン１  ２０２−１に相当する画面出力命令の出力を監視する動作を継続する。
【００６６】
一方、両者の命令が一致していた場合（ステップＳ３０６の「はい」の場合）、画面出力命令取得部５０４にて捕捉された一連の画面出力命令とＯＳ障害時動作パターンのセットとしてＯＳ障害時動作パターンデータベース５０５の動作パターンテーブルに記憶されているすべての動作パターン（画面出力命令）とが一致した場合であり、監視対象のＯＳ５２０においてＯＳ障害が発生したものと看做すことができる。したがって、ステップＳ３０７に移行して、ハードウェア１００内のプロセッサ５０１上で動作するＯＳ５２０を動作可能な状態に復旧させるために、例えば、プロセッサ５０１の再起動を行ったり、プロセッサ５０１やＩＯ関連の初期化やＯＳ５２０の初期化を行ったり、あるいは、バックアップファイルからのリストア処理を行ったりすることにより、適切な復旧処理を行う（ステップＳ３０７）。
【００６７】
以上、本発明の好適実施例の構成を説明した。しかし、斯かる実施例は、本発明の単なる例示に過ぎず、何ら本発明を限定するものではないことに留意されたい。本発明の要旨を逸脱することなく、特定用途に応じて種々の変形変更が可能であることが、当業者には容易に理解できよう。
【符号の説明】
【００６８】
１００      ハードウェア
１１０      仮想マシンモニタ（ＶＭＭ）
１１１      仮想プロセッサ
１１２      仮想ビデオアダプタ
１１３      ＯＳ障害検出部
１１４      画面出力命令取得部
１１５      ＯＳ障害時動作パターンデータベース
１１６      判定部
１１７      復旧処理部
１２０      仮想マシン（ＶＭ）
１２１      ゲストＯＳ
２０１      障害種別
２０２−１  動作パターン１
２０２−２  動作パターン２
５００      ハードウェア
５０１      プロセッサ
５０２      ビデオアダプタ
５０３      ＯＳ障害検出部
５０４      画面出力命令取得部
５０５      ＯＳ障害時動作パターンデータベース
５０６      判定部５０６
５２０      ＯＳ
５１０      ファームウェア
５１１      復旧処理部
【図１】
0005454292.tif 000002
【図２】
0005454292.tif 000003
【図３】
0005454292.tif 000004
【図４】
0005454292.tif 000005
【図５】
0005454292.tif 000006