JP4688862B2 - 仮想マシン環境における仮想マシンのシングルステップ機能のサポートを提供すること - Google Patents

仮想マシン環境における仮想マシンのシングルステップ機能のサポートを提供すること Download PDF

Info

Publication number
JP4688862B2
JP4688862B2 JP2007502123A JP2007502123A JP4688862B2 JP 4688862 B2 JP4688862 B2 JP 4688862B2 JP 2007502123 A JP2007502123 A JP 2007502123A JP 2007502123 A JP2007502123 A JP 2007502123A JP 4688862 B2 JP4688862 B2 JP 4688862B2
Authority
JP
Japan
Prior art keywords
vmm
control
fault
single step
transfer
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
JP2007502123A
Other languages
English (en)
Other versions
JP2007525776A (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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2007525776A publication Critical patent/JP2007525776A/ja
Application granted granted Critical
Publication of JP4688862B2 publication Critical patent/JP4688862B2/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)

Description

本発明の実施形態は、概して、仮想マシンに関する。本発明の実施形態は、特に、仮想マシン環境における仮想マシンのシングルステップ機能のサポートを提供することに関する。
シングルステップ技術は、従来のオペレーティングシステム(OS)環境において、デバッガによって広く使用されている。特に、シングルステップ技術は、アプリケーションを一度に1命令ずつ進めることを目的として使用され、これによって、デバッガがアプリケーションをソースコード内の特定のポイントに置くことを可能にしている。シングルステップを可能にすることを目的として、種々の技法が使用されてきた。例えば、Intel(登録商標) Pentium(登録商標)4の命令セット・アーキテクチャ(ISA)(本明細書ではIA−32 ISAと呼ぶ)では、EFLAGSレジスタ内のトラップフラッグ(TF)は、デバッガがアプリケーションをシングルステップすることを可能にすることを目的として指定されている。TFビットが1に設定された場合、次の命令の完了後に、デバッグ例外が生成される。デバッガは、デバッグ例外の所有権を得た後に、(例:例外用のハンドラを作成し、デバッグ例外のイベントの際にハンドラが呼び出されるようにすることによって)TFビットを設定する。しかし、デバッグ例外は、次の命令が正常終了した場合にのみ生成される。次の命令の実行がフォルト(例:ページフォルト)を引き起こした場合は、デバッグ例外は生成されない。むしろ、例外は、ベクタ化され、EFLAGSレジスタビットの値を格納し、TFビットをクリアする。ハンドラが完了すると、TFビットの格納された値がリストアされ、命令が再実行される。再実行時にフォルトが生じない場合、デバッグ例外が生成される。
米国特許第5522075号明細書 米国特許第6397242号明細書 米国特許第6961806号明細書 米国特許第7111200号明細書 米国特許出願公開第2005/0081199号明細書 米国特許出願公開第2005/0076186号明細書 米国特許出願公開第2005/0091652号明細書 米国特許出願公開第2005/0223221号明細書
本発明は、参照番号が同様の要素を指す添付図面を本発明の実施例として使用することにより説明され、添付図面は、本発明を限定するものではない。
本発明が動作しうる仮想マシン環境の一実施形態を示す図である。
仮想マシン環境における仮想マシンのシングルステップ機能のサポートを提供する処理の一実施形態を示すフロー図である。
シングルステップ・インジケータがシングルステップ値に設定されたVM entry要求に応答する処理の一実施形態を示すフロー図である。
シングルステップより高い優先度を有するイベントを処理する処理の一実施形態を示すフロー図である。
一実施形態による、デバイスの仮想化を促進することを目的としてVMのシングルステップを使用する典型的な処理を示すフロー図である。
仮想マシン環境において仮想マシンのシングルステップ機能のサポートを提供する方法および装置が説明される。以下の説明において、本発明を説明することを目的に、本発明の理解を提供するために多くの特定の詳細が提示される。しかし、当業者にとっては、これらの詳細を必要とすることなく本発明が実施可能であることは明白である。
以下の詳細な説明のいくつかの部分は、コンピュータシステムのレジスタまたはメモリ内のデータビットの操作に関するアルゴリズムおよび記号表現の形で説明される。これらのアルゴリズムの説明および表現は、データ処理分野の当業者によって、技術の内容の本質を他の当業者に最も効率的に伝えるために使用される方法である。アルゴリズムは、本明細書では、また一般的に、期待される結果に至る動作の自己矛盾無き順序であると考えられる。操作は、物理的な数量に対する物理的な操作を必要とするものである。通常、必ずしも必要ではないが、これらの数量は、格納、転送、結合、比較、および他の操作がされうる電気または磁気の信号の形態をとる。これらの信号を、ビット、値、要素、記号、文字、言葉、数字、またはそのような形で参照することは、主に広く使われていることを理由として、便利であることがたびたび証明されている。
しかし、上述および同様の用語は、適切な物理的な数量に関連付けられたものであって、これらの数量に適用される単に便利なラベルであると理解されるべきである。特に記述が無い限り、下記の説明から明白であるように、本発明に関する説明で使用される「処理」、「コンピューティング」、「計算」、「判定」、またはこれらに類似の言葉は、コンピュータシステムのレジスタおよびメモリ内の物理的な(電子的な)数量として表現されるデータを操作して、コンピュータシステムメモリまたはレジスタ、または、その他の情報を格納、転送、または表示するデバイス内の物理的な数量として同様に表現されるその他のデータに変換する、コンピュータシステムまたは同様の電子コンピューティングデバイスの動作および処理を指す。
実施形態に関する以下の詳細な説明では、本発明を説明する手段として、本発明が実施されうる特定の実施形態を示す添付図面への参照がなされる。添付図面では、数字などは、いくつかの図において一貫して実質的に同様のコンポーネントを説明する。これらの実施形態は、当業者による本発明の実施を可能にするために十分な詳細まで説明される。本発明の範囲から逸脱することなく、他の実施形態が使用されてもよく、また、構造的、論理的、および電気的な変更が加えられてもよい。更に、本発明の種々の実施形態は、それぞれ異なっているが、必ずしも相互排他的ではないと理解されるべきである。例えば、一実施形態において説明される特定の機能、構造、または性質は、他の実施形態に含まれうる。このため、下記の詳細な説明は、本発明を限定するものとして理解されるものではなく、本発明の範囲は、添付の特許請求の範囲および特許請求の範囲の均等物の全ての範囲のみによって定義される。
下記の例は、実行ユニットおよび論理回路と関連して、仮想マシンのシングルステップを説明するが、本発明の他の実施形態は、ソフトウェアによって実施されることができる。例えば、いくつかの実施形態では、本発明は、本発明による処理を実行することを目的としてコンピュータ(またはその他の電子デバイス)をプログラムするために使用されうる命令群が格納された、マシンまたはコンピュータ読み取り可能な媒体を含むコンピュータプログラム製品またはソフトウェアとして提供されてもよい。他の実施形態では、本発明の方法は、本発明の方法を実行することを目的とした、ハードウェアに制御された論理を含む特定のハードウェアコンポーネントによって、または、プログラムされたコンピュータコンポーネントおよびカスタム・ハードウェアコンポーネントの組み合わせによって実行されてもよい。
このように、マシン読み取り可能な媒体は、マシン(例:コンピュータ)によって読み取り可能な形態で情報を格納または送信する全ての機構を含んでもよい。これらの機構は、フロッピーディスク、光ディスク、コンパクト・ディスク・リード・オンリー・メモリ(CD−ROM)、および、磁気光ディスク、リード・オンリー・メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、消去可能プログラマブル・リード・オンリー・メモリ(EPROM)、電気的消去可能リード・オンリー・メモリ(EEPROM)、磁気または光カード、フラッシュメモリ、インターネットによる転送、電気、光、音波、またはその他の形態の伝播信号(例:搬送波、赤外線信号、デジタル信号、など)などを含み、しかし、これらに限定されない。
更に、デザインは、創造からシミュレーション、そして製造に至る種々の段階を経てもよい。デザインを表すデータは、多くの方法によってデザインを表しうる。最初に、シミュレーションにおいて便利であるように、ハードウェアは、ハードウェア記述言語または他の機能記述言語を使用して表現されてもよい。更に、ロジックおよび/またはトランジスタゲートを有する回路レベルモデルは、デザインプロセスのいくつかの段階において作成されてもよい。また、多くのデザインは、いくつかの段階において、ハードウェアモデル内の種々のデバイスの物理的な配置を表すデータのレベルに到達する。従来の半導体製造技術が使用される場合、ハードウェアモデルをあらわすデータは、集積回路の製造に使用されるマスクの異なるマスクレイヤにおける種々の特徴の存在または不在を指定するデータであってもよい。全てのデザインの表現において、データは、いかなる形式のマシン読み取り可能な媒体に格納されてもよい。これらの情報を送信するために調節または生成される光波または電波、メモリ、または、ディスクのような磁気または光ストレージは、マシン読み取り可能な媒体であってもよい。これらの媒体の全ては、デザインまたはソフトウェア情報を「伝送」または「表現」してもよい。コードまたはデザインを表現または伝送する電気搬送波が送信されると、電気信号のコピー、バッファリング、または再送信が実行される形で、新規のコピーが作成される。このように、通信プロバイダまたはネットワークプロバイダは、本発明の技法を具体化する物(搬送波)のコピーを生成してもよい。
図1は、本発明が動作しうる仮想マシン環境100の一実施形態を示す図である。本実施形態では、最小限のプラットフォーム・ハードウェア116は、例えば、標準的なオペレーティングシステム(OS)またはVMM112のような仮想マシンモニタ(VMM)を実行することができるコンピュータプラットフォームを備える。
VMM112は、概してソフトウェアによって実装されるが、上位ソフトウェアに対して最小限のマシンインタフェースをエミュレートおよびエクスポートしてもよい。そのような上位ソフトウェアは、通常のまたはリアルタイムOSを含んでもよく、限定されたオペレーティングシステムの機能を有する大きく機能を取り除かれたオペレーティングシステムであってもよく、また、従来のOSの機能を有しなくてもよい。あるいは、例えば、VMM112は、他のVMMの中または上において実行されてもよい。VMMは、例えば、ハードウェア、ソフトウェア、ファームウェア、または種々の技法の組み合わせによって実装されてもよい。
プラットフォーム・ハードウェア116は、パーソナル・コンピュータ(PC)、メインフレーム、ハンドヘルド・デバイス、ポータブル・コンピュータ、セットアップ・ボックス、または他のいかなるコンピュータシステムであってもよい。プラットフォーム・ハードウェア116は、プロセッサ118およびメモリ120を有する。
プロセッサ118は、マイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラなどのような、ソフトウェアを実行することができるいかなるタイプのプロセッサであってもよい。プロセッサ118は、本発明の実施形態の方法を実行することを目的として、マイクロコード、プログラマブル・ロジック、またはハードウェアによって制御されたロジックを含んでもよい。図1は、プロセッサ118を1つだけ示しているが、システム内には1つ以上のプロセッサが存在してもよい。
メモリ120は、ハードディスク、フロッピーディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、フラッシュメモリ、上記のデバイスの組み合わせ、またはプロセッサ118によって読み取り可能ないかなる他のタイプのマシン媒体であってもよい。メモリ120は、本発明の実施形態の方法を実行する命令群および/またはデータを格納してもよい。
VMM112は、1つ以上の仮想マシン(VM)のアブストラクションを他のソフトウェア(すなわち、「ゲスト」ソフトウェア)に対して提供する。1つ以上のVMは、種々のゲストに対して同一または異なるアブストラクションを提供しうる。図1は、2つのVM102および114を示す。各VMで実行されるゲストソフトウェアは、ゲストOS104または106のようなゲストOS、および、種々のゲストソフトウェア・アプリケーション108および110を含んでもよい。ゲストOS104および106のそれぞれは、ゲストOS104または106が実行される、VM102および114内の物理リソース(例:プロセッサ・レジスタ、メモリ、およびI/Oデバイス)にアクセスすること、および、他の機能を実行することを想定する。例えば、ゲストOSは、プロセッサのアーキテクチャおよびVMにおいて提供されるプラットフォームによって、全てのレジスタ、キャッシュ、ストラクチャ、I/Oデバイス、メモリなどへのアクセスを有すると想定する。ゲストソフトウェアによってアクセスされるこれらのリソースは、「特権的」または「非特権的」として分類されうる。特権的リソースついては、VMM112は、これらの特権的リソースの完全な制御を保持しつつ、ゲストソフトウェアによって要求される機能を容易にする。非特権的リソースは、VMM112によって制御される必要はなく、ゲストソフトウェアによってアクセスされることができる。
更に、各ゲストOSは、例外(例:ページフォルト、一般保護違反、など)、割り込み(例:ハードウェア割り込み、ソフトウェア割り込み)、およびプラットフォームイベント(例:初期化(INIT)およびシステムマネージメント割り込み(SMI))のような種々のイベントを処理することを想定する。これらのフォルトイベントのうちのいくつかは、VM102および114の正常な動作を保証すること、および、ゲストソフトウェアから保護することを目的として、VMM112によって処理される必要があるので、「特権的」である。
特権的フォルトイベントが発生したとき、または、ゲストソフトウェアが特権的リソースにアクセスしたとき、制御は、VMM112に移行されうる。ゲストソフトウェアからVMM122への制御の移行は、本明細書ではVM exitと呼ぶ。リソースアクセスを容易にした後、または、イベントを適切に処理した後、VMM112は、制御をゲストソフトウェアに戻してもよい。VMM112からゲストソフトウェアへの制御の移行は、本明細書ではVM entryと呼ぶ。
一実施形態では、プロセッサ118は、仮想マシン制御構造(VMCS)124に格納されたデータに従って、VM102および114の動作を制御する。VMCS124は、ゲストソフトウェアの状態、VMM112の状態、VMM112がゲストソフトウェアの動作をどのように制御したいのかを示す実行制御情報、VMM112とVMの間の移行を制御する情報などを含んでもよい。プロセッサ118は、VMの実行環境を判定すること、および、その動作を抑制することを目的として、VMCS124から情報を読み取る。一実施形態では、VMCSは、メモリ120に格納される。いくつかの実施形態では、複数のVMをサポートすることを目的として、複数のVMCS構造が使用される。
一実施形態では、プロセッサ118は、制御をVM102または114に移行(VM entryの要求)させるVMM112の要求を受信し、VMM122が関連するVMのシングルステップを要求したかどうかを判定する、シングルステップ・ロジック122を有する。シングルステップ機能は、仮想マシン環境100において種々の用途を有してもよい。例えば、VMM112は、VM102または114で実行されるシステム(すなわち、特権的)またはアプリケーションコードをデバッグすることを目的として、シングルステップ機能を要求してもよい。他の例では、VMM112は、VM102または114の動作中に特定のデバイスまたはプラットフォームの仮想化を実現することを目的として、シングルステップ機能を要求してもよい(例:VMM112がVMに読み取り処理を許可し書き込み処理を許可したくないメモリ・マップドI/Oデバイス)。更に他の例では、VMM112は、VM102または114の実行をトレースすることを目的として、シングルステップ機能を要求してもよい(新規システムの設計をテストする場合に、VMの動作の経過を維持するため)。
シングルステップ・ロジック122は、シングルステップ・インジケータの現在値に基づいて、VMM122がシングルステップ機能を要求したかどうかを判定する。一実施形態では、シングルステップ・インジケータは、VMCS124に格納される。あるいは、シングルステップ・インジケータは、プロセッサ118、メモリ120およびプロセッサ118の組み合わせ、またはいかなる他のストレージ・ロケーションに存在してもよい。
一実施形態では、VMM112は、VM102または114に制御を移行させる要求をする前に、シングルステップ・インジケータの値を設定する。あるいは、VM102および114のそれぞれは、定義済みの値に設定された、または、VMの動作中に変更された、異なるシングルステップ・インジケータに関連付けられる。
VMM112によるVM entryの要求を受信した際に、シングルステップ・ロジック122がシングルステップ・インジケータはシングルステップ値(例:1)に設定されていることを判定した場合、シングルステップ・ロジック122は、制御をVMに移行し、最初のVM命令を実行し、最初のVM命令の実行が正常終了した場合、制御をVMM112に移行する(すなわち、VM exitが生成される)。一実施形態では、シングルステップ・ロジック122は、シングルステップ・インジケータの現在値によってVM exitが引き起こされたことを、(例:指定されたリーズン・コードを使用して)VMM112に通知する。
最初のVM命令の実行が失敗した場合(すなわち、フォルトを引き起こした場合)、シングルステップ・ロジック122は、(例:VMCS124内の関連する実行制御情報を調査して、その情報が、フォルトはVM exitを必要とすることを示しているかどうかを判定することによって)結果として生じたフォルトがVM exitに関連するものであるかどうかを判定する。フォルトがVM exitに関連する場合は、シングルステップ・ロジック122は、VMM112に制御を移行し、一実施形態では、フォルトによってVM exitが引き起こされたことを、VMM112に通知する。フォルトがVM exitを必要としない場合、シングルステップ・ロジック122は、VMにフォルトを送付する。一実施形態では、フォルトの送付は、送付されるフォルトに関連するエントリのリダイレクト構造を検索することと、フォルトを処理するように指定されたルーチンの場所の記述子をこのエントリから抽出することと、記述子を使用してルーチンの先頭に移動することを含む。対応する割り込み、例外、またはその他のフォルトを処理するように指定されたルーチンは、本明細書では、フォルト・ハンドラと呼ばれる。
フォルトの送付中、プロセッサ118は、仮想アドレスから物理アドレスにアドレスを変換するアドレス変換を1回以上行ってもよい。例えば、割り込みテーブルのアドレスまたは関連するハンドラのアドレスは、仮想アドレスであってもよい。プロセッサは、フォルトの送付中に、種々の確認を実行する必要があってもよい。例えば、プロセッサは、(制限違反フォルト、不在セグメントフォルト、スタックフォルト、などを結果として生じる)セグメンテーション・レジスタおよびアクセス・アドレスの確認、結果として保護違反(例:一般保護違反)を生じうるパーミッション・レベル確認などのような、整合性確認を実行してもよい。
フォルトのベクタ化処理中の、アドレス変換および確認は、ページフォルト、一般保護違反などのような種々のフォルトを結果として生じうる。現在のフォルトの送付中に引き起こされるいくつかのフォルトは、VM exitを引き起こしてもよい。例えば、物理メモリを保護および仮想化することを目的として、VMM112がページフォルトの際にVM exitを必要とする場合、現在のフォルトのVMへの送付中に生じるページフォルトは、結果としてVM exitを生じる。
一実施形態では、シングルステップ・ロジック122は、現在のフォルトの送付が正常終了したかどうかを確認することによって、上述の追加のフォルトが発生する可能性に対応する。現在のフォルトの送付が正常終了した場合、シングルステップ・ロジック122は、フォルト・ハンドラの命令を実行する前にVM exitを生成し、シングルステップ・インジケータの現在値によりVM exitが生成されたことを、VMM112に通知する。シングルステップ・ロジック122が送付は失敗したことを判定した場合、シングルステップ・ロジック122は、新規のフォルトに対して上述の処理を繰り返す。
一定の命令に対しては、命令の正常終了は、フォルト、例外、または割り込みのベクタ化を含む。例えば、IA−32 ISAでは、ソフトウェア割り込み命令(すなわち、INTn、INTO、INT3)は、割り込みまたは例外ハンドラへの呼び出しを生成することによって、ソフトウェア割り込みをベクタ化する。このような割り込みが発生した場合、VMにおける割り込みまたは例外ハンドラの最初の命令が実行される前に、シングルステップ機構によりVM exitが発生する(ソフトウェア割り込みの送付中にネストされた例外が発生せず、また、フォルトまたは例外によってVM exitが生じないと仮定する)。
VMは、本明細書で説明されるシングルステップ機構に依存しない、デバッグまたはシングルステップ機構を使用してもよいことを留意すべきである。例えば、IA−32 ISAでは、VMは、シングルステップ・トラップを生成することを目的としてEFLAGSレジスタ内のTFビットを1に設定してもよく、または、デバッグ・ブレークポイントを生成することを目的としてデバッグ・レジスタを使用してもよい。最初のVM命令がこのようなブレークポイントまたはトラップを引き起こした場合、ブレークポイントまたはトラップのベクタ化を行う前に、シングルステップ機構によりVM exitが発生する。待機ブレークポイントまたはトラップに関する情報は、一実施形態では、VMが使用する機構を正しくエミュレートすることを目的としてVMMによって使用されるように、VMCSに格納される。
図2は、VM環境においてVMのシングルステップ機能のサポートを提供する処理200の一実施形態を示すフロー図である。この処理は、ハードウェア(例:回路、専用ロジック、プログラマブル・ロジック、マイクロコード、など)、ソフトウェア(汎用コンピュータシステムまたは専用マシン上で実行するソフトウェア)、またはハードウェアおよびソフトウェアの組み合わせを有する処理ロジックによって実行されてもよい。一実施形態では、処理200は、図1のシングルステップ・ロジック122によって実行される。
図2を参照すると、処理200は、処理ロジックがVMに制御を移行させる要求をVMMから受信する、処理ブロック202から開始する。一実施形態では、制御を移行させる要求は、VMMによって実行されるVM entry命令によって受信される。
判定ボックス204において、処理ロジックは、VMMが呼び出されるVMのシングルステップを要求したかどうかを判定する。一実施形態では、処理ロジックは、VMMによって維持されるシングルステップ・インジケータの現在値を読み取ることによって、VMMがVMのシングルステップを要求したかどうかを判定する。シングルステップ・インジケータは、VMCS内またはVMMおよび処理ロジック200によってアクセス可能なその他のいかなるデータ構造内に存在してもよい。一実施形態では、VMMがVMのシングルステップを行いたい場合は、VMMは、シングルステップ・インジケータをシングルステップ値(例:1)に設定し、制御をこのVMに移行させる要求を生成する。一実施形態では、VMMがシングルステップ・インジケータをシングルステップ値に設定した場合、VMMは、VMの実行中に発生しうる各フォルトの際にVM exitが発生するように、実行制御インジケータも設定する。あるいは、シングルステップ・インジケータの設定は、いくつかのまたは全ての実行制御インジケータに依存しない。
一実施形態では、シングルステップ・インジケータは、各VM exitにおいて、非シングルステップ値(例:0)に再設定される。他の実施形態では、VMMは、VMのシングルステップが必要とされない場合は、制御をVMに移行させる要求をする前に、シングルステップ・インジケータを非シングルステップ値に再設定する。
上述のように、例えば、VMで実行されるシステムまたはアプリケーションコードをデバッグする場合、VMの動作中にデバイスまたはプラットフォームを仮想化する場合、VMの実行をトレースする場合などに、VMMは、VMのシングルステップを要求してもよい。
処理ロジックが、VMのシングルステップが必要とされていると判定した場合、処理ロジックは、処理ブロック208において、VMの最初の命令を実行し、判定ボックス210において、最初のVM命令の実行が正常終了したかどうかを判定する。最初のVM命令の実行が正常終了した場合、処理ロジックは、処理ブロック212において、VM exitを生成し、処理ブロック214において、VM exitの原因がシングルステップであることをVMMに通知する。一実施形態では、処理ロジックは、指定されたリーズン・コードを生成することによって、VM exitの原因をVMMに通知する。一実施形態では、リーズン・コードはVMCSに格納される。
最初のVM命令の実行が失敗した場合、処理ロジックは、判定ボックス216において、結果として生じたフォルトがVM exitを引き起こすどうかを判定する。この判定は、(例:VMCS124内に格納された)関連する実行制御情報を調査することによって下される。結果として生じたフォルトがVM exitを発生させる場合、処理ロジックは、処理ブロック222において、VM exitを生成し、処理ブロック224において、VM exitの原因がフォルトであることをVMMに通知する。結果として生じたフォルトがVM exitを引き起こさない場合、処理ロジックは、処理ブロック218において、VMにフォルトを送付し、判定ボックス220において、フォルトの送付が正常終了したかどうかを判定する。フォルトの送付が正常終了した場合、処理ロジックは、処理ブロック212において、対応するフォルト・ハンドラの命令を実行する前にVM exitを生成し、処理ブロック214において、VM exitの原因がシングルステップであることをVMMに通知する。
フォルトの送付が失敗した場合、処理ロジックは、結果として生じた新規フォルトを処理することを目的として、判定ボックス216に戻る。
判定ボックス204において、処理ロジックが、VMのシングルステップが要求されていないと判定した場合、処理ロジックは、処理ブロック226において、VMの最初の命令を実行し、判定ボックス228において、最初のVM命令の実行が正常終了したかどうかを判定する。最初のVM命令の実行が正常終了した場合、処理ロジックは、処理ブロック230において、VMの次の命令を実行し、判定ボックス228に戻る。そうではなく、最初のVM命令の実行が失敗した場合、処理ロジックは、判定ボックス232において、結果として生じたフォルトがVM exitを引き起こすかどうかを判定する。フォルトがVM exitを引き起こす場合は、処理ロジックは、処理ブロック222において、VM exitを生成し、処理ブロック224において、VM exitの原因がフォルトであることをVMMに通知する。フォルトがVM exitを引き起こさない場合は、処理ロジックは、処理ブロック234において、VMにフォルトを送付し、判定ボックス236において、フォルトの送付が正常終了したかどうかを判定する。フォルトの送付が正常終了した場合、処理ロジックは、フォルト・ハンドラの最初の命令を実行し、判定ボックス228に戻る。フォルトの送付が失敗した場合、処理ロジックは、結果として生じた新規フォルトを処理することを目的として、処理ブロック234に戻る。
いくつかの実施形態では、シングルステップ値に設定されたシングルステップ・インジケータに関連するVM entryの要求に応じて呼び出されたVMの動作中に、一定のイベントが発生してもよい。例えば、VMMは、VM entryの一部としてVMにフォルトが送付されること、VM entryがプロセッサを非活性活動状態に置くこと、VM entry後の最初の命令がVM exitを引き起こすこと、などを必要としてもよい。Intel Pentium4の命令セット・アーキテクチャ(ISA)(本明細書では、IA−32 ISAと呼ぶ)では、非活性活動状態の例は、Halt、Wait−for−SIPI、シャットダウン、およびMWAIT状態を含む。これらの非活性活動状態の間は、プロセッサは、いかなる命令も完了せず、プロセッサを非活性活動状態から通常活動状態に移行させうる1つ以上のブレークイベントの発生を待つ。例えば、Halt活動状態の間は、プロセッサは、ブロックされないハードウェア割り込み、システム管理割り込み(SMI)、システム初期化メッセージ(INIT)、非マスク可能割り込み(NMI)、デバッグ例外、マシン確認例外、などの発生を待つ。VMのシングルステップ機能をサポートしながらこのようなイベントを処理する典型的な処理は、図3および図4と併せて以下に説明される。
図3は、シングルステップ・インジケータがシングルステップ値に設定されたVM entryの要求に応答する処理300の一実施形態を示すフロー図である。この処理は、ハードウェア(例:回路、専用ロジック、プログラマブル・ロジック、マイクロコード、など)、ソフトウェア(汎用コンピュータシステムまたは専用マシン上で実行するソフトウェア)、またはハードウェアおよびソフトウェアの組み合わせを有する、処理ロジックによって実行されてもよい。一実施形態では、処理300は、図1のシングルステップ・ロジック122によって実行される。
図3を参照すると、処理300は、処理ロジックが、シングルステップ・インジケータがシングルステップ値に設定されたVM entryを検出する、処理ブロック302から開始する。次に、判定ボックス304において、処理ロジックは、VMMがVM entryの一部として待機フォルトのVMへの送付を要求したかどうかを判定する(すなわち、ベクタ化されたフォルトがVMに送付されるかどうか)。そうである場合は、処理ロジックは、処理ブロック306において、待機フォルトをVMに送付する。フォルトの送付は、送付されるフォルトに関連するエントリのリダイレクト構造を検索することと、対応するフォルト・ハンドラの場所の記述子をこのエントリから抽出することと、この記述子を使用してフォルト・ハンドラの先頭に移動することを含んでもよい。フォルトの送付中に、新規フォルト(例:ページフォルト、一般保護違反、など)を結果として生じうるいくつかの処理(例:アドレス変換、セグメンテーション・レジスタおよびアクセス・アドレスの確認、パーミッション・レベル確認、など)が実行される必要があってもよい。判定ボックス308において、処理ロジックは、待機フォルトの送付が正常終了したかどうかを判定する。もしそうであれば(すなわち、新規フォルトが発生しなかったら)、処理ロジックは、処理ブロック310において、対応するハンドラの命令を実行する前に、シングルステップ・インジケータを指定するリーズン・コードと共にVM exitを生成する。
待機フォルトの送付が失敗した場合、処理ロジックは、判定ボックス312において、結果として生じた新規フォルトがVM exitを引き起こすかどうかを判定する。もしそうであれば、処理ロジックは、処理ブロック314において、新規フォルトを指定するリーズン・コードと共にVM exitを生成する。そうではなく、新規フォルトがVM exitを生じない場合は、処理ロジックは、新規フォルトを処理することを目的として処理ブロック306に戻る。
判定ボックス304において、処理ロジックが、VMMがVM entryの一部として待機フォルトの送付を要求していないと判定した場合、処理ロジックは、更に、判定ボックス316において、VM entryがプロセッサを非活性活動状態に移行させるかどうかを判定する。もしそうである場合、処理ロジックは、処理ブロック317において、非活性活動状態(例:Halt状態)に移行し、処理ブロック318において、プロセッサを非活性活動状態から通常(すなわち活性)活動状態に移行させることができるブレークイベントを待ち、判定ボックス320において、(例:VMCS124内の関連する実行制御情報を調査することによって)ブレークイベントがVM exitを引き起こすかどうかを判定する。この判定が正である場合、処理ロジックは、処理ブロック322において、ブレークイベントを指定するリーズン・コードと共にVM exitを生成する。ある実施形態では、VM exitの一部としてVMの動作状態の指示子が保存される必要がある場合(例えばVMCS内の実行制御情報内の保存動作状態インジケータを調査することによって判断される)、ブレークイベントの発生前の動作状態(すなわち、非活性活動状態)の指示子は保存される。そうではなく、ブレークイベントがVM exitを生じない場合、処理ロジックは、処理ブロック306に進み、VMへのブレークイベントの送付を試みる。一実施形態では、VMにブレークイベントを送付する試みは、VMを非活性活動状態から通常(すなわち、活性)活動状態に移行させ、VMの動作状態の指示子が保存された場合、指示子は通常(すなわち、活性)活動状態を示すという効果を有する。
判定ボックス316において、処理ロジックが、VM entryはプロセッサを非活性活動状態に移行させないと判定した場合、処理ロジックは、処理ブロック324において、VMの最初の命令を実行し、判定ボックス326において、最初の命令の実行がVM exitを引き起こすかどうかを判定する。もしそうである場合、処理ロジックは、処理ブロック328において、命令を識別するリーズン・コードと共にVM exitを生成する。そうでない場合、処理ロジックは、判定ボックス330において、最初の命令が正常終了したかどうかを判定する。
最初の命令の実行が失敗した場合、処理ロジックは、結果として生じた新規フォルトを処理することを目的として判定ボックス312に進む。最初の命令の実行が正常終了した場合、処理ロジックは、更に、判定ボックス332において、命令がプロセッサを非活性活動状態に移行させるかどうかを判定する。例えば、IA−32 ISAでは、HLT命令は、プロセッサを非活性活動状態であるHalt状態に移行させる。実行された命令が実際に非活性活動状態に移行した場合、処理ロジックは、更に、判定ボックス334において、活動状態の指示子が保存される必要があるかどうかを(例:VMCS内の実行制御情報の保存活動状態インジケータを調査することによって)判定する。活動状態の指示子が保存される必要がある場合、処理ロジックは、処理ブロック336において、活動状態の指示子を(例:VMCS内に)保存し、処理ブロック338において、シングルステップ・インジケータを指定するリーズン・コードと共にVM exitを生成する。命令がプロセッサを非活性活動状態に移行させなかった場合、または、命令がプロセッサを非活性活動状態に移行させたが活動状態の指示子が保存される必要がない場合、処理ロジックは、処理ブロック338に直接進む。
いくつかの実施形態では、シングルステップは、いくつかの他のイベント(例えば、INITおよびSMIのような、プラットフォームイベント)の優先度よりも低い優先度を有してもよい。図4は、シングルステップより高い優先度を有するイベントを処理する処理400の一実施形態を示すフロー図である。この処理は、ハードウェア(例:回路、専用ロジック、プログラマブル・ロジック、マイクロコード、など)、ソフトウェア(汎用コンピュータシステムまたは専用マシン上で実行するソフトウェア)、またはハードウェアおよびソフトウェアの組み合わせを有する、処理ロジックによって実行されてもよい。一実施形態では、処理400は、図1のシングルステップ・ロジック122によって実行される。
図4を参照すると、処理400は、処理ロジックが、シングルステップ・インジケータがシングルステップ値に設定されたVM entryを検出する、処理ブロック402から開始し、処理ブロック404において、VMの最初の命令を実行する。
次に、VMの最初の命令の実行後に、処理ロジックは、処理ブロック406において、シングルステップより高い優先度を有するイベント(例:NMI、SMI、など)を検出し、判定ボックス408において、優先度が高いイベントがVMMまたはいくつかの指定されたソフトウェアによって処理されるかどうかを判定する。一実施形態では、シングルステップ機構を使用するVMMが、関連するVM entryより前に、優先度が高いイベントの実行制御インジケータをVM exitが発生するように設定することができる場合、優先度が高いイベントは、VMMによって処理される。シングルステップ機構を使用するVMMが対応する実行制御インジケータを上述のように設定することができない場合、(例:使用可能なそのような実行制御インジケータが存在しない場合)、優先度が高いイベントは、指定されたソフトウェアによって処理される。例えば、シングルステップ機構を使用するVMMは、関連するVM entryより前に、NMIがVM exitを引き起こすように対応する実行制御ビットを設定してもよい。他の例では、シングルステップ機構を使用するVMMは、関連するVM entryの前に、SMIに関連する実行制御インジケータを更新する機能を有しなくてもよい。そして、SMIは、優先度が高いイベントを管理するように指定されたソフトウェアによって処理されてもよい。
優先度が高いイベントがシングルステップ機構を使用するVMMによって処理される場合、処理ロジックは、処理ブロック410において、優先度が高いイベントを指定するリーズン・コードと共にVM exitを生成する。あるいは、優先度が高いイベントが、優先度が高いイベントを管理するように指定されたソフトウェアによって処理される場合、処理ロジックは、処理ブロック412において、(例:VMCS内の)待機VM exitインジケータをシングルステップ値に設定し、処理ブロック414において、指定されたソフトウェアに制御を移行する。そして、指定されたソフトウェアは、ブロック416において、優先度が高いイベントを処理し、シングルステップ機構により待機VM exitのVMMへの送付を容易にする。待機VM exitインジケータは、優先度が高いイベントの処理が完了した際に、指定されたソフトウェアによって、または、プロセッサによってVMMに送付されてもよい。例えば、SMI処理は、VMMから独立した管理ソフトウェアによって処理されてもよい。SMIの処理が完了すると、管理ソフトウェアは、RSM(システム管理モードからの復帰)命令を実行してもよく、その後、この命令の実行時に、プロセッサは、シングルステップ機構により待機VM exitの存在を認識し、それに従って待機VM exitを送付してもよい。
上述のように、VMMによるVMのシングルステップは、例えば、VMにおいて実行されるシステムまたはアプリケーションコードのデバッグ、VMの動作中におけるデバイスまたはプラットフォームの仮想化、VMの実行のトレース、などを含む種々の用途を有してもよい。デバイスの仮想化を容易にすることを目的としてシングルステップを使用する典型的な処理について、以下において詳細に説明する。
図5は、一実施形態による、デバイスの仮想化を容易にすることを目的としたVMのシングルステップを使用する典型的な処理500を示すフロー図である。デバイスは、メモリ・マップド・プログラミング・モデル(例:高度プログラマブル割り込みコントローラ(APIC))を使用する入力/出力(I/O)デバイスであってもよく、VMMは、VMによるメモリ・マップドI/Oデバイスへのデータ書き込みを防ぎつつ、VMによるメモリ・マップドI/Oデバイスからのデータ読み取りを許可することを要求してもよい。処理500は、ハードウェア(例:回路、専用ロジック、プログラマブル・ロジック、マイクロコード、など)、ソフトウェア(汎用コンピュータシステムまたは専用マシン上で実行するソフトウェア)、またはハードウェアおよびソフトウェアの組み合わせを含む、処理ロジックによって実行されてもよい。
図5を参照すると、処理500は、VMM内の処理ロジックがデバイスのメモリ・マップド空間を書き込み禁止にするためにVMのページテーブルを設定し、(例:対応する実行制御情報を使用して)VMの実行中に発生するページフォルトがVM exitを引き起こすようにページフォルトを設定する、処理ブロック502から開始する。一実施形態では、VMページテーブルの設定は、VMMの制御によって各VMに対して独立したアクティブなゲスト・ページテーブルを維持する、仮想トランスレーション・ルックアサイド・バッファ(VTLB)データ構造を使用することによって、有効にされる。
処理ブロック504において、プロセッサ内の処理ロジックは、VMがデバイスのメモリ・マップド空間にアクセスしたとき、ページフォルトVM exitを生成する。
処理ブロック506において、VMM内の処理ロジックは、(例:フォルト・アドレス値がメモリ・マップドI/Oページ内に収まることを調査することによって)VMのアクセスは保護されたメモリ・マップド空間へのものであったことを判定する。
処理ブロック508において、VMM内の処理ロジックは、フォルト・アドレスを通常の物理メモリに存在する異なる物理メモリページ(すなわち、メモリ・マップドI/O空間ではない)にマップすることを目的として、VMページテーブルを変更する。
処理ブロック510において、VMM内の処理ロジックは、シングルステップ・インジケータを設定して、VM entryを要求する。
処理ブロック512において、プロセッサ内の処理ロジックは、VMMによって選択された上記ページにアクセスすることを目的として、VMの命令を実行する。
処理ブロック514において、プロセッサ内の処理ロジックは、命令の正常終了の後に、シングルステップ・インジケータによりVM exitを発生させる。
次に、VMM内の処理ロジックは、処理ブロック516において、処理ブロック508で設定された物理メモリのページに書かれたデータを調査し、判定ボックス518において、データがデバイスに書き込まれるべきかどうかを判定する。この判定は、セキュリティ(例:デバイスへのいくつかのデータの書き込みは許可され、他のデータの書き込みは許可されない)または正確性(例:仮想化によって必要とされる場合は、デバイスに書き込まれるまえにデータが変更される必要がある)に基づいてもよい。
判定ボックス518において下された判断が正である場合、VMM内の処理ロジックは、処理ブロック520において、データをデバイスに書き込む。あるいは、VMMは、例えばセキュリティ、性能、またはデバイスの仮想化に関する一定の性質が適切であることを保証することを目的として、デバイスに書き込む前に、データを修正してもよい。
このように、仮想マシン環境における仮想マシンのシングルステップ機能のサポートを提供する方法および装置が説明された。上述の説明は、本発明を説明することを意図したものであって、本発明を限定することは意図していない。上記の説明を読解することにより、当業者には多くの他の実施形態が明白となる。このため、本発明の範囲は、添付の特許請求の範囲および特許請求の範囲の均等物の全ての範囲によって決定される。

