(58)【調査した分野】(Int.Cl.,DB名)
前記仮想環境で動作するステップが、前記第1のオペレーティング・システムが前記コンピュータに前記第2のオペレーティング・システムをメインテナンスする機能を発揮させるステップを含む請求項1に記載の方法。
前記第1のオペレーティング・システムと前記第2のオペレーティング・システムと前記仮想化モジュールを一連のブート・シーケンスでロードするステップを含む請求項5に記載の方法。
ユーザが操作する入力デバイスが生成した切換イベントに応じてプロセッサの制御権を前記第1のオペレーティング・システムと前記第2のオペレーティング・システムの間で切り換えるステップを有する請求項9に記載の方法。
前記第1のオペレーティング・システムと前記第2のオペレーティング・システムがディスク・ドライブの同一のブート・パーティションに格納されている請求項1から請求項10のいずれかに記載の方法。
前記第2のオペレーティング・システムがプラグ・アンド・プレイを実行して前記仮想環境で構成されたハードウェアを前記実環境で再構成するように前記コンピュータを機能させる請求項12に記載のコンピュータ。
前記第1のオペレーティング・システムが前記コンピュータを前記キーボードからの入力が可能なように機能させ、前記第2のオペレーティング・システムが前記コンピュータを前記タッチスクリーンからの入力が可能なように機能させる請求項12または請求項13に記載のコンピュータ。
前記コンピュータが、クラムシェル・モードとタブレット・モードで動作できるコンパーチブル型の携帯式コンピュータである請求項12から請求項14のいずれかに記載のコンピュータ。
前記コンピュータが、ベース・ユニットから前記タッチスクリーンを含むタブレット・ユニットを取り外すことが可能なハイブリッド型の携帯式コンピュータである請求項12から請求項14のいずれかに記載のコンピュータ。
前記第1のオペレーティング・システムが前記仮想環境で動作する前記第2のオペレーティング・システムをメインテナンスする機能を有する請求項17に記載のコンピュータ・プログラム。
【発明の概要】
【発明が解決しようとする課題】
【0008】
特許文献1に記載するように、仮想環境で複数のOSを実行して一方のOSが他方のOSを検査したり修復したりすれば安全性および確実性を向上できる。ただし、特許文献1の発明では、他方のOSの実行環境を実環境と仮想環境で切り換えることはできるが、一方のOSと他方のOSのいずれも実環境で動作するように双方向に切り換えることはできない。また、他方のOSをロードしてからハイパーバイザと一方のOSをロードしてタイプ1の仮想環境を構築し、仮想環境で他方のOSの検査が終了すると、一方のOSとハイパーバイザのメモリ・イメージをメイン・メモリから消去して他方のOSを実環境の動作に戻しているため、実行する他方のOSを変更するたびに一方のOSとハイパーバイザをロードする必要があり切り換えに時間を費やす。
【0009】
また特許文献2の発明のようにシステムが複数のOSを切り換えて実行できる場合であっても、通常は各OSの利用頻度が均等ではなく、主として使用する主たるOSと補助的に使用する従たるOSが存在する。主たるOSは、できるだけ広い物理アドレス空間を利用できればパフォーマンスの向上の面で有利である。特許文献2の発明では、最初にメイン・メモリ上で共存させるすべてのOSを各論理ブロックにブートしておく必要があるため、主たるOSが使用する実メモリ空間が制限されたり、主たるOSを実行したあとに複数の従たるOSのなかからいずれかを選択して実行することができなかったりして操作の柔軟性に欠ける面がある。したがって、主たるOSの動作環境を維持しながら、従たるOSのブート、メインテナンスおよびシャットダウンができ、かつ、従たるOSを高いパフォーマンスで実行できる方法が望まれている。
【0010】
そこで本発明の目的は、同一のハードウェア上で動作することが可能な複数のOSを容易に管理する方法を提供することにある。さらに本発明の目的は、OSの動作環境を迅速に切り換える方法を提供することにある。さらに本発明の目的は、一方のOSが他方のOSをメインテナンスしたあとに、他方のOSを実環境で動作させる方法を提供することにある。さらに本発明の目的は、実環境で動作することが可能な一方のOSに対する制御権と実環境で動作することが可能な他方のOSに対する制御権を切り換える方法を提供することにある。さらに本発明の目的は、ユーザが使用する入力デバイスが異なるOSの動作環境を切り換える方法を提供することにある。さらに本発明の目的はそのような方法を実現するコンピュータ・プログラムおよびコンピュータを提供することにある。
【課題を解決するための手段】
【0011】
本発明は、第1のオペレーティング・システムまたは第2のオペレーティング・システムの実行が可能なコンピュータの動作を制御する方法を提供する。メイン・メモリの第1の物理アドレス領域に第1のオペレーティング・システムをロードする。つぎに第1の物理アドレス領域に第2のオペレーティング・システムをロードする。ロードされた第2のオペレーティング・システムを第1の物理アドレス領域において仮想環境で実行する。仮想環境はタイプ1でもタイプ2でもよい。第1の物理アドレス領域にロードされた第2のオペレーティング・システムのメモリ・イメージをメイン・メモリの第2の物理アドレス領域にサスペンド状態を経由してコピーする。第2の物理アドレス領域にコピーされた第2のオペレーティング・システムにプロセッサの制御権を移して実環境で実行する。
【0012】
第2のオペレーティング・システムは仮想環境で動作したあとに、メモリ・イメージが第2の物理アドレス領域にサスペンド状態を経由してコピーされるため、第1のオペレーティング・システムのメモリ・イメージをメイン・メモリに確保した状態で第2のオペレーティング・システムを実環境で動作させることができる。本発明に好適なコンピュータは入力デバイスとしてキーボードとタッチスクリーンを含むことができる。
【0013】
さらに詳細には本発明に好適なコンピュータは、クラムシェル・モードとタブレット・モードで動作できるコンパーチブル型の携帯式コンピュータまたはベース・ユニットからタッチスクリーンを含むタブレット・ユニットを取り外すことが可能なハイブリッド型の携帯式コンピュータとすることができる。そして、第1のオペレーティング・システムはキーボードまたはポインティング・デバイスから入力が可能な主たる動作環境を形成し、第2のオペレーティング・システムはタッチスクリーンから入力が可能な従たる動作環境を構築することができる。
【0014】
第2のオペレーティング・システムのメモリ・イメージをコピーする前に、仮想環境で第1のオペレーティング・システムが第2のオペレーティング・システムをメインテナンスすることができる。メインテナンスには、第2のオペレーティング・システムが自ら行うことが困難なウィルス検査や修復を含むことができる。第2のオペレーティング・システムをロードする際に、複数のオペレーティング・システムの中から選択された第2のオペレーティング・システムをユーザが操作する入力デバイスが指定することができる。
【0015】
この場合、第1のオペレーティング・システムを実行しているユーザが第2のオペレーティング・システムを使用したいときに、入力デバイスを操作して第2のオペレーティング・システムを第1の物理アドレス領域にロードしてから第2の物理アドレス領域にコピーすることにより実環境で実行することができる。第1のオペレーティング・システムは第1の物理アドレス領域の物理アドレス空間に論理的に区分された第2の物理アドレス領域を確保することができる。この場合、第2のオペレーティング・システムを実行する必要がない場合は、第2の物理アドレス領域を確保しないで第1のオペレーティング・システムが広い物理アドレス空間を利用することができる。
【0016】
第1のオペレーティング・システムの上層で動作する仮想化モジュールがタイプ2の仮想環境を構築することができる。この場合、第2のオペレーティング・システムを実環境で動作させるとパフォーマンスを大幅に改善することができる。実行する第2のオペレーティング・システムの種類が決まっている場合は、第1のオペレーティング・システムと第2のオペレーティング・システムと仮想化モジュールは一連のブート・シーケンスでロードしてもよい。
【0017】
実環境で第2のオペレーティング・システムを実行する際に、第2のオペレーティング・システムがプラグ・アンド・プレイを実行してハードウェアを再構成することができる。この場合、仮想化モジュールがハードウェアを十分にエミュレーションできなくても第2のオペレーティング・システムは実環境で接続されているすべてのハードウェアを最大の機能を発揮させて利用できるようになる。
【0018】
メモリ・イメージのコピーは、サスペンド状態からレジュームするときにパワー・オン・リセットしたプロセッサの制御権を得るシステム・ファームウェアが実行することができる。サスペンド状態を経由して第1のオペレーティング・システムにプロセッサの制御権が渡ったときは、第1のオペレーティング・システムが第1の物理アドレス領域の第2のオペレーティング・システムが記憶されていたアドレス領域を解放することができる。第2の物理アドレス領域にメモリ・イメージがコピーされたあとは、第2のオペレーティング・システムを仮想環境で動作させる必要がないため、このようにして第1のオペレーティング・システムの物理アドレス空間を拡大することが望ましい。
【0019】
ユーザが操作する入力デバイスが生成した切換イベントに応じてプロセッサの制御権を第1のオペレーティング・システムと第2のオペレーティング・システムの間で切り換えるようにすれば、ユーザは簡単な操作で動作環境を変更することができる。第1のオペレーティング・システムと第2のオペレーティング・システムは、同一の論理区画である第1の物理アドレス領域にロードするために、ディスク・ドライブの同一のブート・パーティションに格納することができる。したがって、第1のオペレーティング・システムに続いて第2のオペレーティング・システムをブートする際に、ブート・パーティションを変更する必要がないため一連のブート・シーケンスでブートすることが可能になる。
【発明の効果】
【0020】
本発明により、同一のハードウェア上で動作することが可能な複数のOSを容易に管理する方法を提供することができた。さらに本発明により、OSの動作環境を迅速に切り換える方法を提供することができた。さらに本発明により、一方のOSが他方のOSをメインテナンスしたあとに、他方のOSを実環境で動作させる方法を提供することができた。さらに本発明により、実環境で動作することが可能な一方のOSに対する制御権と実環境で動作することが可能な他方のOSに対する制御権を切り換える方法を提供することができた。さらに本発明により、ユーザが使用する入力デバイスが異なるOSの動作環境を切り換える方法を提供することができた。さらに本発明によりそのような方法を実現するコンピュータ・プログラムおよびコンピュータを提供することができた。
【発明を実施するための形態】
【0022】
[コンピュータ・システム]
図1は、コンピュータ・システム10の本発明の説明に必要な構成を示す機能ブロック図である。チップ・セット13には、CPU11、メイン・メモリ15、ビデオ・コントローラ17、ファームウェアROM21、HDD23、カメラ25、スピーカおよびマイクロフォンなどのオーディオ・デバイス27およびエンベデッド・コントローラ(EC)29が接続されている。CPU11は、X86アーキテクチャまたはこれと互換性があるマイクロプロセッサである。
【0023】
タッチスクリーン19は液晶または有機ELなどのフラット・パネル型のディスプレイとディスプレイに積層された透明なタッチパネルで構成されている。ディスプレイはビデオ・コントローラ17に接続され、タッチパネルはEC29に接続されている。チップ・セット13には、メモリ・コントローラ、SATA(Serial Advanced Technology Attachment)、HDA(High Definition Audio)、USB(Universal Serial Bus)、PCI(Peripheral Component Interconnect)、LPC(Low Pin Count)などのインターフェース回路が組み込まれている。
【0024】
ファームウェアROM21は、BIOSまたはこれに代わるUEFIなどのシステム・ファームウェアなどを格納する。コンピュータ・システム10はACPI(Advanced Configuration and Power Interface)の規格に適合しており、BIOSおよびOSはACPIに適応する。また、チップ・セット13は、コンピュータ・システム10のパワー・ステートを制御するためのACPIレジスタ13aを含む。
【0025】
BIOSは、コンピュータの電源が起動されたときのPOST(Power On Self-Test)や認証などの他に、本実施の形態ではコンピュータ・システムの動作環境を切り換える処理を行うコードを含む。HDD23はブート・ドライブで、
図4で説明するソフトウェアを格納する。EC29は、CPU、ROM、RAMなどで構成されたマイクロ・コンピュータで、コンピュータ・システム10の内部の温度や電源などの動作環境の管理にかかるプログラムをCPU11とは独立して実行する。
【0026】
EC29は、パワー・ボタン31、キーボード33、ポインティング・デバイス35、切換センサ37およびタッチスクリーン19のタッチパネルが接続されている。ポインティング・デバイス35は、タッチスクリーン19に表示されたマウス・ポインタを操作したりアイコンに対する入力をしたりする入力デバイスである。EC29は、キーボード33、ポインティング・デバイス35およびタッチスクリーン19を構成するタッチパネルの信号を処理するコントローラも含んでいる。切換センサ37の動作については
図2、
図3を参照して説明する。EC29は、パワー・ステートの遷移の際に参照するためのレジスタ29aを含む。
【0027】
ACPIの規格では、複数のパワー・ステートが定義されており、コンピュータ・システム10は、パワー・オン状態(S0ステート)、作業内容をメイン・メモリ15に書き込んでメイン・メモリ15の記憶を保持するために必要なデバイスと再起動に必要なデバイスにだけ電力を供給するサスペンド状態(S3ステート)、作業内容をHDD23やその他の不揮発性メモリなどに書き込んで再起動に必要なデバイスにだけ電力を供給するハイバネーション状態(S4ステート)、および再起動に必要なデバイスにだけ電力を供給するソフトオフまたはパワー・オフ状態(S5ステート)のいずれかの状態に移行することができる。
【0028】
通常、サスペンド状態からパワー・オン状態への復帰(レジューム)はある程度の時間が経ってからユーザの判断またはシステムに設定したスケジュールに基づいて行われるが、本実施の形態では、サスペンド状態に遷移するとただちにレジュームするサスペンド&クイック・レジュームという方法を採用する。OSがBIOSを通じてレジスタ29aにサスペンド状態への移行を示すフラグを設定すると、サスペンド状態に遷移する際にレジスタ29aを参照したEC29がサスペンド&クイック・レジュームを行う。サスペンド&クイック・レジュームは、BIOSがCPU11の動作環境を変更するためにCPU11をパワー・オン・リセットしてCPU11の制御権を一旦BIOSに渡すことを目的にしている。
【0029】
[コンパーチブル型のノートPC]
コンピュータ・システム10は、ディスプレイを開閉して使用する通常のノートPCとして構成することもできるが、特別な種類のノートPCとして構成することもできる。
図2は、コンピュータ・システム10をコンパーチブル型のノートPC50として構成する例を説明する図である。タッチスクリーン19を収納するディスプレイ筐体53とキーボード33およびポインティング・デバイス35を搭載するシステム筐体51がヒンジ機構55で結合されている。
【0030】
ディスプレイ筐体53を開いた
図2(A)の状態では、キーボード33またはポインティング・デバイス35で操作をすることができる。ポインティング・デバイス35の操作は、タッチスクリーン19に表示されたポインターの移動やポインターが停止した位置でのクリック入力などで行う。この状態では一例として、タッチスクリーン19に対するタッチ操作はしない。
【0031】
図2(B)は、
図2(A)の状態でディスプレイ筐体53を水平方向に180度回転させて背面がキーボードに向くようにしてから閉じた状態である。ノートPC50はタッチスクリーン19が上を向いてタブレット端末のような形態になる。この状態ではキーボード33およびポインティング・デバイス35はディスプレイ筐体53の陰に隠れているため操作することはできず、タッチスクリーン19に指を接触させてタッチ操作をする。
図2(A)の利用形態をクラムシェル・モードといい、
図2(B)の利用形態をタブレット・モードということにする。切換センサ37はノートPC50が、クラムシェル・モードまたはタブレット・モードに切り換わったことを検出するとそれに応じた切換イベントを生成する。
【0032】
[ハイブリッド型のノートPC]
図3は、コンピュータ・システム10をハイブリッド型のノートPC60として構成する例を説明する図である。ノートPC60は、相互に物理的な分離および結合が可能な筐体で形成されたタブレット・ユニット71とベース・ユニット69で構成されている。
図3(A)は、タブレット・ユニット71とベース・ユニット69が結合して構成するノートPC60を示し、
図3(B)は分離したときのベース・ユニット69を示し、
図3(C)は分離したときのタブレット・ユニット71を示す。
【0033】
タブレット・ユニット71は、筐体の表面にタッチスクリーン19を備え、筐体の内部にはキーボード33およびポインティング・デバイス35を除いたほとんどのデバイスを収納し分離状態でタブレット端末として機能する。ベース・ユニット69は、ヒンジ機構65で相互に結合されたキーボード筐体61と支持部材63で構成されている。ベース・ユニット69は主要なシステム・デバイスを搭載しないため分離状態においてはコンピュータとしての機能を発揮しない。タブレット・ユニット71はイジェクト・スイッチ67を操作してユーザが支持部材63に対して着脱することができる。
【0034】
キーボード筐体61には、キーボード33およびポインティング・デバイス35などが設けられている。ノートPC60は、タブレット・ユニット71が支持部材63に装着された状態ではノートPCとして機能し、タッチスクリーン19がキーボード33と向き合うようにヒンジ機構65を垂直方向に回転させて支持部材63を閉じることができる。このようにタブレット・ユニット71を保持する支持部材63を開閉して使用するときの動作状態をクラムシェル・モードという。
【0035】
またノートPC60は開いた状態の支持部材63を、ヒンジ機構65を中心にして水平方向に180度回転させてから、支持部材63の背面がキーボード33に向き合うように閉じることができる。このようにキーボード33およびポインティング・デバイス35がタッチスクリーン19の裏側に隠れた状態で使用するときの動作状態をタブレット・モードという。ノートPC50と同様に、クラムシェル・モードではキーボード33またはポインティング・デバイス35で操作し、タブレット・モードまたはタブレット・ユニット71に対してはタッチスクリーン19で操作をする。
【0036】
切換センサ37は、支持部材63に対するタブレット・ユニット71の着脱状態の変化を検出したときに対応する切換イベントを生成する。切換センサ37はさらにタブレット・ユニット71が装着されたノートPC60が、タブレット・モードとクラムシェル・モードのいずれであるかを検出したときに対応する切換イベントを生成する。
【0037】
[プログラムの構成]
図4は、HDD23に格納されたプログラムの構成を説明する図である。HDD23には、同一のブート・パーティションにホストOS105、ホストOS105のサービスを利用して動作するホスト・アプリケーション(ホストAP)107、仮想化モジュール109、ゲストOS111、およびゲストOS111のサービスを利用して動作するゲスト・アプリケーション(ゲストAP)113を含む。ホストOS105は、ゲストOS111を更新するモジュールおよびゲストOS111のウィルス・チェックをするモジュールを含んでいる。
【0038】
図4(A)は、実環境でホストOS105が動作し、仮想環境においてゲストOS111が動作する状態を示し、
図4(B)は実環境でゲストOS111が動作する状態を示している。ここに実環境とは、OSまたはそのデバイス・ドライバが直接物理的なハードウェアにアクセスできる動作環境をいう。また、仮想環境とはOSが、仮想化モジュールが物理的なハードウェアをエミュレーションして提供する仮想ハードウェアに対してアクセスする動作環境をいう。
【0039】
本実施の形態では、ホストOS105は常に実環境で動作し、ゲストOS111は仮想環境または実環境で動作する。ハードウェア101は、
図1に示すコンピュータ・システム10を構成する複数の物理的なデバイスで構成されている。仮想化モジュール109は、ホストOS105上のレイヤで動作し、ハードウェア101をエミュレーションしてゲストOS111に仮想ハードウェアを提供するタイプ2の仮想環境を構築する。仮想化モジュール109は、同時に複数のゲストOSに対して仮想環境を構築することができる。ホストOS105およびゲストOS111は、本発明の適用のために修正する必要はない。したがって、実環境で動作する場合はホストOSとゲストOSの区別はできないが、実体に変更がないため実環境でもゲストOSということにする。
【0040】
ホストOS105は、クラムシェル・モードでの使用を予定しているWindows(登録商標)、またはLinux(登録商標)のいずれかとすることができる。一例ではホストOS105の動作環境でユーザは、キーボード33またはポインティング・デバイス35だけを通じて入力することができる。ゲストOS111は、タブレット・モードまたはタブレット・ユニット71での使用を予定しているAndroid(登録商標)、またはWindows(登録商標) RTなどのいずれかまたは複数とすることができる。一例ではゲストOS111の動作環境でユーザは、タッチスクリーン19だけを通じて入力することができる。
【0041】
[メモリ・マップ]
図5は、動作環境が変わるときのメイン・メモリ15のメモリ・マップを説明する図である。メイン・メモリ15には、論理的に区分された物理アドレス領域151、153、155、157を含む物理アドレス空間が設定される。論理的な区分は、OSまたはBIOSがアクセスできる領域として定義される。物理アドレス領域151、153、155、157は、ブート時にBIOSにより割り当てられ、OSは割り当てられた各領域で動作するプログラムが他の領域にアクセスしないように管理する。
【0042】
物理アドレス領域151は、ホストOS105およびその管理を受けるプログラムが使用し、物理アドレス領域153はゲストOS111およびその管理を受けるプログラムが使用する。物理アドレス領域155はBIOSが使用する。物理アドレス領域157にはホストOS105がゲストOS111を管理するための処理に必要な共用データが書き込まれ、ホストOS105、ゲストOS111およびBIOSがアクセスすることができる。
【0043】
図5(A)は、物理アドレス領域151にホストOS105、ホストAP107、仮想化モジュール109、ゲストOS111、ゲストAP113がロードされたときの様子を示している。この状態でホストOS105の環境下で動作するプログラムが、物理アドレス領域151にマッピングされた仮想アドレス領域を利用して動作する。物理アドレス領域153は形成されておらず、物理アドレス領域151は広い物理アドレス空間を占有している。
【0044】
図5(B)は、物理アドレス領域151が占有していた物理アドレス空間の一部に物理アドレス領域153が割り当てられた様子を示している。物理アドレス領域153には、
図5(A)に示すように物理アドレス領域151にロードされていたゲストOS111とゲストAP113のメモリ・イメージがコピーされている。この状態でサスペンド&クイック・レジュームが実行されたときにBIOSは
図7で説明する手順によりCPU11の制御権をホストOS105またはゲストOS111のいずれかに切り換えることができる。
【0045】
ホストOS105が制御権を得たときは、ホストOS105の管理下で動作する
図4(A)に示したプログラムが、物理アドレス領域151にマッピングされた仮想アドレス領域を利用して動作する。ゲストOS111が制御権を得たときはゲストOS111の管理下で動作する
図4(B)に示したプログラムが物理アドレス領域153にマッピングされた仮想アドレス領域を利用して動作する。ホストOS105およびゲストOS111は、それぞれ仮想アドレス領域のサイズを決めることができるが、ページング機能を利用して物理アドレス領域よりも大きいサイズの仮想アドレス領域を利用することができる。
【0046】
図5(B)の状態では、物理アドレス領域153を構築するために物理アドレス領域151を縮小している。物理アドレス領域が小さくなるとHDD23に設けられた仮想メモリに対するスワッピングの頻度が増加してホストOS105とその管理下で動作するプログラムのパフォーマンスは低下する。
図5(C)は、
図5(B)で物理アドレス領域151のゲストOS111とゲストAP113を記憶していたアドレス領域が他のプログラムのために解放された様子を示している。
図5(C)の状態は、
図5(B)の状態よりホストOS105が利用できる物理アドレス空間が拡大している。
【0047】
[状態遷移図]
図6は、コンピュータ・システム10の状態遷移を説明する図である。状態201は、パワー・オフ状態である。状態203は、物理アドレス領域151にホストOS105、ホストAP107がロードされて、ホストOS105が実環境で動作する状態である。ホストOS105が仮想環境を構築しない場合はこの状態で動作する。状態203からは通常の方法でシャットダウンして状態201に移行することができる。
【0048】
状態205は、
図5(A)に示すように状態203において、物理アドレス領域151に仮想化モジュール109、ゲストOS111およびゲストAP113がロードされてホストOS105により構築されたタイプ2の仮想環境でゲストOS111とゲストAP113が動作する状態である。ホストOS105とゲストOS111は、HDD23の同一のブート・パーティションに格納されているため、1回のブートで仮想化モジュール109とともにロードして状態201から状態205に移行することもできる。状態205からは通常の方法でシャットダウンして状態201に移行することができる。
【0049】
状態207は、
図5(B)に示すようにホストOS105が形成した物理アドレス領域153に物理アドレス領域151にロードされたゲストOS111とゲストAP113のメモリ・イメージがコピーされた状態である。状態207では、物理アドレス領域151には状態205のメモリ・イメージが残っている。さらに状態207は、物理アドレス領域153にコピーされたゲストOS111が実環境で動作し、物理アドレス領域151にロードされたホストOS105がスリープ状態に遷移している状態である。
【0050】
ここにプログラムのスリープ状態とは、コンピュータ・システム10の電源はパワー・オン状態のときに、メイン・メモリ15にメモリ・イメージは残っているがCPU11の制御権が剥奪されたOSの状態を意味する。状態209は、
図5(C)に示すように、物理アドレス領域153にはゲストOS111とゲストAP113のメモリ・イメージがコピーされ、物理アドレス領域151にロードされていたゲストOS111とゲストAP113のアドレス領域が解放されて他のプログラムが使用できる状態である。さらに状態209は、物理アドレス領域151にロードされたホストOS105が実環境で動作し、メモリ・イメージが物理アドレス領域153にコピーされたゲストOS111がスリープ状態に遷移している状態である。
【0051】
状態211は、状態209とメモリ・イメージの構成は同じであるが、物理アドレス領域151にロードされたホストOS105がスリープ状態に遷移し、メモリ・イメージが物理アドレス領域153にコピーされたゲストOS111が実環境で動作している状態である。状態213は、物理アドレス領域151に、実環境で動作していたゲストOS111とゲストAP113がコピーされて、仮想化モジュール109が構築した仮想環境でゲストOS111が動作する状態である。コンピュータ・システム10は、状態207〜213から直接シャットダウンできないが、その手順は
図9を参照して説明する。
【0052】
[ゲストOSを管理する手順]
図7、
図8はホストOS105がゲストOS111を管理する手順を示すフローチャートである。ブロック301でコンピュータ・システム10が状態201に遷移しているときにブロック303でパワー・ボタン27が押下されると、コンピュータ・システム10の電源が起動する。コンピュータ・システム10がノートPC50、60の場合は、クラムシェル・モードで起動することを想定する。CPU11は電源が安定すると内部キャッシュやレジスタを初期化してリセット・ベクタを設定する。CPU11は続いてBIOSをメイン・メモリの物理アドレス領域155にロードする。パワー・オン・リセットされたCPU11は常にBIOSの先頭アドレスから実行を開始する。
【0053】
CPU11はメイン・メモリ15の少なくとも物理アドレス領域157を初期化する。物理アドレス領域157は初期化されたときにディフォルトの実行パスを表明するように定義されている。BIOSは最初に物理アドレス領域157を参照して起動要因を認識する。BIOSは、ディフォルトの実行パスが設定されていると判断したときは、すべての周辺デバイスの検出、初期化および設定を行う完全なPOST(Power On Self Test)を行ういわゆるコールド・ブートを実行する。サスペンド&クイック・レジュームのためにサスペンド状態からレジュームするいわゆるウォーム・ブートのときは、省略したPOSTを行ってレジューム時間を短縮する。なお、ウォーム・ブートのときは、CPU11はメイン・メモリの初期化を省略する。
【0054】
BIOSがPOSTを終了すると、CPU11はHDD23のMBR(Master Boot Recode)を参照してブート・パーティションを選択しブート・ローダに制御を移す。ブート・ローダはブート・パーティションに格納されているホストOS105のロードを開始する。ホストOS105と同一のブート・パーティションに格納されているプログラムは、ブート・ファイルに設定しておくことでブート・ストラップの手順で順番にメイン・メモリ15にロードすることができる。BIOSは、
図5(A)に示すようにホストOS105にディフォルトで広い物理アドレス空間を割り当てる。
【0055】
一例としてホストOS105とホストAP107のロードが完了するとシステムは状態203に移行し、実環境でホストOS105とホストAP107が動作する。この状態でホストOS105は、
図5(A)に示す広い物理アドレス領域151を利用することができる。同一のブート・パーティションに格納されている仮想化モジュール109、ゲストOS111、およびゲストAP113をホストOS105に続いてロードしてもよいが、ユーザがゲストOS111を使用する予定がない場合は物理アドレス空間を制限しないためにはホストOS105およびホストAP107だけをロードすることが望ましい。この時点で、ホストOS105はタッチスクリーン19にHDD23に格納されている複数のゲストOSにそれぞれ対応する複数のアイコンを表示してユーザに選択させるようにすることができる。
【0056】
ブロック304で、ユーザはポインティング・デバイス35を通じて複数のアイコンの中からゲストOS111を選択する操作をすると、ホストOS105は
図5(B)に示すように物理アドレス領域151の中にゲストOS111を実環境で動作させるための物理アドレス領域153を設定する。物理アドレス領域153は物理アドレス領域151から論理的に区分されるため、以後ホストOS105が利用できる物理アドレス空間はその分だけ狭くなる。
【0057】
つづいてブロック305でホストOS105はHDD23から仮想化モジュール109を物理アドレス領域151にロードしてタイプ2の仮想環境を構築する。つづいてブロック307でホストOS105がHDD23から物理アドレス領域151にゲストOS111とゲストAP113をロードすると状態205に移行し、ゲストOS111とゲストAP113が仮想環境で動作することができる。ただし本実施の形態では、以下に説明するようにゲストAP113をパフォーマンスの低い仮想環境で実行する必要はない。
【0058】
ブロック309でユーザは、ホストOS105を通じてゲストOS111のウィルス・チェック、更新、または修復などのメインテナンスを行う。マルウェアに汚染されたゲストOS111が自らのウィルス・チェックをする場合は、マルウェアに妨害される可能性があるため確実に行うことはできない。また、ゲストOS111の主要なモジュールが破損しているときは、ゲストOS111が自らを修復することはできない。
【0059】
タイプ2の仮想環境では、ゲストOS111はホストOS105に対してホストAPと同等の関係で動作する。本実施の形態ではタイプ2の仮想環境を利用してゲストOS111に対してホストOS105がウィルス・チェックや修復を行うことで安全性および信頼性を確保することができる。状態205では仮想化モジュール109が、ホストOS105により抽象化されたハードウェア101をエミュレーションしてゲストOS111に仮想ハードウェアを提供する。
【0060】
ハードウェア101に対して実環境での動作をするホストOS105は、ハードウェア101の機能を完全に利用できるが、仮想化モジュール109はゲストOS111に対してハードウェア101の機能を十分に利用できるようにエミュレーションできない場合がある。たとえば、仮想化モジュール109はオーディオ・デバイス27をエミュレーションできなかったり、タッチスクリーン19で利用できる最大の解像度より低い解像度でエミュレーションしたりする場合がある。また、仮想環境でゲストOS111を実行すると、ホストOS105を経由する分だけオーバーヘッドが生ずる。
【0061】
このような理由で本実施の形態では、状態205ではゲストOS111のメインテナンスだけを行い、実質的な処理のためのゲストAP113の実行を予定しない。ブロック311でユーザは、ホストOS105の実行環境に短時間で復帰できることを前提にして、タッチスクリーン19からの入力に適したゲストAP113を実行したいと想定する。一例としては、
図2のコンパーチブル型のノートPC50をタブレット・モードで使用したり、
図3のハイブリッド型のノートPC60をタブレット・モードで使用したりまたはタブレット・ユニット71を単独で使用したりする。このとき切換センサ37は、動作モードの変更をする操作を検出してEC29に状態207に移行するための切換イベントを入力する。
【0062】
あるいはユーザはクラムシェル・モードでもタッチスクリーン19からの入力に適したゲストAP113を実行したい場合がある。このときユーザはキーボード33またはポインティング・デバイス35を通じてEC29に状態207に移行するための切換イベントを入力する。EC29はCPU11に割り込みをかけて受け取った切換イベントをホストOS105に通知する。ブロック313で切換イベントを受け取ったホストOS105はサスペンド&クイック・レジュームを実行する。
【0063】
ホストOS105は、ホストAP107、仮想化モジュール109およびゲストOS111に実行を停止するように要求する。要求を受け取ったゲストOS111は、ゲストAP113に実行を停止するように指示する。ホストOS105は、サスペンド状態で電源が停止するCPU11および周辺デバイスのレジスタや揮発性メモリが保有するシステム・コンテキストを物理アドレス領域157に記憶する。ゲストOS111は、同様の周辺デバイスをエミュレーションした仮想ハードウェアのシステム・コンテキストを物理アドレス領域157に記憶する。
【0064】
ホストOS105はサスペンドの準備が完了すると物理アドレス領域157にレジュームしたときのBIOSの実行パスを示す情報を書き込み、物理アドレス領域151に記憶されたコピー元のゲストOS111およびゲストAP113のメモリ・イメージが記憶されたアドレスを物理アドレス領域157に書き込む。物理アドレス領域
157に書き込まれたBIOSの実行パスは、BIOSがコピー元のメモリ・イメージを物理アドレス領域153にコピーしてからCPU11の制御権を物理アドレス領域153にコピーされたゲストOS111に移すことを示す。
【0065】
つづいてホストOS105、チップ・セット13のACPIレジスタ13aに遷移先としてサスペンド状態を設定し、EC29のレジスタ29aにサスペンド&クイック・レジュームのフラグを設定する。ACPIレジスタ13aにサスペンド状態が設定されたチップ・セット13は、EC29に指示してシステムをサスペンド状態に遷移させる。EC29は、サスペンド状態に遷移する際にレジスタ29aを参照する。
【0066】
EC29はレジスタ29aにサスペンド&クイック・レジュームが設定されていることを認識すると、一瞬サスペンド状態に遷移したあとに、ただちに、電源をパワー・オン状態に復帰させる。パワー・オン・リセットしたCPU11はBIOSを先頭アドレスから実行する。BIOSは、物理アドレス領域157を参照して実行パスを判断しさらにコピー元のアドレスを取得して、ブロック315で
図5(B)に示すように物理アドレス領域151にロードされたゲストOS111およびゲストAP113のメモリ・イメージを物理アドレス領域153にコピーする。さらにBIOSは電源が復帰したハードウェア101に物理アドレス領域157に書き込まれていた仮想ハードウェアのシステム・コンテキストをリストアする。
【0067】
ブロック317でBIOSがゲストOS111に制御権を移すとシステムは状態207に移行して、ゲストOS111とゲストAP113が実環境で動作を開始する。制御権が剥奪されたホストOS105はスリープ状態に移行する。ゲストOS111はBIOSに代わって、仮想ハードウェアに設定していたシステム・コンテキストをこの時点でハードウェア101にリストアしてもよい。状態205でハードウェア101が完全にエミュレーションされていないときは、ゲストOS111は仮想環境でのシステム・コンテキストをリストアしても実環境でハードウェア101の機能を完全に利用できない。
【0068】
ブロック319でゲストOS111は、ハードウェア101を再構成するためのドッキング・イベントを生成する。ドッキング・イベントを生成したゲストOS111は、ACPIのプラグ・アンド・プレイ機能を利用してエニュメレーションを実行し接続されているデバイスを検出して再構成する。ゲストOS111は、実環境で新たに検出したデバイスについてはデバイス・ドライバのインストールやコントローラの設定を行ったり、仮想環境では検出していたが完全に構成できなかったデバイスの再構成を行ったりする。また、完全にエミュレーションされていた周辺デバイスについては、仮想ハードウェアのシステム・コンテキストをリストアする。その結果、ゲストOS111は、接続されているすべてのハードウェア101の最大の機能を利用して実環境で動作することができるようになる。
【0069】
実環境で動作するゲストOS111を利用しているユーザは、多量の文字を入力したりホストOS105だけで動作できるホストAP107を実行したりするためにホストOS105を実行したい場合がある。ブロック321でユーザはタッチスクリーン19を通じてホストOS105を実行するための切換イベントを生成することができる。このときノートPC50、60ではクラムシェル・モードへの切換操作を検出した切換センサ37が切換イベントを生成することができる。ブロック325でゲストOS111は、ブロック313と同様の手順でサスペンド&クイック・レジュームを実行する。
【0070】
ただし、ゲストOS111はサスペンドする前に、レジュームする際にBIOSがCPU11の制御権をホストOS105に渡す実行パスを示す情報を書き込む。ブロック327で制御権を得たホストOS105が実環境で動作し、ゲストOS111はスリープ状態に遷移する。このとき物理アドレス領域151には、ゲストOS111およびゲストAP113のメモリ・イメージが残っているので仮想環境でゲストOS111も動作を開始する。
【0071】
しかし、実環境で動作していたゲストOS111と仮想環境で動作するゲストOS111との間には動作の一貫性がなく、さらに前述のとおりゲストOS111を実際の処理のために仮想環境で動作させる必要はないため、ホストOS105はゲストOS111およびゲストAP113の動作を停止してそれらがロードされていた物理アドレス領域151のアドレスを他のプログラムが使用できるように解放する。その結果、ホストOS105が利用できる物理アドレス空間が
図5(C)に示すように拡大して状態209に移行する。
【0072】
ブロック331では、再び実環境でゲストOS111を実行したい場合に、ユーザによるブロック311と同様の切換イベントが生成され、ブロック333でブロック313と同様のサスペンド&クイック・レジュームが実行される。このときホストOS105はサスペンドの前に、レジュームする際にBIOSがCPU11の制御権をゲストOS111に与える実行パスを示す情報を物理アドレス領域157に書き込む。ブロック335でシステムは状態211に移行する。ブロック336でユーザは、状態209または状態211のいずれかを選択してシステムを移行させることができる。状態209を選択するときはブロック337でユーザによるブロック321と同様の切換イベントを生成すると、ブロック339でブロック325と同様のサスペンド&クイック・レジュームが実行されてブロック329でCPU11の制御権がホストOS105に移って状態209に移行する。
【0073】
以後、ブロック331、337で切換イベントを生成して実環境でホストOS105を実行する状態209と実環境でゲストOS111を実行する状態211の間で動作環境を切り換えることができる。ブロック336でユーザが状態213を選択したときは、
図8のブロック401に移行する。ブロック401でタッチスクリーン19を通じて状態213に移行するための切換イベントを生成する。ブロック403でゲストOS111はブロック325と同様のサスペンド&クイック・レジュームを実行して一旦状態209に移行する。このとき、ゲストOS111はサスペンドの前に、レジュームする際にBIOSが状態209に移行する処理をする実行パスを示す情報と物理アドレス領域153のメモリ・イメージをコピーする処理をすることを示す情報およびメモリ・イメージが記憶されているアドレスを物理アドレス領域157に書き込む。
【0074】
ブロック405で制御権を得たホストOS105は、物理アドレス領域157を参照して実行パスを決定し、物理アドレス領域153に記憶されたデータを物理アドレス領域151にコピーする準備を行う。物理アドレス領域153には、実環境で動作するゲストOS111、ゲストAP113およびそれらが作成したデータで構成されたメモリ・イメージが記憶されている。ホストOS105は、必要に応じて仮想化モジュール109をロードし、物理アドレス領域153が記憶するメモリ・イメージをコピーするための物理アドレス空間を物理アドレス領域151に確保し、そのアドレスを物理アドレス領域157に書き込む。
【0075】
つづいてホストOS105はブロック407でBIOSに制御権を与えるために切換イベントを生成する。このときホストOS105はサスペンドの前に、BIOSが状態213に移行する処理をする実行パスを示す情報を物理アドレス領域157に書き込む。ホストOS105はブロック409でサスペンド&クイック・レジュームを実行する。ブロック411で制御権を得たBIOSは、物理アドレス領域157を参照して、物理アドレス領域153に記憶されているメモリ・イメージを物理アドレス領域151にコピーするとシステムが状態213に移行してホストOS105が制御権を獲得してゲストOS111が仮想環境で動作する。
【0076】
この状態で、再びホストOS105はゲストOS111のメインテナンスまたは修復を行うことができる。ここでゲストOS111を実環境で動作させる場合は、状態213から状態207に移行する。ブロック413でユーザがキーボード33またはポインティング・デバイス35を通じて切換イベントを生成すると、ブロック415でホストOS105がサスペンド&クイック・レジュームを実行し
図7のブロック317で状態207に移行する。
【0077】
動作環境をホストOS105とゲストOS111の間で切り換えて使用すると、コンピュータ・システム10は、状態209、211、213のいずれかに遷移する。
図9は、状態209、211、213のいずれかからシャットダウンするときの手順を示すフローチャートである。ブロック501でユーザがホストOS105またはゲストOS111に対してシャットダウンを開始する操作を行う。ブロック503で現在の動作状態が実環境でゲストOS111が動作する状態211のときはブロック507に移行し、実環境でホストOS105が動作する状態209、213のときはブロック505に移行する。
【0078】
ブロック505では、ユーザの操作を介在しないでホストOS105が切換イベントの生成およびサスペンド&クイック・レジュームを実行して状態211に移行する。状態213から状態211への移行は
状態207、209を経由して行う。ブロック505を経由して状態209から状態211に移行したとき、または、状態211のときにブロック501でシャットダウン操作が行われたことに応じてゲストOS111はアンドック・イベントを生成してデバイス・ドライバに通知すると、ブロック507でデバイス・ドライバはハードウェア101を切断する。
【0079】
すべての周辺デバイスが切断されるとゲストOS111は物理アドレス領域153を無効化する。その後システムはサスペンド&クイック・レジュームを実行しホストOS105に制御権を与えて状態205に移行する。ブロック509でホストOS105は、物理アドレス領域151で動作中のプログラムを停止しさらにハードウェア101を切断してからチップ・セット13を通じて電源を停止する。
【0080】
物理アドレス領域151には、仮想モジュール109の仮想環境で動作する複数のゲストOSをロードすることができる。このときホストOS105は、物理アドレス領域151に複数の論理ブロックを形成して、それぞれに異なるゲストOSを物理アドレス領域151からコピーすることができる。そしてサスペンド&クイック・レジュームを行って、実環境で動作する各ゲストOSと実環境で動作するホストOS111の相互間での切り換え、および実環境で動作するゲストOS間での切り換えを行うことができる。
【0081】
また、タイプ2の仮想環境を例にして説明したが、本発明はハードウェア上で動作するハイパーバイザがタイプ1の仮想環境を構築するシステムに適用することもできる。この場合、一旦同一の物理アドレス領域にロードした複数のゲストOSのなかから実環境で動作させるゲストOSのメモリ・イメージを選択して他の物理アドレス領域にコピーすることができる。
【0082】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。