(57)【要約】【課題】オペレーティングシステム（ＯＳ）が誤動作している場合でも、実行できる支援ソフトウエアの提供。【解決手段】ホスト仮想マシン内でホストＯＳを実行するコンピュータが、支援仮想マシン内で実行される支援ＯＳを含む。支援ＯＳ内で実行される支援モジュールがホストＯＳと関係付けられる障害を識別し修復する。支援ＯＳ内で実行される監視モジュールがホストＯＳと関係付けられる障害を識別し、該障害の識別に応答して支援モジュールに通知する。支援モジュールのユーザインターフェースは、ウェブサーバ又はコンピュータの入力装置と関係付けられる支援ボタン経由にできる。ユーザインターフェースは、コンピュータの入力／出力仮想化ハードウエアを通じてサポートすることができる。ホストＯＳ内で実行されるホストエージェントモジュールが、支援モジュールと相互作用して、ホストＯＳと関係付けられる障害を修復することができる。【選択図】  図２
2008251000.tif 000002
【特許請求の範囲】
【請求項１】
多数の仮想マシンを実行する能力があるプロセッサを有するコンピュータであって、このコンピュータは、ホスト仮想マシン内でホストオペレーティングシステムを実行するようになっており、
前記ホスト仮想マシンとは異なる支援仮想マシン内で実行するための支援オペレーティングシステムモジュールと
前記ホスト仮想マシン内の前記ホストオペレーティングシステムと関係付けられる障害を識別し、かつ修復するための、前記支援オペレーティングシステムモジュールの制御の下で前記支援仮想マシン内で実行するための支援モジュールと、
を備えるコンピュータ。
【請求項２】
前記ホストオペレーティングシステムを監視して、前記ホストオペレーティングシステムと関係付けられる障害を識別するとともに、前記障害の識別に応答して前記支援モジュールに通知するための、前記支援オペレーティングシステムモジュールの制御の下で前記支援仮想マシン内で実行するための監視モジュール、
を更に備える請求項１のコンピュータ。
【請求項３】
前記ホストオペレーティングシステムの制御の下で前記ホスト仮想マシン内で実行されるウェブブラウザを介して、前記支援モジュールへユーザインターフェースを提供するための、前記支援オペレーティングシステムモジュールの制御の下で前記支援仮想マシン内で実行するためのウェブサーバーモジュール、
を更に備える請求項１のコンピュータ。
【請求項４】
入力および／または出力データへのアクセスを、前記ホストおよび支援の仮想マシン間で調整するために、前記コンピュータの入力および／または出力装置を仮想化するようになっている入力／出力仮想化ハードウエア、
を更に備える請求項１のコンピュータ。
【請求項５】
前記コンピュータの入力装置と関係付けられる支援ボタン、を更に備え、前記支援ボタンを動作させると前記支援モジュールが作動する、請求項１のコンピュータ。
【請求項６】
前記ホストオペレーティングシステムの制御の下で前記ホスト仮想マシン内で実行するための、前記支援モジュールと相互作用して前記ホストオペレーティングシステムと関係付けられる障害を修復するようになっている、ホストエージェントモジュール、
を更に備える請求項１のコンピュータ。
【請求項７】
前記障害を修復することは、前記ホストエージェントモジュールの故障に応答して、前記ホストオペレーティングシステム内の前記ホストエージェントモジュールを再インストールすること、を更に含む、請求項６のコンピュータ。
【請求項８】
前記支援オペレーティングシステムモジュールは、前記ホストオペレーティングシステムによる前記コンピュータの前記入力および／または出力装置へのアクセスを制御するようになっている、請求項１のコンピュータ。
【請求項９】
前記障害を修復することは、前記ホスト仮想マシン上で実行される前記ホストオペレーティングシステムの状態情報を修正すること、を更に含む、請求項１のコンピュータ。
【請求項１０】
多数の仮想マシンを実行する能力があるプロセッサを有するコンピュータ上のホスト仮想マシン内のホストオペレーティングシステムを支援するためにコンピュータにより実行される方法であって、
前記ホスト仮想マシンとは異なる支援仮想マシン内で支援オペレーティングシステムを実行するステップと、
前記ホスト仮想マシン内の前記ホストオペレーティングシステムと関係付けられる障害を識別し修復するステップであって、この識別し修復するステップは少なくとも一部を、前記支援仮想マシン内の前記支援オペレーティングシステムから実行する前記ステップと、
を備える方法。
【請求項１１】
前記ホストオペレーティングシステムと関係付けられる障害を識別するために前記ホストオペレーティングシステムを監視するステップを更に備え、この監視するステップは少なくとも一部を、前記支援仮想マシン内の前記支援オペレーティングシステムから実行する、請求項１０の方法。
【請求項１２】
ウェブベースのユーザインターフェースを提供して、前記ホストオペレーティングシステムと関係付けられる障害を識別し修復するステップを制御するステップ、を更に備える請求項１０の方法。
【請求項１３】
入力および／または出力データへのアクセスを、前記ホストおよび支援の仮想マシン間で調整するために、前記コンピュータの入力および／または出力装置を仮想化するステップ、を更に備える請求項１０の方法。
【請求項１４】
前記ホストオペレーティングシステムと関係付けられる障害を識別し修復するステップは、前記コンピュータの入力装置と関係付けられる支援ボタンが押下されると作動する、請求項１０の方法。
【請求項１５】
ホストエージェントが前記ホストオペレーティングシステム内で実行され、前記ホストオペレーティングシステムと関係付けられる障害を識別し修復するステップは、前記支援オペレーティングシステムから前記ホストエージェントと相互作用するステップを更に含む、請求項１０の方法。
【請求項１６】
ホスト仮想マシン内のホストオペレーティングシステムへの支援を提供するためのコンピュータプログラムであって、
前記ホスト仮想マシンとは異なる支援仮想マシン内で、コンピュータに、支援オペレーティングシステムモジュールを実行させる手順と、
前記支援オペレーティングシステムモジュールの制御の下で前記支援仮想マシン内で、コンピュータに、前記ホスト仮想マシン内の前記ホストオペレーティングシステムと関係付けられる障害を識別し修復するための支援モジュールを実行させる手順と
からなるコンピュータプログラム。
【請求項１７】
前記ホストオペレーティングシステムを監視して、前記ホストオペレーティングシステムと関係付けられる障害を識別するとともに、前記障害の識別に応答して前記支援モジュールに通知するための、前記支援オペレーティングシステムモジュールの制御の下で前記支援仮想マシン内で実行するための監視モジュールを、コンピュータに実行させる手順を更に備える請求項１６のコンピュータプログラム。
【請求項１８】
前記ホストオペレーティングシステムの制御の下で前記ホスト仮想マシン内で実行されるウェブブラウザを介して、前記支援モジュールへユーザインターフェースを提供するための、前記支援オペレーティングシステムモジュールの制御の下で前記支援仮想マシン内で実行するためのウェブサーバーモジュールを、コンピュータに実行させる手順、を更に備える請求項１６のコンピュータプログラム。
【請求項１９】
前記ホストオペレーティングシステムの制御の下で前記ホスト仮想マシン内で、コンピュータに、前記支援モジュールと相互作用して前記ホストオペレーティングシステムと関係付けられる障害を修復するように構成されたホストエージェントモジュールを実行させる手順、を更に備える請求項１６のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、コンピュータユーザへの支援提供に関する。
【背景技術】
【０００２】
支援アシスタントは、コンピュータユーザに対して統合的かつ包括的な補助を提供することができるので、ユーザはそれを頼りに、ソフトウエアを含むコンピュータの使用法を学習でき、または何か問題が発生してもソフトウエアを含むコンピュータを復旧させることができる。支援アシスタントは一般に、コンピュータ上で実行される支援ソフトウエア、および場合によっては、支援ソフトウエアを介してインターネット上でユーザと通信する支援技術者を配したライブのヘルプセンタのような外部要素を含む。
【０００３】
コンピュータ支援ソフトウエアは多様で有用なタスクを実行する。そのソフトウエアは、コンピュータのハードウエアおよびソフトウエアが正しく機能しているかどうかを判定する診断テストを実行できる。支援ソフトウエアは損傷したソフトウエアを修復できる。支援ソフトウエアは、ヘルプ画面を提供したり、またはその他の方法でユーザが各種タスクを実行するのを補佐することができる。このような補佐は、例えば、インターネットを通じて提供できる。支援ソフトウエアはまた、ファイルバックアップソフトウエアまたはシステム構成ソフトウエアのようなユーティリティを含むこともできる。
【０００４】
支援ソフトウエアは、ユーザのコンピュータ上でユーザが使用するのと同じオペレーティングシステムの下で実行するのが典型的である。その結果、オペレーティングシステムまたはオペレーティングシステム上の何らかのアプリケーションに問題がおきた場合、支援ソフトウエアを適切に実行できないことがある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従って、オペレーティングシステムまたはアプリケーションが誤動作している場合でも、実行できる支援ソフトウエアを有する支援アシスタントの必要性が、当該技術分野に存在する。
【課題を解決するための手段】
【０００６】
上記必要性は、ホストオペレーティングシステムと関係付けられる障害を識別し、かつ修復する、支援オペレーティングシステム内で実行される支援モジュールにより満たされる。
【０００７】
多数の仮想マシンを実行することができるプロセッサを有し、ホスト仮想マシン内でホストオペレーティングシステムを実行するコンピュータは、ホスト仮想マシンとは別の支援仮想マシン内で実行される支援オペレーティングシステムを含む。支援オペレーティングシステム内で実行される支援モジュールは、ホストオペレーティングシステムと関係付けられる障害を識別し、かつ修復する。支援オペレーティングシステム内で実行される監視モジュールが、ホストオペレーティングシステムと関係付けられる障害を識別し、その障害の識別に応答して支援モジュールに通知する。
【０００８】
ユーザーインターフェースが支援モジュールに提供される。ユーザーインターフェースは、支援オペレーティングシステム内で実行されるウェブサーバーモジュール経由、またはコンピュータ入力装置と関係付けられる支援ボタン経由とすることができる。ユーザーインターフェースは、コンピュータの入力／出力仮想化ハードウエアを通じてサポートできる。
【０００９】
ホストオペレーティングシステム内で実行されるホストエージェントモジュールが、支援モジュールと相互作用してホストオペレーティングシステムと関係付けられる障害を修復することができる。
【発明を実施するための最良の形態】
【００１０】
以下、添付図面を参照して本発明の実施例を詳細に説明する。図は、説明だけを目的として実施の形態を示すものである。当該分野の技術者には言うまでもなく、以下の説明から、本明細書内で説明する構造および方法の代替の実施の形態を、本明細書で説明する原理から逸脱することなく利用することができる。
【００１１】
図１は、一実施の形態による、フェイルセーフ式コンピュータ支援アシスタントを実行するコンピュータ１００を示す高レベルブロック図である。バス１０４に接続される少なくとも一つのプロセッサ１０２が図示されている。プロセッサ１０２は、一つ以上の仮想マシンをサポートできるようにする仮想化技術を含む。プロセッサの仮想化技術の例には、ｘ８６プロセッサ−アーキテクチャのためのＩｎｔｅｌ（登録商標）仮想化技術（ＩＶＴ）およびＡＭＤ（商標）仮想化（ＡＭＤ−Ｖ（商標））がある。
【００１２】
同様にバス１０４に接続されているのは、メモリ１０６、格納装置１０８、キーボード１１０、グラフィックアダプタ１１２、ポインティング装置１１４、およびネットワークアダプタ１１６である。ディスプレイ１１８はグラフィックアダプタ１１２へ接続される。キーボード１１０には、ユーザがコンピュータ支援ソフトウエアを起動させるときに押下する特別に提供される支援ボタン１２８を含めることができる。スイッチを用いてもよく、このボタンまたはスイッチはコンピュータ１００上の別の場所に配置することもできる。格納装置１０８は、ハードディスクドライブ、ＣＤもしくはＤＶＤドライブ、またはフラッシュメモリ装置等の装置であり、コンピュータ１００の動作中に利用される実行可能コードおよび／またはデータを含むファイルを保持する。ホストオペレーティングシステム格納イメージ１２０、ホストエージェントインストールイメージ１２２、および支援オペレーティングシステム格納イメージ１２４は、そのような３つのファイルであり、後述する。メモリ１０６は、一実施の形態では、ランダムアクセスメモリ（ＲＡＭ）であり、格納装置１０８からロードされ、処理中に生成され、および／または他のソースからの命令およびデータを保持する。
【００１３】
一実施の形態では、入力／出力（Ｉ／Ｏ）仮想化ハードウエア１２６もバス１０４へ接続される。本ハードウエアにより、グラフィックアダプタ１１２、キーボード１１０、およびポインティング装置１１４等の入力および出力装置の仮想化が可能となる。Ｉ／Ｏ仮想化により、後述するように、これらの装置へのアクセスを、プロセッサ１０２上で実行される多数の仮想マシンおよびオペレーティングシステム間で調整することができる。
【００１４】
多様な役割で動作するコンピュータが、図１に示すものとは異なるおよび／または追加の要素を有していてもよい。例えば、サーバとして動作するコンピュータ１００が、クライアントとして動作するコンピュータよりも強力な処理パワーおよび大規模な格納装置を有していてもよい。同様に、サーバとして動作するコンピュータ１００が、その動作に必ずしも必要ではないディスプレイ１１８および／またはキーボード１１０等の装置を有していなくてもよい。
【００１５】
コンピュータ１００は、ある種のマイクロソフトウィンドウズ（登録商標）またはリナックス等の、一つ以上のオペレーティングシステムを実行する。一般に、オペレーティングシステムは、一つ以上のアプリケーションプログラムを実行する。本コンピュータが実行するオペレーティングシステムおよびアプリケーションプログラムは、一つ以上の処理により形成される。本説明では、特定機能を提供するコンピュータプログラムロジックを指すために用語「モジュール」を用いる。モジュールは、ハードウエア、ファームウエア、および／またはソフトウエアで実装できる。モジュールは、格納装置１０８上に格納し、メモリ１０６内にロードし、そしてプロセッサ１０２で実行するのが典型的である。モジュールは、一つ以上の処理を含み、および／または処理の一部のみにより提供されることができる。
【００１６】
ホストオペレーティングシステム（ホストＯＳ）格納イメージ１２０、ホストエージェントインストールイメージ１２２、および支援オペレーティングシステム（支援ＯＳ）格納イメージ１２４は、プロセッサ１０２がロードし、実行する格納装置１０８上に格納される３つのモジュールである。ホストＯＳ内で作業するユーザを支援するソフトウエアは、支援ＯＳとホストエージェント（ホストＯＳ内で実行される）との間で配布される。支援ＯＳ内に何らかの支援ソフトウエアを配置することにより、ホストＯＳに深刻な欠陥または不安定状態が発生した場合でも、支援アシスタントは機能を継続することができる。
【００１７】
図２は、一実施の形態によるプロセッサ１０２およびソフトウエアにより提供される計算環境２００の論理図を示す。環境２００には、ホスト仮想マシン２１０Ａおよび支援仮想マシン２１０Ｂの動作を統括するハイパーバイザ２０２が含まれる。他の実施の形態では、異なるおよび／または追加のエンティティを有してもよい。更に、上記説明と異なる方法で機能性がエンティティ間に分配されていてもよい。
【００１８】
ハイパーバイザ２０２は、ハードウエア補助型の仮想マシンエミュレータである。ハイパーバイザ２０２は、仮想マシン２１０Ａ，２１０Ｂより高い特権レベルで実行され、一般に、仮想マシンを創成し、それらの実行をスケジュール化し、そして一方の仮想マシンから、別の仮想マシンまたはハイパーバイザ自体へ実行を切換える能力がある。ハイパーバイザ２０２は、上記説明のプロセッサ１０２内の仮想化技術による支援を受ける。ハイパーバイザは、Ｉ／Ｏ仮想化ハードウエア１２６を構成して、Ｉ／Ｏ装置の制御を両仮想マシン２１０Ａ，２１０Ｂ間で所望するように切換えることもできる。一実施の形態では、ハイパーバイザ２０２は、仮想マシン２１０Ａ，２１０Ｂの動作を開始する設定モジュール２０４を実行し、この場合は、フェイルセーフ式支援アシスタントを提供することができる。
【００１９】
一実施の形態では、設定モジュール２０４は、仮想マシン２１０Ａおよび２１０Ｂ、ホストＯＳ２１４、ならびに支援ＯＳ２１６を起動する。設定モジュール２０４は、オペレーティングシステム２１４および２１６を起動する前にコンピュータ１００の初期チェックを実行し、コンピュータが正常状態にあることを確認する。ホストＯＳ格納イメージ１２０および支援ＯＳ格納イメージ１２４は、格納装置１０８上の様々な場所に格納することができ、設定モジュール２０４は、コンピュータの基本入力／出力システム（ＢＩＯＳ）と協働してこれらのオペレーティングシステムを別々にロードすることができる。別の実施の形態では、コンピュータ１００は、格納装置仮想化をサポートすることにより、ホストＯＳおよび支援ＯＳをロードすることができる。設定モジュール２０４は、ホストＯＳおよび支援ＯＳの実行スケジュールを設定することもできる。
【００２０】
仮想マシン２１０は、ハイパーバイザ２１０の下でソフトウエアを実行するための自己完結型環境である。ハードウエア補助型のエミュレーション環境として、仮想マシン２１０は、完全なアドレス空間および完全なプロセッサーレジスターセットを有する仮想マシン上で実行されるソフトウエアを提供する。本ソフトウエアはプロセッサ１０２が実行するマシン命令を含む。ハイパーバイザ２０２が仮想マシン２１０内の実行を中断すると、ハイパーバイザは、仮想マシンのメモリおよびレジスタを含め、仮想マシンの状態を保存する。
【００２１】
ホストＯＳ２１４は、ホスト仮想マシン２１０Ａ上で実行できる。ホストＯＳ２１４は、ウィンドウズビスタ（登録商標）等のオペレーティングシステムとすることができる。ホストＯＳ２１４は、コンピュータ１００上の一次オペレーティングシステムであり、多くの場合、実行処理２３０を通じて有用なタスクを実行する。ホストＯＳ２１４は、ディスプレイ１１８、キーボード１１０、およびポインティング装置１１４を介してユーザと相互作用することができる。
【００２２】
ホストＯＳ２１４は、所与の時間におけるホストＯＳの実行状態を記述する状態情報２２０を含む。状態情報２２０は、オペレーティングシステムのカーネル、他のオペレーティングシステムのコードおよびデータ（デバイスドライバおよびネットワークプロトコルスタック等の）、およびプロセッサーレジスタを含む。状態情報２２０の一部は、メモリ１０６および／または格納装置１０８内に配置する。ハイパーバイザ２０２は、オペレーティングシステムの状態情報２２０を読み出し、修正することができる。更に、他の仮想マシン２１０が、ハイパーバイザ２０２と通信することによりこの情報を読み出し、修正できる。例えば、他の仮想マシン２１０Ｂ内のソフトウエアは、ホストＯＳ２１４から何らかのデータを読み出すようハイパーバイザ２０２へ命令を送り、ハイパーバイザは、そのデータを読み出し、他の仮想マシン内のリクエストしているソフトウエアへそのデータを送ることができる。ホストＯＳ状態情報２２０を読み出し、修正することにより、ハイパーバイザ２０２または他方の仮想マシン２１０Ｂは、ホストＯＳ２１４への支援機能を監視し、提供することができる。
【００２３】
ホストＯＳ２１４は、上記のＯＳ状態情報２２０と同様に、支援目的のために読み出し、修正できる状態情報を有する実行処理２３０を含む。ホストＯＳ２１４は、一つ以上の実行処理からなるアプリケーションである、ホストエージェント２２２およびウェブブラウザ２３４をも含む。ホストエージェント２２２については詳細に後述する。
【００２４】
支援ＯＳは、支援仮想マシン２１０Ｂ上で実行することもできる。支援ＯＳ２１６は、ウィンドウズＣＥまたはリナックス等のオペレーティングシステムとすることもできる。支援ＯＳ２１６は、ホストＯＳ２１４および実行処理２３０を最適動作させるための支援機能を提供するよう設計される。支援ＯＳ２１６は、ウェブサーバ２２４、監視モジュール２２６、および支援モジュール２２８等のモジュールを通じて支援関連機能を実行する。これらのモジュールは、支援ＯＳ２１６内部で、またはそのサービスを用いて実行される処理、アプリケーションまたはその他のコードとすることができる。支援ＯＳ２１６は、ホストＯＳ２１４とは別の仮想マシン２１０Ｂ内で動作するので、ホストＯＳに深刻な欠陥または不安定状態が発生した場合でも、ホストＯＳへ支援を提供することができる。
【００２５】
一実施の形態では、監視モジュール２２６は、ホストＯＳ２１４の状態を監視する。監視モジュールは、ＯＳ状態情報２２０または実行処理２３０の状態情報を周期的に審査することにより監視を行うことができる。監視モジュール２２６は、ホストＯＳ２１４に各種の診断テストを実行できる。監視モジュール２２６が、システムの不安定状態またはホストＯＳ２１４内の他の障害等の支援の必要性を検出した場合、監視モジュールは支援モジュール２２８を呼び出すことができる。監視モジュール２２６とホストＯＳ２１４との間の通信は、上記したようにハイパーバイザ２０２により行うことができる。
【００２６】
支援モジュール２２８は、ホストＯＳ２１４内の障害を修復することにより、支援を提供することができる。例えば、ＯＳ状態情報２２０または実行処理２３０の状態を解析し、修正することにより支援を行う。一実施の形態では、ホスト仮想マシン２１０ＡおよびホストＯＳ２１４は、支援モジュール２２８が状態情報２２０または実行処理２３０の状態を修正している間、中断される。別の実施の形態では、ホスト仮想マシン２１０ＡおよびホストＯＳ２１４は、支援モジュールが修正を行っている間も実行を継続する。この場合は、支援モジュール２２８が、ホストＯＳ内に観察された結果に基づいて、時間をかけてホストＯＳ２１４への変更を行うことができる。別の実施の形態では、支援モジュール２２８は、格納装置１０８上のホストＯＳ格納イメージ１２０を修正する。その後、ホストＯＳ２１４は、所望する変更が行われたイメージから再ロードすることができる。
【００２７】
支援モジュール２２８は、機能していないアプリケーションまたはホストＯＳ２１４自体ですら再インストールできる。例えば、ホストエージェント２２２を再インストールする必要がある場合、支援モジュールは、ホストＯＳ２１４をトリガーして、ホストエージェントインストールイメージ１２２を含むインストール媒体（ＣＤ−ＲＯＭドライブ等）を仮想的にマウントできる。ホストＯＳ２１４は次いで、その仮想媒体からホストエージェント２２２を再インストールすることができる。場合によっては、支援モジュール２２８が、ホストＯＳ２１４自体を再インストールする必要がある。これは例えば、現在のホストＯＳ格納イメージ１２０上に標準ホストＯＳイメージをコピーすることにより、行うことができる。標準ホストＯＳイメージは、格納装置１０８上に格納するか、またはネットワークアダプタ１１６を通じてリモート場所から取得することができる。
【００２８】
監視モジュール２２６および支援モジュール２２８は、ネットワークアダプタ１１６を通じてインターネット等の外部ネットワークにアクセスできる。これらのモジュールは、ネットワークを通じてデータを送信し、ネットワークからコマンドを受信できる。例えば、リモートのヘルプデスクが、インターネットを通じて監視モジュール２２６および支援モジュール２２８で通信することにより、コンピュータ１００に支援を提供することができる。一実施の形態では、ハードウエアまたはソフトウエアをコンピュータ１００内に設けて、ネットワークアダプタ１１６を仮想化し、ホストＯＳ２１４および支援ＯＳ２１６がともにインターネットにアクセスできるようにしてもよい。
【００２９】
一実施の形態では、支援ＯＳ２１６は、ユーザーインターフェースモジュール２３２を通じてユーザと相互作用する。このモジュールは、グラフィックアダプタ１１２、ディスプレイ１１８、キーボード１１０、およびポインティング装置１１４を介してユーザにテキストまたはグラフィックのインターフェースを提示する。上記のように、Ｉ／Ｏ仮想化ハードウエア１２６は、これらのＩ／Ｏ装置へのアクセス権をホストＯＳ２１４と支援ＯＳ２１６との間で調整することができる。一実施の形態では、支援ＯＳ２１６がＩ／Ｏ装置の一次制御権を有し、ユーザーインターフェースモジュール２３２が、必要な場合にＩ／Ｏ装置へのアクセス権をホストＯＳ２１４に与える。例えば、ユーザーインターフェースモジュール２３２は、通常は、Ｉ／Ｏアクセス権をホストＯＳ２１４に与えることができるが、ホストエージェント２２２が故障し、ホストＯＳ内部からユーザーインターフェースを提供することができない場合は、アクセス権を支援ＯＳ２１６に切換えることができる。ユーザーインターフェースモジュール２３２は、ユーザからのコマンドを監視モジュール２２６および支援モジュール２２８へ送ることができる。ユーザーインターフェースモジュール２３２は、監視モジュール２２６および支援モジュール２２８からデータを受けてユーザへ提示することもできる。
【００３０】
代替のユーザーインターフェースを、ウェブサーバ２２４により提供することができる。本実施の形態では、ユーザは、ホストＯＳ２１４内で実行されるウェブブラウザ２３４を開き、特定のユニフォームリソースロケータ（ＵＲＬ）を用いてウェブサーバ２２４へ接続する。ウェブブラウザ２３４およびウェブサーバ２２４は、上記のようにハイパーバイザ２０２を通じて通信できる。ユーザーインターフェースモジュール２３２と同様に、ウェブサーバ２２４は、ユーザからのコマンドを支援モジュール２２８へ提供でき、支援モジュール２２８からのデータをユーザへ提示できる。
【００３１】
支援モジュール２２８は、幾つかの可能性のあるトリガーに基づいて起動することができる。監視モジュール２２６は、上記のように支援の必要性を検出した場合、支援モジュール２２８を起動させることができる。支援モジュール２２８は、ユーザーインターフェースモジュール２３２またはウェブサーバ２２４を通じて、ユーザーコマンドに基づいて起動することもできる。一実施の形態では、ユーザは、特定のキーの組み合わせを押下するか、またはキーボード１１０上に特別に提供される支援ボタンを押下して、支援モジュール２２８を実行させることができる。上記説明のように、支援ＯＳ２１６がキーボード入力を受けることができるように、Ｉ／Ｏ仮想化ハードウエア１２６を設けることができる。一実施の形態では、支援モジュール２２８は、ネットワークアダプタ１１６を通じてリモートでコマンドを受け取ると、実行される。
【００３２】
ホストエージェント２２２は、ホストＯＳ２１４内部から、監視モジュール２２６、支援モジュール２２８、およびユーザーインターフェースモジュール２３２の支援関連機能の幾つかを実行できる、ホストＯＳ２１４内で実行されるアプリケーションである。ホストエージェント２２２は、支援ＯＳ内のこれらのモジュールと通信することにより、幾つかの機能がホストエージェント２２２内で実行され、その他の機能が支援ＯＳ２１６内で実行されるようにすることもできる。例えば、ホストエージェント２２２は、監視、ユーザーインターフェース、および幾つかの支援機能を実行し、それ以外の支援機能を実行する支援ＯＳ２１６と通信することができる。ホストエージェント２２２は、ホストＯＳ２１４内で実行されるので、ホストＯＳに関する動的情報を集め、新規処理の開始やシステム設定の変更等、ホストＯＳ内の変更を行うことができるという点で都合がよい。これらの変更は、支援ＯＳ２１６により直接実行する場合、ずっと複雑になることがある。
【００３３】
図３は、一実施の形態による設定モジュール２０４、監視モジュール２２６、および支援モジュール２２８の動作を示すフロー図である。設定モジュール２０４は、両仮想マシン２１０内のホストＯＳ２１４および支援ＯＳ２１６を実行する３０２。オペレーティングシステムが実行状態になると、キー押下等のユーザ入力または監視モジュール２２６が、支援の必要性をトリガーする３０４。この必要性に応答して、支援モジュール２２８は、ＯＳ状態情報２２０を含むホストＯＳ２１４を解析し、場合によっては修正する３０６。
【００３４】
上記説明は、好適な実施の形態の動作を示すよう組み込まれたものであり、本発明の範囲を制限する意味合いはない。本発明の範囲は、以下のクレームによってのみ制限されるべきである。上記説明から、本発明の精神および範囲に含まれるであろう多くの改変が、関連技術分野の技術者には明らかとなろう。
【図面の簡単な説明】
【００３５】
【図１】本発明の一実施形態による、フェイルセーフ式コンピュータ支援アシスタントを実行するコンピュータを示す高レベルブロック図である。
【図２】本発明の一実施形態によるプロセッサおよびソフトウエアにより提供される計算環境の論理図を示す。
【図３】本発明の一実施形態による設定モジュール、監視モジュール、および支援モジュールの動作を示すフロー図である。
【符号の説明】
【００３６】
１００  コンピュータ
１０２  プロセッサ
１０４  バス
１０６  メモリ
１０８  格納装置
１１０  キーボード
１１２  グラフィックアダプタ
１１４  ポインティング装置
１１６  ネットワークアダプタ１１６
１１８  ディスプレイ
２１０Ａ  ホスト仮想マシン
２１０Ｂ  支援仮想マシン
２１４  ホストＯＳ
２１６  支援ＯＳ
【図１】
2008251000.tif 000003
【図２】
2008251000.tif 000004
【図３】
2008251000.tif 000005