Claims (21)

  1. シングルステップ・ロジックによって実行される段階である、
    仮想マシン(VM)に制御を移行させる要求を仮想マシンモニタ(VMM)から受信する段階と、
    シングルステップ・インジケータがシングルステップ値に設定されていることを判定する段階と、
    前記シングルステップ・インジケータがシングルステップ値に設定されていることを判定することに応じて、
    前記VMに制御を移行する段階と、
    前記VMの最初の命令の実行が正常終了した場合に、前記最初の命令の前記実行の前記正常終了の後に、前記VMMに制御を移行する段階と、
    前記VMの前記最初の命令の前記実行が、前記最初の命令の前記実行に依って生じた現在のフォルトにより正常終了しなかった場合に、前記現在のフォルトが前記VMMへの制御の移行に関連するかどうかどうかを判定する段階と、
    前記現在のフォルトが前記VMMへの制御の前記移行に関連するならば前記VMMに制御を移行して前記現在のフォルトにより前記VMMに制御が移行されたことを前記VMMに通知する段階と、
    前記現在のフォルトが前記VMMへの制御の前記移行に関連しない場合、前記VMに前記現在のフォルトを送付する段階と、前記現在のフォルトの前記送付が正常終了した場合、対応するフォルト・ハンドラの命令が実行される前に、前記VMMに制御を移行し、前記シングルステップ・インジケータの値が、シングルステップ値を指示していることにより制御が前記VMMに移行されたことを前記VMMに通知する段階
    を行う段階と、
    を備える方法。
  2. 前記VMMへの制御の移行は、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを、前記VMMに通知することを備える請求項1に記載の方法。
  3. 前記現在のフォルトの前記送付が失敗したことを判定する段階と、
    新規フォルトが前記VMMへの制御の移行に関連するかどうかを判定する段階と、
    前記新規フォルトが前記VMMへの制御の移行に関連する場合、前記VMMに制御を移行し、前記新規フォルトにより前記VMMに制御が移行されたことを前記VMMに通知する段階
    を更に備える請求項1に記載の方法。
  4. 前記新規フォルトが前記VMMへの制御の前記移行に関連しないことを判定する段階と、
    前記VMに前記新規フォルトを送付する段階と、
    前記新規フォルトの前記送付が正常終了した場合、対応するフォルト・ハンドラの命令が実行される前に、前記VMMに制御を移行し、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する段階
    を更に備える請求項3に記載の方法。
  5. 前記VMに制御を移行する前に、前記VMに制御を移行させる前記要求が、前記VMに送付されるベクタ化されたフォルトに関連することを判定する段階と、
    前記VMに制御を移行するときに、前記VMに前記ベクタ化されたフォルトを送付する段階と、
    前記ベクタ化されたフォルトの前記送付が正常終了した場合、
    対応するフォルト・ハンドラの命令を実行するようにベクタ化された前記VMMに制御を移行し、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する段階
    を更に備える請求項1から4のいずれか1項に記載の方法。
  6. 前記ベクタ化されたフォルトの前記送付が失敗であったことを判定する段階と、
    新規フォルトが前記VMMへの制御の移行に関連するかどうかを判定する段階と、
    前記新規フォルトが前記VMMへの制御の前記移行に関連する場合、前記VMMに制御を移行し、前記新規フォルトにより前記VMMに制御が移行されたことを前記VMMに通知する段階と、
    前記新規フォルトが前記VMMへの制御の前記移行に関連しない場合、前記VMに前記新規フォルトを送付し、対応するフォルト・ハンドラの命令を実行する前に前記VMMに制御を移行し、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する段階
    を更に備える請求項5に記載の方法。
  7. 前記VMに制御を移行する前に、前記VMに制御を移行させる前記要求がプロセッサの非活性活動状態に関連するかどうかを判定する段階と、
    前記VMに制御を移行する段階と、
    ブレークイベントの発生の後まで前記VMMへの制御の移行を自制する段階
    を更に備える請求項1から6のいずれか1項に記載の方法。
  8. 前記ブレークイベントが前記VMMへの制御の移行に関連する場合、前記VMMに制御を移行し、前記ブレークイベントにより前記VMMに制御が移行されたことを前記VMMに通知することを更に備える請求項7に記載の方法。
  9. 前記ブレークイベントが前記VMMへの制御の移行に関連しないことを判定する段階と、
    前記VMに前記ブレークイベントを送付する段階と、
    前記ブレークイベントの前記送付が正常終了した場合、対応するハンドラの命令を実行する前に、前記VMMに制御を移行し、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する段階と、
    前記ブレークイベントの前記送付が失敗した場合、新規フォルトが前記VMMへの制御の移行に関連するかどうかを判定する段階と、
    前記新規フォルトが前記VMMへの制御の前記移行に関連する場合、前記VMMに制御を移行し、前記新規フォルトにより前記VMMに制御が移行されたことを前記VMMに通知する段階と、
    前記新規フォルトが前記VMMへの制御の前記移行に関連しない場合、対応するフォルト・ハンドラの命令を実行する前に、前記VMMに制御を移行し、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する段階
    を更に備える請求項7または8に記載の方法。
  10. 前記シングルステップ・インジケータは、仮想マシン制御構造(VMCS)に含まれる請求項1から9のいずれか1項に記載の方法。
  11. 前記VMMに制御を移行する前に、保存動作状態インジケータにアクセスし、前記保存動作状態インジケータが保存値に設定されている場合、前記VMの動作状態の指示子を保存することを更に備える請求項1から10のいずれか1項に記載の方法。
  12. 最初の命令の前記実行の後にシングルステップより高い優先度を有するイベントを検出する段階と、
    前記優先度が高いイベントは前記VMMによって処理されるのかどうかを判定する段階と、
    前記優先度が高いイベントが前記VMMによって処理される場合、前記VMMに制御を移行し、前記優先度が高いイベントにより前記VMMに制御が移行されたことを前記VMMに通知する段階と、
    前記高い優先度のイベントが前記VMMによって処理されない場合、待機VM exitインジケータをシングルステップ値に設定し、高い優先度のイベントを処理するように指定されたソフトウェアに制御を移行する段階
    を更に備える請求項1から11のいずれか1項に記載の方法。
  13. 前記指定されたソフトウェアは、前記シングルステップ・インジケータの現在値により前記VMMに待機VM exitを送付する請求項12に記載の方法。
  14. 前記指定されたソフトウェアは、前記待機VM exitインジケータの現在値によりプロセッサに待機VM exitを前記VMMに送付させる要求をする請求項12または13に記載の方法。
  15. 前記指定されたソフトウェアが動作を完了した後、前記シングルステップ・インジケータの現在値によりVM exitが待機中であることを検出する段階と、
    前記VMMに制御を移行する段階と、
    前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する段階
    を更に備える請求項12から14のいずれか1項に記載の方法。
  16. 仮想マシンモニタ(VMM)と、
    シングルステップ・インジケータを格納する、前記VMMによって制御されるデータ構造と、
    制御を仮想マシン(VM)に移行させる要求を前記VMMから受信し、前記シングルステップ・インジケータがシングルステップ値に設定されていることを判定し、前記シングルステップ・インジケータがシングルステップ値に設定されていることを判定することに応じて、前記VMの最初の命令の実行が正常終了した場合、前記最初の命令の前記正常終了の後に制御を前記VMMに移行し、前記VMの前記最初の命令の前記実行が、前記最初の命令の前記実行によって生じた現在のフォルトにより正常終了しなかった場合、前記現在のフォルトが前記VMMへの制御の移行に関連するかどうかどうかを判定し、
    前記現在のフォルトが前記VMMへの制御の前記移行に関連するならば前記VMMに制御を移行して前記現在のフォルトにより前記VMMに制御が移行されたことを前記VMMに通知し、
    前記現在のフォルトが前記VMMへの制御の前記移行に関連しない場合、前記現在のフォルトを前記VMに送付し、前記現在のフォルトの前記送付が正常終了した場合に、対応するフォルト・ハンドラの命令が実行される前に前記VMMに制御を移行し、前記シングルステップ・インジケータの値が、シングルステップ値を指示していることにより前記VMMに制御が移行されたことを前記VMMに通知する
    シングルステップ・ロジックと
    を備える装置。
  17. 前記シングルステップ・ロジックは、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する請求項16に記載の装置。
  18. 1つ以上のインジケータを格納するメモリと、
    仮想マシン(VM)のシングルステップが示されているかどうかを判定することを目的として前記1つ以上のインジケータを使用し、前記1つ以上のインジケータがシングルステップを示していることを判定することに応じて、前記VMの最初の命令を実行し、前記最初の命令の前記実行が正常終了した場合は、前記最初の命令の前記実行の前記正常終了の後に制御を仮想マシンモニタ(VMM)に移行し、前記VMの前記最初の命令の前記実行が、前記最初の命令の前記実行によって生じた現在のフォルトにより正常終了しなかった場合は、前記現在のフォルトが前記VMMへの制御の移行に関連するかどうかどうかを判定し、
    前記現在のフォルトが前記VMMへの制御の前記移行に関連するならば前記VMMに制御を移行して前記現在のフォルトにより前記VMMに制御が移行されたことを前記VMMに通知し、
    前記現在のフォルトが前記VMMへの制御の前記移行に関連しない場合、前記VMに前記現在のフォルトを送付し、前記現在のフォルトの前記送付が正常終了した場合、対応するフォルト・ハンドラの命令が実行される前に前記VMMに制御を移行し、前記1つ以上のインジケータの値が、シングルステップ値を指示していることにより前記VMMに制御が移行されたことを前記VMMに通知する、前記メモリに接続されたプロセッサと
    を備えるシステム。
  19. 前記プロセッサは、前記1つ以上のインジケータの値が、シングルステップ値を指示していることにより前記VMMに制御が移行されたことを、前記VMMに通知する請求項18に記載のシステム。
  20. 命令群を記録したマシン読み取り可能な媒体であって、
    前記命令群が処理システムによって実行されることにより、前記処理システムのプロセッサに
    仮想マシン(VM)に制御を移行させる要求を仮想マシンモニタ(VMM)から受信し、
    シングルステップ・インジケータがシングルステップ値に設定されていることを判定し、前記シングルステップ・インジケータがシングルステップ値に設定されていることを判定することに応じて、
    前記VMに制御を移行し、
    前記VMの最初の命令の実行が正常終了した場合、前記最初の命令の前記実行の前記正常終了の後に前記VMMに制御を移行し、前記VMの前記最初の命令の前記実行が、前記最初の命令の前記実行によって生じた現在のフォルトにより正常終了しなかった場合は、前記現在のフォルトが前記VMMへの制御の移行に関連するかどうかどうかを判定し、
    前記現在のフォルトが前記VMMへの制御の前記移行に関連するならば前記VMMに制御を移行して前記現在のフォルトにより前記VMMに制御が移行されたことを前記VMMに通知し、前記現在のフォルトが前記VMMへの制御の前記移行に関連しない場合、前記VMに前記現在のフォルトを送付し、前記現在のフォルトの前記送付が正常終了した場合、対応するフォルト・ハンドラの命令が実行される前に前記VMMに制御を移行し、前記シングルステップ・インジケータの値が、シングルステップ値を指示していることにより前記VMMに制御が移行されたことを前記VMMに通知する
    媒体。
  21. 前記VMMへの制御の移行は、前記シングルステップ・インジケータの値が、シングルステップ値を指示していることにより前記VMMに制御が移行されたことを前記VMMに通知することを備える請求項20に記載のマシン読み取り可能な媒体。
