(57)【要約】【課題】システム状態を維持しながら、コンピュータを実環境と仮想環境の間で動作環境を遷移させる。【解決手段】実環境でＯＳ１０１を実行する。仮想環境へ移行させるための移行イベントを生成する。移行イベントに基づいてコンピュータ・システムをサスペンド状態へ移行させる。サスペンド状態から電源オン状態への復帰を開始させる。サスペンド状態から電源オン状態に復帰するまでの間に、仮想化プログラム１０９をメイン・メモリに確保された所定の領域にロードする。仮想化プログラムを実行し、オペレーティング・システムをレジュームして仮想環境に移行する。【選択図】図２
2011008646.tif 000002
【特許請求の範囲】
【請求項１】
実環境と仮想環境で動作することが可能なコンピュータ・システムに、
前記実環境でオペレーティング・システムを実行するステップと、
前記コンピュータ・システムをパワー・オン状態からシステム状態の保持が可能な節電状態へ移行した後に該節電状態から該パワー・オン状態への復帰を開始するステップと、
前記コンピュータ・システムが前記節電状態から前記パワー・オン状態に復帰するまでの間に前記仮想化プログラムをメイン・メモリに確保された所定の領域にロードするステップと、
前記仮想化プログラムを実行するステップと、
前記オペレーティング・システムをレジュームして前記仮想環境に移行するステップと
を有する処理を実行させるコンピュータ・プログラム。
【請求項２】
前記処理が、
前記仮想環境で動作する前記コンピュータ・システムを前記パワー・オン状態からシステム状態の保持が可能な節電状態へ移行した後に該節電状態から前記パワー・オン状態への復帰を開始するステップと、
前記コンピュータ・システムが前記節電状態から前記パワー・オン状態に復帰するまでの間に前記仮想化プログラムを前記所定の領域からアンロードするステップと、
前記オペレーティング・システムをレジュームして前記実環境に移行するステップと
を有する請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記処理が
前記実環境で動作した後に、前記オペレーティング・システムは前記仮想化プログラムがアンロードされた前記所定の領域を前記オペレーティング・システムに解放するステップを有する請求項２に記載のコンピュータ・プログラム。
【請求項４】
前記処理が、
前記オペレーティング・システムが実環境で動作している間に、前記オペレーティング・システムが使用していた前記メイン・メモリの領域の一部を前記所定の領域として確保するステップを有する請求項１から請求項３のいずれかに記載のコンピュータ・プログラム。
【請求項５】
前記処理が、
前記オペレーティング・システムが実環境で動作している間に、ＳＭＲＡＭ領域の一部を前記所定の領域として提供するステップを有する請求項１から請求項３のいずれかに記載のコンピュータ・プログラム。
【請求項６】
前記節電状態がサスペンド状態であり、前記復帰を開始するステップが前記サスペンド状態に移行したことに応答して前記パワー・オン状態に移行するステップを含む請求項１から請求項５のいずれかに記載のコンピュータ・プログラム。
【請求項７】
前記節電状態が、ハイバネーション状態である請求項１から請求項５のいずれかに記載のコンピュータ・プログラム。
【請求項８】
前記ロードするステップがＢＩＯＳにより実行される請求項１から請求項７のいずれかに記載のコンピュータ・プログラム。
【請求項９】
前記処理が、
前記仮想環境において、前記オペレーティング・システムのウィルスを検査するステップを有する請求項１から請求項８のいずれかに記載のコンピュータ・プログラム。
【請求項１０】
請求項１から請求項９のいずれかに記載のコンピュータ・プログラムを搭載するコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・システムを実環境と仮想環境の間で双方向に遷移させる技術に関する。
【背景技術】
【０００２】
パーソナル・コンピュータやサーバでは、ハイパーバイザまたは仮想計算機モニタ（VMM：Virtual Machine Monitor）といわれる仮想化プログラムを導入することで仮想環境を形成し、複数のオペレーティング・システム（ＯＳ）を動作させたり、ハードウエアのクラスタリングなどをしたりすることが可能である。これにより、サーバにおいては例えば既存のサーバを統合したり、特定のハードウエアで動作することを前提にしているＯＳやアプリケーション・プログラムを最新のハードウエアで動作させたり、状況に応じてＯＳを切り換えたりすることができるという利点がある。しかし、仮想環境で動作するＯＳは、仮想化プログラムがロードされていない通常のＯＳ環境である実環境で動作するＯＳに比べて、仮想化プログラムによるオーバーヘッドが増加してパフォーマンスが低下したり、メモリやＣＰＵなどのリソースを余分に消費したりするといった欠点もある。
【０００３】
特許文献１は、ホストＯＳ上でゲストＯＳが動作する仮想計算機システムにおいて、ホストＯＳに障害が発生したときに、ゲストＯＳを再起動することなくハードウエアアクセスについてゲストＯＳとホストＯＳの依存関係を切り換える技術を開示する。同文献には、ゲストＯＳをホストに、ホストＯＳをゲストに切替えるとき、ゲストＯＳが、ゲストＯＳのゲストメモリ管理情報とホストＯＳのホストメモリ管理情報とに基づいて、切り替え後のホストＯＳのメモリ管理情報となる新規ゲストメモリ管理情報と、切り替え後のゲストＯＳ３００のメモリ管理情報となる新規ホストメモリ管理情報とを生成することが記載されている。
【０００４】
特許文献２は、物理マシン上に仮想マシン環境と複数の仮想マシンが構築されている仮想マシンシステムにおいて、ＯＳの再起動をすることなく、仮想マシンで使用できるメモリの拡大および縮小を可能にする技術を開示する。同文献には、仮想マシン環境上で動作する複数の仮想マシンのそれぞれが使用可能なメモリ領域を、物理マシンが有する物理メモリに対応付け、各仮想マシンの使用メモリの量に応じて、メモリ領域の所定の領域を、各仮想マシンに対して割り当てと解放が可能な予約領域として配置することが記載されている。
【０００５】
特許文献３には、マルチＯＳを切り換える従来技術として、ＯＳの実行環境をハードディスクにサスペンドする技術が記載されている。同文献には、ＢＩＯＳがハードウエアを初期化して、ハードディスクからＯＳの実行環境を取得することが記載されている。特許文献４は、コンピュータをサスペンド状態に移行させた直後にレジュームしてシステムＢＩＯＳに制御を移す技術を開示する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−３４５７２号公報
【特許文献２】特開２００８−２２５５２０号公報
【特許文献３】特開２００８−５２４７３０号公報
【特許文献４】特開２００８−２６９３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
仮想環境の使用例は、前述のような利点の他にも考えられる。近年、コンピュータ・ウィルス、ワーム、スパイウエアといった悪意のあるソフトウエア（マルウエア）が頻繁にネットワーク経由でユーザのコンピュータ・システムに送られてくる。そのようなソフトウエアの多くは、ファイアウォールやウィルス対策のソフトエアなどにより発見され駆除される。しかし、ルートキットと呼ばれる最近開発されたソフトウエア・ツール技術は、そのようなマルウエアの存在を隠蔽して検出を困難にする。たとえばルートキットは、アプリケーション・プログラムが情報入手に利用するＡＰＩの処理を横取りし、プログラムのリストからマルウエアのプログラムを削除して隠蔽してしまうことがある。そうすると、ウィルス駆除プログラムはもはやマルウエアを発見することができなくなってしまう。
【０００８】
しかも、ＯＳ自身がルートキットの存在を認識しようとしても、すでにＯＳにルートキットが潜んでいるような場合はそれも困難になる。そのようなときに、検査対象となるＯＳとは別の検査用のＯＳを同じ仮想環境で動作させて、検査用のＯＳが検査対象となるＯＳのメイン・メモリに展開されたコードを調べたり、ＯＳが格納されていたハードディスクや不揮発性メモリなどのストレージにあるファイルを調べたりすることで、ルートキットやマルウエアの存在を検出することができる。また、ＯＳを部分的に修復するような場合も、実理環境で行うよりも仮想環境で別のＯＳによって行うほうが安全である。しかし、このようなＯＳの検査や修復のようなメインテナンス作業は定期的にまたは必要に応じて行えばよいので、ＯＳを常時パフォーマンスが低下したりリソースを余分に消費したりする仮想環境で動作させる必要はない。したがって、通常はＯＳを実環境で動作させ、必要に応じて仮想環境に移行して作業を行いまた実環境に戻ることを移行前のシステム状態を維持しながら行うことができれば、ＯＳのメインテナンスには都合がよい。
【０００９】
そこで本発明の目的は、実環境から仮想環境に実環境でのシステム状態を維持しながら移行することができるコンピュータ・プログラムを提供することにある。さらに本発明の目的は、仮想環境から実環境に仮想環境でのシステム状態を維持しながら移行することができるコンピュータ・プログラムを提供することにある。さらに本発明の目的は、実環境でのシステム状態を維持しながら一時的に仮想環境に移行してメインテナンス作業を行い、再び実環境に移行することができるコンピュータ・プログラムを提供することにある。さらに、本発明の目的は、実環境から仮想環境への移行、および仮想環境から実環境への移行を短時間で自動的に行うことができるコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明は、サーバやクライアントなどのような実環境と仮想環境のいずれでも動作することが可能なコンピュータ・システムに適用することができる。最初にコンピュータ・システムは実環境でＯＳを実行する。そして、コンピュータ・システムはパワー・オン状態からシステム状態の保持が可能な節電状態へ移行した後に節電状態からパワー・オン状態への復帰を開始する。節電状態への移行のきっかけは、内部で生成した信号や外部から受け取った信号を利用することができる。システム状態の保持が可能な節電状態は、パワー・オン状態よりも消費電力が少なく、かつ、パワー・オン状態に復帰したときには節電状態へ移行する前のシステム状態に復帰できる動作状態をいい、サスペンド状態やハイバネーション状態が含まれる。
【００１１】
つづいて、コンピュータ・システムが節電状態からパワー・オン状態に復帰するまでの間に仮想化プログラムをメイン・メモリに確保された所定の領域にロードし実行する。その後ＯＳをレジュームして仮想環境に移行する。このような手順を実行すると、実環境で動作していたコンピュータ・システムを、実環境の動作状態を保持しながら仮想環境に自動的に移行することができる。節電状態をサスペンド状態としたときには、サスペンド状態に移行したことに応答してパワー・オン状態に移行するようにすれば、きわめて短時間でコンピュータ・システムの実行環境を移行することができる。サスペンド状態に移行したことに応答してとは、システム状態を維持する処理が完了して電源の状態が当該コンピュータ・システムで定義された節電状態に移行したことに続いて行うということを意味しており、節電状態に移行してから他の条件に基づくイベントが生成されることを待っていたり、タイマで所定の時間が経過することを待っていたりした後に続いて行うようなことは含まない。
【００１２】
仮想環境から実環境へ移行するときは、実環境から仮想環境への移行のときと同様にコンピュータ・システムはパワー・オン状態からシステム状態の保持が可能な節電状態へ移行した後に節電状態からパワー・オン状態への復帰を開始する。コンピュータ・システムが節電状態からパワー・オン状態に復帰するまでの間に仮想化プログラムをメイン・メモリの所定の領域からアンロードし、さらにＯＳをレジュームすることで実環境に移行する。このような手順を実行すると、仮想環境で動作していたコンピュータ・システムを、仮想環境でのシステム状態を保持しながら実環境に移行することができる。仮想化プログラムをアンロードするということは、仮想化プログラムをメイン・メモリ上で実行不能にすることを意味しており、同時に仮想化プログラムの実行環境を不揮発性のメモリに格納してもよく、また、単に仮想化プログラムのコードを読み取ることができないように上書きしてクリアすることでもよい。
【００１３】
ＯＳが実環境で動作した後に、ＯＳは、仮想化プログラムがアンロードされたメイン・メモリの所定の領域を自らの使用のために解放することができる。こうすることで、実環境では必要のない仮想化プログラムに対してメイン・メモリを割り当てておく必要をなくして、メモリ資源を有効に活用することができる。仮想化プログラムをロードするためのメイン・メモリの領域は、ＯＳが実環境で動作している間は常時確保するようにしておいてもよいし、あるいは、ＳＭＲＡＭ領域の一部を利用して確保してもよい。
【００１４】
上記の手順によれば、通常はパフォーマンスが良好でメイン・メモリを必要以上に消費しない実環境で動作させ、必要なときだけ仮想環境で動作させることができるので都合がよい。特に、実環境では十分に行うことができず、しかも、常に実環境で行う必要がないような、ＯＳのウィルス検査や修復を仮想環境で行うような場合には都合がよい。仮想化プログラムをロードしたり、アンロードしたりするのは、節電状態からパワー・オン状態に移行する間にコンピュータ・システムの制御を取得するＢＩＯＳが行うことができる。本発明にかかるコンピュータ・プログラムは、ＢＩＯＳ、ハイパーバイザ、およびＤｏｍａｉｎ０のゲストＯＳなどで構成することができる。また、このコンピュータ・プログラムをサーバやクライアントなどのコンピュータ・システムに実装して動作環境の移行を行うことができる。
【発明の効果】
【００１５】
本発明により、実環境から仮想環境に実環境でのシステム状態を維持しながら移行することができるコンピュータ・プログラムを提供することができた。さらに本発明により、仮想環境から実環境に仮想環境でのシステム状態を維持しながら移行することができるコンピュータ・プログラムを提供することができた。さらに本発明により、実環境でのシステム状態を維持しながら一時的に仮想環境に移行してメインテナンス作業を行い、再び実環境に移行することができるコンピュータ・プログラムを提供することができた。さらに、本発明により、実環境から仮想環境への移行、および仮想環境から実環境への移行を短時間で自動的に行うことができるコンピュータ・プログラムを提供することができた。
【図面の簡単な説明】
【００１６】
【図１】コンピュータ・システムの本発明の説明に必要な構成を示す機能ブロック図である。
【図２】コンピュータ・システムが実環境で動作するときと仮想環境で動作するときのソフトウエアの構成を説明する図である。
【図３】コンピュータ・システムが実環境から仮想環境に移行するときの手順を示すフローチャートである。
【図４】ハイパーバイザとＤｏｍａｉｎ０のゲストＯＳのモジュールをロードするために、メイン・メモリの記録領域を確保する様子を示す図である。
【図５】コンピュータ・システムが仮想環境から実環境に移行するときの手順を示すフローチャートである。
【発明を実施するための形態】
【００１７】
図１は、コンピュータ・システム１０の本発明の説明に必要な構成を示す機能ブロック図である。ノース・ブリッジ１３には、ＣＰＵ１１、メイン・メモリ１５、ビデオ・コントローラ１７、およびサウス・ブリッジ１９が接続されている。コンピュータ・システム１０は、ハイパーバイザ型の仮想化ソフトウエアに対してＨＶＭ（Hardware Virtual Machine）というＣＰＵの支援による仮想化を行うことにより、ＯＳに修正を加える必要のない完全仮想化を実現する。ＨＶＭを利用することで、Ｗｉｎｄｏｗｓ（登録商標）のようなソースコードが公開されていないＯＳも仮想環境で実行することができるようになる。
【００１８】
ＣＰＵ１１は、ＨＶＭを実現するための仮想化支援機構を実装している。仮想化支援機構は、たとえばインテル社のＣＰＵに搭載されるＶＴ（Virtualization Technology）またはＡＭＤ社のＣＰＵに搭載されるＡＭＤ−Ｖという技術で提供されている。仮想化支援機構を搭載したＣＰＵ１１では、ＯＳのカーネルは通常どおりリング０の特権レベルで動作し、ハイパーバイザはリング０の上に追加された仮想的なリング−１に相当する特権レベルで動作する。ただし、本発明は、ハイパーバイザがリング０で動作し、ＯＳのカーネルがリング１で動作するような準仮想化に適用することもできる。準仮想化は、ＯＳが実環境で動作する場合に比べてパフォーマンスの低下が少ないが、カーネルの動作環境を変更するためにコードに修正を加える必要がある。
【００１９】
ビデオ・コントローラ１７にはＬＣＤ１９が接続されている。サウス・ブリッジ１９にはＳＡＴＡ（Serial Advanced Technology Attachment）、ＨＤＡ（High Definition Audio）バス、ＵＳＢ（Universal Serial Bus）、ＰＣＩ（Peripheral Component Interconnect）バス、ＬＰＣ（Low Pin Count）バスなどに対するインターフェース回路が組み込まれている。ＳＡＴＡインターフェースにはＨＤＤ２１が接続されている。ＨＤＤ２１には、ハイパーバイザとしてのＸｅｎ（商標）、ゲストＯＳとしてのＷｉｎｄｏｗｓ（登録商用）およびＬｉｎｕｘ（登録商標）が格納されている。ＬＰＣバス２３には、エンベデッド・コントローラ（ＥＣ）２５およびフラッシュＲＯＭ２７などが接続されている。
【００２０】
ＥＣ２５は、８〜１６ビットのＣＰＵ、ＲＯＭ、ＲＡＭなどで構成されたマイクロ・コンピュータであり、さらに複数チャネルのＡ／Ｄ入力端子、Ｄ／Ａ出力端子、タイマ、およびディジタル入出力端子を備えている。ＥＣ２５は、コンピュータ・システム１０の内部の温度や電源などの動作環境の管理にかかるプログラムをＣＰＵ１１とは独立して実行することができる。ＥＣ２５は、キーボード・コントローラを含んでおり、キーボード２９が接続されている。コンピュータ・システム１０はＡＣＰＩ（Advanced Configuration and Power Interface）の規格に適合しており、フラッシュＲＯＭ２７には、ＡＣＰＩに対応するＢＩＯＳが格納されている。
【００２１】
ＡＣＰＩの規格では、複数のパワーステートが定義されており、コンピュータ・システム１０は、パワー・オン状態であるＳ０ステート、作業内容をメイン・メモリ１５に書き込んでメイン・メモリ１５の記憶を保持するために必要なデバイスと再起動に必要なデバイスにだけ電力を供給するサスペンド状態というＳ３ステート、作業内容をＨＤＤ２１やその他の不揮発性メモリなどに書き込んで再起動に必要なデバイスにだけ電力を供給するハイバネーション状態というＳ４ステート、および再起動に必要なデバイスにだけ電力を供給するソフトオフまたはパワー・オフ状態というＳ５ステートのいずれかの状態に移行することができる。サスペンド状態では、サウス・ブリッジ１９、ＥＣ２５およびフラッシュＲＯＭ２７への電力は維持されている。
【００２２】
図２は、コンピュータ・システム１０が実環境で動作するときと仮想環境で動作するときのソフトウエアの構成を説明する図である。図２（Ａ）はコンピュータ・システム１０が実環境で動作するときの状態を示しており、ハードウエア１０５上でゲストＯＳ１０１が動作し、ゲストＯＳ上ではアプリケーション１０２が動作する。ゲストＯＳ１０１はアプリケーションに対してＣＰＵ１１、ＨＤＤ２５、メイン・メモリ１３、およびフラッシュＲＯＭ２７などのコンピュータ・システム１０に搭載されているハードウエア１０５を抽象化する。ＢＩＯＳ１０３は、ゲストＯＳ１０１またはアプリケーション１０２からの指示でハードウエア１０５に直接アクセスすることができる。
【００２３】
なお、ゲストＯＳには、実環境で動作するときは「ゲスト」という概念は存在しないが、実環境で動作するときは、仮想環境で動作するときとモジュールの構成には変わりがないので、説明の都合上実環境で動作するときもゲストＯＳ１０１として表現する。ゲストＯＳ１０１は、本実施の形態ではＷｉｎｄｏｗｓ（登録商標）とする。図２（Ｂ）はコンピュータ・システム１０が仮想環境で動作するときの状態を示しており、ハイパーバイザ１０９がハードウエア１０５の上に仮想化層として存在し、ゲストＯＳ１０１、１０７に対する仮想マシンを提供する。ゲストＯＳ１０１、１０７は、ハイパーバイザ１０９の上でアプリケーションと同じようにそのサービスを受けながら動作する。本実施の形態では、ハイパーバイザ１０９はオープンソース・ソフトウエアとして提供されているＸｅｎを採用し、ゲストＯＳ１０７としてはＬｉｎｕｘ（登録商標）を採用しているがこの選定は一例である。ゲストＯＳ１０７はハイパーバイザ１０７のＤｏｍａｉｎ０として実行されて、特別な権限が与えられてハードウエア１０５へのアクセスが許可される。ゲストＯＳ１０１はハイパーバイザのＤｏｍａｉｎＵとして実行される。
【００２４】
ゲストＯＳ１０７には、ゲストＯＳ１０１のウィルスを検査したり、ゲストＯＳ１０１を修復したりするメインテナンス・システムが組み込まれている。メインテナンス・システムは、ハイパーバイザ１０９のモジュールの一部として構成することでもよい。本実施の形態では、ＣＰＵ１１の仮想化支援機構を利用して仮想環境を実現しているため、ゲストＯＳ１０１には修正を加える必要がない。また、ハードウエア１０５も必要に応じて行う仮想化支援機構の設定変更以外は修正する必要がない。ただし、ハイパーバイザ１０９およびＢＩＯＳ１０３には、図３、図５の手順を実行するための機能を組み込む必要がある。
【００２５】
図３は、コンピュータ・システム１０が実環境から仮想環境に移行するときの手順を示すフローチャートである。ブロック３０１では、コンピュータ・システム１０が実環境においてパワー・オン状態で動作し、図２（Ａ）に示す状態でプログラムが実行されている。ブロック３０３では、コンピュータ・システム１０に仮想環境に移行するためのイベントが生成されゲストＯＳ１０１が受け取る。本実施の形態における仮想環境への移行は、ゲストＯＳ１０１を検査したりメインテナンスしたりするために一時的に行われる。イベントは、ユーザがキーボード２９のキーに割り当てられた特別なキーを操作したことをＢＩＯＳ１０３が検知して生成したり、ゲストＯＳ１０１上で実行されているスケジュール管理用のアプリケーションが定期的に生成したりすることができる。
【００２６】
イベントは、コンピュータ・システム１０をサスペンドに移行させることを含む。コンピュータ・システム１０では、サスペンドへの移行が通常のサスペンドと、実環境と仮想環境との間の動作モードの遷移を目的とするサスペンドとの２とおりが実行される。ゲストＯＳ１０１およびＢＩＯＳ１０３は、イベントが通常サスペンドを目的とするものか動作環境の遷移を目的とするものかを認識することができるようになっている。ただし、コンピュータ・システム１０に通常のサスペンド状態に移行するイベントが発生したときは、常に図３または図５の手順を実行するようにあらかじめＢＩＯＳ１０３に設定しておいてもよい。
【００２７】
ブロック３０５では、ゲストＯＳ１０１が、ＡＣＰＩのプラグアンド・プレイの機能を利用して、ゲストＯＳ１０１に対してメイン・メモリ１５に割り当てられていた記憶領域をダイナミックに低減して、その分をハイパーバイザ１０９とゲストＯＳ１０７をロードするために割り当てる。図４は、ハイパーバイザ１０９とＤｏｍａｉｎ０のゲストＯＳ１０７のモジュールをロードするために、メイン・メモリ１５の記録領域を確保する様子を示す図である。この例では、メイン・メモリ１５の容量は２ＧＢであり、それに対してＣＰＵ１１は３２ビットでデータ処理をすることができるためプログラムは４ＧＢの論理アドレス空間を利用することができる。図４には、メイン・メモリ１５に対応する２ＧＢの物理アドレス空間２０１と、ハイパーバイザ１０９とゲストＯＳ１０７に対応するリニア・アドレス空間２０３と、ゲストＯＳ１０１に対応するリニアドレス空間２０５が示されている。
【００２８】
リニア・アドレス空間２０５には、ブロック３０１でゲストＯＳ１０１が動作している間は、仮想アドレス領域２１３、２１５が割り当てられ、物理アドレス空間２０１の物理アドレス領域２０９、２１１がそれらにマッピングされて、ページング機能を利用してゲストＯＳ１０９が実行されている。ここでゲストＯＳ１０１は、ハイパーバイザ１０９とゲストＯＳ１０７に割り当てるための物理アドレス領域２１１を低減して、ハイパーバイザ１０９とゲストＯＳ１０７に仮想アドレス領域２０７を割り当て、自らの仮想アドレス領域を２１３に低減する。そして、ハイパーバイザ１０９とゲストＯＳ１０７には、物理アドレス領域２１１にマッピングされた仮想アドレス領域２０７を割り当て、ゲストＯＳ２１３には物理アドレス領域２０９にマッピングされた仮想アドレス領域２１３を割り当てることで、ハイパーバイザ１０９をロードできるようにする。
【００２９】
ブロック３０７では、ＢＩＯＳ１０３がＥＣ２５のレジスタに、ＥＣ２５に対してコンピュータ・システム１０がサスペンド状態に移行した状態を示す情報が入力されたときに、コンピュータ・システム１０をパワー・オン状態に移行させるための瞬時ウェイクアップの設定をする。この設定はＲＴＣ（Real Time Clock）を利用して行うようにしてもよい。そして、ＢＩＯＳ１０３は、ＥＣ２５への瞬時ウェイクアップの設定が終了するとゲストＯＳ１０１にその旨を通知する。ただし、本発明における動作環境の移行は、ウェイクアップが瞬時に行われない場合でも行うことができる。
【００３０】
ブロック３０９では、ゲストＯＳ１０１は、ＣＰＵ１１や他のデバイスのレジスタに記憶された情報などのブロック３０１で動作する状態を維持するために必要な情報をすべてメイン・メモリ１５に記憶したのちに、サウス・ブリッジ１９にコンピュータ・システム１０をサスペンド状態に移行させるための電源の処理をさせる。つづいて、コンピュータ・システム１０のステート・マシーンは、コンピュータ・システム１０の電源状態がサスペンド状態に移行したことをＥＣ２５に通知する。コンピュータ・システム１０がサスペンド状態に移行すると、ＣＰＵ１１に供給されていた電力が停止してリセットされる。通知を受け取ったＥＣ２５は、コンピュータ・システム１０をウェイクアップさせてパワー・オン状態への移行を開始させる。なお、この時点でゲストＯＳ１０１のモジュールは、仮想アドレス領域２１３にマッピングされた物理アドレス領域２０９にロードされている。
【００３１】
ＣＰＵ１１は、リセットされてから動作を開始するときには、最初にＢＩＯＳ１０３を実行するようにアドレスが指定される。ブロック３１１では、ＢＩＯＳ１０３が仮想アドレス領域２０７にマッピングされたメイン・メモリ１５の物理アドレス領域２１１にＨＤＤ２５からハイパーバイザ１０９とゲストＯＳ１０７のモジュールをロードする。そして、必要に応じてＣＰＵ１１の仮想化支援機構をイネーブルにしたり、ノース・ブリッジ１３に含まれるメモリ・コントローラの設定を変更したりする。ブロック３１３では、ＢＩＯＳ１０３のなかのレジュームを行うためのコードが実行されて、ＳＭＩの設定および必要なハードウエアの設定が行われる。つづいて、ハイパーバイザ１０９に制御が移りハイパーバイザ１０９はレジュームして必要な処理を行う。つづいて、ハイパーバイザ１０９がゲストＯＳ１０７の所定のアドレスに制御を移すとゲストＯＳ１０７がレジュームする。
【００３２】
ブロック３１５では、ゲストＯＳ１０７がハイパーバイザ１０９に制御を移し、ハイパーバイザ１０９がゲストＯＳ１０１の復帰アドレスに制御を移すと、ゲストＯＳ１０１がレジュームしてメイン・メモリ１５に記憶されていたレジスタの情報を各レジスタに戻す。その結果、コンピュータ・システム１０は、仮想環境が実現された状態でブロック３０１のシステム状態に復帰する。ブロック３１５では、コンピュータ・システム１０が図２（Ｂ）に示した仮想環境で動作し、ゲストＯＳ１０７に組み込まれたメインテナンス・システムがゲストＯＳ１０１のウィルスを検査したり、ゲストＯＳ１０１を修復したりする。
【００３３】
上記の手順では、ブロック３０５の手順でハイパーバイザ１０９とゲストＯＳ１０７をロードするためのメイン・メモリ１５の物理アドレス領域２１１を確保したが、メイン・メモリの物理アドレス領域を確保するには他の方法もある。ＣＰＵ１１は、ＳＭＩ（System Management Interrupt）入力ピン（ＳＭＩ＃）がアサートされることによって、システム管理用の動作モードであるＳＭＭ（System Management Mode）で動作することが可能である。ＳＭＭを実現するために、メイン・メモリ１５には、コンピュータ・システム１０がＳＭＭで動作するときにＣＰＵ１１が独占的に使用できるＳＭＲＡＭ領域が確保されている。メイン・メモリ１５には、本来のＳＭＭの実行に必要なＳＭＲＡＭの容量に加えて、ハイパーバイザ１０９とゲストＯＳ１０７をロードするのに必要な容量がＳＭＲＡＭとしてあらかじめ確保されている。
【００３４】
そして、コンピュータ・システム１０が実環境で動作するときは、ＳＭＲＡＭ領域全体がゲストＯＳ１０１からアクセスできないように、ノース・ブリッジ１３に組み込まれたメモリ・コントローラが設定されている。ＢＩＯＳ１０３は、メモリ・コントローラに対して、ＳＭＲＡＭ領域の一部が物理アドレス領域２１１の分だけゲストＯＳ１０７がアクセスできるように解放する。この方法は、サスペンド状態からウェイクアップしてＢＩＯＳ１０３に制御が移行したときにＢＩＯＳ１０３により実行されるようにする。メイン・メモリ１５に確保する物理アドレス領域はＳＭＲＡＭ領域ではなく、ＯＳ１０７からのアクセスが可能なメイン・メモリ１５の通常の記憶領域の一部に確保しておいてもよい。
【００３５】
図５は、コンピュータ・システム１０が仮想環境から実環境に移行するときの手順を示すフローチャートである。ブロック４０１では、図３に示した手順を経てコンピュータ・システム１０が図２（Ｂ）に示す仮想環境においてパワー・オン状態で動作している。ブロック３０３では、コンピュータ・システム１０に実環境に移行するためのイベントが生成されゲストＯＳ１０１がそれを受け取る。ブロック４０３、４０５、４０７は、図３のブロック３０３、３０７、３０９で説明したのと同じ手順で実行される。ただし、サスペンド状態への移行作業は、ゲストＯＳ１０１だけでなくハイパーバイザ１０９およびゲストＯＳ１０７も行う。
【００３６】
ブロック４０７では、サスペンド状態に移行するために、ゲストＯＳ１０１がＢＩＯＳ１０３に含まれるＡＣＰＩテーブルを参照して必要な情報を収集する。ＯＳ環境での状態遷移が終了したあとに、ゲストＯＳ１０１はＡＣＰＩテーブルから得た仮想ハードウエアのＩ／ＯアドレスにＩ／Ｏ命令を出して、サスペンド状態への移行作業を行う。同様にゲストＯＳ１０７も仮想ハードウエアにＩ／Ｏ命令を出してサスペンド状態への移行作業を行う。ハイパーバイザ１０９は、ゲストＯＳ１０１とゲストＯＳ１０７によるサスペンド状態への移行作業が終了したことを確認すると、実際のハードウエア１０５にＩ／Ｏ命令を出してサスペンド状態に移行する。必要に応じて、サスペンド状態に移行するためにＢＩＯＳ１０３がＩ／Ｏ命令をトラップしてサウス・ブリッジ１９を設定する。
【００３７】
サスペンド状態に移行したコンピュータ・システム１０では、メイン・メモリ１５の物理アドレス領域２１１にハイパーバイザ１０９およびゲストＯＳ１０７のモジュールが記憶され、物理アドレス領域２０９にはゲストＯＳ１０１のモジュールが記憶されている。ブロック４０９では、ＢＩＯＳ１０３がハイパーバイザ１０９とゲストＯＳ１０７のモジュールをメイン・メモリ１５からアンロードし、さらに、記憶内容をゼロ・クリアして他のプログラムから記憶されていた情報が読み取られないようにする。ブロック４１１では、ゲストＯＳ１０１のモジュールがレジュームする。この時点で、ゲストＯＳ１０１にはまだ、物理アドレス領域２０９が割り当てられている。
【００３８】
ブロック４１３では、ゲストＯＳ１０１が、ハイパーバイザ１０９とゲストＯＳ１０７に割り当てられていた物理アドレス領域２１１を解放して自らの物理アドレス領域として使用するために、リニア・アドレス空間２０５に仮想アドレス領域２１５を追加する。したがって、仮想環境から実環境に移行したときに、ゲストＯＳ１０１は、メイン・メモリ１５で使用できるアドレス領域を拡大することができるので、仮想環境の一時的な利用のためにメモリ・リソースが低下することを防ぐことができる。図３の手順でＳＭＲＡＭ領域の一部を物理アドレス領域として使用していた場合は、ＢＩＯＳ１０３は、そのアドレス領域にＯＳ１０１やアプリケーションがアクセスできないように、メモリ・コントローラに設定する。
【００３９】
図３、図５の手順では、サスペンド状態への遷移を介在させて実環境と仮想環境の双方向の移行を実現する方法を説明したが、本発明は、ハイバネーション状態を介在させて実現することもできる。通常ハイバネーションからウェイクアップするときは、コンピュータ・システム１０に、キーボード２９、筐体のスイッチ、またはネットワークからのウェイク・オン・ラン（Wake On LAN）機能などを通じてウェイクアップの信号が供給される。本発明を、ハイバネーションを経由して実現する上では、そのような方法でウェイクアップさせてもよいが、コンピュータ・システム１０の中で管理するスケジュール管理機構がイベントを生成して動作環境の移行を強制的に行わせるようにしてもよい。
【００４０】
また、図３、図５の手順では、ブロック３０９、４０７で、サスペンド状態に移行したことに応答してウェイクアップが開始するようになっているが、本発明は、サスペンド状態に移行してからキーボードからの信号入力、ウェイク・オン・ランまたはスケジュール管理機構のイベントに基づいてウェイクアップさせるようにしてもよい。さらに双方向への動作環境の移行を、サスペンド状態の介在とハイバネーション状態の介在のいずれも採用して行うようにしてもよい。サスペンド状態を経由する場合でもハイバネーション状態を経由する場合でも、本発明では、実環境と仮想環境の間での移行を移行前のシステムの状態を保持しながら行うことにより移行先では移行前のシステム状態に復帰することができる。
【００４１】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【００４２】
２０１…物理アドレス空間
２０３、２０５…リニア・アドレス空間
２０７、２１３、２１５…仮想アドレス領域
２０９、２１１…物理アドレス領域
【図１】
2011008646.tif 000003
【図２】
2011008646.tif 000004
【図３】
2011008646.tif 000005
【図４】
2011008646.tif 000006
【図５】
2011008646.tif 000007