(57)【要約】【課題】複数のＯＳを容易に管理する方法を提供する。【解決手段】  メイン・メモリの第１の物理アドレス領域にホストＯＳとゲストＯＳと仮想化モジュールをロードする。第１の物理アドレス領域においてゲストＯＳを仮想環境で実行する（状態２０５）。第１の物理アドレス領域にロードされたゲストＯＳのメモリ・イメージを第２の物理アドレス領域にコピーする。第２の物理アドレス領域にコピーされたゲストＯＳにプロセッサの制御権を移してゲストＯＳを実環境で実行する（状態２０７）。【選択図】図６
2014215621.tif 000002
【特許請求の範囲】
【請求項１】
第１のオペレーティング・システムまたは第２のオペレーティング・システムの実行が可能なコンピュータの動作を制御する方法であって、
メイン・メモリの第１の物理アドレス領域に前記第１のオペレーティング・システムをロードするステップと、
前記第１の物理アドレス領域に前記第２のオペレーティング・システムをロードするステップと、
ロードされた前記第２のオペレーティング・システムが前記第１の物理アドレス領域において仮想環境で動作するステップと、
前記第１の物理アドレス領域にロードされた前記第２のオペレーティング・システムのメモリ・イメージを前記メイン・メモリの第２の物理アドレス領域にサスペンド状態を経由してコピーするステップと、
前記第２の物理アドレス領域にコピーされた前記第２のオペレーティング・システムがプロセッサの制御権を取得して実環境で動作するステップと
を有する方法。
【請求項２】
前記仮想環境で動作するステップが、前記第１のオペレーティング・システムが前記コンピュータに前記第２のオペレーティング・システムをメインテナンスする機能を発揮させるステップを含む請求項１に記載の方法。
【請求項３】
前記第２のオペレーティング・システムをロードするステップが、
複数のオペレーティング・システムの中から選択された前記第２のオペレーティング・システムをユーザが操作する入力デバイスが指定するステップを含む請求項１または請求項２に記載の方法。
【請求項４】
前記第１のオペレーティング・システムが前記第１の物理アドレス領域の物理アドレス空間に論理的に区分された前記第２のアドレス領域を確保するステップを有する請求項１から請求項３のいずれかに記載の方法。
【請求項５】
前記仮想環境で動作するステップが、前記第１のオペレーティング・ステップの上層で動作する仮想化モジュールがタイプ２の仮想環境を構築するステップを含む請求項１から請求項４のいずれかに記載の方法。
【請求項６】
前記第１のオペレーティング・システムと前記第２のオペレーティング・システムと前記仮想化モジュールを一連のブート・シーケンスでロードするステップを含む請求項５に記載の方法。
【請求項７】
前記第２のオペレーティング・システムを前記実環境で動作するステップが、前記第２のオペレーティング・システムがプラグ・アンド・プレイを実行してハードウェアを再構成するステップを含む請求項１から請求項６のいずれかに記載の方法。
【請求項８】
前記コピーするステップが、
前記コンピュータを前記サスペンド状態に移行させるステップと、
前記コンピュータが前記サスペンド状態からレジュームしたときに実行されるシステム・ファームウェアが前記コンピュータにコピーする機能を発揮させるステップと
を含む請求項１から請求項７のいずれかに記載の方法。
【請求項９】
前記第１のオペレーティング・システムに前記サスペンド状態を経由して前記プロセッサの制御権を渡すステップと、
前記第１のオペレーティング・システムが前記第１の物理アドレス領域の前記第２のオペレーティング・システムが記憶されていたアドレス領域を解放するステップと
を有する請求項１から請求項８のいずれかに記載の方法。
【請求項１０】
ユーザが操作する入力デバイスが生成した切換イベントに応じてプロセッサの制御権を前記第１のオペレーティング・システムと前記第２のオペレーティング・システムの間で切り換えるステップを有する請求項９に記載の方法。
【請求項１１】
前記第１のオペレーティング・システムと前記第２のオペレーティング・システムがディスク・ドライブの同一のブート・パーティションに格納されている請求項１から請求項１０のいずれかに記載の方法。
【請求項１２】
キーボードとタッチスクリーンを備えるコンピュータであって、
第１のオペレーティング・システム、第２のオペレーティング・システムおよび前記第２のオペレーティング・システムに仮想環境を提供することが可能な仮想化モジュールを格納するディスク・ドライブと、
前記第１のオペレーティング・システム、前記第２のオペレーティング・システムおよび前記仮想化モジュールがロードされ前記第２のオペレーティング・システムが仮想環境で動作することが可能な第１の物理アドレス領域と、該第１の物理アドレス領域から論理的に区分された第２の物理アドレス領域が定義されるメイン・メモリと、
前記第１の物理アドレス領域にロードされた前記第２のオペレーティング・システムのメモリ・イメージを前記第２の物理アドレス領域にコピーするように前記コンピュータを機能させるシステム・ファームウェアを格納する不揮発性メモリとを有し、
前記メモリ・イメージがコピーされた前記第２のオペレーティング・システムが前記第２の物理アドレス領域において実環境で動作するコンピュータ。
【請求項１３】
前記第２のオペレーティング・システムがプラグ・アンド・プレイを実行して前記仮想環境で構成されたハードウェアを前記実環境で再構成するように前記コンピュータを機能させる請求項１２に記載のコンピュータ。
【請求項１４】
前記第１のオペレーティング・システムが前記コンピュータを前記キーボードからの入力が可能なように機能させ、前記第２のオペレーティング・システムが前記コンピュータを前記タッチスクリーンからの入力が可能なように機能させる請求項１２または請求項１３に記載のコンピュータ。
【請求項１５】
前記コンピュータが、クラムシェル・モードとタブレット・モードで動作できるコンパーチブル型の携帯式コンピュータである請求項１２から請求項１４のいずれかに記載のコンピュータ。
【請求項１６】
前記コンピュータが、ベース・ユニットから前記タッチスクリーンを含むタブレット・ユニットを取り外すことが可能なハイブリッド型の携帯式コンピュータである請求項１２から請求項１４のいずれかに記載のコンピュータ。
【請求項１７】
第１のオペレーティング・システムと第２のオペレーティング・システムの実行が可能なコンピュータに、
メイン・メモリの第１の物理アドレス領域において前記第１のオペレーティング・システムを実環境で動作させ前記第２のオペレーティング・システムを仮想環境で動作させる機能と、
前記第１の物理アドレス領域にロードされた前記第２のオペレーティング・システムのメモリ・イメージを第２の物理アドレス領域にコピーさせる機能と、
前記第２の物理アドレス領域において前記第２のオペレーティング・システムを実環境で動作させる機能と
を実現させるためのコンピュータ・プログラム。
【請求項１８】
前記第１のオペレーティング・システムが前記仮想環境で動作する
前記第２のオペレーティング・システムをメインテナンスする機能を有する請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
前記第１の物理領域にロードされた前記第２のオペレーティング・システムのアドレス領域を前記第１のオペレーティング・システムに解放する機能と、
前記第１のオペレーティング・システムが前記実環境で動作する状態と前記第２のオペレーティング・システムが前記実環境で動作する状態を切り換える機能を有する請求項１７または請求項１８に記載のコンピュータ・プログラム。
【請求項２０】
前記第２のオペレーティングが前記仮想環境で構成した仮想ハードウェアを前記実環境で再構成する機能を含む請求項１７から請求項１９のいずれかに記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同一のハードウェア上で動作することが可能な複数のオペレーティング・システムを実行および管理する技術に関する。
【背景技術】
【０００２】
ノートブック型パーソナル・コンピュータ（ノートＰＣ）またはデスクトップ型パーソナル・コンピュータ（デスクトップＰＣ）には、同一のハードウェア環境に仮想環境を構築して複数のオペレーティング・システム（ＯＳ）を動作させることができる。仮想環境にはハイパーバイザ型（タイプ１）とホストＯＳ型（タイプ２）がある。ＯＳの中には、ノートＰＣやデスクトップＰＣで使用されてきたこれまでの伝統的なＯＳに加えて、タブレット端末やスマートフォンなどで使用するために開発されたモバイル型のＯＳもある。ノートＰＣやデスクトップＰＣはＧＵＩに対してキーボードやポインティング・デバイスから文字を入力したり図形を編集したりする場合などに適しているのに対し、タブレット端末はタッチスクリーンからの文字入力も可能であるが特にＷｅｂサイトの閲覧に適している。
【０００３】
特許文献１は、タイプ１の仮想環境と実環境の間でコンピュータの動作環境を遷移させる発明を開示する。同文献にはタイプ１の仮想環境を構築して一方のＯＳが他方のＯＳを検査することによりルートキットやマルウェアの存在を確実に検出することが記載されている。また、他方のＯＳがみずからを修復するよりも一方のＯＳが当該他方のＯＳを修復したほうが確実に行えることが記載されている。
【０００４】
さらに同文献には、検査や修復と言ったメインテナンスは定期的にまたは必要に応じて行えばよいので、他方のＯＳを常時パフォーマンスの低い仮想環境で動作させないで、メインテナンスをしないときは実環境で動作させることが記載されている。そして、他方のＯＳの動作環境を実環境と仮想環境の間で切り換えるために、サスペンドしてからただちにレジュームする手法を利用することが記載されている。
【０００５】
特許文献２は、複数のＯＳを搭載したコンピュータにおいて動作するＯＳを切り換える発明を開示する。同文献には、起動時に複数のＯＳのブート・ローダに順次アクセスして、システムに共存するすべてのＯＳを割り当てられた論理メモリ・ブロックにロードすることが記載されている。また動作するＯＳを切り換える際にサスペンドおよびレジュームの手法を採用することが記載されている。
【０００６】
特許文献３は、ホストＯＳ上でゲストＯＳが動作するホストＯＳ型の仮想環境において、ホストＯＳに障害が発生したときに、ゲストＯＳを再起動することなくハードウエアアクセスについてゲストＯＳとホストＯＳの依存関係を切り換える発明を開示する。同文献には、ゲストＯＳをホストに、ホストＯＳをゲストに切替えるときのメモリ管理情報の生成方法を開示する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−８６４６号公報
【特許文献２】特開２００１−２５６０６６号公報
【特許文献３】特開２００７−３４５７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に記載するように、仮想環境で複数のＯＳを実行して一方のＯＳが他方のＯＳを検査したり修復したりすれば安全性および確実性を向上できる。ただし、特許文献１の発明では、他方のＯＳの実行環境を実環境と仮想環境で切り換えることはできるが、一方のＯＳと他方のＯＳのいずれも実環境で動作するように双方向に切り換えることはできない。また、他方のＯＳをロードしてからハイパーバイザと一方のＯＳをロードしてタイプ１の仮想環境を構築し、仮想環境で他方のＯＳの検査が終了すると、一方のＯＳとハイパーバイザのメモリ・イメージをメイン・メモリから消去して他方のＯＳを実環境の動作に戻しているため、実行する他方のＯＳを変更するたびに一方のＯＳとハイパーバイザをロードする必要があり切り換えに時間を費やす。
【０００９】
また特許文献２の発明のようにシステムが複数のＯＳを切り換えて実行できる場合であっても、通常は各ＯＳの利用頻度が均等ではなく、主として使用する主たるＯＳと補助的に使用する従たるＯＳが存在する。主たるＯＳは、できるだけ広い物理アドレス空間を利用できればパフォーマンスの向上の面で有利である。特許文献２の発明では、最初にメイン・メモリ上で共存させるすべてのＯＳを各論理ブロックにブートしておく必要があるため、主たるＯＳが使用する実メモリ空間が制限されたり、主たるＯＳを実行したあとに複数の従たるＯＳのなかからいずれかを選択して実行することができなかったりして操作の柔軟性に欠ける面がある。したがって、主たるＯＳの動作環境を維持しながら、従たるＯＳのブート、メインテナンスおよびシャットダウンができ、かつ、従たるＯＳを高いパフォーマンスで実行できる方法が望まれている。
【００１０】
そこで本発明の目的は、同一のハードウェア上で動作することが可能な複数のＯＳを容易に管理する方法を提供することにある。さらに本発明の目的は、ＯＳの動作環境を迅速に切り換える方法を提供することにある。さらに本発明の目的は、一方のＯＳが他方のＯＳをメインテナンスしたあとに、他方のＯＳを実環境で動作させる方法を提供することにある。さらに本発明の目的は、実環境で動作することが可能な一方のＯＳに対する制御権と実環境で動作することが可能な他方のＯＳに対する制御権を切り換える方法を提供することにある。さらに本発明の目的は、ユーザが使用する入力デバイスが異なるＯＳの動作環境を切り換える方法を提供することにある。さらに本発明の目的はそのような方法を実現するコンピュータ・プログラムおよびコンピュータを提供することにある。
【課題を解決するための手段】
【００１１】
本発明は、第１のオペレーティング・システムまたは第２のオペレーティング・システムの実行が可能なコンピュータの動作を制御する方法を提供する。メイン・メモリの第１の物理アドレス領域に第１のオペレーティング・システムをロードする。つぎに第１の物理アドレス領域に第２のオペレーティング・システムをロードする。ロードされた第２のオペレーティング・システムを第１の物理アドレス領域において仮想環境で実行する。仮想環境はタイプ１でもタイプ２でもよい。第１の物理アドレス領域にロードされた第２のオペレーティング・システムのメモリ・イメージをメイン・メモリの第２の物理アドレス領域にサスペンド状態を経由してコピーする。第２の物理アドレス領域にコピーされた第２のオペレーティング・システムにプロセッサの制御権を移して実環境で実行する。
【００１２】
第２のオペレーティング・システムは仮想環境で動作したあとに、メモリ・イメージが第２の物理アドレス領域にサスペンド状態を経由してコピーされるため、第１のオペレーティング・システムのメモリ・イメージをメイン・メモリに確保した状態で第２のオペレーティング・システムを実環境で動作させることができる。本発明に好適なコンピュータは入力デバイスとしてキーボードとタッチスクリーンを含むことができる。
【００１３】
さらに詳細には本発明に好適なコンピュータは、クラムシェル・モードとタブレット・モードで動作できるコンパーチブル型の携帯式コンピュータまたはベース・ユニットからタッチスクリーンを含むタブレット・ユニットを取り外すことが可能なハイブリッド型の携帯式コンピュータとすることができる。そして、第１のオペレーティング・システムはキーボードまたはポインティング・デバイスから入力が可能な主たる動作環境を形成し、第２のオペレーティング・システムはタッチスクリーンから入力が可能な従たる動作環境を構築することができる。
【００１４】
第２のオペレーティング・システムのメモリ・イメージをコピーする前に、仮想環境で第１のオペレーティング・システムが第２のオペレーティング・システムをメインテナンスすることができる。メインテナンスには、第２のオペレーティング・システムが自ら行うことが困難なウィルス検査や修復を含むことができる。第２のオペレーティング・システムをロードする際に、複数のオペレーティング・システムの中から選択された第２のオペレーティング・システムをユーザが操作する入力デバイスが指定することができる。
【００１５】
この場合、第１のオペレーティング・システムを実行しているユーザが第２のオペレーティング・システムを使用したいときに、入力デバイスを操作して第２のオペレーティング・システムを第１の物理アドレス領域にロードしてから第２の物理アドレス領域にコピーすることにより実環境で実行することができる。第１のオペレーティング・システムは第１の物理アドレス領域の物理アドレス空間に論理的に区分された第２の物理アドレス領域を確保することができる。この場合、第２のオペレーティング・システムを実行する必要がない場合は、第２の物理アドレス領域を確保しないで第１のオペレーティング・システムが広い物理アドレス空間を利用することができる。
【００１６】
第１のオペレーティング・システムの上層で動作する仮想化モジュールがタイプ２の仮想環境を構築することができる。この場合、第２のオペレーティング・システムを実環境で動作させるとパフォーマンスを大幅に改善することができる。実行する第２のオペレーティング・システムの種類が決まっている場合は、第１のオペレーティング・システムと第２のオペレーティング・システムと仮想化モジュールは一連のブート・シーケンスでロードしてもよい。
【００１７】
実環境で第２のオペレーティング・システムを実行する際に、第２のオペレーティング・システムがプラグ・アンド・プレイを実行してハードウェアを再構成することができる。この場合、仮想化モジュールがハードウェアを十分にエミュレーションできなくても第２のオペレーティング・システムは実環境で接続されているすべてのハードウェアを最大の機能を発揮させて利用できるようになる。
【００１８】
メモリ・イメージのコピーは、サスペンド状態からレジュームするときにパワー・オン・リセットしたプロセッサの制御権を得るシステム・ファームウェアが実行することができる。サスペンド状態を経由して第１のオペレーティング・システムにプロセッサの制御権が渡ったときは、第１のオペレーティング・システムが第１の物理アドレス領域の第２のオペレーティング・システムが記憶されていたアドレス領域を解放することができる。第２の物理アドレス領域にメモリ・イメージがコピーされたあとは、第２のオペレーティング・システムを仮想環境で動作させる必要がないため、このようにして第１のオペレーティング・システムの物理アドレス空間を拡大することが望ましい。
【００１９】
ユーザが操作する入力デバイスが生成した切換イベントに応じてプロセッサの制御権を第１のオペレーティング・システムと第２のオペレーティング・システムの間で切り換えるようにすれば、ユーザは簡単な操作で動作環境を変更することができる。第１のオペレーティング・システムと第２のオペレーティング・システムは、同一の論理区画である第１の物理アドレス領域にロードするために、ディスク・ドライブの同一のブート・パーティションに格納することができる。したがって、第１のオペレーティング・システムに続いて第２のオペレーティング・システムをブートする際に、ブート・パーティションを変更する必要がないため一連のブート・シーケンスでブートすることが可能になる。
【発明の効果】
【００２０】
本発明により、同一のハードウェア上で動作することが可能な複数のＯＳを容易に管理する方法を提供することができた。さらに本発明により、ＯＳの動作環境を迅速に切り換える方法を提供することができた。さらに本発明により、一方のＯＳが他方のＯＳをメインテナンスしたあとに、他方のＯＳを実環境で動作させる方法を提供することができた。さらに本発明により、実環境で動作することが可能な一方のＯＳに対する制御権と実環境で動作することが可能な他方のＯＳに対する制御権を切り換える方法を提供することができた。さらに本発明により、ユーザが使用する入力デバイスが異なるＯＳの動作環境を切り換える方法を提供することができた。さらに本発明によりそのような方法を実現するコンピュータ・プログラムおよびコンピュータを提供することができた。
【図面の簡単な説明】
【００２１】
【図１】本発明の説明に必要なコンピュータ・システムのハードウェア構成を説明する機能ブロック図である。
【図２】コンピュータ・システムをコンパーチブル型のノートＰＣに搭載する例を説明する図である。
【図３】コンピュータ・システムをハイブリッド型のノートＰＣに搭載する例を説明する図である。
【図４】コンピュータ・システムに導入されているソフトウェアの構成を説明する図である４
【図５】コンピュータ・システムが動作環境を切り換えるときのメモリ・マップである。
【図６】ホストＯＳがゲストＯＳを管理するときの状態遷移図である。
【図７】ホストＯＳがゲストＯＳを管理するときの動作手順を示すフローチャートである。
【図８】ホストＯＳがゲストＯＳを管理するときの動作手順を示すフローチャートである。
【図９】ホストＯＳがコンピュータ・システムをシャットダウンするときの動作手順を示すフローチャートである。
【発明を実施するための形態】
【００２２】
［コンピュータ・システム］
図１は、コンピュータ・システム１０の本発明の説明に必要な構成を示す機能ブロック図である。チップ・セット１３には、ＣＰＵ１１、メイン・メモリ１５、ビデオ・コントローラ１７、ファームウェアＲＯＭ２１、ＨＤＤ２３、カメラ２５、スピーカおよびマイクロフォンなどのオーディオ・デバイス２７およびエンベデッド・コントローラ（ＥＣ）２９が接続されている。ＣＰＵ１１は、Ｘ８６アーキテクチャまたはこれと互換性があるマイクロプロセッサである。
【００２３】
タッチスクリーン１９は液晶または有機ＥＬなどのフラット・パネル型のディスプレイとディスプレイに積層された透明なタッチパネルで構成されている。ディスプレイはビデオ・コントローラ１７に接続され、タッチパネルはＥＣ２９に接続されている。チップ・セット１３には、メモリ・コントローラ、ＳＡＴＡ（Serial Advanced Technology Attachment）、ＨＤＡ（High Definition Audio）、ＵＳＢ（Universal Serial Bus）、ＰＣＩ（Peripheral Component Interconnect）、ＬＰＣ（Low Pin Count）などのインターフェース回路が組み込まれている。
【００２４】
ファームウェアＲＯＭ２１は、ＢＩＯＳまたはこれに代わるＵＥＦＩなどのシステム・ファームウェアなどを格納する。コンピュータ・システム１０はＡＣＰＩ（Advanced Configuration and Power Interface）の規格に適合しており、ＢＩＯＳおよびＯＳはＡＣＰＩに適応する。また、チップ・セット１３は、コンピュータ・システム１０のパワー・ステートを制御するためのＡＣＰＩレジスタ１３ａを含む。
【００２５】
ＢＩＯＳは、コンピュータの電源が起動されたときのＰＯＳＴ（Power On Self-Test）や認証などの他に、本実施の形態ではコンピュータ・システムの動作環境を切り換える処理を行うコードを含む。ＨＤＤ２３はブート・ドライブで、図４で説明するソフトウェアを格納する。ＥＣ２９は、ＣＰＵ、ＲＯＭ、ＲＡＭなどで構成されたマイクロ・コンピュータで、コンピュータ・システム１０の内部の温度や電源などの動作環境の管理にかかるプログラムをＣＰＵ１１とは独立して実行する。
【００２６】
ＥＣ２９は、パワー・ボタン３１、キーボード３３、ポインティング・デバイス３５、切換センサ３７およびタッチスクリーン１９のタッチパネルが接続されている。ポインティング・デバイス３５は、タッチスクリーン１９に表示されたマウス・ポインタを操作したりアイコンに対する入力をしたりする入力デバイスである。ＥＣ２９は、キーボード３３、ポインティング・デバイス３５およびタッチスクリーン１９を構成するタッチパネルの信号を処理するコントローラも含んでいる。切換センサ３７の動作については図２、図３を参照して説明する。ＥＣ２９は、パワー・ステートの遷移の際に参照するためのレジスタ２９ａを含む。
【００２７】
ＡＣＰＩの規格では、複数のパワー・ステートが定義されており、コンピュータ・システム１０は、パワー・オン状態（Ｓ０ステート）、作業内容をメイン・メモリ１５に書き込んでメイン・メモリ１５の記憶を保持するために必要なデバイスと再起動に必要なデバイスにだけ電力を供給するサスペンド状態（Ｓ３ステート）、作業内容をＨＤＤ２３やその他の不揮発性メモリなどに書き込んで再起動に必要なデバイスにだけ電力を供給するハイバネーション状態（Ｓ４ステート）、および再起動に必要なデバイスにだけ電力を供給するソフトオフまたはパワー・オフ状態（Ｓ５ステート）のいずれかの状態に移行することができる。
【００２８】
通常、サスペンド状態からパワー・オン状態への復帰（レジューム）はある程度の時間が経ってからユーザの判断またはシステムに設定したスケジュールに基づいて行われるが、本実施の形態では、サスペンド状態に遷移するとただちにレジュームするサスペンド＆クイック・レジュームという方法を採用する。ＯＳがＢＩＯＳを通じてレジスタ２９ａにサスペンド状態への移行を示すフラグを設定すると、サスペンド状態に遷移する際にレジスタ２９ａを参照したＥＣ２９がサスペンド＆クイック・レジュームを行う。サスペンド＆クイック・レジュームは、ＢＩＯＳがＣＰＵ１１の動作環境を変更するためにＣＰＵ１１をパワー・オン・リセットしてＣＰＵ１１の制御権を一旦ＢＩＯＳに渡すことを目的にしている。
【００２９】
［コンパーチブル型のノートＰＣ］
コンピュータ・システム１０は、ディスプレイを開閉して使用する通常のノートＰＣとして構成することもできるが、特別な種類のノートＰＣとして構成することもできる。図２は、コンピュータ・システム１０をコンパーチブル型のノートＰＣ５０として構成する例を説明する図である。タッチスクリーン１９を収納するディスプレイ筐体５３とキーボード３３およびポインティング・デバイス３５を搭載するシステム筐体５１がヒンジ機構５５で結合されている。
【００３０】
ディスプレイ筐体５３を開いた図２（Ａ）の状態では、キーボード３３またはポインティング・デバイス３５で操作をすることができる。ポインティング・デバイス３５の操作は、タッチスクリーン１９に表示されたポインターの移動やポインターが停止した位置でのクリック入力などで行う。この状態では一例として、タッチスクリーン１９に対するタッチ操作はしない。
【００３１】
図２（Ｂ）は、図２（Ａ）の状態でディスプレイ筐体５３を水平方向に１８０度回転させて背面がキーボードに向くようにしてから閉じた状態である。ノートＰＣ５０はタッチスクリーン１９が上を向いてタブレット端末のような形態になる。この状態ではキーボード３３およびポインティング・デバイス３５はディスプレイ筐体５３の陰に隠れているため操作することはできず、タッチスクリーン１９に指を接触させてタッチ操作をする。図２（Ａ）の利用形態をクラムシェル・モードといい、図２（Ｂ）の利用形態をタブレット・モードということにする。切換センサ３７はノートＰＣ５０が、クラムシェル・モードまたはタブレット・モードに切り換わったことを検出するとそれに応じた切換イベントを生成する。
【００３２】
［ハイブリッド型のノートＰＣ］
図３は、コンピュータ・システム１０をハイブリッド型のノートＰＣ６０として構成する例を説明する図である。ノートＰＣ６０は、相互に物理的な分離および結合が可能な筐体で形成されたタブレット・ユニット７１とベース・ユニット６９で構成されている。図３（Ａ）は、タブレット・ユニット７１とベース・ユニット６９が結合して構成するノートＰＣ６０を示し、図３（Ｂ）は分離したときのベース・ユニット６９を示し、図３（Ｃ）は分離したときのタブレット・ユニット７１を示す。
【００３３】
タブレット・ユニット７１は、筐体の表面にタッチスクリーン１９を備え、筐体の内部にはキーボード３３およびポインティング・デバイス３５を除いたほとんどのデバイスを収納し分離状態でタブレット端末として機能する。ベース・ユニット６９は、ヒンジ機構６５で相互に結合されたキーボード筐体６１と支持部材６３で構成されている。ベース・ユニット６９は主要なシステム・デバイスを搭載しないため分離状態においてはコンピュータとしての機能を発揮しない。タブレット・ユニット７１はイジェクト・スイッチ６７を操作してユーザが支持部材６３に対して着脱することができる。
【００３４】
キーボード筐体６１には、キーボード３３およびポインティング・デバイス３５などが設けられている。ノートＰＣ６０は、タブレット・ユニット７１が支持部材６３に装着された状態ではノートＰＣとして機能し、タッチスクリーン１９がキーボード３３と向き合うようにヒンジ機構６５を垂直方向に回転させて支持部材６３を閉じることができる。このようにタブレット・ユニット７１を保持する支持部材６３を開閉して使用するときの動作状態をクラムシェル・モードという。
【００３５】
またノートＰＣ６０は開いた状態の支持部材６３を、ヒンジ機構６５を中心にして水平方向に１８０度回転させてから、支持部材６３の背面がキーボード３３に向き合うように閉じることができる。このようにキーボード３３およびポインティング・デバイス３５がタッチスクリーン１９の裏側に隠れた状態で使用するときの動作状態をタブレット・モードという。ノートＰＣ５０と同様に、クラムシェル・モードではキーボード３３またはポインティング・デバイス３５で操作し、タブレット・モードまたはタブレット・ユニット７１に対してはタッチスクリーン１９で操作をする。
【００３６】
切換センサ３７は、支持部材６３に対するタブレット・ユニット７１の着脱状態の変化を検出したときに対応する切換イベントを生成する。切換センサ３７はさらにタブレット・ユニット７１が装着されたノートＰＣ６０が、タブレット・モードとクラムシェル・モードのいずれであるかを検出したときに対応する切換イベントを生成する。
【００３７】
［プログラムの構成］
図４は、ＨＤＤ２３に格納されたプログラムの構成を説明する図である。ＨＤＤ２３には、同一のブート・パーティションにホストＯＳ１０５、ホストＯＳ１０５のサービスを利用して動作するホスト・アプリケーション（ホストＡＰ）１０７、仮想化モジュール１０９、ゲストＯＳ１１１、およびゲストＯＳ１１１のサービスを利用して動作するゲスト・アプリケーション（ゲストＡＰ）１１３を含む。ホストＯＳ１０５は、ゲストＯＳ１１１を更新するモジュールおよびゲストＯＳ１１１のウィルス・チェックをするモジュールを含んでいる。
【００３８】
図４（Ａ）は、実環境でホストＯＳ１０５が動作し、仮想環境においてゲストＯＳ１１１が動作する状態を示し、図４（Ｂ）は実環境でゲストＯＳ１１１が動作する状態を示している。ここに実環境とは、ＯＳまたはそのデバイス・ドライバが直接物理的なハードウェアにアクセスできる動作環境をいう。また、仮想環境とはＯＳが、仮想化モジュールが物理的なハードウェアをエミュレーションして提供する仮想ハードウェアに対してアクセスする動作環境をいう。
【００３９】
本実施の形態では、ホストＯＳ１０５は常に実環境で動作し、ゲストＯＳ１１１は仮想環境または実環境で動作する。ハードウェア１０１は、図１に示すコンピュータ・システム１０を構成する複数の物理的なデバイスで構成されている。仮想化モジュール１０９は、ホストＯＳ１０５上のレイヤで動作し、ハードウェア１０１をエミュレーションしてゲストＯＳ１１１に仮想ハードウェアを提供するタイプ２の仮想環境を構築する。仮想化モジュール１０９は、同時に複数のゲストＯＳに対して仮想環境を構築することができる。ホストＯＳ１０５およびゲストＯＳ１１１は、本発明の適用のために修正する必要はない。したがって、実環境で動作する場合はホストＯＳとゲストＯＳの区別はできないが、実体に変更がないため実環境でもゲストＯＳということにする。
【００４０】
ホストＯＳ１０５は、クラムシェル・モードでの使用を予定しているWindows（登録商標）、またはLinux（登録商標）のいずれかとすることができる。一例ではホストＯＳ１０５の動作環境でユーザは、キーボード３３またはポインティング・デバイス３５だけを通じて入力することができる。ゲストＯＳ１１１は、タブレット・モードまたはタブレット・ユニット７１での使用を予定しているAndroid（登録商標）、またはWindows（登録商標） RTなどのいずれかまたは複数とすることができる。一例ではゲストＯＳ１１１の動作環境でユーザは、タッチスクリーン１９だけを通じて入力することができる。
【００４１】
［メモリ・マップ］
図５は、動作環境が変わるときのメイン・メモリ１５のメモリ・マップを説明する図である。メイン・メモリ１５には、論理的に区分された物理アドレス領域１５１、１５３、１５５、１５７を含む物理アドレス空間が設定される。論理的な区分は、ＯＳまたはＢＩＯＳがアクセスできる領域として定義される。物理アドレス領域１５１、１５３、１５５、１５７は、ブート時にＢＩＯＳにより割り当てられ、ＯＳは割り当てられた各領域で動作するプログラムが他の領域にアクセスしないように管理する。
【００４２】
物理アドレス領域１５１は、ホストＯＳ１０５およびその管理を受けるプログラムが使用し、物理アドレス領域１５３はゲストＯＳ１１１およびその管理を受けるプログラムが使用する。物理アドレス領域１５５はＢＩＯＳが使用する。物理アドレス領域１５７にはホストＯＳ１０５がゲストＯＳ１１１を管理するための処理に必要な共用データが書き込まれ、ホストＯＳ１０５、ゲストＯＳ１１１およびＢＩＯＳがアクセスすることができる。
【００４３】
図５（Ａ）は、物理アドレス領域１５１にホストＯＳ１０５、ホストＡＰ１０７、仮想化モジュール１０９、ゲストＯＳ１１１、ゲストＡＰ１１３がロードされたときの様子を示している。この状態でホストＯＳ１０５の環境下で動作するプログラムが、物理アドレス領域１５１にマッピングされた仮想アドレス領域を利用して動作する。物理アドレス領域１５３は形成されておらず、物理アドレス領域１５１は広い物理アドレス空間を占有している。
【００４４】
図５（Ｂ）は、物理アドレス領域１５１が占有していた物理アドレス空間の一部に物理アドレス領域１５３が割り当てられた様子を示している。物理アドレス領域１５３には、図５（Ａ）に示すように物理アドレス領域１５１にロードされていたゲストＯＳ１１１とゲストＡＰ１１３のメモリ・イメージがコピーされている。この状態でサスペンド＆クイック・レジュームが実行されたときにＢＩＯＳは図７で説明する手順によりＣＰＵ１１の制御権をホストＯＳ１０５またはゲストＯＳ１１１のいずれかに切り換えることができる。
【００４５】
ホストＯＳ１０５が制御権を得たときは、ホストＯＳ１０５の管理下で動作する図４（Ａ）に示したプログラムが、物理アドレス領域１５１にマッピングされた仮想アドレス領域を利用して動作する。ゲストＯＳ１１１が制御権を得たときはゲストＯＳ１１１の管理下で動作する図４（Ｂ）に示したプログラムが物理アドレス領域１５３にマッピングされた仮想アドレス領域を利用して動作する。ホストＯＳ１０５およびゲストＯＳ１１１は、それぞれ仮想アドレス領域のサイズを決めることができるが、ページング機能を利用して物理アドレス領域よりも大きいサイズの仮想アドレス領域を利用することができる。
【００４６】
図５（Ｂ）の状態では、物理アドレス領域１５３を構築するために物理アドレス領域１５１を縮小している。物理アドレス領域が小さくなるとＨＤＤ２３に設けられた仮想メモリに対するスワッピングの頻度が増加してホストＯＳ１０５とその管理下で動作するプログラムのパフォーマンスは低下する。図５（Ｃ）は、図５（Ｂ）で物理アドレス領域１５１のゲストＯＳ１１１とゲストＡＰ１１３を記憶していたアドレス領域が他のプログラムのために解放された様子を示している。図５（Ｃ）の状態は、図５（Ｂ）の状態よりホストＯＳ１０５が利用できる物理アドレス空間が拡大している。
【００４７】
［状態遷移図］
図６は、コンピュータ・システム１０の状態遷移を説明する図である。状態２０１は、パワー・オフ状態である。状態２０３は、物理アドレス領域１５１にホストＯＳ１０５、ホストＡＰ１０７がロードされて、ホストＯＳ１０５が実環境で動作する状態である。ホストＯＳ１０５が仮想環境を構築しない場合はこの状態で動作する。状態２０３からは通常の方法でシャットダウンして状態２０１に移行することができる。
【００４８】
状態２０５は、図５（Ａ）に示すように状態２０３において、物理アドレス領域１５１に仮想化モジュール１０９、ゲストＯＳ１１１およびゲストＡＰ１１３がロードされてホストＯＳ１０５により構築されたタイプ２の仮想環境でゲストＯＳ１１１とゲストＡＰ１１３が動作する状態である。ホストＯＳ１０５とゲストＯＳ１１１は、ＨＤＤ２３の同一のブート・パーティションに格納されているため、１回のブートで仮想化モジュール１０９とともにロードして状態２０１から状態２０５に移行することもできる。状態２０５からは通常の方法でシャットダウンして状態２０１に移行することができる。
【００４９】
状態２０７は、図５（Ｂ）に示すようにホストＯＳ１０５が形成した物理アドレス領域１５３に物理アドレス領域１５１にロードされたゲストＯＳ１１１とゲストＡＰ１１３のメモリ・イメージがコピーされた状態である。状態２０７では、物理アドレス領域１５１には状態２０５のメモリ・イメージが残っている。さらに状態２０７は、物理アドレス領域１５３にコピーされたゲストＯＳ１１１が実環境で動作し、物理アドレス領域１５１にロードされたホストＯＳ１０５がスリープ状態に遷移している状態である。
【００５０】
ここにプログラムのスリープ状態とは、コンピュータ・システム１０の電源はパワー・オン状態のときに、メイン・メモリ１５にメモリ・イメージは残っているがＣＰＵ１１の制御権が剥奪されたＯＳの状態を意味する。状態２０９は、図５（Ｃ）に示すように、物理アドレス領域１５３にはゲストＯＳ１１１とゲストＡＰ１１３のメモリ・イメージがコピーされ、物理アドレス領域１５１にロードされていたゲストＯＳ１１１とゲストＡＰ１１３のアドレス領域が解放されて他のプログラムが使用できる状態である。さらに状態２０９は、物理アドレス領域１５１にロードされたホストＯＳ１０５が実環境で動作し、メモリ・イメージが物理アドレス領域１５３にコピーされたゲストＯＳ１１１がスリープ状態に遷移している状態である。
【００５１】
状態２１１は、状態２０９とメモリ・イメージの構成は同じであるが、物理アドレス領域１５１にロードされたホストＯＳ１０５がスリープ状態に遷移し、メモリ・イメージが物理アドレス領域１５３にコピーされたゲストＯＳ１１１が実環境で動作している状態である。状態２１３は、物理アドレス領域１５１に、実環境で動作していたゲストＯＳ１１１とゲストＡＰ１１３がコピーされて、仮想化モジュール１０９が構築した仮想環境でゲストＯＳ１１１が動作する状態である。コンピュータ・システム１０は、状態２０７〜２１３から直接シャットダウンできないが、その手順は図９を参照して説明する。
【００５２】
［ゲストＯＳを管理する手順］
図７、図８はホストＯＳ１０５がゲストＯＳ１１１を管理する手順を示すフローチャートである。ブロック３０１でコンピュータ・システム１０が状態２０１に遷移しているときにブロック３０３でパワー・ボタン２７が押下されると、コンピュータ・システム１０の電源が起動する。コンピュータ・システム１０がノートＰＣ５０、６０の場合は、クラムシェル・モードで起動することを想定する。ＣＰＵ１１は電源が安定すると内部キャッシュやレジスタを初期化してリセット・ベクタを設定する。ＣＰＵ１１は続いてＢＩＯＳをメイン・メモリの物理アドレス領域１５５にロードする。パワー・オン・リセットされたＣＰＵ１１は常にＢＩＯＳの先頭アドレスから実行を開始する。
【００５３】
ＣＰＵ１１はメイン・メモリ１５の少なくとも物理アドレス領域１５７を初期化する。物理アドレス領域１５７は初期化されたときにディフォルトの実行パスを表明するように定義されている。ＢＩＯＳは最初に物理アドレス領域１５７を参照して起動要因を認識する。ＢＩＯＳは、ディフォルトの実行パスが設定されていると判断したときは、すべての周辺デバイスの検出、初期化および設定を行う完全なＰＯＳＴ（Power On Self Test）を行ういわゆるコールド・ブートを実行する。サスペンド＆クイック・レジュームのためにサスペンド状態からレジュームするいわゆるウォーム・ブートのときは、省略したＰＯＳＴを行ってレジューム時間を短縮する。なお、ウォーム・ブートのときは、ＣＰＵ１１はメイン・メモリの初期化を省略する。
【００５４】
ＢＩＯＳがＰＯＳＴを終了すると、ＣＰＵ１１はＨＤＤ２３のＭＢＲ（Master Boot Recode）を参照してブート・パーティションを選択しブート・ローダに制御を移す。ブート・ローダはブート・パーティションに格納されているホストＯＳ１０５のロードを開始する。ホストＯＳ１０５と同一のブート・パーティションに格納されているプログラムは、ブート・ファイルに設定しておくことでブート・ストラップの手順で順番にメイン・メモリ１５にロードすることができる。ＢＩＯＳは、図５（Ａ）に示すようにホストＯＳ１０５にディフォルトで広い物理アドレス空間を割り当てる。
【００５５】
一例としてホストＯＳ１０５とホストＡＰ１０７のロードが完了するとシステムは状態２０３に移行し、実環境でホストＯＳ１０５とホストＡＰ１０７が動作する。この状態でホストＯＳ１０５は、図５（Ａ）に示す広い物理アドレス領域１５１を利用することができる。同一のブート・パーティションに格納されている仮想化モジュール１０９、ゲストＯＳ１１１、およびゲストＡＰ１１３をホストＯＳ１０５に続いてロードしてもよいが、ユーザがゲストＯＳ１１１を使用する予定がない場合は物理アドレス空間を制限しないためにはホストＯＳ１０５およびホストＡＰ１０７だけをロードすることが望ましい。この時点で、ホストＯＳ１０５はタッチスクリーン１９にＨＤＤ２３に格納されている複数のゲストＯＳにそれぞれ対応する複数のアイコンを表示してユーザに選択させるようにすることができる。
【００５６】
ブロック３０４で、ユーザはポインティング・デバイス３５を通じて複数のアイコンの中からゲストＯＳ１１１を選択する操作をすると、ホストＯＳ１０５は図５（Ｂ）に示すように物理アドレス領域１５１の中にゲストＯＳ１１１を実環境で動作させるための物理アドレス領域１５３を設定する。物理アドレス領域１５３は物理アドレス領域１５１から論理的に区分されるため、以後ホストＯＳ１０５が利用できる物理アドレス空間はその分だけ狭くなる。
【００５７】
つづいてブロック３０５でホストＯＳ１０５はＨＤＤ２３から仮想化モジュール１０９を物理アドレス領域１５１にロードしてタイプ２の仮想環境を構築する。つづいてブロック３０７でホストＯＳ１０５がＨＤＤ２３から物理アドレス領域１５１にゲストＯＳ１１１とゲストＡＰ１１３をロードすると状態２０５に移行し、ゲストＯＳ１１１とゲストＡＰ１１３が仮想環境で動作することができる。ただし本実施の形態では、以下に説明するようにゲストＡＰ１１３をパフォーマンスの低い仮想環境で実行する必要はない。
【００５８】
ブロック３０９でユーザは、ホストＯＳ１０５を通じてゲストＯＳ１１１のウィルス・チェック、更新、または修復などのメインテナンスを行う。マルウェアに汚染されたゲストＯＳ１１１が自らのウィルス・チェックをする場合は、マルウェアに妨害される可能性があるため確実に行うことはできない。また、ゲストＯＳ１１１の主要なモジュールが破損しているときは、ゲストＯＳ１１１が自らを修復することはできない。
【００５９】
タイプ２の仮想環境では、ゲストＯＳ１１１はホストＯＳ１０５に対してホストＡＰと同等の関係で動作する。本実施の形態ではタイプ２の仮想環境を利用してゲストＯＳ１１１に対してホストＯＳ１０５がウィルス・チェックや修復を行うことで安全性および信頼性を確保することができる。状態２０５では仮想化モジュール１０９が、ホストＯＳ１０５により抽象化されたハードウェア１０１をエミュレーションしてゲストＯＳ１１１に仮想ハードウェアを提供する。
【００６０】
ハードウェア１０１に対して実環境での動作をするホストＯＳ１０５は、ハードウェア１０１の機能を完全に利用できるが、仮想化モジュール１０９はゲストＯＳ１１１に対してハードウェア１０１の機能を十分に利用できるようにエミュレーションできない場合がある。たとえば、仮想化モジュール１０９はオーディオ・デバイス２７をエミュレーションできなかったり、タッチスクリーン１９で利用できる最大の解像度より低い解像度でエミュレーションしたりする場合がある。また、仮想環境でゲストＯＳ１１１を実行すると、ホストＯＳ１０５を経由する分だけオーバーヘッドが生ずる。
【００６１】
このような理由で本実施の形態では、状態２０５ではゲストＯＳ１１１のメインテナンスだけを行い、実質的な処理のためのゲストＡＰ１１３の実行を予定しない。ブロック３１１でユーザは、ホストＯＳ１０５の実行環境に短時間で復帰できることを前提にして、タッチスクリーン１９からの入力に適したゲストＡＰ１１３を実行したいと想定する。一例としては、図２のコンパーチブル型のノートＰＣ５０をタブレット・モードで使用したり、図３のハイブリッド型のノートＰＣ６０をタブレット・モードで使用したりまたはタブレット・ユニット７１を単独で使用したりする。このとき切換センサ３７は、動作モードの変更をする操作を検出してＥＣ２９に状態２０７に移行するための切換イベントを入力する。
【００６２】
あるいはユーザはクラムシェル・モードでもタッチスクリーン１９からの入力に適したゲストＡＰ１１３を実行したい場合がある。このときユーザはキーボード３３またはポインティング・デバイス３５を通じてＥＣ２９に状態２０７に移行するための切換イベントを入力する。ＥＣ２９はＣＰＵ１１に割り込みをかけて受け取った切換イベントをホストＯＳ１０５に通知する。ブロック３１３で切換イベントを受け取ったホストＯＳ１０５はサスペンド＆クイック・レジュームを実行する。
【００６３】
ホストＯＳ１０５は、ホストＡＰ１０７、仮想化モジュール１０９およびゲストＯＳ１１１に実行を停止するように要求する。要求を受け取ったゲストＯＳ１１１は、ゲストＡＰ１１３に実行を停止するように指示する。ホストＯＳ１０５は、サスペンド状態で電源が停止するＣＰＵ１１および周辺デバイスのレジスタや揮発性メモリが保有するシステム・コンテキストを物理アドレス領域１５７に記憶する。ゲストＯＳ１１１は、同様の周辺デバイスをエミュレーションした仮想ハードウェアのシステム・コンテキストを物理アドレス領域１５７に記憶する。
【００６４】
ホストＯＳ１０５はサスペンドの準備が完了すると物理アドレス領域１５７にレジュームしたときのＢＩＯＳの実行パスを示す情報を書き込み、物理アドレス領域１５１に記憶されたコピー元のゲストＯＳ１１１およびゲストＡＰ１１３のメモリ・イメージが記憶されたアドレスを物理アドレス領域１５７に書き込む。物理アドレス領域１５１に書き込まれたＢＩＯＳの実行パスは、ＢＩＯＳがコピー元のメモリ・イメージを物理アドレス領域１５３にコピーしてからＣＰＵ１１の制御権を物理アドレス領域１５３にコピーされたゲストＯＳ１１１に移すことを示す。
【００６５】
つづいてホストＯＳ１０５、チップ・セット１３のＡＣＰＩレジスタ１３ａに遷移先としてサスペンド状態を設定し、ＥＣ２９のレジスタ２９ａにサスペンド＆クイック・レジュームのフラグを設定する。ＡＣＰＩレジスタ１３ａにサスペンド状態が設定されたチップ・セット１３は、ＥＣ２９に指示してシステムをサスペンド状態に遷移させる。ＥＣ２９は、サスペンド状態に遷移する際にレジスタ２９ａを参照する。
【００６６】
ＥＣ２９はレジスタ２９ａにサスペンド＆クイック・レジュームが設定されていることを認識すると、一瞬サスペンド状態に遷移したあとに、ただちに、電源をパワー・オン状態に復帰させる。パワー・オン・リセットしたＣＰＵ１１はＢＩＯＳを先頭アドレスから実行する。ＢＩＯＳは、物理アドレス領域１５７を参照して実行パスを判断しさらにコピー元のアドレスを取得して、ブロック３１５で図５（Ｂ）に示すように物理アドレス領域１５１にロードされたゲストＯＳ１１１およびゲストＡＰ１１３のメモリ・イメージを物理アドレス領域１５３にコピーする。さらにＢＩＯＳは電源が復帰したハードウェア１０１に物理アドレス領域１５７に書き込まれていた仮想ハードウェアのシステム・コンテキストをリストアする。
【００６７】
ブロック３１７でＢＩＯＳがゲストＯＳ１１１に制御権を移すとシステムは状態２０７に移行して、ゲストＯＳ１１１とゲストＡＰ１１３が実環境で動作を開始する。制御権が剥奪されたホストＯＳ１０５はスリープ状態に移行する。ゲストＯＳ１１１はＢＩＯＳに代わって、仮想ハードウェアに設定していたシステム・コンテキストをこの時点でハードウェア１０１にリストアしてもよい。状態２０５でハードウェア１０１が完全にエミュレーションされていないときは、ゲストＯＳ１１１は仮想環境でのシステム・コンテキストをリストアしても実環境でハードウェア１０１の機能を完全に利用できない。
【００６８】
ブロック３１９でゲストＯＳ１１１は、ハードウェア１０１を再構成するためのドッキング・イベントを生成する。ドッキング・イベントを生成したゲストＯＳ１１１は、ＡＣＰＩのプラグ・アンド・プレイ機能を利用してエニュメレーションを実行し接続されているデバイスを検出して再構成する。ゲストＯＳ１１１は、実環境で新たに検出したデバイスについてはデバイス・ドライバのインストールやコントローラの設定を行ったり、仮想環境では検出していたが完全に構成できなかったデバイスの再構成を行ったりする。また、完全にエミュレーションされていた周辺デバイスについては、仮想ハードウェアのシステム・コンテキストをリストアする。その結果、ゲストＯＳ１１１は、接続されているすべてのハードウェア１０１の最大の機能を利用して実環境で動作することができるようになる。
【００６９】
実環境で動作するゲストＯＳ１１１を利用しているユーザは、多量の文字を入力したりホストＯＳ１０５だけで動作できるホストＡＰ１０７を実行したりするためにホストＯＳ１０５を実行したい場合がある。ブロック３２１でユーザはタッチスクリーン１９を通じてホストＯＳ１０５を実行するための切換イベントを生成することができる。このときノートＰＣ５０、６０ではクラムシェル・モードへの切換操作を検出した切換センサ３７が切換イベントを生成することができる。ブロック３２５でゲストＯＳ１１１は、ブロック３１３と同様の手順でサスペンド＆クイック・レジュームを実行する。
【００７０】
ただし、ゲストＯＳ１１１はサスペンドする前に、レジュームする際にＢＩＯＳがＣＰＵ１１の制御権をホストＯＳ１０５に渡す実行パスを示す情報を書き込む。ブロック３２７で制御権を得たホストＯＳ１０５が実環境で動作し、ゲストＯＳ１１１はスリープ状態に遷移する。このとき物理アドレス領域１５１には、ゲストＯＳ１１１およびゲストＡＰ１１３のメモリ・イメージが残っているので仮想環境でゲストＯＳ１１１も動作を開始する。
【００７１】
しかし、実環境で動作していたゲストＯＳ１１１と仮想環境で動作するゲストＯＳ１１１との間には動作の一貫性がなく、さらに前述のとおりゲストＯＳ１１１を実際の処理のために仮想環境で動作させる必要はないため、ホストＯＳ１０５はゲストＯＳ１１１およびゲストＡＰ１１３の動作を停止してそれらがロードされていた物理アドレス領域１５１のアドレスを他のプログラムが使用できるように解放する。その結果、ホストＯＳ１０５が利用できる物理アドレス空間が図５（Ｃ）に示すように拡大して状態２０９に移行する。
【００７２】
ブロック３３１では、再び実環境でゲストＯＳ１１１を実行したい場合に、ユーザによるブロック３１１と同様の切換イベントが生成され、ブロック３３３でブロック３１３と同様のサスペンド＆クイック・レジュームが実行される。このときホストＯＳ１０５はサスペンドの前に、レジュームする際にＢＩＯＳがＣＰＵ１１の制御権をゲストＯＳ１１１に与える実行パスを示す情報を物理アドレス領域１５７に書き込む。ブロック３３５でシステムは状態２１１に移行する。ブロック３３６でユーザは、状態２０９または状態２１１のいずれかを選択してシステムを移行させることができる。状態２０９を選択するときはブロック３３７でユーザによるブロック３２１と同様の切換イベントを生成すると、ブロック３３９でブロック３２５と同様のサスペンド＆クイック・レジュームが実行されてブロック３２９でＣＰＵ１１の制御権がホストＯＳ１０５に移って状態２０９に移行する。
【００７３】
以後、ブロック３３１、３３７で切換イベントを生成して実環境でホストＯＳ１０５を実行する状態２０９と実環境でゲストＯＳ１１１を実行する状態２１１の間で動作環境を切り換えることができる。ブロック３３６でユーザが状態２１３を選択したときは、図８のブロック４０１に移行する。ブロック４０１でタッチスクリーン１９を通じて状態２１３に移行するための切換イベントを生成する。ブロック４０３でゲストＯＳ１１１はブロック３２５と同様のサスペンド＆クイック・レジュームを実行して一旦状態２０９に移行する。このとき、ゲストＯＳ１１１はサスペンドの前に、レジュームする際にＢＩＯＳが状態２０９に移行する処理をする実行パスを示す情報と物理アドレス領域１５３のメモリ・イメージをコピーする処理をすることを示す情報およびメモリ・イメージが記憶されているアドレスを物理アドレス領域１５７に書き込む。
【００７４】
ブロック４０５で制御権を得たホストＯＳ１０５は、物理アドレス領域１５７を参照して実行パスを決定し、物理アドレス領域１５３に記憶されたデータを物理アドレス領域１５１にコピーする準備を行う。物理アドレス領域１５３には、実環境で動作するゲストＯＳ１１１、ゲストＡＰ１１３およびそれらが作成したデータで構成されたメモリ・イメージが記憶されている。ホストＯＳ１０５は、必要に応じて仮想化モジュール１０９をロードし、物理アドレス領域１５３が記憶するメモリ・イメージをコピーするための物理アドレス空間を物理アドレス領域１５１に確保し、そのアドレスを物理アドレス領域１５７に書き込む。
【００７５】
つづいてホストＯＳ１０５はブロック４０７でＢＩＯＳに制御権を与えるために切換イベントを生成する。このときホストＯＳ１０５はサスペンドの前に、ＢＩＯＳが状態２１３に移行する処理をする実行パスを示す情報を物理アドレス領域１５７に書き込む。ホストＯＳ１０５はブロック４０９でサスペンド＆クイック・レジュームを実行する。ブロック４１１で制御権を得たＢＩＯＳは、物理アドレス領域１５７を参照して、物理アドレス領域１５３に記憶されているメモリ・イメージを物理アドレス領域１５１にコピーするとシステムが状態２１３に移行してホストＯＳ１０５が制御権を獲得してゲストＯＳ１１１が仮想環境で動作する。
【００７６】
この状態で、再びホストＯＳ１０５はゲストＯＳ１１１のメインテナンスまたは修復を行うことができる。ここでゲストＯＳ１１１を実環境で動作させる場合は、状態２１３から状態２０７に移行する。ブロック４１３でユーザがキーボード３３またはポインティング・デバイス３５を通じて切換イベントを生成すると、ブロック４１５でホストＯＳ１０５がサスペンド＆クイック・レジュームを実行し図７のブロック３１７で状態２０７に移行する。
【００７７】
動作環境をホストＯＳ１０５とゲストＯＳ１１１の間で切り換えて使用すると、コンピュータ・システム１０は、状態２０９、２１１、２１３のいずれかに遷移する。
図９は、状態２０９、２１１、２１３のいずれかからシャットダウンするときの手順を示すフローチャートである。ブロック５０１でユーザがホストＯＳ１０５またはゲストＯＳ１１１に対してシャットダウンを開始する操作を行う。ブロック５０３で現在の動作状態が実環境でゲストＯＳ１１１が動作する状態２１１のときはブロック５０７に移行し、実環境でホストＯＳ１０５が動作する状態２０９、２１３のときはブロック５０５に移行する。
【００７８】
ブロック５０５では、ユーザの操作を介在しないでホストＯＳ１０５が切換イベントの生成およびサスペンド＆クイック・レジュームを実行して状態２１１に移行する。状態２１３から状態２１１への移行はブロック２０７、２０９を経由して行う。ブロック５０５を経由して状態２０９から状態２１１に移行したとき、または、状態２１１のときにブロック５０１でシャットダウン操作が行われたことに応じてゲストＯＳ１１１はアンドック・イベントを生成してデバイス・ドライバに通知すると、ブロック５０７でデバイス・ドライバはハードウェア１０１を切断する。
【００７９】
すべての周辺デバイスが切断されるとゲストＯＳ１１１は物理アドレス領域１５３を無効化する。その後システムはサスペンド＆クイック・レジュームを実行しホストＯＳ１０５に制御権を与えて状態２０５に移行する。ブロック５０９でホストＯＳ１０５は、物理アドレス領域１５１で動作中のプログラムを停止しさらにハードウェア１０１を切断してからチップ・セット１３を通じて電源を停止する。
【００８０】
物理アドレス領域１５１には、仮想モジュール１０９の仮想環境で動作する複数のゲストＯＳをロードすることができる。このときホストＯＳ１０５は、物理アドレス領域１５１に複数の論理ブロックを形成して、それぞれに異なるゲストＯＳを物理アドレス領域１５１からコピーすることができる。そしてサスペンド＆クイック・レジュームを行って、実環境で動作する各ゲストＯＳと実環境で動作するホストＯＳ１１１の相互間での切り換え、および実環境で動作するゲストＯＳ間での切り換えを行うことができる。
【００８１】
また、タイプ２の仮想環境を例にして説明したが、本発明はハードウェア上で動作するハイパーバイザがタイプ１の仮想環境を構築するシステムに適用することもできる。この場合、一旦同一の物理アドレス領域にロードした複数のゲストＯＳのなかから実環境で動作させるゲストＯＳのメモリ・イメージを選択して他の物理アドレス領域にコピーすることができる。
【００８２】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【００８３】
１０  コンピュータ・システム
５０  コンパーチブル型のノートＰＣ
６０  ハイブリッド型のノートＰＣ
１５１、１５３、１５５、１５７  メイン・メモリの物理アドレス領域
１０５  ホストＯＳ
１０７  ホスト・アプリケーション
１０９  仮想化モジュール
１１１  ゲストＯＳ
１１３  ゲスト・アプリケーション
２０１、２０３、２０５、２０７、２０９、２１１  コンピュータ・システムの状態
【図１】
2014215621.tif 000003
【図２】
2014215621.tif 000004
【図３】
2014215621.tif 000005
【図４】
2014215621.tif 000006
【図５】
2014215621.tif 000007
【図６】
2014215621.tif 000008
【図７】
2014215621.tif 000009
【図８】
2014215621.tif 000010
【図９】
2014215621.tif 000011