JP2007502123A 2004-03-30 2005-03-25 仮想マシン環境における仮想マシンのシングルステップ機能のサポートを提供すること Expired - Fee Related JP4688862B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/814,569 2004-03-30
US10/814,569 US7356735B2 (en) 2004-03-30 2004-03-30 Providing support for single stepping a virtual machine in a virtual machine environment
PCT/US2005/010156 WO2005098616A2 (en) 2004-03-30 2005-03-25 Providing support for single stepping a virtual machine in a virtual machine environment

Publications (2)

Publication Number Publication Date
JP2007525776A JP2007525776A (ja) 2007-09-06
JP4688862B2 true JP4688862B2 (ja) 2011-05-25

Family

ID=34964164

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007502123A Expired - Fee Related JP4688862B2 (ja) 2004-03-30 2005-03-25 仮想マシン環境における仮想マシンのシングルステップ機能のサポートを提供すること

Country Status (5)

Country Link
US (1) US7356735B2 (ja)
EP (1) EP1735710A2 (ja)
JP (1) JP4688862B2 (ja)
CN (1) CN101189582B (ja)
WO (1) WO2005098616A2 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7302514B2 (en) * 2004-06-15 2007-11-27 Intel Corporation Device, system, and method of virtual machine memory mapping
US7305592B2 (en) * 2004-06-30 2007-12-04 Intel Corporation Support for nested fault in a virtual machine environment
US7607011B1 (en) * 2004-07-16 2009-10-20 Rockwell Collins, Inc. System and method for multi-level security on a network
US20060064528A1 (en) * 2004-09-17 2006-03-23 Hewlett-Packard Development Company, L.P. Privileged resource access
US8214830B2 (en) * 2005-01-19 2012-07-03 Intel Corporation Performance in a virtualization architecture with a processor abstraction layer
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
US8170859B1 (en) * 2006-04-28 2012-05-01 Intel Corporation Methods, apparatuses and computer program products for simulating arbitrary unmodified code
US9280659B2 (en) * 2006-12-29 2016-03-08 Intel Corporation Methods and apparatus for remeasuring a virtual machine monitor
US8151264B2 (en) * 2007-06-29 2012-04-03 Intel Corporation Injecting virtualization events in a layered virtualization architecture
US8261284B2 (en) * 2007-09-13 2012-09-04 Microsoft Corporation Fast context switching using virtual cpus
US8447962B2 (en) * 2009-12-22 2013-05-21 Intel Corporation Gathering and scattering multiple data elements
US8397216B2 (en) * 2008-02-29 2013-03-12 International Business Machines Corporation Compiler for a declarative event-driven programming model
US8365149B2 (en) * 2008-02-29 2013-01-29 International Business Machines Corporation Debugger for a declarative event-driven programming model
US8627299B2 (en) * 2008-02-29 2014-01-07 International Business Machines Corporation Virtual machine and programming language for event processing
US8458232B1 (en) * 2009-03-31 2013-06-04 Symantec Corporation Systems and methods for identifying data files based on community data
US8356285B2 (en) * 2009-03-31 2013-01-15 Oracle America, Inc. Facilitated introspection of virtualized environments
KR101640769B1 (ko) * 2009-11-06 2016-07-19 삼성전자주식회사 가상화 시스템 및 그것의 명령어 실행 방법
KR101651202B1 (ko) * 2009-12-21 2016-08-26 삼성전자주식회사 가상화 장치 및 가상화 장치의 동작 방법
US20120072638A1 (en) * 2010-09-16 2012-03-22 Unisys Corp. Single step processing of memory mapped accesses in a hypervisor
GB2489000B (en) 2011-03-14 2019-09-11 Advanced Risc Mach Ltd Diagnosing code using single step execution
US9912517B1 (en) 2012-08-23 2018-03-06 Amazon Technologies, Inc. Optimized deployment and execution of programs in a distributed computing environment
US9588788B1 (en) * 2012-08-23 2017-03-07 Amazon Technologies, Inc. Optimized communication between program components executing in virtual machines
WO2016088220A1 (ja) * 2014-12-03 2016-06-09 株式会社日立製作所 計算機及び論理プロセッサの制御方法
CN104731616A (zh) * 2015-03-25 2015-06-24 浪潮集团有限公司 一种关闭Linux OS下Intel CPU节能模式的方法
US10402218B2 (en) 2016-08-30 2019-09-03 Intel Corporation Detecting bus locking conditions and avoiding bus locks
US10564995B2 (en) 2017-06-07 2020-02-18 Red Hat, Inc. Dynamic control of halt polling based on receiving a monitoring instruction executed by a guest
US11010280B1 (en) * 2019-03-13 2021-05-18 Parallels International Gmbh System and method for virtualization-assisted debugging
US11113094B1 (en) 2019-08-28 2021-09-07 Parallels International Gmbh Physical memory management for virtual machines
KR20210141156A (ko) * 2020-05-15 2021-11-23 삼성전자주식회사 페이지 장애에 기초하여 메모리 고장을 예견하고, 예견되는 메모리 고장을 관리하는 시스템의 운영 체계 핸들링

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6376028A (ja) * 1986-09-19 1988-04-06 Fujitsu Ltd 仮想計算機システムにおける命令ステツプ実行制御方式

