JP4678396B2 - 仮想マシンモニタをモニタするコンピュータとその方法、および仮想マシンモニタモニタプログラム - Google Patents

仮想マシンモニタをモニタするコンピュータとその方法、および仮想マシンモニタモニタプログラム Download PDF

Info

Publication number
JP4678396B2
JP4678396B2 JP2007247801A JP2007247801A JP4678396B2 JP 4678396 B2 JP4678396 B2 JP 4678396B2 JP 2007247801 A JP2007247801 A JP 2007247801A JP 2007247801 A JP2007247801 A JP 2007247801A JP 4678396 B2 JP4678396 B2 JP 4678396B2
Authority
JP
Japan
Prior art keywords
virtual machine
exception
guest
machine monitor
monitor
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.)
Expired - Fee Related
Application number
JP2007247801A
Other languages
English (en)
Other versions
JP2009080563A (ja
Inventor
忍 後藤
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2007247801A priority Critical patent/JP4678396B2/ja
Priority to US12/234,356 priority patent/US20090083736A1/en
Publication of JP2009080563A publication Critical patent/JP2009080563A/ja
Application granted granted Critical
Publication of JP4678396B2 publication Critical patent/JP4678396B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、コンピュータの仮想化に関し、特に仮想マシンモニタをさらに仮想化する技術に関する。
コンピュータの仮想化技術は、コンピュータのOS(オペレーティング・システム)上に仮想的なコンピュータ(仮想マシン、Virtual Machine)をソフトウェア的に構築する技術である。従来の仮想化技術では、コンピュータのOS(ホストOS)の上に仮想マシンモニタ(VMM、Virtual Machine Monitor)と呼ばれるソフトウェアを動作させることによって仮想マシンを構成して、構築された仮想マシンにゲストOSとアプリケーションソフトをインストールして動作させている。ただし、この方法だと、ホストOSおよびCPUなどのハードウェアに多大な負担がかかる。
そこで、最近では、仮想マシンモニタが担っていた処理の一部をCPUおよびその周辺のハードウェアが担うことにより、より効率的にコンピュータの仮想化を実現可能になっている。このような技術を仮想化支援機能という。具体的には、米国インテル・コーポレーションの「Intel Virtualization Technology(Intel VT)」、米国Advanced Micro Devices(AMD)社の「AMD Virtualization(AMD-V)」などのような技術がある。仮想化支援機能を有するCPUで、ホストOSではなく仮想マシンモニタが直接動作し、仮想マシンの管理や、ハードウェアリソースへの調停などを行う。このような仮想マシンモニタは、ハイパーバイザ(Hypervisor)とも呼ばれる。
仮想化支援機能を有するCPUは、仮想マシンモニタによる仮想化処理を支援する目的で、次に示す機能を持つ。CPUは、ゲストOSが動作するためのゲストモードと、仮想マシンモニタが動作するためのホストモードという、2段階の仮想化特権モード(仮想化専用の特権動作モード)を持つ。またCPUは、ゲストOSが実行しうる全命令のうち、仮想化が必要な命令(センシティブ命令)の実行条件を定義する。
一方でCPUは、仮想マシンモニタの仮想化処理を支援するための拡張命令を定義する。拡張命令は仮想マシンモニタ専用の命令であり、ゲストOSが実行することはない。ゲストモードにおいてセンシティブ命令または拡張命令が実行された場合、CPUは例外処理を起こしてホストモードに遷移する。
またCPUは、仮想化特権モードごとに実行状態を保持するための領域を主記憶装置(RAM)上にもつ。CPUは、これらの主記憶上の領域をもちいて、仮想化特権モード遷移(ゲストモードとホストモードの相互間での遷移)時の実行状態の退避および復帰を行うことができる。これによって、たとえば、ゲストモードで処理していた内容を、CPUがホストモードに移行して再びゲストモードに復帰しても失わないで継続することができる。
仮想化支援の技術として、たとえば以下のような技術が開示されている。特許文献1には、複数の仮想マシンモニタのうちのいずれが特権イベントを処理すべきかを判断して該仮想マシンモニタに制御を移行する仮想マシンシステムが開示されている。特許文献2にはホストとゲストがそれぞれの特権レジスタセットを持つ仮想マシンシステムが開示されている。特許文献3にはゲストOSが特権命令を実行した場合に例外処理プロセッサを起動する仮想マシンシステムが開示されている。
特表2007−505402号公報 特開2005−56017号公報 特開平02−187831号公報
仮想マシンモニタをさらに仮想化する用途が、現在考えられている。たとえば、仮想マシンモニタの開発テスト環境、仮想マシンにRAS機能やセキュリティ機能といった付加価値機能を持たせること、異なる種類の複数の仮想マシンモニタを単一のマシン上で同時に稼動するなどの用途である。
しかし、前述のようにCPUは、ゲストモードとホストモードという、2段階の仮想化特権モードしか持たないので、仮想マシンモニタをさらに仮想化する用途には対応していない。単純にソフトウェアによって仮想マシンモニタをさらに仮想化するとしても、CPUの仮想化支援機能を利用しないソフトウェアのみの仮想化技術と同様に、仮想マシンモニタおよびハードウェアに多大な負担がかかるという問題が発生する。
特許文献1の技術では仮想マシンモニタをさらに仮想化しているが、この処理にはたとえばCPUに3段階以上の仮想化特権モードを持たせるなどのような、特殊なハードウェアおよび特殊な仮想マシンモニタが必要である。これに特許文献2〜3の技術を組み合わせても、仮想マシンモニタをさらに仮想化するには特殊なハードウェアなどが必要であるという点には変わりはない。
本発明の目的は、特殊なゲストOSや仮想マシンモニタを必要とせず、2段階の仮想化特権モードしか持たないCPUにおいて仮想マシンモニタをさらに仮想化する仮想マシンモニタモニタ、仮想マシンモニタのモニタ方法、および仮想マシンモニタモニタプログラムを提供することにある。
上記目的を達成するため、本発明に係る仮想マシンモニタをモニタするコンピュータは、ゲストモードおよびホストモードのうちいずれか一方の動作モードで動作するCPUと、ホストモードにおける動作状態、およびゲストモードにおける第1および第2の動作状態を保存するメモリと、ゲストモードにおける第1の動作状態において前記CPU上で動作するゲストOSと、ゲストモードにおける第2の動作状態において前記CPU上で動作する仮想マシンモニタと、ホストモードにおいて前記CPU上で動作する仮想マシンモニタモニタとを有し、CPU上で、仮想マシンモニタモニタが、ゲストモードにおける第1の動作状態で例外が発生した場合にこの例外を捕捉し、第1の動作状態をメモリに待避させてその後に第2の動作状態をメモリから復元し、捕捉された例外を仮想マシンモニタにインジェクト(注入)して仮想マシンモニタに例外に対応する処理を行わせると共に、仮想マシンモニタモニタが、仮想マシンモニタにおいて発生した例外を捕捉してこの例外がゲストモードにおける動作状態を第1の動作状態に戻す命令に基づいて発生した例外であるか否かを判断し、第1の動作状態に戻す命令であればゲストモードにおける動作状態を第1の動作状態に戻し、第1の動作状態に戻す命令でなければ例外を捕捉して処理することを特徴とする。
上記目的を達成するため、本発明に係る仮想マシンモニタをモニタする方法は、ゲストモードおよびホストモードのうちいずれか一方の動作モードで動作するCPUと、ゲストモードおよびホストモードにおける動作状態を記憶する領域を有するメモリと、ゲストOSと、仮想マシンモニタと、仮想マシンモニタモニタとを有するコンピュータにおいて仮想マシンモニタをモニタする方法であって、メモリにゲストモードにおける第1および第2の動作状態を保存する領域を確保するメモリ領域確保工程と、ゲストモードにおける第1の動作状態においてゲストOSを動作させるゲストOS動作工程と、ホストモードにおいて仮想マシンモニタモニタを動作させるホストOS動作工程と、ゲストモードにおける第1の動作状態で例外が発生した場合、ホストモードにおいて仮想マシンモニタモニタが例外を捕捉する第1の例外捕捉工程と、第1の例外捕捉工程に反応して、仮想マシンモニタモニタがゲストモードにおいて動作していた第1の動作状態をメモリに待避させてその後に第2の動作状態をメモリから復元し、ゲストモードにおける第2の動作状態において仮想マシンモニタを動作させる第1の動作状態切り替え工程と、仮想マシンモニタモニタが仮想マシンモニタに対して捕捉された例外をインジェクト(注入)するインジェクト工程と、仮想マシンモニタにおいて発生した例外を捕捉する第2の例外捕捉工程と、第2の例外捕捉工程において捕捉した例外がゲストモードにおける動作状態を第1の動作状態に戻す命令に基づいて発生した例外であるか否かを判断する判断工程と、判断工程において第1の動作状態に戻す命令であると判断されたら、ゲストモードにおける動作状態を第1の動作状態に戻す第2の動作状態切り替え工程と、判断工程において第1の動作状態に戻す命令でないと判断されたら、例外を捕捉して処理する例外処理工程とを有し、これらの各工程をCPU上で実現するようにしたことを特徴とする。
上記目的を達成するため、本発明に係る仮想マシンモニタモニタプログラムは、ゲストモードおよびホストモードのうちいずれか一方の動作モードで動作するCPUと、ゲストモードおよびホストモードにおける動作状態を記憶する領域を有するメモリと、ゲストOSと、仮想マシンモニタと、仮想マシンモニタモニタとを有するコンピュータに、メモリにゲストモードにおける第1および第2の動作状態を保存する領域を確保するメモリ領域確保処理と、ゲストモードにおける第1の動作状態においてゲストOSを動作させるゲストOS動作処理と、ホストモードにおいて仮想マシンモニタモニタを動作させるホストOS動作処理と、ゲストモードにおける第1の動作状態で例外が発生した場合、ホストモードにおいて仮想マシンモニタモニタが例外を捕捉する第1の例外捕捉処理と、第1の例外捕捉工程に反応して、仮想マシンモニタモニタがゲストモードにおいて動作していた第1の動作状態をメモリに待避させてその後に第2の動作状態をメモリから復元し、ゲストモードにおける第2の動作状態において仮想マシンモニタを動作させる第1の動作状態切り替え処理と、前記仮想マシンモニタモニタが前記仮想マシンモニタに対して前記捕捉された例外をインジェクト(注入)するインジェクト処理と、CPUが仮想マシンモニタにおいて発生した例外を捕捉する第2の例外捕捉処理と、第2の例外捕捉処理において捕捉した例外がゲストモードにおける動作状態を第1の動作状態に戻す命令に基づいて発生した例外であるか否かを判断する判断処理と、判断処理において第1の動作状態に戻す命令であると判断されたら、ゲストモードにおける動作状態を第1の動作状態に戻す第2の動作状態切り替え処理と、判断処理において第1の動作状態に戻す命令でないと判断されたら、例外を捕捉して処理する例外処理とを実行させることを特徴とする。
本発明は、上記したようにゲストモードで動作するゲストOSにおいて例外が発生した場合、仮想マシンモニタモニタが該例外を捕捉し、ゲストモードの動作をメモリに待避させて仮想マシンモニタをメモリから復元してから該仮想マシンモニタに捕捉した例外をインジェクトするように構成したので、仮想マシンモニタがゲストOSで発生した例外に対応する処理を問題なく行うことができる。これによって、特殊なゲストOSや仮想マシンモニタを必要とせず、2段階の仮想化特権モードしか持たないCPUにおいて仮想マシンモニタをさらに仮想化する、従来にない優れた仮想マシンモニタモニタ、仮想マシンモニタのモニタ方法、および仮想マシンモニタモニタプログラムを提供することができる。
[第1の実施の形態]
図1は、本発明の第1の実施の形態に係るコンピュータ10内部の構成を示すブロック図である。CPU11は、コンピュータ10の中枢機能を担う演算処理装置で、OS、BIOS、アプリケーションプログラムなどを実行する。CPU11は、仮想化支援機能に対応しており、ゲストモードとホストモードという2通りの動作モード(仮想化特権モード)を持つ(詳細は後述する)。CPU11は、外部バスを介してチップセットに接続され、そこから各デバイスに接続されて信号の送受を行っている。チップセットは、CPUブリッジ13(ノースブリッジ)およびI/Oブリッジ19(サウスブリッジ)とからなる。
CPUブリッジ13は、メインメモリ15へのアクセス動作を制御するためのメモリ・コントローラ機能や、バス間のデータ転送速度の差を吸収するためのデータ・バッファ機能などを含む。メインメモリ15はCPUブリッジ13に接続され、CPU11が実行するプログラムの読み込み領域、処理データを書き込む作業領域として利用される書き込み可能メモリである。ビデオカード17はCPUブリッジ13に接続され、CPU11からの描画命令を受けて描画すべきイメージを生成してディスプレイ(図示せず)に表示させる。
I/Oブリッジ19は、IDE(Integrated Device Electronics)インタフェース、USBインタフェース、PCIバス、LPCバスなどを備え、各種周辺機器(図示せず)と接続可能である。IDEインタフェースには、HDD(ハードディスクドライブ)21が接続される。HDD21には、後述する各ソフトウェアがインストールされており、これらのソフトウェアが読み出されてCPU11で実行される。
ちなみに、図1は本実施の形態を説明するために、主要なハードウェアの構成および接続関係を簡素化して記載したに過ぎないものである。コンピュータ10を構成するためには、これら以外にも多くのデバイスが使われるが、それらは当業者には周知であるので詳しく言及しない。また、図1で記載した複数のブロックを1個の集積回路としたり、逆に1個のブロックを複数の集積回路に分割して構成したりすることも、当業者が任意に選択することができる範囲においては本発明の範囲に含まれる。
図2は、図1に開示したメインメモリ15内部に確保される記憶領域について示すブロック図である。メインメモリ15には、仮想化支援機能制御領域23と、ゲスト状態退避領域25といった領域が確保されている。
仮想化支援機能制御領域23は、CPU11がゲストモードとホストモードとの間を遷移する際のふるまいを制御するために、あらかじめメインメモリ15に確保された領域である。仮想化支援機能制御領域23は、ゲストモード状態23aと、ホストモード状態23bとからなる。ゲストモード状態23aは、CPU11がゲストモードである際の実行状態である。ホストモード状態23bは、CPU11がホストモードである際の実行状態である。
CPU11がゲストモードからホストモードに遷移すると、ゲストモード状態23aの実行状態はそのままで保持され、ホストモード状態23bの実行状態がCPU11に操作される。CPU11がホストモードからゲストモードに遷移すると、実行状態はそのままで保持され、ゲストモード状態23aの実行状態がCPU11に操作される。CPU11の仮想化特権モード遷移に伴う処理は、CPU11がハードウェア的に実行することができる。
ゲスト状態退避領域25は、複数のゲストモード状態23aを書き換える際に、以前の内容を退避するため、ホストモードで動作するソフトウェア(後述の仮想マシンモニタモニタ100)がメインメモリ15に確保した領域である。ゲスト状態退避領域25を有することにより、CPU11はゲストモードにおいて複数の動作状態を保存し、切り替えて実行することができる。なお、CPU11はゲストモードにおいて複数の動作状態を同時に実行することはできない。ゲスト状態退避領域25において、動作状態の退避および復元の処理は、ホストモードで動作するソフトウェアによって実行することができる。
図3は、図1に開示したコンピュータ10で実行されるソフトウェアの構成を示す概念図である。本実施の形態においては、図1〜2で述べたハードウェアにおいて、CPU11はホストモードで仮想マシンモニタモニタ100を実行し、ゲストモードで仮想マシンモニタ110およびゲストOS120のうちいずれか一方を実行する。
メインメモリ15のホストモード状態23bには、常に仮想マシンモニタモニタ100の動作状態が保持される。ゲストモード状態23aには、状況に応じて仮想マシンモニタ110およびゲストOS120のうちの一方の動作状態が保持される。ゲスト状態退避領域25には、ゲストOS120の動作状態を保持するゲストOS状態25aと、仮想マシンモニタ110の動作状態を保持する仮想マシンモニタ状態25bとからなる。そして仮想マシンモニタモニタ100は、ゲストモード状態23aにおける仮想マシンモニタ110とゲストOS120との間の動作の切り替えを制御する。
ゲストモードで仮想マシンモニタ110が動作している状態からCPU11をホストモードに移行し、ゲストモード状態23a上の仮想マシンモニタ110の動作状態を仮想マシンモニタ状態25bに待避し、ゲストOS状態25aに待避されていたゲストOS120の動作状態をゲストモード状態23aに復元してからCPU11をゲストモードに移行ことにより、コンピュータ10はゲストモードでゲストOS120が動作している状態に遷移することができる。またコンピュータ10は、この逆の動作によって、ゲストOS120が動作している状態から仮想マシンモニタ110が動作している状態に遷移することもできる。
以上の構成によって、ゲストOS120の動作を仮想マシンモニタ110が制御している状態を、さらに仮想マシンモニタモニタ100によって仮想化するという動作を実現する。ゲストOS120および仮想マシンモニタ110は、いずれも既存のものであり、本実施の形態のために改変が必要となる部分は特にない。仮想マシンモニタ110は、本来はホストモードのCPUで動作することを前提としたものであるが、本実施の形態においてはゲストモードで動作する。
仮想マシンモニタ110は、ゲストOS120でセンシティブ命令が実行されたことにより発生する例外を捕捉して必要な仮想化処理を行うプログラムコードである、仮想センシティブ命令例外ハンドラ111を有する。仮想マシンモニタ110がホストモードで動作していれば、仮想センシティブ命令例外ハンドラ111は容易にゲストOS120で発生した例外を捕捉することができる。しかしながら、本実施の形態においては仮想マシンモニタ110はゲストモードで動作し、しかもゲストOS120と同時に動作することは不可能である。
そのため、常にホストモードで動作している仮想マシンモニタモニタ100は、ゲストOS120でセンシティブ命令が実行されて例外が発生すると、この例外を捕捉し、ゲストモードの動作状態をゲストOS120から仮想マシンモニタ110に切り替え、捕捉された例外を仮想マシンモニタ110にインジェクト(注入)する処理を行う。これによって、仮想センシティブ命令例外ハンドラ111が、ゲストOS120で発生した例外を捕捉することができるようになる。
仮想マシンモニタモニタ100は、擬似ホストモード開始部101と、実センシティブ命令例外ハンドラ102と、拡張命令例外ハンドラ103と、擬似ホストモード終了部104と、仮想化支援機能制御部105と、ゲスト状態待避制御部106とを有する。
擬似ホストモード開始部101は、ゲストOS120におけるセンシティブ命令の実行により例外が発生した際に、必要な前処理を実施し、続いて仮想マシンモニタ110に仮想的な例外をインジェクトするプログラムコードである。なお、ゲストモードで仮想マシンモニタ110が動作している状態は、疑似ホストモードとも呼ばれる。
実センシティブ命令例外ハンドラ102は、仮想マシンモニタ110におけるセンシティブ命令の実行により発生する例外を補足し、必要な仮想化処理をおこなうプログラムコードである。このプログラムコードの実際の処理内容は、仮想センシティブ命令例外ハンドラ111と同等である。ただし、ゲストOS120で実行されたセンシティブ命令は疑似ホストモードで処理されるので仮想センシティブ命令というのに対して、仮想マシンモニタ110で実行されたセンシティブ命令は実際のホストモードで処理されるので実センシティブ命令という。
拡張命令例外ハンドラ103は、仮想マシンモニタ110における拡張命令の実行により発生する例外を補足し、必要な仮想化処理をおこなうプログラムコードである。擬似ホストモード終了部104は、仮想センシティブ命令例外ハンドラ111においてゲストOS復帰の拡張命令が実行された際に、必要な後処理を実施し、続いて実際にゲストOS120に制御を戻すプログラムコードである。
仮想化支援機能制御部105は、CPU11のゲストモードとホストモードとの間の遷移と、それに伴う動作状態の退避および復元の処理を制御する。ゲスト状態待避制御部106は、ゲストモードにおける複数の動作状態、ここではゲストOS状態25aと仮想マシンモニタ状態25bとの間の動作状態の退避および復元の処理を制御する。
図4および図5は、図3で示したゲストOS120におけるセンシティブ命令の実行により例外が発生した際に、仮想マシンモニタモニタ100および仮想マシンモニタ110で実行される処理を示すフローチャートである。図6は、図4で示した処理の間における、動作状態の遷移を示す概念図である。図4の処理が開始される時点では、図6の(a)に示すように、CPU11はゲストモードで、ゲストOS120を実行している状態である。
ゲストOS120が起動すると(S201)、CPU11がゲストOS120からの例外発生を待つ状態となる(S202)。ゲストOS120からの例外150が発生すると、CPU11が自らをホストモードに切り替え、仮想マシンモニタモニタ100を実行している状態にする(S203)。続いて擬似ホストモード開始部101が発生した例外を捕捉し(S204)、ゲスト状態待避制御部106を制御して、ゲストOS120の動作状態をゲストOS状態25aに待避させ(S205)、仮想マシンモニタ状態25bから仮想マシンモニタ110の動作状態を復元する(S206)。
続いて擬似ホストモード開始部101は、復元された仮想マシンモニタ110に対して、S205で捕捉した例外をインジェクトする処理を行い(S207)、続いて仮想化支援機能制御部105がCPU11をゲストモードに復帰させる(S208)。
この時点ではCPU11はゲストモードで、仮想マシンモニタ110を実行している状態である。ここで、S205で捕捉した例外をインジェクトされた仮想マシンモニタ110では、仮想センシティブ命令例外ハンドラ111が動作する(S209)。これにより、図6の(b)に示すように、仮想マシンモニタ110はあたかもゲストOS120から直接センシティブ命令の例外を受け取ったかのように振舞い、これに対応する処理を行うことができる。
ここで、仮想マシンモニタ110がセンシティブ命令もしくは拡張命令を実行して例外が発生した場合(S210)、センシティブ命令による例外であれば、CPU11は自らをホストモードに切り替え(S211)、実センシティブ命令例外ハンドラ102が必要な例外処理を行った後(S212)、再び仮想化支援機能制御部105がCPU11をゲストモードに復帰させる(S213)。
拡張命令による例外であれば、CPU11は自らをホストモードに切り替え(S214)、そして拡張命令例外ハンドラ103が、例外の原因となった拡張命令がゲストOS復帰のための拡張命令であるか否かを判断する(S215)。ゲストOS復帰の拡張命令でなければ、拡張命令例外ハンドラ103が必要な例外処理を行った後(S216)、再び仮想化支援機能制御部105がCPU11をゲストモードに復帰させる(S217)。
ゲストOS復帰の拡張命令であれば、擬似ホストモード終了部104が、ゲスト状態待避制御部106を制御して、仮想マシンモニタ110の動作状態を仮想マシンモニタ状態25bに待避させ(S218)、ゲストOS状態25aからゲストOS120の動作状態を復元する(S219)。その後で仮想化支援機能制御部105がCPU11をゲストモードに復帰させ(S220)、図4のS202の状態に戻る。これによって、図6の(c)に示すように、CPU11がゲストモードで、ゲストOS120を実行している状態に戻る。
以上の動作により、ゲストOS120において発生した例外を、仮想マシンモニタ110が捕捉して処理し、再びゲストOS120に戻る一連の動作を、仮想マシンモニタ110をさらに仮想マシンモニタモニタ100によって仮想化した環境において問題なく実現できる。その際、仮想マシンモニタ110およびゲストOS120は、そのような環境に応じた特別な動作を含まないので、従来のものをそのまま使用できる。また、従来の2段階の仮想化特権モードしか持たない仮想化支援機能で、3段階の仮想化特権モードを有する特殊なハードウェアと同等の動作を擬似的に実現しているので、ハードウェアも従来のものをそのまま使用できる。
[第2の実施の形態]
図7は、本発明の第2の実施の形態に係るソフトウェアの構成を示す概念図である。本発明の第2の実施の形態に係るハードウェアは、複数のCPU311a〜cと、各々のCPUに対応する仮想化支援機能制御領域323a〜cおよびゲスト状態退避領域325a〜cとを有する。その点を除いては、本実施の形態のハードウェアは図1〜2で説明した本発明の第1の実施の形態のものと同一であるので、詳細な説明は省略する。
仮想マシンモニタモニタ400は、これらのCPU311a〜c、仮想化支援機能制御領域323a〜cおよびゲスト状態退避領域325a〜cのすべての管理を受け持つが、その上で複数の仮想マシンモニタ410a〜bおよび複数のゲストOS420a〜bをCPU311a〜cの境界で分割して、同時に稼働させる。仮想マシンモニタ410aおよびゲストOS420aは、2つのCPU311a〜bによって動作する。仮想マシンモニタ410bおよびゲストOS420bは、1つのCPU311cによって動作する。
仮想マシンモニタモニタ400、仮想マシンモニタ410a〜b、およびゲストOS420a〜bの内部構成は、本発明の第1の実施の形態に係る仮想マシンモニタモニタ100、仮想マシンモニタ110、およびゲストOS120とそれぞれほぼ同一であるので、以下の説明では相違点のみを説明し、それ以外についての詳細な説明は省略する。
仮想マシンモニタモニタ400がゲストOS420a〜bのいずれかがセンシティブ命令を実行することによって発生した例外を捕捉したら、その例外がいずれのCPU311a〜cで発生したものであるかを検出し、それに該当するCPUに対応する仮想化支援機能制御領域およびゲスト状態退避領域を選択して、本発明の第1の実施の形態と同一の処理を行う。
図7の例でいうなら、ゲストOS420aがCPU311aに対してセンシティブ命令を実行したら、仮想マシンモニタモニタ400はCPU311aに対応する仮想化支援機能制御領域323aおよびゲスト状態退避領域325aを利用して、仮想マシンモニタ410aの動作状態を復元して、ゲストOS420aで発生した例外をインジェクトする。
ゲストOS420aがCPU311bに対してセンシティブ命令を実行したら、仮想マシンモニタモニタ400はCPU311bに対応する仮想化支援機能制御領域323bおよびゲスト状態退避領域325bを利用して、仮想マシンモニタ410aの動作状態を復元して、ゲストOS420aで発生した例外をインジェクトする。
ゲストOS420bがCPU311cに対してセンシティブ命令を実行したら、仮想マシンモニタモニタ400はCPU311cに対応する仮想化支援機能制御領域323cおよびゲスト状態退避領域325cを利用して、仮想マシンモニタ410bの動作状態を復元して、ゲストOS420bで発生した例外をインジェクトする。
以上で示した本発明の第2の実施の形態のように、仮想マシンが構築される環境として想定されることが多い、複数のCPUを有するマルチプロセッサ環境に対しても、本発明は容易に拡張して適用することができる。
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることは言うまでもないことである。
コンピュータを仮想化させて動作させる環境において利用できる。
本発明の第1の実施の形態に係るコンピュータ10内部の構成を示すブロック図である。 図1に開示したメインメモリ内部に確保される記憶領域について示すブロック図である。 図1に開示したコンピュータで実行されるソフトウェアの構成を示す概念図である。 図3で示したゲストOSにおけるセンシティブ命令の実行により例外が発生した際に、仮想マシンモニタモニタおよび仮想マシンモニタで実行される処理を示すフローチャートである。 図4の続きである。 図4〜5で示した処理の間における、動作状態の遷移を示す概念図である。 本発明の第2の実施の形態に係るソフトウェアの構成を示す概念図である。
符号の説明
10 コンピュータ
11、311a、311b、311c CPU
15 メインメモリ
23、323a、323b、323c 仮想化支援機能制御領域
23a ゲストモード状態
23b ホストモード状態
25、325a、325b、325c ゲスト状態退避領域
25a ゲストOS状態
25b 仮想マシンモニタ状態
100、400 仮想マシンモニタモニタ
101 擬似ホストモード開始部
102 実センシティブ命令例外ハンドラ
103 拡張命令例外ハンドラ
104 擬似ホストモード終了部
105 仮想化支援機能制御部
106 ゲスト状態待避制御部
110、410a、410b 仮想マシンモニタ
111 仮想センシティブ命令例外ハンドラ
120、420a、420b ゲストOS

Claims (6)

  1. ゲストモードおよびホストモードのうちいずれか一方の動作モードで動作するCPUと、
    前記ホストモードにおける動作状態、および前記ゲストモードにおける第1および第2の動作状態を保存するメモリと、
    前記ゲストモードにおける第1の動作状態において前記CPU上で動作するゲストOSと、
    前記ゲストモードにおける第2の動作状態において前記CPU上で動作する仮想マシンモニタと、
    前記ホストモードにおいて前記CPU上で動作する仮想マシンモニタモニタとを有し、
    前記CPU上で、前記仮想マシンモニタモニタが、前記ゲストモードにおける第1の動作状態で例外が発生した場合にこの例外を捕捉し、前記第1の動作状態を前記メモリに待避させてその後に前記第2の動作状態を前記メモリから復元し、前記捕捉された例外を前記仮想マシンモニタにインジェクト(注入)して前記仮想マシンモニタに前記例外に対応する処理を行わせると共に、
    前記仮想マシンモニタモニタが、前記仮想マシンモニタにおいて発生した例外を捕捉してこの例外が前記ゲストモードにおける動作状態を前記第1の動作状態に戻す命令に基づいて発生した例外であるか否かを判断し、前記第1の動作状態に戻す命令であれば前記ゲストモードにおける動作状態を前記第1の動作状態に戻し、前記第1の動作状態に戻す命令でなければ前記例外を捕捉して処理することを特徴とする、仮想マシンモニタをモニタするコンピュータ。
  2. 前記CPUが複数個存在し、
    前記メモリが、前記ホストモードにおける動作状態および前記ゲストモードにおける第1および第2の動作状態を保存する領域を、前記CPUに対応してそれぞれ複数個有し、
    前記仮想マシンモニタモニタが、前記複数のCPUのうちのいずれかで前記例外を捕捉した場合、前記例外を捕捉した前記CPUに対応する前記メモリ上の領域に前記動作状態を保存もしくは復元することを特徴とする、請求項に記載の仮想マシンモニタをモニタするコンピュータ。
  3. ゲストモードおよびホストモードのうちいずれか一方の動作モードで動作するCPUと、前記ゲストモードおよび前記ホストモードにおける動作状態を記憶する領域を有するメモリと、ゲストOSと、仮想マシンモニタと、仮想マシンモニタモニタとを有するコンピュータにおいて前記仮想マシンモニタをモニタする方法であって、
    前記メモリに前記ゲストモードにおける第1および第2の動作状態を保存する領域を確保するメモリ領域確保工程と、
    前記ゲストモードにおける第1の動作状態において前記ゲストOSを動作させるゲストOS動作工程と、
    前記ホストモードにおいて前記仮想マシンモニタモニタを動作させるホストOS動作工程と、
    前記ゲストモードにおける第1の動作状態で例外が発生した場合、前記ホストモードにおいて前記仮想マシンモニタモニタが前記例外を捕捉する第1の例外捕捉工程と、
    前記第1の例外捕捉工程に反応して、前記仮想マシンモニタモニタが前記ゲストモードにおいて動作していた前記第1の動作状態を前記メモリに待避させてその後に前記第2の動作状態を前記メモリから復元し、前記ゲストモードにおける第2の動作状態において前記仮想マシンモニタを動作させる第1の動作状態切り替え工程と、
    前記仮想マシンモニタモニタが前記仮想マシンモニタに対して前記捕捉された例外をインジェクト(注入)するインジェクト工程と
    前記仮想マシンモニタにおいて発生した例外を捕捉する第2の例外捕捉工程と、
    前記第2の例外捕捉工程において捕捉した例外が前記ゲストモードにおける動作状態を前記第1の動作状態に戻す命令に基づいて発生した例外であるか否かを判断する判断工程と、
    前記判断工程において前記第1の動作状態に戻す命令であると判断されたら、前記ゲストモードにおける動作状態を前記第1の動作状態に戻す第2の動作状態切り替え工程と、
    前記判断工程において前記第1の動作状態に戻す命令でないと判断されたら、前記例外を捕捉して処理する例外処理工程とを有し、これらの各工程を前記CPU上で実現するようにしたことを特徴とする、仮想マシンモニタをモニタする方法。
  4. 前記コンピュータが複数個の前記CPUを有し、
    前記メモリ領域確保工程が、前記ホストモードにおける動作状態および前記ゲストモードにおける第1および第2の動作状態を保存する領域を、前記CPUに対応してそれぞれ複数個確保し、
    前記第1の例外捕捉工程が、前記例外を捕捉したCPUを特定するCPU特定工程を含み、
    前記第1の動作状態切り替え工程が、前記CPU特定工程で特定されたCPUに対応する前記メモリ上の領域に前記動作状態を保存もしくは復元することを特徴とする、請求項に記載の仮想マシンモニタをモニタする方法。
  5. ゲストモードおよびホストモードのうちいずれか一方の動作モードで動作するCPUと、前記ゲストモードおよび前記ホストモードにおける動作状態を記憶する領域を有するメモリと、ゲストOSと、仮想マシンモニタと、仮想マシンモニタモニタとを有するコンピュータに、
    前記メモリに前記ゲストモードにおける第1および第2の動作状態を保存する領域を確保するメモリ領域確保処理と、
    前記ゲストモードにおける第1の動作状態において前記ゲストOSを動作させるゲストOS動作処理と、
    前記ホストモードにおいて前記仮想マシンモニタモニタを動作させるホストOS動作処理と、
    前記ゲストモードにおける第1の動作状態で例外が発生した場合、前記ホストモードにおいて前記仮想マシンモニタモニタが前記例外を捕捉する第1の例外捕捉処理と、
    前記第1の例外捕捉工程に反応して、前記仮想マシンモニタモニタが前記ゲストモードにおいて動作していた前記第1の動作状態を前記メモリに待避させてその後に前記第2の動作状態を前記メモリから復元し、前記ゲストモードにおける第2の動作状態において前記仮想マシンモニタを動作させる第1の動作状態切り替え処理と、
    前記仮想マシンモニタモニタが前記仮想マシンモニタに対して前記捕捉された例外をインジェクト(注入)するインジェクト処理と
    前記CPUが前記仮想マシンモニタにおいて発生した例外を捕捉する第2の例外捕捉処理と、
    前記第2の例外捕捉処理において捕捉した例外が前記ゲストモードにおける動作状態を前記第1の動作状態に戻す命令に基づいて発生した例外であるか否かを判断する判断処理と、
    前記判断処理において前記第1の動作状態に戻す命令であると判断されたら、前記ゲストモードにおける動作状態を前記第1の動作状態に戻す第2の動作状態切り替え処理と、
    前記判断処理において前記第1の動作状態に戻す命令でないと判断されたら、前記例外を捕捉して処理する例外処理と
    を実行させることを特徴とする、仮想マシンモニタモニタプログラム。
  6. 前記コンピュータが複数個の前記CPUを有し、
    前記メモリ領域確保処理が、前記ホストモードにおける動作状態および前記ゲストモードにおける第1および第2の動作状態を保存する領域を、前記CPUに対応してそれぞれ複数個確保し、
    前記第1の例外捕捉処理が、前記例外を捕捉したCPUを特定するCPU特定処理を含み、
    前記第1の動作状態切り替え処理が、前記CPU特定処理で特定されたCPUに対応する前記メモリ上の領域に前記動作状態を保存もしくは復元することを特徴とする、請求項に記載の仮想マシンモニタモニタプログラム。
JP2007247801A 2007-09-25 2007-09-25 仮想マシンモニタをモニタするコンピュータとその方法、および仮想マシンモニタモニタプログラム Expired - Fee Related JP4678396B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007247801A JP4678396B2 (ja) 2007-09-25 2007-09-25 仮想マシンモニタをモニタするコンピュータとその方法、および仮想マシンモニタモニタプログラム
US12/234,356 US20090083736A1 (en) 2007-09-25 2008-09-19 Virtualized computer, monitoring method of the virtualized computer and a computer readable medium thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007247801A JP4678396B2 (ja) 2007-09-25 2007-09-25 仮想マシンモニタをモニタするコンピュータとその方法、および仮想マシンモニタモニタプログラム

Publications (2)

Publication Number Publication Date
JP2009080563A JP2009080563A (ja) 2009-04-16
JP4678396B2 true JP4678396B2 (ja) 2011-04-27

Family

ID=40473100

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007247801A Expired - Fee Related JP4678396B2 (ja) 2007-09-25 2007-09-25 仮想マシンモニタをモニタするコンピュータとその方法、および仮想マシンモニタモニタプログラム

Country Status (2)

Country Link
US (1) US20090083736A1 (ja)
JP (1) JP4678396B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9594582B2 (en) * 2009-01-05 2017-03-14 International Business Machines Corporation Detection and management of dynamic migration of virtual environments
US8719823B2 (en) * 2009-03-04 2014-05-06 Vmware, Inc. Managing latency introduced by virtualization
US20110041126A1 (en) * 2009-08-13 2011-02-17 Levy Roger P Managing workloads in a virtual computing environment
JP5719023B2 (ja) * 2011-06-02 2015-05-13 株式会社日立製作所 仮想計算機の制御方法及び仮想計算機システム
CN103107905B (zh) 2011-11-14 2017-08-04 华为技术有限公司 异常处理方法、装置和客户端
JP5813554B2 (ja) * 2012-03-30 2015-11-17 ルネサスエレクトロニクス株式会社 半導体装置
JP5877533B2 (ja) 2013-01-31 2016-03-08 三菱電機株式会社 計算機装置及び計算機装置の制御方法
GB2515536A (en) * 2013-06-27 2014-12-31 Ibm Processing a guest event in a hypervisor-controlled system
US10019279B2 (en) 2015-12-17 2018-07-10 International Business Machines Corporation Transparent secure interception handling
US9841987B2 (en) 2015-12-17 2017-12-12 International Business Machines Corporation Transparent secure interception handling
CN113238832A (zh) * 2021-05-20 2021-08-10 元心信息科技集团有限公司 虚拟处理器的调度方法、装置、设备及计算机存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002229806A (ja) * 2001-02-02 2002-08-16 Hitachi Ltd 計算機システム
JP2004171567A (ja) * 2002-11-18 2004-06-17 Arm Ltd 多数のオペレーティングシステムの間のタスクの追従
JP2004295261A (ja) * 2003-03-25 2004-10-21 Ntt Data Corp オペレーティングシステム制御方法、およびその方法をコンピュータに実行させるプログラム、ならびにオペレーティングシステム制御装置
JP2005529401A (ja) * 2002-06-07 2005-09-29 インテル コーポレイション システム管理命令を再命令すること及び仮想マシンコンテナを生成することによる信頼性のないシステム管理コードに対する保護のためのシステム及び方法
JP2006519423A (ja) * 2003-03-21 2006-08-24 インテル コーポレイション 仮想マシンのための動的なサービス・レジストリ
JP2007035045A (ja) * 2005-07-27 2007-02-08 Intel Corp 階層化された仮想化アーキテクチャにおける仮想化イベント処理

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7225441B2 (en) * 2000-12-27 2007-05-29 Intel Corporation Mechanism for providing power management through virtualization
US7484208B1 (en) * 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
US8127098B1 (en) * 2004-05-11 2012-02-28 Globalfoundries Inc. Virtualization of real mode execution
US7373446B2 (en) * 2004-11-05 2008-05-13 Microsoft Corporation Method and system for dynamically patching an operating system's interrupt mechanism
US9606821B2 (en) * 2004-12-17 2017-03-28 Intel Corporation Virtual environment manager for creating and managing virtual machine environments
US7546599B2 (en) * 2004-12-20 2009-06-09 Intel Corporation Method, apparatus and system for instructing a virtual device from a virtual machine
US7810083B2 (en) * 2004-12-30 2010-10-05 Intel Corporation Mechanism to emulate user-level multithreading on an OS-sequestered sequencer
US7647589B1 (en) * 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
WO2007036072A1 (en) * 2005-09-29 2007-04-05 Intel Corporation Apparatus and method for expedited virtual machine (vm) launch in vm cluster environment
JP4978008B2 (ja) * 2006-01-11 2012-07-18 株式会社日立製作所 仮想計算機上でのページテーブルアドレスの変更を高速化する方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002229806A (ja) * 2001-02-02 2002-08-16 Hitachi Ltd 計算機システム
JP2005529401A (ja) * 2002-06-07 2005-09-29 インテル コーポレイション システム管理命令を再命令すること及び仮想マシンコンテナを生成することによる信頼性のないシステム管理コードに対する保護のためのシステム及び方法
JP2004171567A (ja) * 2002-11-18 2004-06-17 Arm Ltd 多数のオペレーティングシステムの間のタスクの追従
JP2006519423A (ja) * 2003-03-21 2006-08-24 インテル コーポレイション 仮想マシンのための動的なサービス・レジストリ
JP2004295261A (ja) * 2003-03-25 2004-10-21 Ntt Data Corp オペレーティングシステム制御方法、およびその方法をコンピュータに実行させるプログラム、ならびにオペレーティングシステム制御装置
JP2007035045A (ja) * 2005-07-27 2007-02-08 Intel Corp 階層化された仮想化アーキテクチャにおける仮想化イベント処理

Also Published As

Publication number Publication date
JP2009080563A (ja) 2009-04-16
US20090083736A1 (en) 2009-03-26

Similar Documents

Publication Publication Date Title
JP4678396B2 (ja) 仮想マシンモニタをモニタするコンピュータとその方法、および仮想マシンモニタモニタプログラム
EP2787444B1 (en) Central processing unit, information processing apparatus, and intra-virtual-core register value acquisition method
TWI588649B (zh) 硬體修復方法、硬體修復系統以及計算機可讀取儲存裝置
KR102408053B1 (ko) 시스템 온 칩, 모바일 기기 및 시스템 온 칩의 동작 방법
US7793286B2 (en) Methods and systems to manage machine state in virtual machine operations
US8595723B2 (en) Method and apparatus for configuring a hypervisor during a downtime state
JP6530723B2 (ja) コンピュータシステム内における複数のハイパーバイザーの共同運用を容易にするためのシステムおよび方法
JP2012009013A (ja) 部分仮想化マシンに基づく統一格納装置
US8612975B2 (en) World switch between virtual machines with selective storage of state information
CN101091161B (zh) 用于协作访客固件的设备和方法
JP2004334486A (ja) ブートコードを用いた起動システム、及び起動方法
JPWO2013088818A1 (ja) 仮想計算機システム、仮想化機構、及びデータ管理方法
US6968410B2 (en) Multi-threaded processing of system management interrupts
JP2009506410A (ja) コンピュータ装置におけるコプロセッサ支援
JP2016018555A (ja) 動作環境の切換方法、コンピュータ、およびコンピュータ・プログラム
CN115576734B (zh) 一种多核异构日志存储方法和系统
KR100994723B1 (ko) 시스템에서 초기 구동시간을 단축시키는 선택적 서스펜드 리쥼 방법 및 그 기록매체
WO2013136457A1 (ja) 仮想計算機システム、情報保存処理プログラム及び情報保存処理方法
JP2001236237A (ja) マルチos構成方法
US20080072009A1 (en) Apparatus and method for handling interrupt disabled section and page pinning apparatus and method
Sun et al. Supporting Multiple OSes with OS Switching.
JPH1049373A (ja) パイプライン・デジタル・プロセッサにおいて多重で高精度の事象を操作する方法と装置
Tröger et al. Software-implemented fault injection at firmware level
JP2011138401A (ja) プロセッサシステム、プロセッサシステムの制御方法、及び制御回路
CN111506395A (zh) 一种混合仿真的全数字虚拟运行环境的实现方法及装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090910

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090915

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100802

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: 20110105

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: 20110118

R150 Certificate of patent or registration of utility model

Ref document number: 4678396

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: 20140210

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees