JP2011008646A - 実環境と仮想環境を遷移させるコンピュータ・プログラム - Google Patents

実環境と仮想環境を遷移させるコンピュータ・プログラム Download PDF

Info

Publication number
JP2011008646A
JP2011008646A JP2009153057A JP2009153057A JP2011008646A JP 2011008646 A JP2011008646 A JP 2011008646A JP 2009153057 A JP2009153057 A JP 2009153057A JP 2009153057 A JP2009153057 A JP 2009153057A JP 2011008646 A JP2011008646 A JP 2011008646A
Authority
JP
Japan
Prior art keywords
state
environment
guest
power
computer system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009153057A
Other languages
English (en)
Other versions
JP5085611B2 (ja
Inventor
Kishiko Ito
貴志子 伊藤
Seiichi Kono
誠一 河野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo Singapore Pte Ltd
Original Assignee
Lenovo Singapore Pte Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lenovo Singapore Pte Ltd filed Critical Lenovo Singapore Pte Ltd
Priority to JP2009153057A priority Critical patent/JP5085611B2/ja
Publication of JP2011008646A publication Critical patent/JP2011008646A/ja
Application granted granted Critical
Publication of JP5085611B2 publication Critical patent/JP5085611B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】システム状態を維持しながら、コンピュータを実環境と仮想環境の間で動作環境を遷移させる。
【解決手段】実環境でOS101を実行する。仮想環境へ移行させるための移行イベントを生成する。移行イベントに基づいてコンピュータ・システムをサスペンド状態へ移行させる。サスペンド状態から電源オン状態への復帰を開始させる。サスペンド状態から電源オン状態に復帰するまでの間に、仮想化プログラム109をメイン・メモリに確保された所定の領域にロードする。仮想化プログラムを実行し、オペレーティング・システムをレジュームして仮想環境に移行する。
【選択図】図2

Description

本発明は、コンピュータ・システムを実環境と仮想環境の間で双方向に遷移させる技術に関する。
パーソナル・コンピュータやサーバでは、ハイパーバイザまたは仮想計算機モニタ(VMM:Virtual Machine Monitor)といわれる仮想化プログラムを導入することで仮想環境を形成し、複数のオペレーティング・システム(OS)を動作させたり、ハードウエアのクラスタリングなどをしたりすることが可能である。これにより、サーバにおいては例えば既存のサーバを統合したり、特定のハードウエアで動作することを前提にしているOSやアプリケーション・プログラムを最新のハードウエアで動作させたり、状況に応じてOSを切り換えたりすることができるという利点がある。しかし、仮想環境で動作するOSは、仮想化プログラムがロードされていない通常のOS環境である実環境で動作するOSに比べて、仮想化プログラムによるオーバーヘッドが増加してパフォーマンスが低下したり、メモリやCPUなどのリソースを余分に消費したりするといった欠点もある。
特許文献1は、ホストOS上でゲストOSが動作する仮想計算機システムにおいて、ホストOSに障害が発生したときに、ゲストOSを再起動することなくハードウエアアクセスについてゲストOSとホストOSの依存関係を切り換える技術を開示する。同文献には、ゲストOSをホストに、ホストOSをゲストに切替えるとき、ゲストOSが、ゲストOSのゲストメモリ管理情報とホストOSのホストメモリ管理情報とに基づいて、切り替え後のホストOSのメモリ管理情報となる新規ゲストメモリ管理情報と、切り替え後のゲストOS300のメモリ管理情報となる新規ホストメモリ管理情報とを生成することが記載されている。
特許文献2は、物理マシン上に仮想マシン環境と複数の仮想マシンが構築されている仮想マシンシステムにおいて、OSの再起動をすることなく、仮想マシンで使用できるメモリの拡大および縮小を可能にする技術を開示する。同文献には、仮想マシン環境上で動作する複数の仮想マシンのそれぞれが使用可能なメモリ領域を、物理マシンが有する物理メモリに対応付け、各仮想マシンの使用メモリの量に応じて、メモリ領域の所定の領域を、各仮想マシンに対して割り当てと解放が可能な予約領域として配置することが記載されている。
特許文献3には、マルチOSを切り換える従来技術として、OSの実行環境をハードディスクにサスペンドする技術が記載されている。同文献には、BIOSがハードウエアを初期化して、ハードディスクからOSの実行環境を取得することが記載されている。特許文献4は、コンピュータをサスペンド状態に移行させた直後にレジュームしてシステムBIOSに制御を移す技術を開示する。
特開2007−34572号公報 特開2008−225520号公報 特開2008−524730号公報 特開2008−26934号公報
仮想環境の使用例は、前述のような利点の他にも考えられる。近年、コンピュータ・ウィルス、ワーム、スパイウエアといった悪意のあるソフトウエア(マルウエア)が頻繁にネットワーク経由でユーザのコンピュータ・システムに送られてくる。そのようなソフトウエアの多くは、ファイアウォールやウィルス対策のソフトエアなどにより発見され駆除される。しかし、ルートキットと呼ばれる最近開発されたソフトウエア・ツール技術は、そのようなマルウエアの存在を隠蔽して検出を困難にする。たとえばルートキットは、アプリケーション・プログラムが情報入手に利用するAPIの処理を横取りし、プログラムのリストからマルウエアのプログラムを削除して隠蔽してしまうことがある。そうすると、ウィルス駆除プログラムはもはやマルウエアを発見することができなくなってしまう。
しかも、OS自身がルートキットの存在を認識しようとしても、すでにOSにルートキットが潜んでいるような場合はそれも困難になる。そのようなときに、検査対象となるOSとは別の検査用のOSを同じ仮想環境で動作させて、検査用のOSが検査対象となるOSのメイン・メモリに展開されたコードを調べたり、OSが格納されていたハードディスクや不揮発性メモリなどのストレージにあるファイルを調べたりすることで、ルートキットやマルウエアの存在を検出することができる。また、OSを部分的に修復するような場合も、実理環境で行うよりも仮想環境で別のOSによって行うほうが安全である。しかし、このようなOSの検査や修復のようなメインテナンス作業は定期的にまたは必要に応じて行えばよいので、OSを常時パフォーマンスが低下したりリソースを余分に消費したりする仮想環境で動作させる必要はない。したがって、通常はOSを実環境で動作させ、必要に応じて仮想環境に移行して作業を行いまた実環境に戻ることを移行前のシステム状態を維持しながら行うことができれば、OSのメインテナンスには都合がよい。
そこで本発明の目的は、実環境から仮想環境に実環境でのシステム状態を維持しながら移行することができるコンピュータ・プログラムを提供することにある。さらに本発明の目的は、仮想環境から実環境に仮想環境でのシステム状態を維持しながら移行することができるコンピュータ・プログラムを提供することにある。さらに本発明の目的は、実環境でのシステム状態を維持しながら一時的に仮想環境に移行してメインテナンス作業を行い、再び実環境に移行することができるコンピュータ・プログラムを提供することにある。さらに、本発明の目的は、実環境から仮想環境への移行、および仮想環境から実環境への移行を短時間で自動的に行うことができるコンピュータ・プログラムを提供することにある。
本発明は、サーバやクライアントなどのような実環境と仮想環境のいずれでも動作することが可能なコンピュータ・システムに適用することができる。最初にコンピュータ・システムは実環境でOSを実行する。そして、コンピュータ・システムはパワー・オン状態からシステム状態の保持が可能な節電状態へ移行した後に節電状態からパワー・オン状態への復帰を開始する。節電状態への移行のきっかけは、内部で生成した信号や外部から受け取った信号を利用することができる。システム状態の保持が可能な節電状態は、パワー・オン状態よりも消費電力が少なく、かつ、パワー・オン状態に復帰したときには節電状態へ移行する前のシステム状態に復帰できる動作状態をいい、サスペンド状態やハイバネーション状態が含まれる。
つづいて、コンピュータ・システムが節電状態からパワー・オン状態に復帰するまでの間に仮想化プログラムをメイン・メモリに確保された所定の領域にロードし実行する。その後OSをレジュームして仮想環境に移行する。このような手順を実行すると、実環境で動作していたコンピュータ・システムを、実環境の動作状態を保持しながら仮想環境に自動的に移行することができる。節電状態をサスペンド状態としたときには、サスペンド状態に移行したことに応答してパワー・オン状態に移行するようにすれば、きわめて短時間でコンピュータ・システムの実行環境を移行することができる。サスペンド状態に移行したことに応答してとは、システム状態を維持する処理が完了して電源の状態が当該コンピュータ・システムで定義された節電状態に移行したことに続いて行うということを意味しており、節電状態に移行してから他の条件に基づくイベントが生成されることを待っていたり、タイマで所定の時間が経過することを待っていたりした後に続いて行うようなことは含まない。
仮想環境から実環境へ移行するときは、実環境から仮想環境への移行のときと同様にコンピュータ・システムはパワー・オン状態からシステム状態の保持が可能な節電状態へ移行した後に節電状態からパワー・オン状態への復帰を開始する。コンピュータ・システムが節電状態からパワー・オン状態に復帰するまでの間に仮想化プログラムをメイン・メモリの所定の領域からアンロードし、さらにOSをレジュームすることで実環境に移行する。このような手順を実行すると、仮想環境で動作していたコンピュータ・システムを、仮想環境でのシステム状態を保持しながら実環境に移行することができる。仮想化プログラムをアンロードするということは、仮想化プログラムをメイン・メモリ上で実行不能にすることを意味しており、同時に仮想化プログラムの実行環境を不揮発性のメモリに格納してもよく、また、単に仮想化プログラムのコードを読み取ることができないように上書きしてクリアすることでもよい。
OSが実環境で動作した後に、OSは、仮想化プログラムがアンロードされたメイン・メモリの所定の領域を自らの使用のために解放することができる。こうすることで、実環境では必要のない仮想化プログラムに対してメイン・メモリを割り当てておく必要をなくして、メモリ資源を有効に活用することができる。仮想化プログラムをロードするためのメイン・メモリの領域は、OSが実環境で動作している間は常時確保するようにしておいてもよいし、あるいは、SMRAM領域の一部を利用して確保してもよい。
上記の手順によれば、通常はパフォーマンスが良好でメイン・メモリを必要以上に消費しない実環境で動作させ、必要なときだけ仮想環境で動作させることができるので都合がよい。特に、実環境では十分に行うことができず、しかも、常に実環境で行う必要がないような、OSのウィルス検査や修復を仮想環境で行うような場合には都合がよい。仮想化プログラムをロードしたり、アンロードしたりするのは、節電状態からパワー・オン状態に移行する間にコンピュータ・システムの制御を取得するBIOSが行うことができる。本発明にかかるコンピュータ・プログラムは、BIOS、ハイパーバイザ、およびDomain0のゲストOSなどで構成することができる。また、このコンピュータ・プログラムをサーバやクライアントなどのコンピュータ・システムに実装して動作環境の移行を行うことができる。
本発明により、実環境から仮想環境に実環境でのシステム状態を維持しながら移行することができるコンピュータ・プログラムを提供することができた。さらに本発明により、仮想環境から実環境に仮想環境でのシステム状態を維持しながら移行することができるコンピュータ・プログラムを提供することができた。さらに本発明により、実環境でのシステム状態を維持しながら一時的に仮想環境に移行してメインテナンス作業を行い、再び実環境に移行することができるコンピュータ・プログラムを提供することができた。さらに、本発明により、実環境から仮想環境への移行、および仮想環境から実環境への移行を短時間で自動的に行うことができるコンピュータ・プログラムを提供することができた。
コンピュータ・システムの本発明の説明に必要な構成を示す機能ブロック図である。 コンピュータ・システムが実環境で動作するときと仮想環境で動作するときのソフトウエアの構成を説明する図である。 コンピュータ・システムが実環境から仮想環境に移行するときの手順を示すフローチャートである。 ハイパーバイザとDomain0のゲストOSのモジュールをロードするために、メイン・メモリの記録領域を確保する様子を示す図である。 コンピュータ・システムが仮想環境から実環境に移行するときの手順を示すフローチャートである。
図1は、コンピュータ・システム10の本発明の説明に必要な構成を示す機能ブロック図である。ノース・ブリッジ13には、CPU11、メイン・メモリ15、ビデオ・コントローラ17、およびサウス・ブリッジ19が接続されている。コンピュータ・システム10は、ハイパーバイザ型の仮想化ソフトウエアに対してHVM(Hardware Virtual Machine)というCPUの支援による仮想化を行うことにより、OSに修正を加える必要のない完全仮想化を実現する。HVMを利用することで、Windows(登録商標)のようなソースコードが公開されていないOSも仮想環境で実行することができるようになる。
CPU11は、HVMを実現するための仮想化支援機構を実装している。仮想化支援機構は、たとえばインテル社のCPUに搭載されるVT(Virtualization Technology)またはAMD社のCPUに搭載されるAMD−Vという技術で提供されている。仮想化支援機構を搭載したCPU11では、OSのカーネルは通常どおりリング0の特権レベルで動作し、ハイパーバイザはリング0の上に追加された仮想的なリング−1に相当する特権レベルで動作する。ただし、本発明は、ハイパーバイザがリング0で動作し、OSのカーネルがリング1で動作するような準仮想化に適用することもできる。準仮想化は、OSが実環境で動作する場合に比べてパフォーマンスの低下が少ないが、カーネルの動作環境を変更するためにコードに修正を加える必要がある。
ビデオ・コントローラ17にはLCD19が接続されている。サウス・ブリッジ19にはSATA(Serial Advanced Technology Attachment)、HDA(High Definition Audio)バス、USB(Universal Serial Bus)、PCI(Peripheral Component Interconnect)バス、LPC(Low Pin Count)バスなどに対するインターフェース回路が組み込まれている。SATAインターフェースにはHDD21が接続されている。HDD21には、ハイパーバイザとしてのXen(商標)、ゲストOSとしてのWindows(登録商用)およびLinux(登録商標)が格納されている。LPCバス23には、エンベデッド・コントローラ(EC)25およびフラッシュROM27などが接続されている。
EC25は、8〜16ビットのCPU、ROM、RAMなどで構成されたマイクロ・コンピュータであり、さらに複数チャネルのA/D入力端子、D/A出力端子、タイマ、およびディジタル入出力端子を備えている。EC25は、コンピュータ・システム10の内部の温度や電源などの動作環境の管理にかかるプログラムをCPU11とは独立して実行することができる。EC25は、キーボード・コントローラを含んでおり、キーボード29が接続されている。コンピュータ・システム10はACPI(Advanced Configuration and Power Interface)の規格に適合しており、フラッシュROM27には、ACPIに対応するBIOSが格納されている。
ACPIの規格では、複数のパワーステートが定義されており、コンピュータ・システム10は、パワー・オン状態であるS0ステート、作業内容をメイン・メモリ15に書き込んでメイン・メモリ15の記憶を保持するために必要なデバイスと再起動に必要なデバイスにだけ電力を供給するサスペンド状態というS3ステート、作業内容をHDD21やその他の不揮発性メモリなどに書き込んで再起動に必要なデバイスにだけ電力を供給するハイバネーション状態というS4ステート、および再起動に必要なデバイスにだけ電力を供給するソフトオフまたはパワー・オフ状態というS5ステートのいずれかの状態に移行することができる。サスペンド状態では、サウス・ブリッジ19、EC25およびフラッシュROM27への電力は維持されている。
図2は、コンピュータ・システム10が実環境で動作するときと仮想環境で動作するときのソフトウエアの構成を説明する図である。図2(A)はコンピュータ・システム10が実環境で動作するときの状態を示しており、ハードウエア105上でゲストOS101が動作し、ゲストOS上ではアプリケーション102が動作する。ゲストOS101はアプリケーションに対してCPU11、HDD25、メイン・メモリ13、およびフラッシュROM27などのコンピュータ・システム10に搭載されているハードウエア105を抽象化する。BIOS103は、ゲストOS101またはアプリケーション102からの指示でハードウエア105に直接アクセスすることができる。
なお、ゲストOSには、実環境で動作するときは「ゲスト」という概念は存在しないが、実環境で動作するときは、仮想環境で動作するときとモジュールの構成には変わりがないので、説明の都合上実環境で動作するときもゲストOS101として表現する。ゲストOS101は、本実施の形態ではWindows(登録商標)とする。図2(B)はコンピュータ・システム10が仮想環境で動作するときの状態を示しており、ハイパーバイザ109がハードウエア105の上に仮想化層として存在し、ゲストOS101、107に対する仮想マシンを提供する。ゲストOS101、107は、ハイパーバイザ109の上でアプリケーションと同じようにそのサービスを受けながら動作する。本実施の形態では、ハイパーバイザ109はオープンソース・ソフトウエアとして提供されているXenを採用し、ゲストOS107としてはLinux(登録商標)を採用しているがこの選定は一例である。ゲストOS107はハイパーバイザ107のDomain0として実行されて、特別な権限が与えられてハードウエア105へのアクセスが許可される。ゲストOS101はハイパーバイザのDomainUとして実行される。
ゲストOS107には、ゲストOS101のウィルスを検査したり、ゲストOS101を修復したりするメインテナンス・システムが組み込まれている。メインテナンス・システムは、ハイパーバイザ109のモジュールの一部として構成することでもよい。本実施の形態では、CPU11の仮想化支援機構を利用して仮想環境を実現しているため、ゲストOS101には修正を加える必要がない。また、ハードウエア105も必要に応じて行う仮想化支援機構の設定変更以外は修正する必要がない。ただし、ハイパーバイザ109およびBIOS103には、図3、図5の手順を実行するための機能を組み込む必要がある。
図3は、コンピュータ・システム10が実環境から仮想環境に移行するときの手順を示すフローチャートである。ブロック301では、コンピュータ・システム10が実環境においてパワー・オン状態で動作し、図2(A)に示す状態でプログラムが実行されている。ブロック303では、コンピュータ・システム10に仮想環境に移行するためのイベントが生成されゲストOS101が受け取る。本実施の形態における仮想環境への移行は、ゲストOS101を検査したりメインテナンスしたりするために一時的に行われる。イベントは、ユーザがキーボード29のキーに割り当てられた特別なキーを操作したことをBIOS103が検知して生成したり、ゲストOS101上で実行されているスケジュール管理用のアプリケーションが定期的に生成したりすることができる。
イベントは、コンピュータ・システム10をサスペンドに移行させることを含む。コンピュータ・システム10では、サスペンドへの移行が通常のサスペンドと、実環境と仮想環境との間の動作モードの遷移を目的とするサスペンドとの2とおりが実行される。ゲストOS101およびBIOS103は、イベントが通常サスペンドを目的とするものか動作環境の遷移を目的とするものかを認識することができるようになっている。ただし、コンピュータ・システム10に通常のサスペンド状態に移行するイベントが発生したときは、常に図3または図5の手順を実行するようにあらかじめBIOS103に設定しておいてもよい。
ブロック305では、ゲストOS101が、ACPIのプラグアンド・プレイの機能を利用して、ゲストOS101に対してメイン・メモリ15に割り当てられていた記憶領域をダイナミックに低減して、その分をハイパーバイザ109とゲストOS107をロードするために割り当てる。図4は、ハイパーバイザ109とDomain0のゲストOS107のモジュールをロードするために、メイン・メモリ15の記録領域を確保する様子を示す図である。この例では、メイン・メモリ15の容量は2GBであり、それに対してCPU11は32ビットでデータ処理をすることができるためプログラムは4GBの論理アドレス空間を利用することができる。図4には、メイン・メモリ15に対応する2GBの物理アドレス空間201と、ハイパーバイザ109とゲストOS107に対応するリニア・アドレス空間203と、ゲストOS101に対応するリニアドレス空間205が示されている。
リニア・アドレス空間205には、ブロック301でゲストOS101が動作している間は、仮想アドレス領域213、215が割り当てられ、物理アドレス空間201の物理アドレス領域209、211がそれらにマッピングされて、ページング機能を利用してゲストOS109が実行されている。ここでゲストOS101は、ハイパーバイザ109とゲストOS107に割り当てるための物理アドレス領域211を低減して、ハイパーバイザ109とゲストOS107に仮想アドレス領域207を割り当て、自らの仮想アドレス領域を213に低減する。そして、ハイパーバイザ109とゲストOS107には、物理アドレス領域211にマッピングされた仮想アドレス領域207を割り当て、ゲストOS213には物理アドレス領域209にマッピングされた仮想アドレス領域213を割り当てることで、ハイパーバイザ109をロードできるようにする。
ブロック307では、BIOS103がEC25のレジスタに、EC25に対してコンピュータ・システム10がサスペンド状態に移行した状態を示す情報が入力されたときに、コンピュータ・システム10をパワー・オン状態に移行させるための瞬時ウェイクアップの設定をする。この設定はRTC(Real Time Clock)を利用して行うようにしてもよい。そして、BIOS103は、EC25への瞬時ウェイクアップの設定が終了するとゲストOS101にその旨を通知する。ただし、本発明における動作環境の移行は、ウェイクアップが瞬時に行われない場合でも行うことができる。
ブロック309では、ゲストOS101は、CPU11や他のデバイスのレジスタに記憶された情報などのブロック301で動作する状態を維持するために必要な情報をすべてメイン・メモリ15に記憶したのちに、サウス・ブリッジ19にコンピュータ・システム10をサスペンド状態に移行させるための電源の処理をさせる。つづいて、コンピュータ・システム10のステート・マシーンは、コンピュータ・システム10の電源状態がサスペンド状態に移行したことをEC25に通知する。コンピュータ・システム10がサスペンド状態に移行すると、CPU11に供給されていた電力が停止してリセットされる。通知を受け取ったEC25は、コンピュータ・システム10をウェイクアップさせてパワー・オン状態への移行を開始させる。なお、この時点でゲストOS101のモジュールは、仮想アドレス領域213にマッピングされた物理アドレス領域209にロードされている。
CPU11は、リセットされてから動作を開始するときには、最初にBIOS103を実行するようにアドレスが指定される。ブロック311では、BIOS103が仮想アドレス領域207にマッピングされたメイン・メモリ15の物理アドレス領域211にHDD25からハイパーバイザ109とゲストOS107のモジュールをロードする。そして、必要に応じてCPU11の仮想化支援機構をイネーブルにしたり、ノース・ブリッジ13に含まれるメモリ・コントローラの設定を変更したりする。ブロック313では、BIOS103のなかのレジュームを行うためのコードが実行されて、SMIの設定および必要なハードウエアの設定が行われる。つづいて、ハイパーバイザ109に制御が移りハイパーバイザ109はレジュームして必要な処理を行う。つづいて、ハイパーバイザ109がゲストOS107の所定のアドレスに制御を移すとゲストOS107がレジュームする。
ブロック315では、ゲストOS107がハイパーバイザ109に制御を移し、ハイパーバイザ109がゲストOS101の復帰アドレスに制御を移すと、ゲストOS101がレジュームしてメイン・メモリ15に記憶されていたレジスタの情報を各レジスタに戻す。その結果、コンピュータ・システム10は、仮想環境が実現された状態でブロック301のシステム状態に復帰する。ブロック315では、コンピュータ・システム10が図2(B)に示した仮想環境で動作し、ゲストOS107に組み込まれたメインテナンス・システムがゲストOS101のウィルスを検査したり、ゲストOS101を修復したりする。
上記の手順では、ブロック305の手順でハイパーバイザ109とゲストOS107をロードするためのメイン・メモリ15の物理アドレス領域211を確保したが、メイン・メモリの物理アドレス領域を確保するには他の方法もある。CPU11は、SMI(System Management Interrupt)入力ピン(SMI#)がアサートされることによって、システム管理用の動作モードであるSMM(System Management Mode)で動作することが可能である。SMMを実現するために、メイン・メモリ15には、コンピュータ・システム10がSMMで動作するときにCPU11が独占的に使用できるSMRAM領域が確保されている。メイン・メモリ15には、本来のSMMの実行に必要なSMRAMの容量に加えて、ハイパーバイザ109とゲストOS107をロードするのに必要な容量がSMRAMとしてあらかじめ確保されている。
そして、コンピュータ・システム10が実環境で動作するときは、SMRAM領域全体がゲストOS101からアクセスできないように、ノース・ブリッジ13に組み込まれたメモリ・コントローラが設定されている。BIOS103は、メモリ・コントローラに対して、SMRAM領域の一部が物理アドレス領域211の分だけゲストOS107がアクセスできるように解放する。この方法は、サスペンド状態からウェイクアップしてBIOS103に制御が移行したときにBIOS103により実行されるようにする。メイン・メモリ15に確保する物理アドレス領域はSMRAM領域ではなく、OS107からのアクセスが可能なメイン・メモリ15の通常の記憶領域の一部に確保しておいてもよい。
図5は、コンピュータ・システム10が仮想環境から実環境に移行するときの手順を示すフローチャートである。ブロック401では、図3に示した手順を経てコンピュータ・システム10が図2(B)に示す仮想環境においてパワー・オン状態で動作している。ブロック303では、コンピュータ・システム10に実環境に移行するためのイベントが生成されゲストOS101がそれを受け取る。ブロック403、405、407は、図3のブロック303、307、309で説明したのと同じ手順で実行される。ただし、サスペンド状態への移行作業は、ゲストOS101だけでなくハイパーバイザ109およびゲストOS107も行う。
ブロック407では、サスペンド状態に移行するために、ゲストOS101がBIOS103に含まれるACPIテーブルを参照して必要な情報を収集する。OS環境での状態遷移が終了したあとに、ゲストOS101はACPIテーブルから得た仮想ハードウエアのI/OアドレスにI/O命令を出して、サスペンド状態への移行作業を行う。同様にゲストOS107も仮想ハードウエアにI/O命令を出してサスペンド状態への移行作業を行う。ハイパーバイザ109は、ゲストOS101とゲストOS107によるサスペンド状態への移行作業が終了したことを確認すると、実際のハードウエア105にI/O命令を出してサスペンド状態に移行する。必要に応じて、サスペンド状態に移行するためにBIOS103がI/O命令をトラップしてサウス・ブリッジ19を設定する。
サスペンド状態に移行したコンピュータ・システム10では、メイン・メモリ15の物理アドレス領域211にハイパーバイザ109およびゲストOS107のモジュールが記憶され、物理アドレス領域209にはゲストOS101のモジュールが記憶されている。ブロック409では、BIOS103がハイパーバイザ109とゲストOS107のモジュールをメイン・メモリ15からアンロードし、さらに、記憶内容をゼロ・クリアして他のプログラムから記憶されていた情報が読み取られないようにする。ブロック411では、ゲストOS101のモジュールがレジュームする。この時点で、ゲストOS101にはまだ、物理アドレス領域209が割り当てられている。
ブロック413では、ゲストOS101が、ハイパーバイザ109とゲストOS107に割り当てられていた物理アドレス領域211を解放して自らの物理アドレス領域として使用するために、リニア・アドレス空間205に仮想アドレス領域215を追加する。したがって、仮想環境から実環境に移行したときに、ゲストOS101は、メイン・メモリ15で使用できるアドレス領域を拡大することができるので、仮想環境の一時的な利用のためにメモリ・リソースが低下することを防ぐことができる。図3の手順でSMRAM領域の一部を物理アドレス領域として使用していた場合は、BIOS103は、そのアドレス領域にOS101やアプリケーションがアクセスできないように、メモリ・コントローラに設定する。
図3、図5の手順では、サスペンド状態への遷移を介在させて実環境と仮想環境の双方向の移行を実現する方法を説明したが、本発明は、ハイバネーション状態を介在させて実現することもできる。通常ハイバネーションからウェイクアップするときは、コンピュータ・システム10に、キーボード29、筐体のスイッチ、またはネットワークからのウェイク・オン・ラン(Wake On LAN)機能などを通じてウェイクアップの信号が供給される。本発明を、ハイバネーションを経由して実現する上では、そのような方法でウェイクアップさせてもよいが、コンピュータ・システム10の中で管理するスケジュール管理機構がイベントを生成して動作環境の移行を強制的に行わせるようにしてもよい。
また、図3、図5の手順では、ブロック309、407で、サスペンド状態に移行したことに応答してウェイクアップが開始するようになっているが、本発明は、サスペンド状態に移行してからキーボードからの信号入力、ウェイク・オン・ランまたはスケジュール管理機構のイベントに基づいてウェイクアップさせるようにしてもよい。さらに双方向への動作環境の移行を、サスペンド状態の介在とハイバネーション状態の介在のいずれも採用して行うようにしてもよい。サスペンド状態を経由する場合でもハイバネーション状態を経由する場合でも、本発明では、実環境と仮想環境の間での移行を移行前のシステムの状態を保持しながら行うことにより移行先では移行前のシステム状態に復帰することができる。
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
201…物理アドレス空間
203、205…リニア・アドレス空間
207、213、215…仮想アドレス領域
209、211…物理アドレス領域

Claims (10)

  1. 実環境と仮想環境で動作することが可能なコンピュータ・システムに、
    前記実環境でオペレーティング・システムを実行するステップと、
    前記コンピュータ・システムをパワー・オン状態からシステム状態の保持が可能な節電状態へ移行した後に該節電状態から該パワー・オン状態への復帰を開始するステップと、
    前記コンピュータ・システムが前記節電状態から前記パワー・オン状態に復帰するまでの間に前記仮想化プログラムをメイン・メモリに確保された所定の領域にロードするステップと、
    前記仮想化プログラムを実行するステップと、
    前記オペレーティング・システムをレジュームして前記仮想環境に移行するステップと
    を有する処理を実行させるコンピュータ・プログラム。
  2. 前記処理が、
    前記仮想環境で動作する前記コンピュータ・システムを前記パワー・オン状態からシステム状態の保持が可能な節電状態へ移行した後に該節電状態から前記パワー・オン状態への復帰を開始するステップと、
    前記コンピュータ・システムが前記節電状態から前記パワー・オン状態に復帰するまでの間に前記仮想化プログラムを前記所定の領域からアンロードするステップと、
    前記オペレーティング・システムをレジュームして前記実環境に移行するステップと
    を有する請求項1に記載のコンピュータ・プログラム。
  3. 前記処理が
    前記実環境で動作した後に、前記オペレーティング・システムは前記仮想化プログラムがアンロードされた前記所定の領域を前記オペレーティング・システムに解放するステップを有する請求項2に記載のコンピュータ・プログラム。
  4. 前記処理が、
    前記オペレーティング・システムが実環境で動作している間に、前記オペレーティング・システムが使用していた前記メイン・メモリの領域の一部を前記所定の領域として確保するステップを有する請求項1から請求項3のいずれかに記載のコンピュータ・プログラム。
  5. 前記処理が、
    前記オペレーティング・システムが実環境で動作している間に、SMRAM領域の一部を前記所定の領域として提供するステップを有する請求項1から請求項3のいずれかに記載のコンピュータ・プログラム。
  6. 前記節電状態がサスペンド状態であり、前記復帰を開始するステップが前記サスペンド状態に移行したことに応答して前記パワー・オン状態に移行するステップを含む請求項1から請求項5のいずれかに記載のコンピュータ・プログラム。
  7. 前記節電状態が、ハイバネーション状態である請求項1から請求項5のいずれかに記載のコンピュータ・プログラム。
  8. 前記ロードするステップがBIOSにより実行される請求項1から請求項7のいずれかに記載のコンピュータ・プログラム。
  9. 前記処理が、
    前記仮想環境において、前記オペレーティング・システムのウィルスを検査するステップを有する請求項1から請求項8のいずれかに記載のコンピュータ・プログラム。
  10. 請求項1から請求項9のいずれかに記載のコンピュータ・プログラムを搭載するコンピュータ・システム。
JP2009153057A 2009-06-27 2009-06-27 実環境と仮想環境を遷移させるコンピュータ・プログラム Active JP5085611B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009153057A JP5085611B2 (ja) 2009-06-27 2009-06-27 実環境と仮想環境を遷移させるコンピュータ・プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009153057A JP5085611B2 (ja) 2009-06-27 2009-06-27 実環境と仮想環境を遷移させるコンピュータ・プログラム

Publications (2)

Publication Number Publication Date
JP2011008646A true JP2011008646A (ja) 2011-01-13
JP5085611B2 JP5085611B2 (ja) 2012-11-28

Family

ID=43565195

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009153057A Active JP5085611B2 (ja) 2009-06-27 2009-06-27 実環境と仮想環境を遷移させるコンピュータ・プログラム

Country Status (1)

Country Link
JP (1) JP5085611B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013205946A (ja) * 2012-03-27 2013-10-07 Fujitsu Ltd 移動制御プログラム、移動制御方法および制御装置
JP2014215621A (ja) * 2013-04-22 2014-11-17 レノボ・シンガポール・プライベート・リミテッド オペレーティング・システムの管理方法、コンピュータ・プログラムおよびコンピュータ
JP2017054243A (ja) * 2015-09-08 2017-03-16 株式会社東芝 ドライバ装置、情報処理システム、プログラムおよび方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002366375A (ja) * 2001-06-05 2002-12-20 Hitachi Ltd コンピュータ装置および診断方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002366375A (ja) * 2001-06-05 2002-12-20 Hitachi Ltd コンピュータ装置および診断方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013205946A (ja) * 2012-03-27 2013-10-07 Fujitsu Ltd 移動制御プログラム、移動制御方法および制御装置
JP2014215621A (ja) * 2013-04-22 2014-11-17 レノボ・シンガポール・プライベート・リミテッド オペレーティング・システムの管理方法、コンピュータ・プログラムおよびコンピュータ
US9753739B2 (en) 2013-04-22 2017-09-05 Lenovo (Singapore) Pte. Ltd. Operating system management of second operating system
JP2017054243A (ja) * 2015-09-08 2017-03-16 株式会社東芝 ドライバ装置、情報処理システム、プログラムおよび方法

Also Published As

Publication number Publication date
JP5085611B2 (ja) 2012-11-28

Similar Documents

Publication Publication Date Title
JP6530774B2 (ja) ハードウェア障害回復システム
TWI494850B (zh) 通透地提供給作業系統之非對稱多核心處理器系統
KR101019937B1 (ko) 보안 운영 시스템 스위칭
US8423811B2 (en) Transparently increasing power savings in a power management environment
TWI656479B (zh) 在多核心處理器中的非對稱核心之間遷移執行緒
US8909946B2 (en) Efficient power management of a system with virtual machines
US8752060B2 (en) Multi-CPU domain mobile electronic device and operation method thereof
US20060085794A1 (en) Information processing system, information processing method, and program
Sun et al. SecureSwitch: BIOS-Assisted Isolation and Switch between Trusted and Untrusted Commodity OSes.
US20120226925A1 (en) Method for switching operating system and electronic apparatus using the same
JP2004326749A (ja) マルチスレッド・プロセッサを単一スレッド・モード及び同時マルチスレッド・モードの間で動的に切り替える装置及び方法
JP5756144B2 (ja) オペレーティング・システムの管理方法、コンピュータ・プログラムおよびコンピュータ
KR101646425B1 (ko) 동작 콘텍스트들 사이의 스위칭
KR102026217B1 (ko) 운영 체제들 간에 스위칭하기 위한 기법들
US20190004818A1 (en) Method of UEFI Shell for Supporting Power Saving Mode and Computer System thereof
EP2972826B1 (en) Multi-core binary translation task processing
JP5085611B2 (ja) 実環境と仮想環境を遷移させるコンピュータ・プログラム
EP2818974A1 (en) Protected power management mode in a processor
JP6458650B2 (ja) 情報処理システム、情報処理プログラムおよび情報処理装置
US9910677B2 (en) Operating environment switching between a primary and a secondary operating system
Sun et al. Supporting Multiple OSes with OS Switching.
US20180341482A1 (en) Method and arrangement for utilization of a processing arrangement
US10121001B1 (en) System and method for monolithic scheduling in a portable computing device using a hypervisor
Wright et al. Vision: The case for context-aware selective resume
WO2023010265A1 (en) Firmware update technologies

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110225

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120904

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120905

R150 Certificate of patent or registration of utility model

Ref document number: 5085611

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150914

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250