Family Cites Families (156)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3699532A (en) 1970-04-21 1972-10-17 Singer Co Multiprogramming control for a data handling system
US3996449A (en) 1975-08-25 1976-12-07 International Business Machines Corporation Operating system authenticator
US4162536A (en) 1976-01-02 1979-07-24 Gould Inc., Modicon Div. Digital input/output system and method
US4037214A (en) 1976-04-30 1977-07-19 International Business Machines Corporation Key register controlled accessing system
US4247905A (en) 1977-08-26 1981-01-27 Sharp Kabushiki Kaisha Memory clear system
US4278837A (en) 1977-10-31 1981-07-14 Best Robert M Crypto microprocessor for executing enciphered programs
US4276594A (en) 1978-01-27 1981-06-30 Gould Inc. Modicon Division Digital computer with multi-processor capability utilizing intelligent composite memory and input/output modules and method for performing the same
US4207609A (en) 1978-05-08 1980-06-10 International Business Machines Corporation Method and means for path independent device reservation and reconnection in a multi-CPU and shared device access system
JPS5823570B2 (ja) 1978-11-30 1983-05-16 国産電機株式会社 液面検出装置
JPS5576447A (en) 1978-12-01 1980-06-09 Fujitsu Ltd Address control system for software simulation
US4307447A (en) 1979-06-19 1981-12-22 Gould Inc. Programmable controller
US4319323A (en) 1980-04-04 1982-03-09 Digital Equipment Corporation Communications device for data processing system
US4419724A (en) 1980-04-14 1983-12-06 Sperry Corporation Main bus interface package
US4366537A (en) 1980-05-23 1982-12-28 International Business Machines Corp. Authorization mechanism for transfer of program control or data between different address spaces having different storage protect keys
US4403283A (en) 1980-07-28 1983-09-06 Ncr Corporation Extended memory system and method
DE3034581A1 (de) 1980-09-13 1982-04-22 Robert Bosch Gmbh, 7000 Stuttgart Auslesesicherung bei einchip-mikroprozessoren
JPS58140862A (ja) 1982-02-16 1983-08-20 Toshiba Corp 相互排他方式
US4521852A (en) 1982-06-30 1985-06-04 Texas Instruments Incorporated Data processing device formed on a single semiconductor substrate having secure memory
JPS59111561A (ja) 1982-12-17 1984-06-27 Hitachi Ltd 複合プロセツサ・システムのアクセス制御方式
US4759064A (en) 1985-10-07 1988-07-19 Chaum David L Blind unanticipated signature systems
US4975836A (en) 1984-12-19 1990-12-04 Hitachi, Ltd. Virtual computer system
JPS61206057A (ja) 1985-03-11 1986-09-12 Hitachi Ltd アドレス変換装置
FR2592510B1 (fr) 1985-12-31 1988-02-12 Bull Cp8 Procede et appareil pour certifier des services obtenus a l'aide d'un support portatif tel qu'une carte a memoire
FR2601525B1 (fr) 1986-07-11 1988-10-21 Bull Cp8 Dispositif de securite interdisant le fonctionnement d'un ensemble electronique apres une premiere coupure de son alimentation electrique
FR2601535B1 (fr) 1986-07-11 1988-10-21 Bull Cp8 Procede pour certifier l'authenticite d'une donnee echangee entre deux dispositifs connectes en local ou a distance par une ligne de transmission
FR2601476B1 (fr) 1986-07-11 1988-10-21 Bull Cp8 Procede pour authentifier une donnee d'habilitation externe par un objet portatif tel qu'une carte a memoire
FR2618002B1 (fr) 1987-07-10 1991-07-05 Schlumberger Ind Sa Procede et systeme d'authentification de cartes a memoire electronique
US5007082A (en) 1988-08-03 1991-04-09 Kelly Services, Inc. Computer software encryption apparatus
US4974159A (en) 1988-09-13 1990-11-27 Microsoft Corporation Method of transferring control in a multitasking computer system
US5079737A (en) 1988-10-25 1992-01-07 United Technologies Corporation Memory management unit for the MIL-STD 1750 bus
US5434999A (en) 1988-11-09 1995-07-18 Bull Cp8 Safeguarded remote loading of service programs by authorizing loading in protected memory zones in a terminal
FR2640798B1 (fr) 1988-12-20 1993-01-08 Bull Cp8 Dispositif de traitement de donnees comportant une memoire non volatile electriquement effacable et reprogrammable
JPH02171934A (ja) 1988-12-26 1990-07-03 Hitachi Ltd 仮想計算機システム
JPH02208740A (ja) 1989-02-09 1990-08-20 Fujitsu Ltd 仮想計算機制御方式
US5442645A (en) 1989-06-06 1995-08-15 Bull Cp8 Method for checking the integrity of a program or data, and apparatus for implementing this method
JP2590267B2 (ja) 1989-06-30 1997-03-12 株式会社日立製作所 仮想計算機における表示制御方式
US5022077A (en) 1989-08-25 1991-06-04 International Business Machines Corp. Apparatus and method for preventing unauthorized access to BIOS in a personal computer system
JP2825550B2 (ja) 1989-09-21 1998-11-18 株式会社日立製作所 多重仮想空間アドレス制御方法および計算機システム
CA2010591C (en) 1989-10-20 1999-01-26 Phillip M. Adams Kernels, description tables and device drivers
CA2027799A1 (en) 1989-11-03 1991-05-04 David A. Miller Method and apparatus for independently resetting processors and cache controllers in multiple processor systems
US5075842A (en) 1989-12-22 1991-12-24 Intel Corporation Disabling tag bit recognition and allowing privileged operations to occur in an object-oriented memory protection mechanism
US5108590A (en) 1990-09-12 1992-04-28 Disanto Dennis Water dispenser
US5230069A (en) 1990-10-02 1993-07-20 International Business Machines Corporation Apparatus and method for providing private and shared access to host address and data spaces by guest programs in a virtual machine computer system
US5317705A (en) 1990-10-24 1994-05-31 International Business Machines Corporation Apparatus and method for TLB purge reduction in a multi-level machine system
US5287363A (en) 1991-07-01 1994-02-15 Disk Technician Corporation System for locating and anticipating data storage media failures
US5437033A (en) 1990-11-16 1995-07-25 Hitachi, Ltd. System for recovery from a virtual machine monitor failure with a continuous guest dispatched to a nonguest mode
US5255379A (en) 1990-12-28 1993-10-19 Sun Microsystems, Inc. Method for automatically transitioning from V86 mode to protected mode in a computer system using an Intel 80386 or 80486 processor
US5453003A (en) 1991-01-09 1995-09-26 Pfefferle; William C. Catalytic method
US5446904A (en) * 1991-05-17 1995-08-29 Zenith Data Systems Corporation Suspend/resume capability for a protected mode microprocessor
US5319760A (en) 1991-06-28 1994-06-07 Digital Equipment Corporation Translation buffer for virtual machines with address space match
US5522075A (en) * 1991-06-28 1996-05-28 Digital Equipment Corporation Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces
US5455909A (en) 1991-07-05 1995-10-03 Chips And Technologies Inc. Microprocessor with operation capture facility
JPH06236284A (ja) 1991-10-21 1994-08-23 Intel Corp コンピュータシステム処理状態を保存及び復元する方法及びコンピュータシステム
US5627987A (en) 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US5574936A (en) 1992-01-02 1996-11-12 Amdahl Corporation Access control mechanism controlling access to and logical purging of access register translation lookaside buffer (ALB) in a computer system
US5486529A (en) 1992-04-16 1996-01-23 Zeneca Limited Certain pyridyl ketones for treating diseases involving leukocyte elastase
US5421006A (en) 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5237616A (en) 1992-09-21 1993-08-17 International Business Machines Corporation Secure computer system having privileged and unprivileged memories
US5293424A (en) 1992-10-14 1994-03-08 Bull Hn Information Systems Inc. Secure memory card
US5796835A (en) 1992-10-27 1998-08-18 Bull Cp8 Method and system for writing information in a data carrier making it possible to later certify the originality of this information
JP2765411B2 (ja) 1992-11-30 1998-06-18 株式会社日立製作所 仮想計算機方式
US5668971A (en) 1992-12-01 1997-09-16 Compaq Computer Corporation Posted disk read operations performed by signalling a disk read complete to the system prior to completion of data transfer
JPH06187178A (ja) 1992-12-18 1994-07-08 Hitachi Ltd 仮想計算機システムの入出力割込み制御方法
US5483656A (en) 1993-01-14 1996-01-09 Apple Computer, Inc. System for managing power consumption of devices coupled to a common bus
US5469557A (en) 1993-03-05 1995-11-21 Microchip Technology Incorporated Code protection in microcontroller with EEPROM fuses
FR2703800B1 (fr) 1993-04-06 1995-05-24 Bull Cp8 Procédé de signature d'un fichier informatique, et dispositif pour la mise en Óoeuvre.
FR2704341B1 (fr) 1993-04-22 1995-06-02 Bull Cp8 Dispositif de protection des clés d'une carte à puce.
JPH06348867A (ja) 1993-06-04 1994-12-22 Hitachi Ltd マイクロコンピュータ
FR2706210B1 (fr) 1993-06-08 1995-07-21 Bull Cp8 Procédé d'authentification d'un objet portatif par un terminal hors ligne, objet portatif et terminal correspondants.
US5555385A (en) 1993-10-27 1996-09-10 International Business Machines Corporation Allocation of address spaces within virtual machine compute system
US5825880A (en) 1994-01-13 1998-10-20 Sudia; Frank W. Multi-step digital signature method and system
US5459869A (en) 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software
US5604805A (en) 1994-02-28 1997-02-18 Brands; Stefanus A. Privacy-protected transfer of electronic information
FR2717286B1 (fr) 1994-03-09 1996-04-05 Bull Cp8 Procédé et dispositif pour authentifier un support de données destiné à permettre une transaction ou l'accès à un service ou à un lieu, et support correspondant.
US5684881A (en) 1994-05-23 1997-11-04 Matsushita Electric Industrial Co., Ltd. Sound field and sound image control apparatus and method
US5473692A (en) 1994-09-07 1995-12-05 Intel Corporation Roving software license for a hardware agent
US5539828A (en) 1994-05-31 1996-07-23 Intel Corporation Apparatus and method for providing secured communications
JPH0883211A (ja) 1994-09-12 1996-03-26 Mitsubishi Electric Corp データ処理装置
US6058478A (en) * 1994-09-30 2000-05-02 Intel Corporation Apparatus and method for a vetted field upgrade
FR2725537B1 (fr) 1994-10-11 1996-11-22 Bull Cp8 Procede de chargement d'une zone memoire protegee d'un dispositif de traitement de l'information et dispositif associe
US5903752A (en) * 1994-10-13 1999-05-11 Intel Corporation Method and apparatus for embedding a real-time multi-tasking kernel in a non-real-time operating system
US5606617A (en) 1994-10-14 1997-02-25 Brands; Stefanus A. Secret-key certificates
US5564040A (en) 1994-11-08 1996-10-08 International Business Machines Corporation Method and apparatus for providing a server function in a logically partitioned hardware machine
US5560013A (en) 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
US5555414A (en) 1994-12-14 1996-09-10 International Business Machines Corporation Multiprocessing system including gating of host I/O and external enablement to guest enablement at polling intervals
US5615263A (en) 1995-01-06 1997-03-25 Vlsi Technology, Inc. Dual purpose security architecture with protected internal operating system
US5764969A (en) 1995-02-10 1998-06-09 International Business Machines Corporation Method and system for enhanced management operation utilizing intermixed user level and supervisory level instructions with partial concept synchronization
FR2731536B1 (fr) 1995-03-10 1997-04-18 Schlumberger Ind Sa Procede d'inscription securisee d'informations dans un support portable
US5717903A (en) 1995-05-15 1998-02-10 Compaq Computer Corporation Method and appartus for emulating a peripheral device to allow device driver development before availability of the peripheral device
JP3451595B2 (ja) 1995-06-07 2003-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ
US5684948A (en) 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US5633929A (en) 1995-09-15 1997-05-27 Rsa Data Security, Inc Cryptographic key escrow system having reduced vulnerability to harvesting attacks
US5737760A (en) 1995-10-06 1998-04-07 Motorola Inc. Microcontroller with security logic circuit which prevents reading of internal memory by external program
JP3693721B2 (ja) 1995-11-10 2005-09-07 Necエレクトロニクス株式会社 フラッシュメモリ内蔵マイクロコンピュータ及びそのテスト方法
US5657445A (en) 1996-01-26 1997-08-12 Dell Usa, L.P. Apparatus and method for limiting access to mass storage devices in a computer system
US5835594A (en) * 1996-02-09 1998-11-10 Intel Corporation Methods and apparatus for preventing unauthorized write access to a protected non-volatile storage
US5809546A (en) 1996-05-23 1998-09-15 International Business Machines Corporation Method for managing I/O buffers in shared storage by structuring buffer table having entries including storage keys for controlling accesses to the buffers
US6175925B1 (en) * 1996-06-13 2001-01-16 Intel Corporation Tamper resistant player for scrambled contents
US6205550B1 (en) * 1996-06-13 2001-03-20 Intel Corporation Tamper resistant methods and apparatus
US6178509B1 (en) * 1996-06-13 2001-01-23 Intel Corporation Tamper resistant methods and apparatus
US5729760A (en) 1996-06-21 1998-03-17 Intel Corporation System for providing first type access to register if processor in first mode and second type access to register if processor not in first mode
US6199152B1 (en) * 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US5740178A (en) 1996-08-29 1998-04-14 Lucent Technologies Inc. Software for controlling a reliable backup memory
US6055637A (en) * 1996-09-27 2000-04-25 Electronic Data Systems Corporation System and method for accessing enterprise-wide resources by presenting to the resource a temporary credential
US5844986A (en) 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US5852717A (en) 1996-11-20 1998-12-22 Shiva Corporation Performance optimizations for computer networks utilizing HTTP
DE19649292A1 (de) * 1996-11-28 1998-06-04 Deutsche Telekom Ag Verfahren zum Sichern eines durch eine Schlüsselhierarchie geschützten Systems
US5901225A (en) * 1996-12-05 1999-05-04 Advanced Micro Devices, Inc. System and method for performing software patches in embedded systems
US5757919A (en) 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
US6412035B1 (en) * 1997-02-03 2002-06-25 Real Time, Inc. Apparatus and method for decreasing the response times of interrupt service routines
US6557104B2 (en) * 1997-05-02 2003-04-29 Phoenix Technologies Ltd. Method and apparatus for secure processing of cryptographic keys
US6044478A (en) * 1997-05-30 2000-03-28 National Semiconductor Corporation Cache with finely granular locked-down regions
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6175924B1 (en) * 1997-06-20 2001-01-16 International Business Machines Corp. Method and apparatus for protecting application data in secure storage areas
US6035374A (en) * 1997-06-25 2000-03-07 Sun Microsystems, Inc. Method of executing coded instructions in a multiprocessor having shared execution resources including active, nap, and sleep states in accordance with cache miss latency
US6014745A (en) * 1997-07-17 2000-01-11 Silicon Systems Design Ltd. Protection for customer programs (EPROM)
US6212635B1 (en) * 1997-07-18 2001-04-03 David C. Reardon Network security system allowing access and modification to a security subsystem after initial installation when a master token is in place
DE19735948C1 (de) * 1997-08-19 1998-10-01 Siemens Nixdorf Inf Syst Verfahren zur Verbesserung der Steuerungsmöglichkeit in Datenverarbeitungsanlagen mit Adreßübersetzung
US6182089B1 (en) * 1997-09-23 2001-01-30 Silicon Graphics, Inc. Method, system and computer program product for dynamically allocating large memory pages of different sizes
US6357004B1 (en) * 1997-09-30 2002-03-12 Intel Corporation System and method for ensuring integrity throughout post-processing
US6061794A (en) * 1997-09-30 2000-05-09 Compaq Computer Corp. System and method for performing secure device communications in a peer-to-peer bus architecture
US6378072B1 (en) * 1998-02-03 2002-04-23 Compaq Computer Corporation Cryptographic system
US6192455B1 (en) * 1998-03-30 2001-02-20 Intel Corporation Apparatus and method for preventing access to SMRAM space through AGP addressing
US6374286B1 (en) * 1998-04-06 2002-04-16 Rockwell Collins, Inc. Real time processor capable of concurrently running multiple independent JAVA machines
US6173417B1 (en) * 1998-04-30 2001-01-09 Intel Corporation Initializing and restarting operating systems
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6339815B1 (en) * 1998-08-14 2002-01-15 Silicon Storage Technology, Inc. Microcontroller system having allocation circuitry to selectively allocate and/or hide portions of a program memory address space
US6505279B1 (en) * 1998-08-14 2003-01-07 Silicon Storage Technology, Inc. Microcontroller system having security circuitry to selectively lock portions of a program memory address space
US6363485B1 (en) * 1998-09-09 2002-03-26 Entrust Technologies Limited Multi-factor biometric authenticating device and method
US7111290B1 (en) * 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6560627B1 (en) * 1999-01-28 2003-05-06 Cisco Technology, Inc. Mutual exclusion at the record level with priority inheritance for embedded systems using one semaphore
US6188257B1 (en) * 1999-02-01 2001-02-13 Vlsi Technology, Inc. Power-on-reset logic with secure power down capability
US7225333B2 (en) * 1999-03-27 2007-05-29 Microsoft Corporation Secure processor architecture for use with a digital rights management (DRM) system on a computing device
US6684326B1 (en) * 1999-03-31 2004-01-27 International Business Machines Corporation Method and system for authenticated boot operations in a computer system of a networked computing environment
US6389537B1 (en) * 1999-04-23 2002-05-14 Intel Corporation Platform and method for assuring integrity of trusted agent communications
US6529909B1 (en) * 1999-08-31 2003-03-04 Accenture Llp Method for translating an object attribute converter in an information services patterns environment
JP2001148344A (ja) * 1999-09-09 2001-05-29 Nikon Corp 露光装置、エネルギ源の出力制御方法、該方法を用いるレーザ装置、及びデバイス製造方法
US6535988B1 (en) * 1999-09-29 2003-03-18 Intel Corporation System for detecting over-clocking uses a reference signal thereafter preventing over-clocking by reducing clock rate
US6374317B1 (en) * 1999-10-07 2002-04-16 Intel Corporation Method and apparatus for initializing a computer interface
US6507904B1 (en) * 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
US6678825B1 (en) * 2000-03-31 2004-01-13 Intel Corporation Controlling access to multiple isolated memories in an isolated execution environment
GB0020416D0 (en) * 2000-08-18 2000-10-04 Hewlett Packard Co Trusted system
JP2002351854A (ja) * 2001-05-30 2002-12-06 Omron Corp プログラム実行装置および携帯型情報処理装置
US20030018892A1 (en) * 2001-07-19 2003-01-23 Jose Tello Computer with a modified north bridge, security engine and smart card having a secure boot capability and method for secure booting a computer
US7191464B2 (en) * 2001-10-16 2007-03-13 Lenovo Pte. Ltd. Method and system for tracking a secure boot in a trusted computing environment
GB2382419B (en) * 2001-11-22 2005-12-14 Hewlett Packard Co Apparatus and method for creating a trusted environment
US6961806B1 (en) * 2001-12-10 2005-11-01 Vmware, Inc. System and method for detecting access to shared structures and for maintaining coherence of derived structures in virtualized multiprocessor systems
US7103771B2 (en) * 2001-12-17 2006-09-05 Intel Corporation Connecting a virtual token to a physical token
US6996748B2 (en) * 2002-06-29 2006-02-07 Intel Corporation Handling faults associated with operation of guest software in the virtual-machine architecture
US7318141B2 (en) * 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines
US7793286B2 (en) * 2002-12-19 2010-09-07 Intel Corporation Methods and systems to manage machine state in virtual machine operations
US7111200B2 (en) * 2003-04-17 2006-09-19 International Business Machines Corporation Apparatus and method for debugging a logical partition
US20050076186A1 (en) * 2003-10-03 2005-04-07 Microsoft Corporation Systems and methods for improving the x86 architecture for processor virtualization, and software systems and methods for utilizing the improvements
US7552426B2 (en) * 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
US7421689B2 (en) * 2003-10-28 2008-09-02 Hewlett-Packard Development Company, L.P. Processor-architecture for facilitating a virtual machine monitor
US7370181B2 (en) * 2004-06-22 2008-05-06 Intel Corporation Single stepping a virtual machine guest using a reorder buffer

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6376028A (ja) * 1986-09-19 1988-04-06 Fujitsu Ltd 仮想計算機システムにおける命令ステツプ実行制御方式

