JP5079246B2 - 仮想マシン環境におけるマルチレベルインターセプト処理のためのシステムおよび方法 - Google Patents

仮想マシン環境におけるマルチレベルインターセプト処理のためのシステムおよび方法 Download PDF

Info

Publication number
JP5079246B2
JP5079246B2 JP2006067701A JP2006067701A JP5079246B2 JP 5079246 B2 JP5079246 B2 JP 5079246B2 JP 2006067701 A JP2006067701 A JP 2006067701A JP 2006067701 A JP2006067701 A JP 2006067701A JP 5079246 B2 JP5079246 B2 JP 5079246B2
Authority
JP
Japan
Prior art keywords
intercept
virtualizer
event
processor
computer
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
JP2006067701A
Other languages
English (en)
Other versions
JP2006252565A (ja
JP2006252565A5 (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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006252565A publication Critical patent/JP2006252565A/ja
Publication of JP2006252565A5 publication Critical patent/JP2006252565A5/ja
Application granted granted Critical
Publication of JP5079246B2 publication Critical patent/JP5079246B2/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B71/00Games or sports accessories not covered in groups A63B1/00 - A63B69/00
    • A63B71/08Body-protectors for players or sportsmen, i.e. body-protecting accessories affording protection of body parts against blows or collisions
    • A63B71/10Body-protectors for players or sportsmen, i.e. body-protecting accessories affording protection of body parts against blows or collisions for the head
    • AHUMAN NECESSITIES
    • A45HAND OR TRAVELLING ARTICLES
    • A45DHAIRDRESSING OR SHAVING EQUIPMENT; EQUIPMENT FOR COSMETICS OR COSMETIC TREATMENTS, e.g. FOR MANICURING OR PEDICURING
    • A45D8/00Hair-holding devices; Accessories therefor
    • A45D8/36Hair straps; Hair rings
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Physical Education & Sports Medicine (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は一般に、仮想マシン(「プロセッサ仮想化」とも呼ばれる)の分野に関し、より詳細には、本発明は、マルチレベル外部仮想マシンモニタ(VMM:virtual machine monitor)を対象とし、いくつかのインターセプト(intercept)処理機能は、特定の区分(それぞれは仮想マシンすなわち「VM」のインスタンス)で稼動する外部モニタによって、これらの区分化された外部モニタを管理するベースレベルVMMと共に実行される。
コンピュータは、特定のシステム命令セットを実行するように設計された汎用中央処理装置(CPU)を備える。類似するアーキテクチャまたは設計仕様を有する一群のプロセッサは、同じプロセッサファミリのメンバと考えることができる。現在のプロセッサファミリの例には、アリゾナ州PhoenixにあるMotorola,Inc.製のMotorola 680X0プロセッサファミリ、カリフォルニア州SunnyvaleにあるIntel Corporation製のIntel 80X86プロセッサファミリ、および、Motorola製であり、カリフォルニア州CupertinoにあるApple Computer,Inc.製コンピュータで使用されるPowerPCプロセッサファミリが含まれる。一群のプロセッサのアーキテクチャおよび設計に関する考慮事項が類似するためにこれらのプロセッサが同じファミリ中にある場合があっても、プロセッサは、それらのクロック速度およびその他の性能パラメータにより、ファミリ内で大きく異なることがある。
マイクロプロセッサの各ファミリは、そのプロセッサファミリに固有の命令を実行する。プロセッサまたはプロセッサファミリが実行することの可能な命令の総体的なセットは、そのプロセッサの命令セットと呼ばれる。例として、Intel 80X86プロセッサファミリによって使用される命令セットは、PowerPCプロセッサファミリによって使用される命令セットと互換性がない。Intel 80X86命令セットは、CISC(Complex Instruction Set Computer)フォーマットに基づく。Motorola PowerPC命令セットは、RISC(Reduced Instruction Set Computer)フォーマットに基づく。CISCプロセッサは多数の命令を使用し、これらの命令のいくつかは、いくぶん複雑な機能を実行することが可能であるが、実行には、概して多くのクロックサイクルを必要とする。RISCプロセッサは、より少数の利用可能な命令を使用してより単純な機能セットを実行し、これらの機能は、ずっと高いレートで実行される。
コンピュータシステム間におけるプロセッサファミリの独自性は通常、コンピュータシステムのハードウェアアーキテクチャの、他の要素間でも非互換性をもたらす。Intel 80X86プロセッサファミリからのプロセッサを備えて製造されたコンピュータシステムは、PowerPCプロセッサファミリからのプロセッサを備えて製造されたコンピュータシステムのハードウェアアーキテクチャとは異なるハードウェアアーキテクチャを有することになる。プロセッサ命令セットと、コンピュータシステムのハードウェアアーキテクチャとの独自性のため、アプリケーションソフトウェアプログラムは通常、特定のオペレーティングシステムを稼動させる特定のコンピュータシステム上で実行されるように書かれる。
(プロセッサ仮想化)
コンピュータ製造業者は、自社の製品ラインに関連するマイクロプロセッサファミリ上で、少なめよりはむしろ多めのアプリケーションが稼動するようにすることによって、自社の市場シェアを最大限にしたいと望む。コンピュータシステム上で稼動可能なオペレーティングシステムおよびアプリケーションプログラムの数を拡大するために、ある技術分野が発展してきたが、この技術分野では、ある種類のCPU(ホストと呼ばれる)を有する所与のコンピュータは、関係ない種類のCPU(ゲストと呼ばれる)の命令をこのホストコンピュータがエミュレートできるようにするエミュレータプログラムを備えることになる。そのため、ホストコンピュータは、所与のゲスト命令に応答して1つまたは複数のホスト命令が呼び出されるようにするアプリケーションを実行することになる。したがって、ホストコンピュータは、それ自体のハードウェアアーキテクチャ用に設計されたソフトウェアと、関係ないハードウェアアーキテクチャを有するコンピュータ用に書かれたソフトウェアとの両方を稼動させることが可能である。より具体的な例として、例えばApple Computer製のコンピュータシステムが、PCベースのコンピュータシステム用に書かれたオペレーティングシステムおよびプログラムを稼動させることができる。また、エミュレータプログラムを使用して、単一のCPU上で複数の非互換オペレーティングシステムを同時に動作させることが可能な場合もある。この構成では、各オペレーティングシステムが相互に互換しないにもかかわらず、エミュレータプログラムは、2つのオペレーティングシステムの一方をホストすることが可能であり、普通なら互換性がないはずのこれらのオペレーティングシステムが同じコンピュータシステム上で同時に稼動できるようにする。
ホストコンピュータシステム上でゲストコンピュータシステムがエミュレートされるとき、ゲストコンピュータシステムは「仮想マシン」と言われる。というのは、ゲストコンピュータシステムは、ホストコンピュータシステム中で、ある特定ハードウェアアーキテクチャの動作の純粋なソフトウェア表現として存在するだけだからである。エミュレータ、仮想マシン、およびプロセッサエミュレーションという用語は、コンピュータシステム全体のハードウェアアーキテクチャを模倣またはエミュレートする能力を指すために交換可能に使用されることがある。例として、カリフォルニア州San MateoにあるConnectix Corporationによって生み出されたVirtual PCソフトウェアは、Intel 80X86 Pentium(登録商標)プロセッサと様々なマザーボードコンポーネントおよびカードとを備えたコンピュータ全体をエミュレートする。これらのコンポーネントの動作は、ホストマシン上で稼動している仮想マシン中でエミュレートされる。PowerPCプロセッサを有するコンピュータシステムなどのホストコンピュータの、オペレーティングシステムソフトウェアおよびハードウェアアーキテクチャ上で実行されているエミュレータプログラムが、ゲストコンピュータシステム全体の動作を模倣する(mimic)。
エミュレータプログラムは、ホストマシンのハードウェアアーキテクチャと、エミュレートされた環境内で稼動するソフトウェアから送られる命令との間のインターチェンジとして働く。このエミュレートされた環境は、仮想マシンモニタ(VMM)によって生み出すことができ、VMMは、ハードウェアのすぐ上で稼動するソフトウェア層であって、VMMが仮想化しているハードウェアと同じインタフェースを公開することによってマシンのリソースすべてを仮想化するソフトウェア層である(これによりVMMは、VMMよりも上で稼動するオペレーティングシステム層に認識されずに(unnotice)いることができる)。この構成では、ホストオペレーティングシステム(HOS)とVMMとが、同じ物理ハードウェア上で並行して稼動することができる。あるいは、エミュレータプログラムは、物理コンピュータハードウェアのすぐ上で稼動して別のハードウェア構成をエミュレートするHOS自体であってもよい。この実施形態の特定の実装形態では、HOSソフトウェアは特に、「ハイパーバイザ(hypervisor)」の一実施形態を備えることができる。
ハイパーバイザは、HOSのカーネルレベルの近くに存在する制御プログラムであり、コンピュータシステムの1つまたは複数の物理プロセッサを含めたコンピュータシステムハードウェアを、HOS以外の1つまたは複数の2次オペレーティングシステムが使用できるようにするべく動作する。ハイパーバイザは、2次オペレーティングシステムのための動作環境をエミュレートし、それにより2次オペレーティングシステムは、実際には別のハードウェアおよび/またはオペレーティングシステム環境で動作しておりHOSがコンピュータシステムを論理制御しているであろうにもかかわらず、その通例のハードウェアおよび/またはオペレーティングシステム環境で動作しておりそれ自体がコンピュータシステムを論理制御していると認識する(believe)。これは重要なことである。というのは、多くのオペレーティングシステムは、コンピュータシステムのハードウェアを排他的に論理制御しているかのように動作しなければならないものとして機能するからである。したがって、複数のオペレーティングシステムが単一のコンピュータシステム上で同時に機能するためには、各オペレーティングシステムのハイパーバイザは、各オペレーティングシステムがコンピュータシステム全体の排他的制御を有するかのごとく機能するように、他のオペレーティングシステムの存在を覆い隠すよう機能しなければならない。
簡単にするために、プロセッサ仮想化プログラム(限定されないがVMMおよびハイパーバイザを含む)を、本明細書では「バーチャライザ(virtualizer)」と総称する。さらに、ハイパーバイザのコンテキスト(状況、態様)で本明細書に開示される本発明の態様はどれも、VMMおよびその他のバーチャライザに対しても等しく有効であり開示されるものとし、またその逆でもある。
(インターセプトおよびモニタ)
当業者には知られており理解されるように、バーチャライザ(例えばハイパーバイザやVMM)の主要な機能の1つは、ソフトウェアが区分(VMの個々のインスタンス)中のゲストオペレーティングシステム上で実行されている間に発生したイベントをインターセプトすることである。このコンテキストで、イベントとは、区分の何らかのコンポーネントと、実際には区分の一部ではない物理的または仮想的な何らかのリソースとの間で発生する対話である。例えば、第1の区分で実行されているプログラムが、ある周辺デバイスにデータを送りたい場合があり、この区分のオペレーティングシステムは、このデバイスに対して排他的制御を有すると認識している。しかしこの場合、このプログラムが、その区分のゲストオペレーティングシステムを介してそのデータを送り、ゲストオペレーティングシステムが周辺デバイスと通信しようとすると、バーチャライザは、同じことをしようとする他の区分による他の試みと共に(すなわちデバイスは実際にはどの特定区分にも専用になっていない)この区分によるこのデバイスへのアクセスを処理するために、この通信をインターセプトする。これらの種類のイベントをインターセプトすることにより、バーチャライザは本質的に、現実には基礎的な物理リソースは実際にいくつかの仮想マシン区分間で共有または区分化されているときに、ゲストOSを騙して、(物理ハードウェア上で実行されているOSが通常そうするように)マシンのリソースすべてを所有していると思わせる。これに関して、バーチャライザは、このようなイベントをインターセプトすることと、これらが発生したときにインターセプトに応答することとの両方を担う。残念ながら、当業者にとっては容易に明らかな理由でより単純なバーチャライザが望まれるときに、各区分の外で動作する単一のバーチャライザにこの種の機能を集中化させる場合、バーチャライザを非常に複雑にする必要がある。
したがって、より単純でありながらインターセプト機能をなお提供するバーチャライザ−インターセプトモデルが、当技術分野で必要とされている。本発明は、かかる解決策のひとつを提供する。
本発明の様々な実施形態は、インターセプト関係の機能の大部分を(各区分の外に存在する)ベースレベルのバーチャライザから除去して、その代わりにこの機能の大部分を各区分に直接に組み込むように設計された、マルチレベルバーチャライザを対象とする。いくつかの実施形態では、区分内で稼動し特定のインターセプトイベントに応答する「外部モニタ」によって、いくつかのインターセプト処理機能が実行され、ベースレベルバーチャライザは、これらの外部モニタを各区分内にインストールし、その後、単一区分と区分間との両方のインターセプトイベントについて、外部モニタを管理する。この分散型のインターセプト処理手法により、複雑さのずっと低いバーチャライザが可能になり、インターセプト機能が各区分中にまで引き上げられ、各区分中では、各外部モニタが、その区分中の対応するゲストオペレーティングシステムのリソースを使用してインターセプトイベントを解決する。
前述の概要、ならびに好ましい実施形態に関する後続の詳細な記述は、添付の図面と共に読めばよりよく理解される。本発明を例示するために、図面には本発明の例示的な構造が示してある。しかし、本発明は、開示される特定の方法および手段に限定されない。
本発明の主題について、法定の要件を満たすために具体的に述べる。しかし、この記述自体は、本特許の範囲を限定するものではない。そうではなく、発明者は、特許請求される本主題が他の方法でも実施されて、他の現在または将来の技術に関連する、本明細書に述べるステップに類似する種々のステップまたはステップの組合せを含めることができることを企図している。さらに、用語「ステップ」は、本明細書では、利用される方法の種々の要素を意味するのに使用される場合があるが、この用語は、個々のステップの順序が明示的に述べられていない限り、本明細書に開示される様々な複数のステップ内またはステップ間の任意の特定の順序を暗示するものと解釈されるべきではない。
(コンピュータ環境)
本発明の多くの実施形態は、コンピュータ上で実行することができる。図1および後続の考察は、本発明を実施することのできる適切なコンピューティング環境に関する簡単で一般的な記述を提供するものである。必須ではないが、本発明を、クライアントワークステーションやサーバなどのコンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで述べる。一般に、プログラムモジュールは、特定のタスクを実行するか特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。さらに、当業者なら理解するであろうが、本発明は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な民生用電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含めた他の種類のコンピュータシステム構成でも実施することができる。本発明は分散コンピューティング環境で実施することもでき、その場合、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される。分散コンピューティング環境では、プログラムモジュールは、ローカルとリモートとの両方のメモリ記憶デバイスに位置することができる。
図1に示すように、例示的な汎用コンピューティングシステムは、従来型のパーソナルコンピュータ20などを備え、コンピュータ20は、処理ユニット21と、システムメモリ22と、システムメモリを含む様々なシステムコンポーネントを処理ユニット21に結合するシステムバス23とを備える。システムバス23は、様々なバスアーキテクチャのいずれかを使用した、メモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含む、いくつかの種類のバス構造のうちのいずれかとすることができる。システムメモリは、ROM(Read Only Memory)24およびRAM(Random Access Memory)25を含む。ROM24には、起動中などにパーソナルコンピュータ20内の要素間で情報を転送するのを支援する基本ルーチンを含むBIOS(basic input/output system)26を記憶することができる。パーソナルコンピュータ20はまた、ハードディスク(図示せず)に対して読み書きするためのハードディスクドライブ27と、取外し可能な磁気ディスク29に対して読み書きするための磁気ディスクドライブ28と、CD ROMやその他の光媒体など取外し可能な光ディスク31に対して読み書きするための光ディスクドライブ30を備えることもできる。ハードディスクドライブ27、磁気ディスクドライブ28、および光ディスクドライブ30は、それぞれハードディスクドライブインタフェース32、磁気ディスクドライブインタフェース33、および光ドライブインタフェース34によってシステムバス23に接続される。ドライブおよびそれらに関連するコンピュータ読み取り可能な媒体は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性記憶域をパーソナルコンピュータ20に提供する。本明細書に述べる例示的な環境は、ハードディスク、取外し可能な磁気ディスク29、および取外し可能な光ディスク31を利用しているが、磁気カセット、フラッシュメモリカード、ディジタルビデオディスク、ベルヌーイカートリッジ、RAM、ROMなど、コンピュータによってアクセス可能なデータを記憶可能な他の種類のコンピュータ読み取り可能な媒体をこの例示的な動作環境で使用してもよいことを、当業者は理解されたい。
ハードディスク、磁気ディスク29、光ディスク31、ROM24、またはRAM25には、いくつかのプログラムモジュールを記憶することができ、これらのプログラムモジュールにはオペレーティングシステム35、1つまたは複数のアプリケーションプログラム36、その他のプログラムモジュール37、およびプログラムデータ38が含まれる。ユーザは、キーボード40やポインティングデバイス42などの入力デバイスを介して、パーソナルコンピュータ20にコマンドおよび情報を入力することができる。その他の入力デバイス(図示せず)には、マイクロホン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナなどを含めることができる。これらおよびその他の入力デバイスは、システムバスに結合されたシリアルポートインタフェース46を介して処理ユニット21に接続されることが多いが、パラレルポート、ゲームポート、またはUSB(Universal Serial Bus)など、他のインタフェースによって接続されてもよい。モニタ47または他の種類の表示デバイスも、ビデオアダプタ48などのインタフェースを介してシステムバス23に接続される。モニタ47に加えて、パーソナルコンピュータは通常、スピーカやプリンタなど、その他の周辺出力デバイス(図示せず)も備える。図1の例示的なシステムはまた、ホストアダプタ55、SCSI(Small Computer System Interface)バス56、および、SCSIバス56に接続された外部記憶デバイス62も備える。
パーソナルコンピュータ20は、リモートコンピュータ49など、1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。リモートコンピュータ49は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の一般的なネットワークノードであってよく、通常はパーソナルコンピュータ20に関して上述した要素の多くまたはすべてを備えるが、図1にはメモリ記憶デバイス50だけが示してある。図1に示す論理接続は、LAN(Local Area Network)51およびWAN(Wide Area Network)52を含む。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットでよく見られる。
LANネットワーキング環境で使用されるときは、パーソナルコンピュータ20は、ネットワークインタフェースまたはアダプタ53を介してLAN51に接続される。WANネットワーキング環境で使用されるときは、パーソナルコンピュータ20は通常、インターネットなどのワイドエリアネットワーク52を介した通信を確立するためのモデム54または他の手段を備える。モデム54は内蔵でも外付けでもよく、シリアルポートインタフェース46を介してシステムバス23に接続される。ネットワーク化された環境では、パーソナルコンピュータ20に関して示したプログラムモジュールまたはその一部を、リモートのメモリ記憶デバイスに記憶することができる。図示のネットワーク接続は例であり、コンピュータ間で通信リンクを確立するための他の手段を使用してもよいことは理解されるであろう。さらに、本発明の多くの実施形態は、コンピュータ化されたシステムに特によく適合すると考えられるが、本明細書中のいずれのものも、本発明をかかる実施形態に限定することを意図していない。
(仮想マシン)
概念的に見ると、コンピュータシステムは一般に、基礎的なハードウェア層上で稼動する1つまたは複数のソフトウェア層を備えている。この階層化は、抽象化の理由で行われる。所与のソフトウェア層のためのインタフェースを定義することにより、この層を、それよりも上にある他の層によって様々に実装することが可能である。適切に設計されたコンピュータシステムでは、各層は、その直下の層だけについて識別している(また、直下の層だけに依拠する)。これにより、ある層または「スタック」(隣接する複数の層)を、この層またはスタックよりも上の層に悪影響を与えずに置き換えることができる。例えば、ソフトウェアアプリケーション(上方の層)は通常、より低いレベルのオペレーティングシステム(下方の層)に依拠して、ファイルを何らかの形の永久記憶装置に書き込むが、これらのアプリケーションは、データをフロッピー(登録商標)ディスクに書き込むか、ハードドライブに書き込むか、ネットワークフォルダに書き込むかの違いを理解する必要はない。この下方の層がファイル書込み用の新しいオペレーティングシステムコンポーネントで置き換えられても、上方の層のソフトウェアアプリケーションの動作は影響を受けない。
階層化されたソフトウェアのフレキシビリティは、仮想マシン(VM)が、実際には別のソフトウェア層である仮想ハードウェア層を提示することを可能にする。このようにして、VMは、VMよりも上のソフトウェア層に対して、これらのソフトウェア層がそれら自体の個別コンピュータシステム上で稼動しているという錯覚を生み出すことが可能であり、したがってVMは、複数の「ゲストシステム」が単一の「ホストシステム」上で同時に稼動できるようにすることが可能である。
図2は、コンピュータシステム中のエミュレートされた動作環境での、ハードウェアおよびソフトウェアアーキテクチャの論理階層化を表す図である。図では、エミュレーションプログラム94が、物理ハードウェアアーキテクチャ92の上で直接的または間接的に稼動する。エミュレーションプログラム94は、(a)ホストオペレーティングシステムと並行して稼動する仮想マシンモニタ、(b)ネイティブエミュレーション能力を有する特殊化されたホストオペレーティングシステム、または(c)ハイパーバイザコンポーネントを備えるホストオペレーティングシステムとすることができ、(c)の場合はハイパーバイザコンポーネントがエミュレーションを実行する。エミュレーションプログラム94は、ゲストハードウェアアーキテクチャ96をエミュレートする(ゲストハードウェアアーキテクチャ96は破線で示してあり、それにより、このコンポーネントが「仮想マシン」であること、すなわち実際に存在するのではなくエミュレーションプログラム94によってエミュレートされたハードウェアであることを示す)。ゲストハードウェアアーキテクチャ96上では、ゲストオペレーティングシステム98が実行され、ゲストオペレーティングシステム98上では、ソフトウェアアプリケーション100が稼動する。図2のエミュレートされた動作環境では、またエミュレーションプログラム94の作用により、ソフトウェアアプリケーション100は、ホストオペレーティングシステムおよびハードウェアアーキテクチャ92との互換性を概して持たないオペレーティングシステム上で稼動するように設計されているにもかかわらず、コンピュータシステム90中で稼動することが可能である。
図3Aに、物理コンピュータハードウェア102のすぐ上で稼動するホストオペレーティングシステムソフトウェア層104を含む、仮想化されたコンピューティングシステムを示す。ホストオペレーティングシステム(ホストOS)104は、ホストOSがエミュレートしている(すなわち「仮想化」している)ハードウェアと同じインタフェースを公開することによって、物理コンピュータハードウェア102のリソースへのアクセスを提供し、これによりホストOSは、ホストOSよりも上で稼動するオペレーティングシステム層に認識されずにいることができる。エミュレーションを実行するためには、ホストオペレーティングシステム104は、ネイティブエミュレーション能力を備えた特別設計のオペレーティングシステムとすることができ、あるいは、エミュレーションを実行するための組込みハイパーバイザコンポーネントを備えた標準的なオペレーティングシステムとすることもできる。
再び図3Aを参照すると、ホストOS104の上には、2つの仮想マシン(VM)実装形態VMA108およびVMB110があり、VMA108は例えば、仮想化されたIntel386プロセッサとすることができ、VMB110は例えば、Motorola680X0ファミリのプロセッサのうちの1つの仮想化バージョンとすることができる。各VM108および110の上には、それぞれゲストオペレーティングシステム(ゲストOS)A112およびB114がある。ゲストOSA112の上では、2つのアプリケーションすなわちアプリケーションA1 116およびアプリケーションA2 118が稼動しており、ゲストOSB114の上では、アプリケーションB1 120が稼動している。
図3Aに関して、以下のことに留意するのが重要である。すなわち、(破線で示す)VMA108およびVMB110は、仮想化されたコンピュータハードウェアの表現であり、これらはソフトウェア構造としてのみ存在し、これらは専用ソフトウェアコードが存在することによって実行可能になり(possible)、この専用ソフトウェアコードは、VMA108およびVMB110をそれぞれゲストOSA112およびゲストOSB114に提示するだけでなく、ゲストOSA112およびゲストOSB114が実際の物理コンピュータハードウェア102と間接的に対話するのに必要なすべてのソフトウェアの手続きをも実行する。
図3Bに、代替の仮想化されたコンピューティングシステムを示す。このコンピューティングシステムでは、ホストオペレーティングシステム104”と並行して稼動する仮想マシンモニタ(VMM)104’によってエミュレーションが実行される。いくつかの実施形態では、VMMは、ホストオペレーティングシステム104の上で稼動し、およびホストオペレーティングシステム104を介してのみコンピュータハードウェアと対話する、アプリケーションとすることができる。他の実施形態では、図3Bに示すように、VMMは代わりに、部分的に独立したソフトウェアシステムを構成することができ、そのソフトウェアシステムはあるレベルではホストオペレーティングシステム104を介して間接的にコンピュータハードウェア102と対話するが、他のレベルでは(ホストオペレーティングシステムがコンピュータハードウェアと直接に対話するのと同様の方式で)コンピュータハードウェア102と直接に対話する。他の実施形態では、VMMは、完全に独立したソフトウェアシステムを構成することができ、このソフトウェアシステムは、(コンピュータハードウェア102の使用を調整して競合を回避することなどに関する限りにおいては、やはりホストオペレーティングシステム104と対話するが)ホストオペレーティングシステム104を利用せずに、(ホストオペレーティングシステムがコンピュータハードウェアと直接に対話するのと同様の方式で)すべてのレベルでコンピュータハードウェア102と直接に対話する。
VMMを実装するためのこれらの変形はすべて、本明細書に述べる本発明の代替実施形態を形成することが予期され、本明細書中のどんなものも、本発明をいずれか特定のVMM構成に限定するものと解釈されるべきではない。加えて、(おそらくハードウェアエミュレーションのシナリオで、)VMA108および/またはVMB110をそれぞれ介したアプリケーション116、118、120の間の対話に関するどんな言及も、実際にはアプリケーション116、118、120とVMMとの間の対話であると解釈されるべきである。同様に、(おそらくコンピュータ命令をコンピュータハードウェア102に対して直接的または間接的に実行するための)アプリケーションVMA108および/またはVMB110と、ホストオペレーティングシステム104および/またはコンピュータハードウェア102との間の対話に関するどんな言及も、実際には、VMMと、適宜ホストオペレーティングシステム104またはコンピュータハードウェア102との間の対話であると解釈されるべきである。
(イベントインターセプトの概観)
本明細書で先に論じたように、バーチャライザは、コンピュータシステム上で稼動する薄いソフトウェア層であり、1つまたは複数の抽象仮想マシン(VM)インスタンス(それぞれは区分とも呼ばれる)を生み出すことを可能にする。これらの各インスタンスは通常、それ自体のメモリと、1つまたは複数のプロセッサと、I/Oデバイスと(これらは、実際の物理リソースに対応するか、または実際にはどんな物理的意味においても存在しない仮想化されたリソースに対応することができる)を備えた、実際のコンピュータのように振舞う。仮想化を実施するために、ほとんどのバーチャライザは、ゲストソフトウェアが区分中で実行される間に発生する特定のイベントをインターセプトする必要がある。(ゲストソフトウェアは、特定の仮想マシン内で稼動するソフトウェアであり、通常はオペレーティングシステムおよび1つまたは複数のアプリケーションからなる。)特定のイベントをインターセプトすることは、仮想化において重要である。というのは、そうすることによってバーチャライザは、実際には物理マシン上のすべてのリソースは共有または区分化されている(すなわち細分されて特定の仮想マシンに割り当てられている)ときに、ゲストを騙して、これらのリソースすべてを所有していると思わせることができるからである。例えば、4つのプロセッサと、プロセッサの総数を報告するレジスタとを有し、さらに、システム上で稼動する4つの仮想マシン(区分)を有するコンピュータシステムであって、各仮想マシンが単一のプロセッサに割り当てられているコンピュータシステムを考えてみる。この例で、これらの各仮想マシンのゲストソフトウェアが「プロセッサ数」レジスタを読み取るとき、通常は値「4」を読み取ることになる(これは実際には物理プロセッサの総数であり、したがって物理レジスタ中の値である)。しかしこの場合、バーチャライザは、各ゲストOSを騙して、1つのプロセッサシステム上で稼動していると認識させる必要がある。これを達成するために、バーチャライザは、ゲストが「プロセッサ数」レジスタから読み取るときに「インターセプト」イベントを生成するように、各仮想マシン(区分)の仮想プロセッサを構成する。このインターセプトは、VMがレジスタを直接に読み取るのを防止し、制御をゲストからバーチャライザに移行させる。次いでバーチャライザは、レジスタ中に実際に存在する正常値「4」を、バーチャライザが報告したい値、この場合なら「1」で、オーバーライド(上書き:override)することができる。
当業者には周知であり容易に理解されるように、一般にインターセプトは、プロセッサインターセプトとメモリインターセプトという2つの範疇に分けることが可能である。プロセッサインターセプトは、特定のプロセッサ命令、レジスタ、例外、または割込みに結び付けられるイベントである。メモリインターセプトは、指定のメモリ位置に対する読取りまたは書込みをプロセッサに行わせるアクションに特有であり、明示的なアクセス(例えば、メモリから読み取る「MOVE」命令)、または暗黙的なアクセス(例えば、プロセッサがTLB(translation look−aside buffer)ミスに応答してページテーブルを検索(walk)するときにプロセッサによって生成される参照)が含まれる。
従来、(各区分の外に存在する)バーチャライザは、インターセプトを「インストールする」ことと、インターセプトが発生したときにそれに「応答する」こととの両方を担う。インターセプトをインストールする技法は、当該のプロセッサアーキテクチャに大きく依存する。ほとんどのプロセッサは、いくつかのイベント時に「トラップ」する方法を提供する。いくつかの場合では、インターセプトに対する制御は、細粒または粗粒とすることが可能である。後者の場合、バーチャライザは、単一の粗粒インターセプトをインストールし、次いで、インターセプトしたい特定のイベントを「フィルタにかけて選び出し」、他のインターセプトイベントは無視する必要がある場合がある。プロセッサが特定のインターセプトタイプに対する細粒制御を提供する場合は、バーチャライザは、欲しいインターセプトだけを要求することが可能である。インターセプト報告は一般にかなりのオーバーヘッド処理コストを追加し、これはシステム性能を低下させるので、理想的には、インターセプトは、バーチャライザが標準的なプロセッサ挙動をオーバーライドする必要があるときにだけ行われるべきである。先の4プロセッサ4VMコンピュータシステムの例に再び言及するが、ユーザが4プロセッサの物理システム上で単一の4プロセッサ仮想マシンを構成した場合は、「プロセッサ数」レジスタへのアクセスをインターセプトする必要はなく、したがって、適切に書かれたバーチャライザなら、この場合にインターセプトを回避することになり、それにより、不要なオーバーヘッドコストおよび性能打撃(hit)を回避することになる。
インターセプトの必要を低減するための別の手法は、「シャドウレジスタ(shadow register)」の一般概念である。シャドウレジスタは、仮想マシン内で動作しているときにアクセスされる、実際のレジスタのコピーである。再び我々の先の例に言及するが、システムがシャドウ「プロセッサ数」レジスタを実装した場合、仮想化された環境の外で動作するプロセス(バーチャライザ自体を含む)は、このレジスタにアクセスして実際の値を読み取ることになるが、仮想化された環境の内で稼動するゲストプロセスの場合は、このレジスタにアクセスするとシャドウ値を読み取ることになり、バーチャライザは、シャドウレジスタが適切なプロセッサ数を報告するようにプログラム済みである。この情報をあらかじめプログラムしておくことにより、バーチャライザは、このレジスタアクセスに対するインターセプトを要求する必要はなく、その代わり、全般的に、各区分に実際の値ではなくシャドウ値を読み取らせる。しかし、この手法は、コストのかかるインターセプトイベントを回避するが、プロセッサがさらに複雑になること(通常は追加のレジスタ)を必要とし、その結果、(任意のアクションを実行可能な汎用インターセプトハンドラと比較して)フレキシビリティがいくらか減少する。
より具体的には、従来のバーチャライザは、本質的にモノリシックであった。すなわち、インターセプトをインストールすることと、インターセプトされるイベントが発生したときにそれに応答することとの両方を担っていた。したがって、これらのバーチャライザは今まで、必然的に複雑で厄介であった。図4は、プロセッサがサポートする手段が何であれ(例えば例外、デフォルト、トラップなど)それを介してインターセプトをインストールすることと、インターセプトされるイベントすべてに応答することとの両方を行う、従来のバーチャライザのモノリシックな性質を示すブロック図である。図では、物理コンピュータハードウェア402の上で動作するバーチャライザ404が、2つの仮想マシン環境VMA408およびVMB410を仮想化する。ゲストオペレーティングシステム(GOS)A412がVMA408中で実行され、GOSB414がVMB410中で実行される。ソフトウェアアプリケーションA1 416およびA2 418が、VMA408上のGOSA412中で実行され、ソフトウェアアプリケーションB1 420が、VMB410上のGOSB414中で実行される。この実施形態では、バーチャライザはハイパーバイザとして示されており(ただし、その他のバーチャライザも予期され使用できる)、VMA408は「1次区分」である。すなわち、VMAのゲストオペレーティングシステム(GOS)Aはハイパーバイザによって利用され、普通ならホストオペレーティングシステムから提供されるであろう機能を提供する(当業者には理解されるであろうが、ホストオペレーティングシステムは、この特定の仮想化構成では不要であり存在しない)。
インターセプトに関して、バーチャライザ404(やはりこの場合もハイパーバイザ)は、完全なインターセプト機能450を備え、これによりバーチャライザ404の複雑さは非常に高まる。したがって、この構成では、第1の区分(例えばVMA408)中のイベントがインターセプトを誘因(trigger)し、プロセッサに、第1の区分で稼動するゲストOS(例えばゲストOSA412)からバーチャライザ404に制御を移行させる。次いでバーチャライザ404は、インターセプトの原因を決定してそれに応答し、完了時に制御をゲストOSA412に返す。
(マルチレベルインターセプトイベント)
本発明の様々な実施形態は、バーチャライザとインターセプト処理方法とのためのマルチレベル設計を対象とし、このマルチレベル設計では、インターセプトに関係する複雑さの大部分をベースレベルのバーチャライザ(仮想化された環境の外で実行されるバーチャライザコンポーネント)の外に移して、各区分(仮想マシン)内にある外部モニタ中に置くことができる。この構成では、(いくつかの実施形態では汎用ハイパーバイザに統合することができる)ベースレベルのバーチャライザは単純なままであり、インターセプト処理のいくらかまたはすべては、各区分内すなわちゲストレベルで稼動する1つまたは複数の外部モニタによって、または、インターセプトイベントを生成した区分と同じ区分または異なる区分で実行される。
図5は、本発明のいくつかの実施形態に関するマルチレベルインターセプト手法を示すブロック図である。図では、物理コンピュータハードウェア502の上で動作するバーチャライザ504が、2つの仮想マシン環境VMA508およびVMB510を仮想化する。GOSA512がVMA508中で実行され、GOSB514がVMB510中で実行される。ソフトウェアアプリケーションA1 516およびA2 518が、VMA508上のGOSA512中で実行され、ソフトウェアアプリケーションB1 520が、VMB510上のGOSB514中で実行される。この実施形態でも、バーチャライザはやはりハイパーバイザとして示されており(ただし、その他のバーチャライザも予期され使用できる)、VMA508は「1次区分」である。すなわち、VMAのゲストオペレーティングシステム(GOS)Aはハイパーバイザによって利用され、普通ならホストオペレーティングシステムから提供されるであろう機能を提供する。
しかし、インターセプトに関して、バーチャライザ504(やはりこの場合もハイパーバイザ)は、最小限のインターセプト機能550だけを備え、その代わり、インターセプト機能の大部分は、各区分508および510中の1つまたは複数の外部モニタ(「EM」)562および564に組み込まれている(ここでは各区分のVM仮想化に組み込まれているのが示されているが、代替の実施形態では、区分中のVMとゲストOSとアプリケーションとに対する相対的なEMの位置は、異なってもよい)。
この構成では、図5と6の両方を参照すると(後者の図は、マルチレベル方法がインターセプトイベントを処理する方法を示すプロセスフロー図である)、ステップ602で、第1の区分(例えばVMA508)中のイベントがインターセプトを誘因し、ステップ604で、プロセッサに、第1の区分中で稼動するゲストOS(例えばゲストOSA512)からバーチャライザ504に制御を移行させる。ステップ606で、次いでバーチャライザ504は、それ自体のデフォルトの(かつ単純な)処理機構を使用してインターセプトを処理するか、あるいはインターセプトを「外部モニタ」(例えばEM562)に渡すかを決定する。例えばバーチャライザは、インターセプトのソースがデフォルト処理を要求した場合に、(ステップ608でインターセプトをそれ自体で処理する)前者を選択することができ、あるいは反対に、例えばデフォルト挙動を使用しないようインターセプトのソースが要求した場合に、(ステップ610を介してインターセプトをEMに転送する)後者を選択することができる。バーチャライザがインターセプトを処理するために外部モニタに転送しようとする場合、バーチャライザはまず、ステップ610で、インターセプトを処理することになる特定の外部モニタに信号を送り、ステップ612で、このEMが2つの方法のうちの一方でインターセプトに応答できるようにする。2つの方法は次のとおりである。(a)(EMが特定のインターセプトイベントを処理することができないときなど)EMは、ステップ614で、インターセプトをバーチャライザに返し、インターセプトを通常のデフォルト方式で処理するようバーチャライザに要求する。あるいは(b)EMは、ステップ616でインターセプトを処理する(かつ、いくつかの実施形態では、バーチャライザによるデフォルトアクションが不要であることをバーチャライザに通知する)。インターセプト処理が完了すると、ステップ618で、制御はインターセプトのソース(例えばゲストOSA412)に返される。
実施の際、外部モニタを各区分ごと、各仮想プロセッサごと、各インターセプトクラスごとにバーチャライザに登録することが可能であり、あるいは、登録の代わりに、インターセプトを処理する必要があるときにバーチャライザがEMをポーリングすることができる(すなわち、1つの外部モニタがインターセプトを処理すると決定するまで、順番に呼び出すことができる)。本発明のいくつかの実施形態では、外部モニタは区分ごとにのみ登録することができ、それにより、所与の区分に関するすべての要求されたインターセプトは、指定の外部モニタに向けられることになる。しかし、他の実施形態では、複数の区分が、様々な区分で稼動する代替の外部モニタを有することができ、これにより、各外部モニタが各区分に対してわずかに異なる挙動(例えば異なるバージョンの外部モニタ)を有することができる。
いくつかの実施形態では、循環依存およびデッドロック状況を防止するために、区分はそれ自体のインターセプトを処理することが許されないものとすることができる。したがって、これらの実施形態では、各区分の外部モニタは別の区分内で稼動する必要がある。1次区分を有するハイパーバイザベースのシステムでは、当業者には理解されるように、このことは、少なくとも1つの区分(1次区分)は外部モニタを有することが不可能であることを意味し、したがって、このような実施形態の1次区分は、バーチャライザ(ハイパーバイザ)によって提供されるデフォルトのインターセプト処理だけに依拠することが可能である。他方、(ホストオペレーティングシステムを有する)ホストされるシステムに関するいくつかの代替の実施形態では、循環依存およびデッドロック状況に関する同様の懸念は実際のホストオペレーティングシステムには当てはまらないので、外部モニタはホストOSおよびすべての区分内で稼動することが可能である。
(代替の実施形態)
本明細書で先に述べたように、インターセプトは、メモリインターセプトとプロセッサインターセプトという2つのクラスに分けることが可能である。とりわけ、メモリインターセプトは、メモリマップレジスタ、ROM、プレーナVRAMなど、通常のRAMのように働かないメモリの領域を仮想化するのに使用され、限定はされないが次のことのために使用することができる。すなわち、読取り(1から16バイト)と、書込み(1から16バイト)と、ロック付き読取り/修正/書込み論理演算AND、OR、XOR(1、2、4、または8バイト)と、ロック付き読取り/修正/書込み算術演算ADD、SUB(1、2、4、または8バイト)と、ロック付き比較演算XCHG、CMPXCHG(1、2、4、または8バイト)である。対照的に、とりわけ、プロセッサインターセプトは、次のことのために使用することができる。すなわち、HLT、PAUSE、およびCPUID命令と、制御レジスタ(CR)、デバッグレジスタ(DR)、モデル固有レジスタ(MSR)へのアクセスと、特定の例外と、外部割込みと、I/Oポートへのアクセス(IN/OUT命令)と、致命的例外(例えばトリプルフォールト)である。
加えて、本発明のいくつかの実施形態では、ゲスト命令の途中でインターセプトを外部モニタに報告することができる。例えば、単一の命令が、関連するインターセプトを有する2つのメモリアドレスにアクセスする場合がある。この場合、ゲスト命令を完了することができる前に、両方のインターセプトを処理する必要がある。これらのインターセプトは、連続的に検出および処理され、いくつかの実施形態では、バーチャライザは命令完了を実施することを担う。例えば、CPUIDは、レジスタEAX、EDX、EBX、ECX中の、プロセッサに関する情報を返し、バーチャライザがCPUIDインターセプトを外部モニタに報告するために選択できる方法は2つある。すなわち、(a)外部モニタは、CPUID命令を完了し、逆に適切なレジスタに値を書き込み、CPUID命令を通過してEIP(命令ポインタ)をインクリメントするか、あるいは(b)外部モニタは、CPUID命令から提供して欲しい値を返す。前者の場合では、バーチャライザは、命令間のインターセプトを配信している。外部モニタから見ると、仮想化されたプロセッサはまだCPUID命令を実行しておらず、外部モニタがインターセプトの処理を終えたとき、CPUID命令の実行は完了することになる。他方、後者の場合では、バーチャライザは、逆にこれらの値を適切なレジスタに書き込み、CPUID命令の最後を通過してEIPをインクリメントすることを担う。この方法は、バーチャライザが命令中インターセプトを配信しているとき、より単純な外部モニタおよびよりよい性能をもたらし、外部モニタから見ると、仮想化されたプロセッサはCPUID命令を実行し始めている。外部モニタがインターセプトの処理を終えたとき、バーチャライザはCPUID命令を完了することになる。加えて、いくつかの実施形態は、可能な場合は常に命令中インターセプトをサポートする。というのは、より単純な外部モニタインタフェースがもたらされるとともに、例外に対するインターセプトや、命令境界で必然的に発生する割込みなど、命令間インターセプトも可能だからである。
さらに、前に論じたように、ベースレベルモニタは、各インターセプトタイプにつき、「デフォルトの」(通常は単純な)処理を定義する。例えば、CPUID命令はデフォルトで、物理プロセッサが通常返すことになるのと同じCPU情報を返し、致命的例外(例えばx86アーキテクチャに対するトリプルフォールト)はデフォルトで、区分を終了させる。しかし、いくつかの実施形態では、外部モニタは、基礎をなすバーチャライザを呼び出して、どのインターセプトをオーバーライドしたいかを指定することにより、特定のインターセプトクラスのデフォルトの挙動をオーバーライドすることができ、オーバーライドされないインターセプトは、引き続きデフォルト方式で処理される。
ほとんどのバーチャライザはまた、明確に定義された機構を介してゲストソフトウェアがバーチャライザと通信できるようにもする。本発明のいくつかの実施形態では、これは、総合MSR(モデル固有レジスタ)を使用することによって行うことができる。外部モニタがこれらのMSRアクセスの挙動をオーバーライドできるようにすることによって、外部モニタは、バーチャライザが存在しないように見せることが可能である。バーチャライザはまた、異なるバージョンのハイパーバイザまたはVMMの存在をシミュレートすることも可能である。これは、再帰的な仮想化を可能にする。すなわち、ハイパーバイザまたはVMMは、別のハイパーバイザまたはVMMの最上部で稼動する区分内で稼動することができる。これは、ハイパーバイザ/VMMの新バージョンのプロトタイプを作成すること、古い方のバージョンとの後方互換性を提供すること、または第三者の実装との互換性を提供することのために有用となることが可能である。
ベースレベルのバーチャライザと外部モニタとの両方を含む設計では、インターセプトが発生したときに外部モニタに信号を送り、任意選択でインターセプト関係のパラメータを渡す方法が必要である。外部モニタは、今は他のコードの実行に使用されているかもしれない別の区分で稼動しているので、いくつかの実施形態では、この信号を配信するための非同期機構が必要である。一実装形態では、この信号は、総合割込みとして配信することができる(本明細書で先に挙げた相互参照の特許出願を参照されたい)。従来のプロセッサ割込み機構は、特定の割込みソースに応答して割込みハンドラを実行することを必要とするが、総合割込みコントローラは、この機構を拡張して、割込みハンドラにパラメータを渡せるようにする。インターセプトの場合、これらのパラメータは、保留中のインターセプトに関する情報を示し、外部モニタは、この情報を使用して効率的にインターセプトを処理することが可能である。
(結び)
本明細書に述べた様々なシステム、方法、および技法は、ハードウェアまたはソフトウェア、あるいは適切ならこの両方の組合せで実施することができる。したがって、本発明の方法および装置、またはそのいくつかの態様または部分は、フロッピー(登録商標)ディスケット、CD−ROM、ハードドライブ、またはその他の任意のマシン読み取り可能な記憶媒体など、有形媒体に組み入れられたプログラムコード(すなわち命令)の形をとることができ、プログラムコードがコンピュータなどのマシンにロードされマシンによって実行されると、このマシンは本発明を実施するための装置になる。プログラムコードがプログラム可能なコンピュータ上で実行される場合、コンピュータは一般に、プロセッサと、プロセッサによって読取り可能な記憶媒体(揮発性と不揮発性のメモリおよび/または記憶素子を含む)と、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスとを備えることになる。1つまたは複数のプログラムは、コンピュータシステムと通信するために高レベルのプロシージャ指向またはオブジェクト指向プログラミング言語で実現されることが好ましい。しかし、1つまたは複数のプログラムは、望むならアセンブリ言語またはマシン言語で実現することが可能である。いずれの場合でも、言語はコンパイルまたは解釈される言語とすることができ、ハードウェア実装形態と組み合わせることができる。
本発明の方法および装置はまた、電気ワイヤリングまたはケーブリング、光ファイバ、あるいはその他の任意の形の伝送など、何らかの伝送媒体を介して伝送されるプログラムコードの形で具体化することもでき、プログラムコードが、EPROM、ゲートアレイ、プログラマブルロジックデバイス(PLD)、クライアントコンピュータ、ビデオレコーダなどのマシンによって受け取られてロードおよび実行されると、このマシンは本発明を実施するための装置になる。汎用プロセッサ上で実施されるとき、プログラムコードは、プロセッサと組み合わさって、本発明の索引付け機能を実施するように動作する独特の装置を提供する。
様々な図の好ましい実施形態に関して本発明を述べたが、本発明を逸脱することなく、その他の類似の実施形態を使用して、または述べた実施形態に修正および追加を施して、本発明と同じ機能を実施することもできることを理解されたい。例えば、本発明の例示的な実施形態は、パーソナルコンピュータの機能をエミュレートするディジタルデバイスのコンテキストで述べたが、本発明は、本明細書に述べたようなディジタルデバイスに限定されず、ゲーム用コンソール、ハンドヘルドコンピュータ、ポータブルコンピュータなど、有線であれ無線であれ既存のまたは新たに出現する任意の数のコンピューティングデバイスまたは環境にも適用することができ、通信ネットワークを介して接続されネットワークを介して対話する任意の数のこのようなコンピューティングデバイスに適用することができることは、当業者なら理解するであろう。さらに、特に無線ネットワーク化デバイスの数が急増し続けているので、本明細書では、ハンドヘルドデバイスオペレーティングシステムやその他の特定用途向けハードウェア/ソフトウェアインタフェースシステムを含めて、様々なコンピュータプラットフォームが企図されることを強調しておくべきである。したがって、本発明は、いずれか単一の実施形態に限定されるべきではなく、添付の特許請求の範囲による幅および範囲で解釈されるべきである。
最後に、本明細書に記載の開示した実施形態は、他のプロセッサアーキテクチャ、コンピュータベースのシステム、またはシステム仮想化で使用されるように適合させることもでき、そのような実施形態も、本明細書で行った開示によって明白に予期され、したがって本発明は、本明細書に述べた特定の実施形態に限定されるべきではなく、最も広範に解釈されるべきである。同様に、プロセッサ仮想化以外の目的で総合命令を使用することも、本明細書で行った開示によって明白に予期され、プロセッサ仮想化以外のコンテキストにおけるこのようなどんな総合命令利用も、本明細書で行った開示の中に最も広範に読み込まれるべきである。
本発明の態様を組み込むことのできるコンピュータシステムを表すブロック図である。 コンピュータシステム中のエミュレートされた動作環境での、ハードウェアおよびソフトウェアアーキテクチャの論理階層化を示す図である。 エミュレーションがホストオペレーティングシステムによって(直接にまたはハイパーバイザを介して)実行される、仮想化されたコンピューティングシステムを示す図である。 ホストオペレーティングシステムと並行して稼動する仮想マシンモニタによってエミュレーションが実行される、代替の仮想化されたコンピューティングシステムを示す図である。 プロセッサがサポートする手段が何であれ(例えば例外、デフォルト、トラップなど)それを介してインターセプトをインストールすることと、インターセプトされたイベントすべてに応答することとの両方を行う、従来のバーチャライザのモノリシックな性質を示すブロック図である。 本発明のいくつかの実施形態に関するマルチレベルインターセプト手法を示すブロック図である。 マルチレベル方法がインターセプトイベントを処理する方法を示すプロセスフロー図である。
符号の説明
92 物理ハードウェアアーキテクチャ
94 エミュレーションプログラム
96 ゲストハードウェアアーキテクチャ(仮想マシン)
98 ゲストオペレーティングシステム
100 ソフトウェアアプリケーション

Claims (12)

  1. 仮想マシン環境内の区分に対するインターセプトを処理するためのシステムであって、前記仮想マシン環境はバーチャライザおよび少なくとも1つの区分を含み、前記システムは
    区分において発生した特定のイベントをインターセプトして、該インターセプトされたイベントを外部モニタに転送するバーチャライザと
    前記バーチャイラザから前記インターセプトされたイベントを受け取ると、前記区分のオペレーティングシステムによる仮想プロセッサの制御を一時停止させて、前記インターセプトされたイベントを実行し、該実行中のインターセプトされたイベントに対応するように前記区分の仮想プロセッサの状態を修正し、前記インターセプトされたイベントの実行が終了すると前記区分の前記オペレーティングシステムに制御を返す、外部モニタと
    を備えことを特徴とするシステム。
  2. 前記バーチャライザは、前記インターセプトされたイベントを発生させた前記区分の前記オペレーティングシステムの要求に応じて、記インターセプトされたイベントを前記外部モニタに転送せずに前記バーチャライザ自身で処理することを特徴とする請求項1に記載のシステム。
  3. 記インターセプトされたイベントは、読取りと、書込みと、ロック付き読取り/修正/書込み論理演算AND、ORまたはXORと、ロック付き読取り/修正/書込み算術演算ADDまたはSUBと、ロック付き比較演算XCHGおよびCMPXCHGと、HLT、PAUSEまたはCPUID命令と、制御レジスタ(CR)、デバッグレジスタ(DR)およびモデル固有レジスタ(MSR)へのアクセスと、特定の例外と、外部割込みと、I/Oポートへのアクセスと、致命的例外とうちのいずれかのイベントであることを特徴とする請求項1に記載のシステム。
  4. 記インターセプトされたイベントは、プロセッサインターセプトタイプとメモリインターセプトタイプのいずれかであり、前記プロセッサインターセプトタイプは、特定のプロセッサ命令、レジスタ、例外、または割込みに関連付けられるイベントであり、前記メモリインターセプトタイプは、特定のメモリ位置にアクセスするイベントであり、記インターセプトされたイベントのタイプは、前記バーチャライザから独立に前記区分によって指定されることを特徴とする請求項1に記載のシステム。
  5. 仮想マシン環境内の区分に対するインターセプトを処理する方法であって、前記仮想マシン環境は、バーチャライザおよび少なくとも1つの区分を備え、前記方法は、
    前記バーチャライザが、において発生した特定のイベントをインターセプトすることと、
    前記バーチャライザが、前記インターセプトされたイベントを特定の区分内で稼働している外部モニタに転送することと、
    前記外部モニタが、前記区のオペレーティングシステムによる仮想プロセッサの制御を一時停止させることと、
    前記外部モニタが、前記インターセプトされたイベントを実行することと、
    前記外部モニタが、実行中の前記インターセプトされたイベントに対応するように前記区分の前記仮想プロセッサの状態を修正することと、
    前記外部モニタが、前記インターセプトされたイベントの実行が終了すると前記区分の前記オペレーティングシステムに制御を返すことと
    を備えることを特徴とする方法。
  6. 前記バーチャライザは、前記インターセプトされたイベントを発生させた前記区分の前記オペレーティングシステムの要求に応じて、記インターセプトされたイベントを前記外部モニタに転送せずに前記バーチャライザ自身で処理することを特徴とする請求項に記載の方法。
  7. 記インターセプトされたイベントは、読取りと、書込みと、ロック付き読取り/修正/書込み論理演算AND、ORまたはXORと、ロック付き読取り/修正/書込み算術演算ADDまたはSUBと、ロック付き比較演算XCHGおよびCMPXCHGと、HLT、PAUSEまたはCPUID命令と、制御レジスタ(CR)、デバッグレジスタ(DR)およびモデル固有レジスタ(MSR)へのアクセスと、特定の例外と、外部割込みと、I/Oポートへのアクセスと、致命的例外とうちのいずれかのイベントであることを特徴とする請求項に記載の方法。
  8. 記インターセプトされたイベントは、プロセッサインターセプトタイプとメモリインターセプトタイプのいずれかであり、前記プロセッサインターセプトタイプは、特定のプロセッサ命令、レジスタ、例外、または割込みに関連付けられるイベントであり、前記メモリインターセプトタイプは、特定のメモリ位置にアクセスするイベントであり、記インターセプトされたイベントのタイプは、前記バーチャライザから独立に前記区分によって指定されることを特徴とする請求項に記載の方法。
  9. 仮想マシン環境内の区分に対するインターセプトを処理するためのコンピュータ実行可能な命令を記録したコンピュータ読み取り可能な記録媒体であって、前記仮想マシン環境はバーチャライザおよび少なくとも1つの区分を備え、前記コンピュータ実行可能な命令は、
    前記バーチャライザが、において発生した特定のイベントをインターセプトするための命令と、
    前記バーチャライザが、前記インターセプトされたイベントを特定の区分内で稼働している外部モニタに転送するための命令と、
    前記外部モニタが、前記区分のオペレーティングシステムによる仮想プロセッサの制御を一時停止するための命令と、
    前記外部モニタが、前記インターセプトされたイベントを実行するための命令と、
    前記外部モニタが、実行中の前記インターセプトされたイベントに対応するように前記区分の前記仮想プロセッサの状態を修正するための命令と、
    前記外部モニタが、前記インターセプトされたイベントの実行が終了すると前記区分の前記オペレーティングシステムに制御を返すための命令と
    を備えることを特徴とするコンピュータ読み取り可能な記録媒体。
  10. 前記コンピュータ実行可能な命令は、前記バーチャライザが、前記インターセプトされたイベントを発生させた前記区分の前記オペレーティングシステムの要求に応じて、記インターセプトされたイベントを前記外部モニタに転送せずに、前記インターセプトされたイベントを前記バーチャライザ自身で処理するための命令をさらに備えることを特徴とする請求項に記載のコンピュータ読み取り可能な記録媒体。
  11. 記インターセプトされたイベントは、読取りと、書込みと、ロック付き読取り/修正/書込み論理演算AND、ORまたはXORと、ロック付き読取り/修正/書込み算術演算ADDまたはSUBと、ロック付き比較演算XCHGおよびCMPXCHGと、HLT、PAUSEまたはCPUID命令と、制御レジスタ(CR)、デバッグレジスタ(DR)およびモデル固有レジスタ(MSR)へのアクセスと、特定の例外と、外部割込みと、I/Oポートへのアクセスと、致命的例外とうちのいずれかのイベントであることを特徴とする請求項に記載のコンピュータ読み取り可能な記録媒体。
  12. 記インターセプトされたイベントは、プロセッサインターセプトタイプとメモリインターセプトタイプのいずれかであり、前記プロセッサインターセプトタイプは、特定のプロセッサ命令、レジスタ、例外、または割込みに関連付けられるイベントであり、前記メモリインターセプトタイプは、特定のメモリ位置にアクセスするイベントであり、記インターセプトされたイベントのタイプは、前記バーチャライザから独立に前記区分によって指定されることを特徴とする請求項に記載のコンピュータ読み取り可能な記録媒体。
JP2006067701A 2005-03-11 2006-03-13 仮想マシン環境におけるマルチレベルインターセプト処理のためのシステムおよび方法 Expired - Fee Related JP5079246B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/078,141 US7685635B2 (en) 2005-03-11 2005-03-11 Systems and methods for multi-level intercept processing in a virtual machine environment
US11/078,141 2005-03-11

Publications (3)

Publication Number Publication Date
JP2006252565A JP2006252565A (ja) 2006-09-21
JP2006252565A5 JP2006252565A5 (ja) 2009-05-28
JP5079246B2 true JP5079246B2 (ja) 2012-11-21

Family

ID=36602706

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006067701A Expired - Fee Related JP5079246B2 (ja) 2005-03-11 2006-03-13 仮想マシン環境におけるマルチレベルインターセプト処理のためのシステムおよび方法

Country Status (12)

Country Link
US (1) US7685635B2 (ja)
EP (1) EP1701259A3 (ja)
JP (1) JP5079246B2 (ja)
KR (1) KR20060097597A (ja)
CN (1) CN1831775B (ja)
AU (1) AU2006200310A1 (ja)
BR (1) BRPI0600711A (ja)
CA (1) CA2535184A1 (ja)
MX (1) MXPA06001711A (ja)
RU (1) RU2412468C2 (ja)
TW (1) TW200636567A (ja)
ZA (1) ZA200601172B (ja)

Families Citing this family (120)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7231665B1 (en) * 2001-07-05 2007-06-12 Mcafee, Inc. Prevention of operating system identification through fingerprinting techniques
US8539063B1 (en) 2003-08-29 2013-09-17 Mcafee, Inc. Method and system for containment of networked application client software by explicit human input
US7840968B1 (en) 2003-12-17 2010-11-23 Mcafee, Inc. Method and system for containment of usage of language interfaces
US7873955B1 (en) * 2004-09-07 2011-01-18 Mcafee, Inc. Solidifying the executable software set of a computer
US7707629B2 (en) * 2005-03-31 2010-04-27 Intel Corporation Platform configuration register virtualization apparatus, systems, and methods
US7856661B1 (en) 2005-07-14 2010-12-21 Mcafee, Inc. Classification of software on networked systems
US9785485B2 (en) 2005-07-27 2017-10-10 Intel Corporation Virtualization event processing in a layered virtualization architecture
US8327353B2 (en) * 2005-08-30 2012-12-04 Microsoft Corporation Hierarchical virtualization with a multi-level virtualization mechanism
US7757269B1 (en) 2006-02-02 2010-07-13 Mcafee, Inc. Enforcing alignment of approved changes and deployed changes in the software change life-cycle
US7895573B1 (en) 2006-03-27 2011-02-22 Mcafee, Inc. Execution environment file inventory
US8352930B1 (en) 2006-04-24 2013-01-08 Mcafee, Inc. Software modification by group to minimize breakage
US8555404B1 (en) 2006-05-18 2013-10-08 Mcafee, Inc. Connectivity-based authorization
US8365294B2 (en) * 2006-06-30 2013-01-29 Intel Corporation Hardware platform authentication and multi-platform validation
US9317309B2 (en) 2006-12-28 2016-04-19 Hewlett-Packard Development Company, L.P. Virtualized environment allocation system and method
US8332929B1 (en) 2007-01-10 2012-12-11 Mcafee, Inc. Method and apparatus for process enforced configuration management
US9424154B2 (en) 2007-01-10 2016-08-23 Mcafee, Inc. Method of and system for computer system state checks
US8099274B2 (en) * 2007-03-30 2012-01-17 International Business Machines Corporation Facilitating input/output processing of one or more guest processing systems
US8055951B2 (en) * 2007-04-10 2011-11-08 International Business Machines Corporation System, method and computer program product for evaluating a virtual machine
US8561060B2 (en) * 2007-04-26 2013-10-15 Advanced Micro Devices, Inc. Processor and method configured to determine an exit mechanism using an intercept configuration for a virtual machine
US8903938B2 (en) 2007-06-18 2014-12-02 Amazon Technologies, Inc. Providing enhanced data retrieval from remote locations
US20090006690A1 (en) * 2007-06-27 2009-01-01 Balaji Vembu Providing universal serial bus device virtualization with a schedule merge from multiple virtual machines
US8266387B2 (en) * 2007-06-27 2012-09-11 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization emulation
US8151264B2 (en) * 2007-06-29 2012-04-03 Intel Corporation Injecting virtualization events in a layered virtualization architecture
US8307360B2 (en) * 2008-01-22 2012-11-06 Advanced Micro Devices, Inc. Caching binary translations for virtual machine guest
US8819647B2 (en) * 2008-01-25 2014-08-26 International Business Machines Corporation Performance improvements for nested virtual machines
US8701189B2 (en) 2008-01-31 2014-04-15 Mcafee, Inc. Method of and system for computer system denial-of-service protection
US7975017B1 (en) * 2008-02-27 2011-07-05 Parallels Holdings, Ltd. Method and system for remote device access in virtual environment
US8805947B1 (en) * 2008-02-27 2014-08-12 Parallels IP Holdings GmbH Method and system for remote device access in virtual environment
US8627299B2 (en) 2008-02-29 2014-01-07 International Business Machines Corporation Virtual machine and programming language for event processing
US8365149B2 (en) * 2008-02-29 2013-01-29 International Business Machines Corporation Debugger for a declarative event-driven programming model
US8397216B2 (en) * 2008-02-29 2013-03-12 International Business Machines Corporation Compiler for a declarative event-driven programming model
US8615502B2 (en) 2008-04-18 2013-12-24 Mcafee, Inc. Method of and system for reverse mapping vnode pointers
US8195774B2 (en) * 2008-05-23 2012-06-05 Vmware, Inc. Distributed virtual switch for virtualized computer systems
US8230155B2 (en) 2008-06-26 2012-07-24 Microsoft Corporation Direct memory access filter for virtualized operating systems
US8151032B2 (en) * 2008-06-26 2012-04-03 Microsoft Corporation Direct memory access filter for virtualized operating systems
US7827321B2 (en) 2008-10-02 2010-11-02 International Business Machines Corporation Central processing unit measurement facility
US9449314B2 (en) * 2008-10-02 2016-09-20 International Business Machines Corporation Virtualization of a central processing unit measurement facility
US20100100955A1 (en) * 2008-10-16 2010-04-22 Numobiq Inc. System and method for secure os access in an ecma-script virtual machine
CN101727331B (zh) * 2008-10-24 2013-03-20 国际商业机器公司 升级活动虚拟机的客户操作系统的方法和设备
JP5405799B2 (ja) * 2008-10-30 2014-02-05 株式会社日立製作所 仮想計算機の制御方法、仮想化プログラム及び仮想計算機システム
US8544003B1 (en) 2008-12-11 2013-09-24 Mcafee, Inc. System and method for managing virtual machine configurations
US8387031B2 (en) * 2009-01-23 2013-02-26 International Business Machines Corporation Providing code improvements for nested virtual machines
US8650562B2 (en) * 2009-06-12 2014-02-11 International Business Machines Corporation Method and apparatus for scalable monitoring of virtual machine environments combining base virtual machine and single monitoring agent for measuring common characteristics and individual virtual machines measuring individualized characteristics
US8341627B2 (en) * 2009-08-21 2012-12-25 Mcafee, Inc. Method and system for providing user space address protection from writable memory area in a virtual environment
US8381284B2 (en) * 2009-08-21 2013-02-19 Mcafee, Inc. System and method for enforcing security policies in a virtual environment
US9552497B2 (en) * 2009-11-10 2017-01-24 Mcafee, Inc. System and method for preventing data loss using virtual machine wrapped applications
US10089119B2 (en) 2009-12-18 2018-10-02 Microsoft Technology Licensing, Llc API namespace virtualization
JP5626839B2 (ja) * 2010-03-19 2014-11-19 富士通株式会社 仮想計算機システム、仮想計算機制御装置および仮想計算機システムの実行方法
US8898664B2 (en) 2010-06-01 2014-11-25 Microsoft Corporation Exposure of virtual cache topology to a guest operating system
US8443376B2 (en) 2010-06-01 2013-05-14 Microsoft Corporation Hypervisor scheduler
US8925101B2 (en) 2010-07-28 2014-12-30 Mcafee, Inc. System and method for local protection against malicious software
US8938800B2 (en) 2010-07-28 2015-01-20 Mcafee, Inc. System and method for network level protection against malicious software
US8549003B1 (en) 2010-09-12 2013-10-01 Mcafee, Inc. System and method for clustering host inventories
GB2512667B (en) * 2010-10-12 2019-07-24 Hewlett Packard Development Co Managing shared data using a virtual machine
US8458698B2 (en) * 2010-11-18 2013-06-04 International Business Machines Corporation Improving performance in a nested virtualized environment
US9075993B2 (en) 2011-01-24 2015-07-07 Mcafee, Inc. System and method for selectively grouping and managing program files
US9292329B2 (en) 2011-02-10 2016-03-22 Microsoft Technology Licensing, Llc Virtual switch interceptor
US9112830B2 (en) 2011-02-23 2015-08-18 Mcafee, Inc. System and method for interlocking a host and a gateway
US9298910B2 (en) 2011-06-08 2016-03-29 Mcafee, Inc. System and method for virtual partition monitoring
US9311126B2 (en) 2011-07-27 2016-04-12 Mcafee, Inc. System and method for virtual partition monitoring
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US8695021B2 (en) 2011-08-31 2014-04-08 Microsoft Corporation Projecting native application programming interfaces of an operating system into other programming languages
US9594881B2 (en) 2011-09-09 2017-03-14 Mcafee, Inc. System and method for passive threat detection using virtual memory inspection
US9037511B2 (en) 2011-09-29 2015-05-19 Amazon Technologies, Inc. Implementation of secure communications in a support system
US8695010B2 (en) 2011-10-03 2014-04-08 International Business Machines Corporation Privilege level aware processor hardware resource management facility
US8694738B2 (en) 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
US8973144B2 (en) 2011-10-13 2015-03-03 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US9069586B2 (en) 2011-10-13 2015-06-30 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US8713668B2 (en) 2011-10-17 2014-04-29 Mcafee, Inc. System and method for redirected firewall discovery in a network environment
US8800024B2 (en) 2011-10-17 2014-08-05 Mcafee, Inc. System and method for host-initiated firewall discovery in a network environment
US9804870B2 (en) * 2011-10-28 2017-10-31 Intel Corporation Instruction-set support for invocation of VMM-configured services without VMM intervention
US9152548B2 (en) * 2012-01-17 2015-10-06 Vmware, Inc. Controlling access to a privileged resource in user-mode system level mobile virtualization using a ptrace () system call
US8739272B1 (en) 2012-04-02 2014-05-27 Mcafee, Inc. System and method for interlocking a host and a gateway
EP2926258B1 (en) * 2012-11-29 2021-10-27 Hewlett-Packard Development Company, L.P. Memory module including memory resistors
US8973146B2 (en) 2012-12-27 2015-03-03 Mcafee, Inc. Herd based scan avoidance system in a network environment
JP2013061994A (ja) * 2013-01-07 2013-04-04 Fujitsu Ltd ウイルス検出プログラム、ウイルス検出方法、監視プログラム、監視方法、及びコンピュータ
US9292331B2 (en) 2013-03-15 2016-03-22 Bracket Computing, Inc. Expansion of services for a virtual data center guest
JP6029550B2 (ja) * 2013-07-19 2016-11-24 株式会社日立製作所 計算機の制御方法及び計算機
CN105580023B (zh) 2013-10-24 2019-08-16 迈克菲股份有限公司 网络环境中的代理辅助的恶意应用阻止
JP6111181B2 (ja) * 2013-10-31 2017-04-05 株式会社日立製作所 計算機の制御方法及び計算機
RU2566253C1 (ru) * 2014-06-09 2015-10-20 Общество с ограниченной ответственностью "НеоБИТ" Способ обработки блока данных
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
US9852295B2 (en) 2015-07-14 2017-12-26 Bitdefender IPR Management Ltd. Computer security systems and methods using asynchronous introspection exceptions
US10361972B2 (en) * 2015-09-23 2019-07-23 Citrix Systems, Inc. Systems and methods to support VXLAN in partition environment where a single system acts as multiple logical systems to support multitenancy
US10963280B2 (en) 2016-02-03 2021-03-30 Advanced Micro Devices, Inc. Hypervisor post-write notification of control and debug register updates
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US10116630B2 (en) * 2016-04-04 2018-10-30 Bitdefender IPR Management Ltd. Systems and methods for decrypting network traffic in a virtualized environment
US10127068B2 (en) * 2016-06-30 2018-11-13 Amazon Technologies, Inc. Performance variability reduction using an opportunistic hypervisor
US10318737B2 (en) 2016-06-30 2019-06-11 Amazon Technologies, Inc. Secure booting of virtualization managers
US10140448B2 (en) 2016-07-01 2018-11-27 Bitdefender IPR Management Ltd. Systems and methods of asynchronous analysis of event notifications for computer security applications
US20190065333A1 (en) * 2017-08-23 2019-02-28 Unisys Corporation Computing systems and methods with functionalities of performance monitoring of the underlying infrastructure in large emulated system
US11281495B2 (en) 2017-10-26 2022-03-22 Advanced Micro Devices, Inc. Trusted memory zone
DE112018007104T5 (de) * 2018-03-20 2020-10-29 Mitsubishi Electric Corporation Informationsverarbeitungsgerät, Verfahren und Programm
US11029986B2 (en) * 2018-05-25 2021-06-08 Microsoft Technology Licensing, Llc Processor feature ID response for virtualization
US11218364B2 (en) 2018-06-25 2022-01-04 Amazon Technologies, Inc. Network-accessible computing service for micro virtual machines
US12106132B2 (en) 2018-11-20 2024-10-01 Amazon Technologies, Inc. Provider network service extensions
US10833949B2 (en) 2018-11-20 2020-11-10 Amazon Technologies, Inc Extension resource groups of provider network services
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
US11182192B2 (en) 2019-03-08 2021-11-23 International Business Machines Corporation Controlling access to secure storage of a virtual machine
US11455398B2 (en) 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US10848418B1 (en) 2019-06-24 2020-11-24 Amazon Technologies, Inc. Packet processing service extensions at remote premises
US11243589B1 (en) 2019-09-24 2022-02-08 Amazon Technologies, Inc. Remote power button actuation device for a pre-assembled computer system integrated into a server for a virtualization service
US11853771B1 (en) 2019-09-24 2023-12-26 Amazon Technologies, Inc. Offload card based virtualization of a pre-assembled computer system integrated into a server for a virtualization service
US11064017B2 (en) 2019-09-24 2021-07-13 Amazon Technologies, Inc. Peripheral device enabling virtualized computing service extensions
US11113046B1 (en) 2019-09-24 2021-09-07 Amazon Technologies, Inc. Integration and remote control of a pre-assembled computer system into a server for a virtualization service
US11520530B2 (en) 2019-09-24 2022-12-06 Amazon Technologies, Inc. Peripheral device for configuring compute instances at client-selected servers
US11650869B2 (en) 2019-11-27 2023-05-16 Amazon Technologies, Inc. Quantum computing service with local edge devices supporting multiple quantum computing technologies
US11704715B2 (en) 2019-11-27 2023-07-18 Amazon Technologies, Inc. Quantum computing service supporting multiple quantum computing technologies
US11605016B2 (en) 2019-11-27 2023-03-14 Amazon Technologies, Inc. Quantum computing service supporting local execution of hybrid algorithms
US11605033B2 (en) 2019-11-27 2023-03-14 Amazon Technologies, Inc. Quantum computing task translation supporting multiple quantum computing technologies
KR20210066288A (ko) 2019-11-28 2021-06-07 한국전자통신연구원 전자 장치, 인터럽트 설정 제어 방법 및 저장 매체
CN111026504B (zh) * 2019-12-06 2023-04-07 海光信息技术股份有限公司 配置虚拟机中获取处理器信息的指令的处理方法、装置、cpu芯片、片上系统和计算机
CN111143265B (zh) * 2019-12-30 2022-09-20 锐捷网络股份有限公司 一种基于虚拟机的数据传输方法及装置
US11569997B1 (en) 2020-03-09 2023-01-31 Amazon Technologies, Inc. Security mechanisms for data plane extensions of provider network services
CN112380718B (zh) * 2020-11-20 2023-08-01 中国运载火箭技术研究院 自适应装备模拟器适配器
US11977957B2 (en) 2021-08-03 2024-05-07 Amazon Technologies, Inc. Quantum computing program compilation using cached compiled quantum circuit files
US11797276B1 (en) 2021-09-30 2023-10-24 Amazon Technologies, Inc. Assisted composition of quantum algorithms
US11907092B2 (en) 2021-11-12 2024-02-20 Amazon Technologies, Inc. Quantum computing monitoring system

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4253145A (en) * 1978-12-26 1981-02-24 Honeywell Information Systems Inc. Hardware virtualizer for supporting recursive virtual computer systems on a host computer system
US4787031A (en) 1985-01-04 1988-11-22 Digital Equipment Corporation Computer with virtual machine mode and multiple protection rings
JPS62221041A (ja) * 1986-03-24 1987-09-29 Hitachi Ltd 仮想計算機システムにおけるデイスパツチ制御装置
JP2705121B2 (ja) * 1988-07-08 1998-01-26 株式会社日立製作所 電子計算機システム
JP3138985B2 (ja) * 1989-03-14 2001-02-26 富士通株式会社 仮想計算機
JP2864255B2 (ja) * 1989-09-14 1999-03-03 富士通株式会社 仮想計算機方式の計算機システム
JP3543441B2 (ja) * 1995-09-19 2004-07-14 株式会社日立製作所 大域的なリソースキャッピング方法
JPH09282196A (ja) * 1996-04-18 1997-10-31 Hitachi Ltd 複合論理プロセッサシステムのプログラム走行制御方式
US6438671B1 (en) 1999-07-01 2002-08-20 International Business Machines Corporation Generating partition corresponding real address in partitioned mode supporting system
JP3630087B2 (ja) * 2000-05-10 2005-03-16 日本電気株式会社 自動データ処理装置
US7085705B2 (en) 2000-12-21 2006-08-01 Microsoft Corporation System and method for the logical substitution of processor control in an emulated computing environment
US7818808B1 (en) * 2000-12-27 2010-10-19 Intel Corporation Processor mode for limiting the operation of guest software running on a virtual machine supported by a virtual machine monitor
US7191440B2 (en) 2001-08-15 2007-03-13 Intel Corporation Tracking operating system process and thread execution and virtual machine execution in hardware or in a virtual machine monitor
WO2003027842A2 (en) 2001-09-25 2003-04-03 Koninklijke Philips Electronics N.V. Software support for virtual machine interpreter (vmi) acceleration hardware
AU2002364652A1 (en) 2001-12-14 2003-06-30 David Carrere Data processing method and device
US20040117532A1 (en) * 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
US7962545B2 (en) * 2002-12-27 2011-06-14 Intel Corporation Dynamic service registry for virtual machines
US20050044301A1 (en) 2003-08-20 2005-02-24 Vasilevsky Alexander David Method and apparatus for providing virtual computing services
US7424709B2 (en) * 2003-09-15 2008-09-09 Intel Corporation Use of multiple virtual machine monitors to handle privileged events
US7376949B2 (en) 2003-10-01 2008-05-20 Hewlett-Packard Development Company, L.P. Resource allocation and protection in a multi-virtual environment
US7725559B2 (en) 2003-10-08 2010-05-25 Unisys Corporation Virtual data center that allocates and manages system resources across multiple nodes
US20050091022A1 (en) 2003-10-24 2005-04-28 Konstantin Levit-Gurevich Ultra fast multi-processor system simulation using dedicated virtual machines
US7562179B2 (en) * 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
US8166473B2 (en) * 2005-04-21 2012-04-24 Microsoft Corporation Method and system for a resource negotiation between virtual machines

Also Published As

Publication number Publication date
ZA200601172B (en) 2008-04-30
EP1701259A2 (en) 2006-09-13
CN1831775B (zh) 2010-06-09
RU2412468C2 (ru) 2011-02-20
EP1701259A3 (en) 2008-01-16
JP2006252565A (ja) 2006-09-21
KR20060097597A (ko) 2006-09-14
BRPI0600711A (pt) 2006-11-07
MXPA06001711A (es) 2006-09-21
US7685635B2 (en) 2010-03-23
RU2006104061A (ru) 2007-09-27
CN1831775A (zh) 2006-09-13
US20060206892A1 (en) 2006-09-14
TW200636567A (en) 2006-10-16
AU2006200310A1 (en) 2006-09-28
CA2535184A1 (en) 2006-09-11

Similar Documents

Publication Publication Date Title
JP5079246B2 (ja) 仮想マシン環境におけるマルチレベルインターセプト処理のためのシステムおよび方法
US8612633B2 (en) Virtual machine fast emulation assist
RU2398267C2 (ru) Иерархическая виртуализация посредством многоуровневого механизма виртуализации
US8504703B2 (en) Systems and methods for instruction sequence compounding in a virtual machine environment
JP5042848B2 (ja) 仮想マシン・モニタの構成部分を特権化解除するためのシステム及び方法
US7555596B2 (en) Systems and methods for attaching a virtual machine virtual hard disk to a host machine
US7558723B2 (en) Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices
US7665088B1 (en) Context-switching to and from a host OS in a virtualized computer system
US7743389B2 (en) Selecting between pass-through and emulation in a virtual machine environment
US7260702B2 (en) Systems and methods for running a legacy 32-bit x86 virtual machine on a 64-bit x86 processor
EP2397943B1 (en) Uniform storage device by partial virtualization machine
US8635612B2 (en) Systems and methods for hypervisor discovery and utilization
JP6530723B2 (ja) コンピュータシステム内における複数のハイパーバイザーの共同運用を容易にするためのシステムおよび方法
JP2006018814A (ja) 仮想マシン環境におけるエミュレートされたデバイスの開発のためのシステムおよび方法
Im et al. On-demand virtualization for live migration in bare metal cloud

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090216

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090409

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120306

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

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

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

Free format text: PAYMENT UNTIL: 20150907

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5079246

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

LAPS Cancellation because of no payment of annual fees