Also Published As

Publication number Publication date
WO2005098616A3 (en) 2006-11-02
JP2007525776A (ja) 2007-09-06
US7356735B2 (en) 2008-04-08
CN101189582A (zh) 2008-05-28
EP1735710A2 (en) 2006-12-27
WO2005098616A2 (en) 2005-10-20
US20050240819A1 (en) 2005-10-27
CN101189582B (zh) 2010-09-01

Similar Documents

Publication Publication Date Title
JP4688862B2 (ja) 仮想マシン環境における仮想マシンのシングルステップ機能のサポートを提供すること
EP1939754B1 (en) Providing protected access to critical memory regions
US9442868B2 (en) Delivering interrupts directly to a virtual processor
TW594493B (en) New processor mode for limiting the operation of guest software running on a virtual machine supported by a virtual machine monitor
US7748037B2 (en) Validating a memory type modification attempt
JP6017706B2 (ja) ピアモニタにて信頼性・可用性・保守性(ras)フローをサポートする機構
JP6006248B2 (ja) 命令エミュレーションプロセッサ、方法、およびシステム
TWI556109B (zh) 避免從異常返回時過早致能觸發揭露性中斷
JP4579972B2 (ja) 仮想マシン環境におけるゲストソフトウェアの実行中にオープン・イベント・ウィンドウの認識を容易にする方法および装置
US10120738B2 (en) Hypervisor techniques for performing non-faulting reads in virtual machines
JP2007506162A (ja) バーチャルマシーンの動作の復帰に対する割込又は実行のベクトル処理
IL293321A (en) Device and method for handling anomalies
US20120072638A1 (en) Single step processing of memory mapped accesses in a hypervisor
JP6920286B2 (ja) 例外処理
JP5452336B2 (ja) 周辺機器障害模擬システム、周辺機器障害模擬方法および周辺機器障害模擬プログラム
JP2018531462A6 (ja) 例外処理
WO2018214482A1 (zh) 一种虚拟机的监控方法和装置
JP2013008188A (ja) 計算機、デバイス管理方法、プログラム、及び記録媒体

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090908

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091208

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100616

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100616

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100707

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100810

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101109

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101125

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140225

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

LAPS Cancellation because of no payment of annual fees