JP4688862B2 - Providing support for single step functionality of virtual machines in virtual machine environments - Google Patents
Providing support for single step functionality of virtual machines in virtual machine environments Download PDFInfo
- 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
Links
- 238000012545 processing Methods 0.000 claims description 103
- 238000000034 method Methods 0.000 claims description 68
- 238000012546 transfer Methods 0.000 claims description 52
- 230000007704 transition Effects 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 5
- 230000000452 restraining effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 38
- 230000007246 mechanism Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 238000013461 design Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000012790 confirmation Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 101710092886 Integrator complex subunit 3 Proteins 0.000 description 1
- 102100025254 Neurogenic locus notch homolog protein 4 Human genes 0.000 description 1
- 101100016034 Nicotiana tabacum APIC gene Proteins 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring 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
本発明の実施形態は、概して、仮想マシンに関する。本発明の実施形態は、特に、仮想マシン環境における仮想マシンのシングルステップ機能のサポートを提供することに関する。 Embodiments of the present invention generally relate to virtual machines. Embodiments of the present invention are particularly concerned with providing support for a single step function of a virtual machine in a virtual machine environment.
シングルステップ技術は、従来のオペレーティングシステム(OS)環境において、デバッガによって広く使用されている。特に、シングルステップ技術は、アプリケーションを一度に1命令ずつ進めることを目的として使用され、これによって、デバッガがアプリケーションをソースコード内の特定のポイントに置くことを可能にしている。シングルステップを可能にすることを目的として、種々の技法が使用されてきた。例えば、Intel(登録商標) Pentium(登録商標)4の命令セット・アーキテクチャ(ISA)(本明細書ではIA−32 ISAと呼ぶ)では、EFLAGSレジスタ内のトラップフラッグ(TF)は、デバッガがアプリケーションをシングルステップすることを可能にすることを目的として指定されている。TFビットが1に設定された場合、次の命令の完了後に、デバッグ例外が生成される。デバッガは、デバッグ例外の所有権を得た後に、(例:例外用のハンドラを作成し、デバッグ例外のイベントの際にハンドラが呼び出されるようにすることによって)TFビットを設定する。しかし、デバッグ例外は、次の命令が正常終了した場合にのみ生成される。次の命令の実行がフォルト(例:ページフォルト)を引き起こした場合は、デバッグ例外は生成されない。むしろ、例外は、ベクタ化され、EFLAGSレジスタビットの値を格納し、TFビットをクリアする。ハンドラが完了すると、TFビットの格納された値がリストアされ、命令が再実行される。再実行時にフォルトが生じない場合、デバッグ例外が生成される。
本発明は、参照番号が同様の要素を指す添付図面を本発明の実施例として使用することにより説明され、添付図面は、本発明を限定するものではない。 The present invention is illustrated by the use of the accompanying drawings, in which reference numerals refer to similar elements, as examples of the invention, which are not intended to limit the invention.
仮想マシン環境において仮想マシンのシングルステップ機能のサポートを提供する方法および装置が説明される。以下の説明において、本発明を説明することを目的に、本発明の理解を提供するために多くの特定の詳細が提示される。しかし、当業者にとっては、これらの詳細を必要とすることなく本発明が実施可能であることは明白である。 A method and apparatus for providing support for single step functionality of a virtual machine in a virtual machine environment is described. In the following description, for the purposes of illustrating the present invention, numerous specific details are set forth in order to provide an understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without these details.
以下の詳細な説明のいくつかの部分は、コンピュータシステムのレジスタまたはメモリ内のデータビットの操作に関するアルゴリズムおよび記号表現の形で説明される。これらのアルゴリズムの説明および表現は、データ処理分野の当業者によって、技術の内容の本質を他の当業者に最も効率的に伝えるために使用される方法である。アルゴリズムは、本明細書では、また一般的に、期待される結果に至る動作の自己矛盾無き順序であると考えられる。操作は、物理的な数量に対する物理的な操作を必要とするものである。通常、必ずしも必要ではないが、これらの数量は、格納、転送、結合、比較、および他の操作がされうる電気または磁気の信号の形態をとる。これらの信号を、ビット、値、要素、記号、文字、言葉、数字、またはそのような形で参照することは、主に広く使われていることを理由として、便利であることがたびたび証明されている。 Some portions of the detailed descriptions that follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer system register or memory. These algorithmic descriptions and representations are the methods used by those skilled in the data processing arts to most effectively convey the substance of their technology to others skilled in the art. Algorithms are also considered herein to be a self-consistent sequence of actions that lead to expected results. The operations are those requiring physical operations on physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. Referencing these signals in bits, values, elements, symbols, letters, words, numbers, or any such form has often proved useful, mainly because of their widespread use. ing.
しかし、上述および同様の用語は、適切な物理的な数量に関連付けられたものであって、これらの数量に適用される単に便利なラベルであると理解されるべきである。特に記述が無い限り、下記の説明から明白であるように、本発明に関する説明で使用される「処理」、「コンピューティング」、「計算」、「判定」、またはこれらに類似の言葉は、コンピュータシステムのレジスタおよびメモリ内の物理的な(電子的な)数量として表現されるデータを操作して、コンピュータシステムメモリまたはレジスタ、または、その他の情報を格納、転送、または表示するデバイス内の物理的な数量として同様に表現されるその他のデータに変換する、コンピュータシステムまたは同様の電子コンピューティングデバイスの動作および処理を指す。 However, it should be understood that the above and similar terms are associated with appropriate physical quantities and are merely convenient labels applied to these quantities. Unless otherwise stated, as will be apparent from the description below, the terms “processing”, “computing”, “calculation”, “determining”, or similar terms used in the description relating to the present invention are Physical in a device that manipulates data expressed as physical (electronic) quantities in system registers and memory to store, transfer, or display computer system memory or registers, or other information Refers to the operation and processing of a computer system or similar electronic computing device that translates into other data that is also expressed as a small quantity.
実施形態に関する以下の詳細な説明では、本発明を説明する手段として、本発明が実施されうる特定の実施形態を示す添付図面への参照がなされる。添付図面では、数字などは、いくつかの図において一貫して実質的に同様のコンポーネントを説明する。これらの実施形態は、当業者による本発明の実施を可能にするために十分な詳細まで説明される。本発明の範囲から逸脱することなく、他の実施形態が使用されてもよく、また、構造的、論理的、および電気的な変更が加えられてもよい。更に、本発明の種々の実施形態は、それぞれ異なっているが、必ずしも相互排他的ではないと理解されるべきである。例えば、一実施形態において説明される特定の機能、構造、または性質は、他の実施形態に含まれうる。このため、下記の詳細な説明は、本発明を限定するものとして理解されるものではなく、本発明の範囲は、添付の特許請求の範囲および特許請求の範囲の均等物の全ての範囲のみによって定義される。 In the following detailed description of the embodiments, reference is made to the accompanying drawings that show specific embodiments in which the invention can be practiced, as a means of describing the invention. In the accompanying drawings, numerals and the like describe components that are substantially similar throughout in several figures. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention. Other embodiments may be used and structural, logical, and electrical changes may be made without departing from the scope of the invention. Further, it should be understood that the various embodiments of the present invention are different but not necessarily mutually exclusive. For example, a particular function, structure, or property described in one embodiment can be included in other embodiments. The following detailed description is, therefore, not to be taken as limiting the invention, and the scope of the invention is limited only by the appended claims and the equivalents of the claims. Defined.
下記の例は、実行ユニットおよび論理回路と関連して、仮想マシンのシングルステップを説明するが、本発明の他の実施形態は、ソフトウェアによって実施されることができる。例えば、いくつかの実施形態では、本発明は、本発明による処理を実行することを目的としてコンピュータ(またはその他の電子デバイス)をプログラムするために使用されうる命令群が格納された、マシンまたはコンピュータ読み取り可能な媒体を含むコンピュータプログラム製品またはソフトウェアとして提供されてもよい。他の実施形態では、本発明の方法は、本発明の方法を実行することを目的とした、ハードウェアに制御された論理を含む特定のハードウェアコンポーネントによって、または、プログラムされたコンピュータコンポーネントおよびカスタム・ハードウェアコンポーネントの組み合わせによって実行されてもよい。 The following example describes a single step of a virtual machine in connection with execution units and logic circuits, but other embodiments of the invention can be implemented by software. For example, in some embodiments, the present invention provides a machine or computer that stores instructions that may be used to program a computer (or other electronic device) for the purpose of performing the processing according to the present invention. It may be provided as a computer program product or software that includes a readable medium. In other embodiments, the methods of the present invention may be implemented by specific hardware components that include hardware controlled logic or programmed computer components and customs intended to perform the methods of the present invention. -It may be executed by a combination of hardware components.
このように、マシン読み取り可能な媒体は、マシン(例:コンピュータ)によって読み取り可能な形態で情報を格納または送信する全ての機構を含んでもよい。これらの機構は、フロッピーディスク、光ディスク、コンパクト・ディスク・リード・オンリー・メモリ(CD−ROM)、および、磁気光ディスク、リード・オンリー・メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、消去可能プログラマブル・リード・オンリー・メモリ(EPROM)、電気的消去可能リード・オンリー・メモリ(EEPROM)、磁気または光カード、フラッシュメモリ、インターネットによる転送、電気、光、音波、またはその他の形態の伝播信号(例:搬送波、赤外線信号、デジタル信号、など)などを含み、しかし、これらに限定されない。 Thus, machine-readable media may include any mechanism for storing or transmitting information in a form readable by a machine (eg, a computer). These mechanisms are floppy disk, optical disk, compact disk read only memory (CD-ROM), magnetic optical disk, read only memory (ROM), random access memory (RAM), erasable Programmable read-only memory (EPROM), electrically erasable read-only memory (EEPROM), magnetic or optical card, flash memory, Internet transfer, electrical, optical, acoustic, or other forms of propagation signals ( Example: carrier wave, infrared signal, digital signal, etc.), but not limited to.
更に、デザインは、創造からシミュレーション、そして製造に至る種々の段階を経てもよい。デザインを表すデータは、多くの方法によってデザインを表しうる。最初に、シミュレーションにおいて便利であるように、ハードウェアは、ハードウェア記述言語または他の機能記述言語を使用して表現されてもよい。更に、ロジックおよび/またはトランジスタゲートを有する回路レベルモデルは、デザインプロセスのいくつかの段階において作成されてもよい。また、多くのデザインは、いくつかの段階において、ハードウェアモデル内の種々のデバイスの物理的な配置を表すデータのレベルに到達する。従来の半導体製造技術が使用される場合、ハードウェアモデルをあらわすデータは、集積回路の製造に使用されるマスクの異なるマスクレイヤにおける種々の特徴の存在または不在を指定するデータであってもよい。全てのデザインの表現において、データは、いかなる形式のマシン読み取り可能な媒体に格納されてもよい。これらの情報を送信するために調節または生成される光波または電波、メモリ、または、ディスクのような磁気または光ストレージは、マシン読み取り可能な媒体であってもよい。これらの媒体の全ては、デザインまたはソフトウェア情報を「伝送」または「表現」してもよい。コードまたはデザインを表現または伝送する電気搬送波が送信されると、電気信号のコピー、バッファリング、または再送信が実行される形で、新規のコピーが作成される。このように、通信プロバイダまたはネットワークプロバイダは、本発明の技法を具体化する物(搬送波)のコピーを生成してもよい。 Furthermore, the design may go through various stages from creation to simulation and manufacturing. Data representing a design can represent the design in many ways. Initially, the hardware may be expressed using a hardware description language or other functional description language, as is convenient in simulation. In addition, circuit level models with logic and / or transistor gates may be created at several stages of the design process. Many designs also reach a level of data that represents the physical placement of various devices in the hardware model at some stage. When conventional semiconductor manufacturing techniques are used, the data representing the hardware model may be data specifying the presence or absence of various features in different mask layers of the mask used to manufacture the integrated circuit. In all design representations, the data may be stored on any form of machine-readable media. Light waves or radio waves that are adjusted or generated to transmit these information, magnetic or optical storage such as memory, or disks may be machine-readable media. All of these media may “transmit” or “represent” design or software information. When an electrical carrier that represents or transmits a code or design is transmitted, a new copy is created in such a way that copying, buffering, or retransmission of the electrical signal is performed. Thus, a communications provider or network provider may generate a copy of an object (carrier) that embodies the techniques of the present invention.
図1は、本発明が動作しうる仮想マシン環境100の一実施形態を示す図である。本実施形態では、最小限のプラットフォーム・ハードウェア116は、例えば、標準的なオペレーティングシステム(OS)またはVMM112のような仮想マシンモニタ(VMM)を実行することができるコンピュータプラットフォームを備える。
FIG. 1 is a diagram illustrating one embodiment of a
VMM112は、概してソフトウェアによって実装されるが、上位ソフトウェアに対して最小限のマシンインタフェースをエミュレートおよびエクスポートしてもよい。そのような上位ソフトウェアは、通常のまたはリアルタイムOSを含んでもよく、限定されたオペレーティングシステムの機能を有する大きく機能を取り除かれたオペレーティングシステムであってもよく、また、従来のOSの機能を有しなくてもよい。あるいは、例えば、VMM112は、他のVMMの中または上において実行されてもよい。VMMは、例えば、ハードウェア、ソフトウェア、ファームウェア、または種々の技法の組み合わせによって実装されてもよい。
The
プラットフォーム・ハードウェア116は、パーソナル・コンピュータ(PC)、メインフレーム、ハンドヘルド・デバイス、ポータブル・コンピュータ、セットアップ・ボックス、または他のいかなるコンピュータシステムであってもよい。プラットフォーム・ハードウェア116は、プロセッサ118およびメモリ120を有する。
プロセッサ118は、マイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラなどのような、ソフトウェアを実行することができるいかなるタイプのプロセッサであってもよい。プロセッサ118は、本発明の実施形態の方法を実行することを目的として、マイクロコード、プログラマブル・ロジック、またはハードウェアによって制御されたロジックを含んでもよい。図1は、プロセッサ118を1つだけ示しているが、システム内には1つ以上のプロセッサが存在してもよい。 The processor 118 may be any type of processor capable of executing software, such as a microprocessor, digital signal processor, microcontroller, and the like. The processor 118 may include microcode, programmable logic, or hardware controlled logic for the purpose of performing the methods of the embodiments of the present invention. Although FIG. 1 shows only one processor 118, there may be more than one processor in the system.
メモリ120は、ハードディスク、フロッピーディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、フラッシュメモリ、上記のデバイスの組み合わせ、またはプロセッサ118によって読み取り可能ないかなる他のタイプのマシン媒体であってもよい。メモリ120は、本発明の実施形態の方法を実行する命令群および/またはデータを格納してもよい。 Memory 120 may be a hard disk, floppy disk, random access memory (RAM), read only memory (ROM), flash memory, a combination of the above devices, or any other type of machine medium readable by processor 118. It may be. The memory 120 may store instructions and / or data that perform the methods of the embodiments of the invention.
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によって制御される必要はなく、ゲストソフトウェアによってアクセスされることができる。
The
更に、各ゲストOSは、例外(例:ページフォルト、一般保護違反、など)、割り込み(例:ハードウェア割り込み、ソフトウェア割り込み)、およびプラットフォームイベント(例:初期化(INIT)およびシステムマネージメント割り込み(SMI))のような種々のイベントを処理することを想定する。これらのフォルトイベントのうちのいくつかは、VM102および114の正常な動作を保証すること、および、ゲストソフトウェアから保護することを目的として、VMM112によって処理される必要があるので、「特権的」である。
In addition, each guest OS has exceptions (eg, page faults, general protection violations, etc.), interrupts (eg, hardware interrupts, software interrupts), and platform events (eg, initialization (INIT) and system management interrupts (SMI)). Assume that various events such as)) are processed. Some of these fault events are “privileged” because they need to be handled by the
特権的フォルトイベントが発生したとき、または、ゲストソフトウェアが特権的リソースにアクセスしたとき、制御は、VMM112に移行されうる。ゲストソフトウェアからVMM122への制御の移行は、本明細書ではVM exitと呼ぶ。リソースアクセスを容易にした後、または、イベントを適切に処理した後、VMM112は、制御をゲストソフトウェアに戻してもよい。VMM112からゲストソフトウェアへの制御の移行は、本明細書ではVM entryと呼ぶ。
When a privileged fault event occurs or when guest software accesses a privileged resource, control can be transferred to the
一実施形態では、プロセッサ118は、仮想マシン制御構造(VMCS)124に格納されたデータに従って、VM102および114の動作を制御する。VMCS124は、ゲストソフトウェアの状態、VMM112の状態、VMM112がゲストソフトウェアの動作をどのように制御したいのかを示す実行制御情報、VMM112とVMの間の移行を制御する情報などを含んでもよい。プロセッサ118は、VMの実行環境を判定すること、および、その動作を抑制することを目的として、VMCS124から情報を読み取る。一実施形態では、VMCSは、メモリ120に格納される。いくつかの実施形態では、複数のVMをサポートすることを目的として、複数のVMCS構造が使用される。
In one embodiment, processor 118 controls the operation of
一実施形態では、プロセッサ118は、制御をVM102または114に移行(VM entryの要求)させるVMM112の要求を受信し、VMM122が関連するVMのシングルステップを要求したかどうかを判定する、シングルステップ・ロジック122を有する。シングルステップ機能は、仮想マシン環境100において種々の用途を有してもよい。例えば、VMM112は、VM102または114で実行されるシステム(すなわち、特権的)またはアプリケーションコードをデバッグすることを目的として、シングルステップ機能を要求してもよい。他の例では、VMM112は、VM102または114の動作中に特定のデバイスまたはプラットフォームの仮想化を実現することを目的として、シングルステップ機能を要求してもよい(例:VMM112がVMに読み取り処理を許可し書き込み処理を許可したくないメモリ・マップドI/Oデバイス)。更に他の例では、VMM112は、VM102または114の実行をトレースすることを目的として、シングルステップ機能を要求してもよい(新規システムの設計をテストする場合に、VMの動作の経過を維持するため)。
In one embodiment, the processor 118 receives a request for the
シングルステップ・ロジック122は、シングルステップ・インジケータの現在値に基づいて、VMM122がシングルステップ機能を要求したかどうかを判定する。一実施形態では、シングルステップ・インジケータは、VMCS124に格納される。あるいは、シングルステップ・インジケータは、プロセッサ118、メモリ120およびプロセッサ118の組み合わせ、またはいかなる他のストレージ・ロケーションに存在してもよい。
The single step logic 122 determines whether the VMM 122 has requested a single step function based on the current value of the single step indicator. In one embodiment, the single step indicator is stored in
一実施形態では、VMM112は、VM102または114に制御を移行させる要求をする前に、シングルステップ・インジケータの値を設定する。あるいは、VM102および114のそれぞれは、定義済みの値に設定された、または、VMの動作中に変更された、異なるシングルステップ・インジケータに関連付けられる。
In one embodiment, the
VMM112によるVM entryの要求を受信した際に、シングルステップ・ロジック122がシングルステップ・インジケータはシングルステップ値(例:1)に設定されていることを判定した場合、シングルステップ・ロジック122は、制御をVMに移行し、最初のVM命令を実行し、最初のVM命令の実行が正常終了した場合、制御をVMM112に移行する(すなわち、VM exitが生成される)。一実施形態では、シングルステップ・ロジック122は、シングルステップ・インジケータの現在値によってVM exitが引き起こされたことを、(例:指定されたリーズン・コードを使用して)VMM112に通知する。
When the single step logic 122 determines that the single step indicator is set to a single step value (eg, 1) upon receipt of the VM entry request by the
最初のVM命令の実行が失敗した場合(すなわち、フォルトを引き起こした場合)、シングルステップ・ロジック122は、(例:VMCS124内の関連する実行制御情報を調査して、その情報が、フォルトはVM exitを必要とすることを示しているかどうかを判定することによって)結果として生じたフォルトがVM exitに関連するものであるかどうかを判定する。フォルトがVM exitに関連する場合は、シングルステップ・ロジック122は、VMM112に制御を移行し、一実施形態では、フォルトによってVM exitが引き起こされたことを、VMM112に通知する。フォルトがVM exitを必要としない場合、シングルステップ・ロジック122は、VMにフォルトを送付する。一実施形態では、フォルトの送付は、送付されるフォルトに関連するエントリのリダイレクト構造を検索することと、フォルトを処理するように指定されたルーチンの場所の記述子をこのエントリから抽出することと、記述子を使用してルーチンの先頭に移動することを含む。対応する割り込み、例外、またはその他のフォルトを処理するように指定されたルーチンは、本明細書では、フォルト・ハンドラと呼ばれる。
If execution of the first VM instruction fails (ie, caused a fault), the single step logic 122 examines the associated execution control information in the VMCS 124 (eg, the fault is VM Determine whether the resulting fault is related to a VM exit (by determining whether it indicates that exit is required). If the fault is associated with a VM exit, the single step logic 122 transfers control to the
フォルトの送付中、プロセッサ118は、仮想アドレスから物理アドレスにアドレスを変換するアドレス変換を1回以上行ってもよい。例えば、割り込みテーブルのアドレスまたは関連するハンドラのアドレスは、仮想アドレスであってもよい。プロセッサは、フォルトの送付中に、種々の確認を実行する必要があってもよい。例えば、プロセッサは、(制限違反フォルト、不在セグメントフォルト、スタックフォルト、などを結果として生じる)セグメンテーション・レジスタおよびアクセス・アドレスの確認、結果として保護違反(例:一般保護違反)を生じうるパーミッション・レベル確認などのような、整合性確認を実行してもよい。 During sending of the fault, the processor 118 may perform address conversion for converting an address from a virtual address to a physical address one or more times. For example, the interrupt table address or the associated handler address may be a virtual address. The processor may need to perform various checks during fault delivery. For example, the processor can check segmentation registers and access addresses (resulting in restriction violation faults, absent segment faults, stack faults, etc.) and permission levels that can result in protection violations (eg, general protection violations) Consistency confirmation, such as confirmation, may be performed.
フォルトのベクタ化処理中の、アドレス変換および確認は、ページフォルト、一般保護違反などのような種々のフォルトを結果として生じうる。現在のフォルトの送付中に引き起こされるいくつかのフォルトは、VM exitを引き起こしてもよい。例えば、物理メモリを保護および仮想化することを目的として、VMM112がページフォルトの際にVM exitを必要とする場合、現在のフォルトのVMへの送付中に生じるページフォルトは、結果としてVM exitを生じる。
Address translation and verification during the fault vectorization process can result in various faults such as page faults, general protection faults, and the like. Some faults that are triggered during the sending of the current fault may cause a VM exit. For example, if the
一実施形態では、シングルステップ・ロジック122は、現在のフォルトの送付が正常終了したかどうかを確認することによって、上述の追加のフォルトが発生する可能性に対応する。現在のフォルトの送付が正常終了した場合、シングルステップ・ロジック122は、フォルト・ハンドラの命令を実行する前にVM exitを生成し、シングルステップ・インジケータの現在値によりVM exitが生成されたことを、VMM112に通知する。シングルステップ・ロジック122が送付は失敗したことを判定した場合、シングルステップ・ロジック122は、新規のフォルトに対して上述の処理を繰り返す。
In one embodiment, the single step logic 122 addresses the possibility of the additional faults described above by checking whether the current fault delivery was successful. If the delivery of the current fault is successful, the single step logic 122 generates a VM exit before executing the fault handler instruction and indicates that the VM exit was generated by the current value of the single step indicator. , Notify the
一定の命令に対しては、命令の正常終了は、フォルト、例外、または割り込みのベクタ化を含む。例えば、IA−32 ISAでは、ソフトウェア割り込み命令(すなわち、INTn、INTO、INT3)は、割り込みまたは例外ハンドラへの呼び出しを生成することによって、ソフトウェア割り込みをベクタ化する。このような割り込みが発生した場合、VMにおける割り込みまたは例外ハンドラの最初の命令が実行される前に、シングルステップ機構によりVM exitが発生する(ソフトウェア割り込みの送付中にネストされた例外が発生せず、また、フォルトまたは例外によってVM exitが生じないと仮定する)。 For certain instructions, successful completion of the instruction includes fault, exception, or interrupt vectorization. For example, in the IA-32 ISA, software interrupt instructions (ie, INTn, INTO, INT3) vectorize software interrupts by generating calls to interrupts or exception handlers. When such an interrupt occurs, the VM exit is generated by the single step mechanism before the first instruction of the interrupt or exception handler in the VM is executed (no nested exception occurs while sending the software interrupt). Also assume that a VM exit does not occur due to a fault or exception).
VMは、本明細書で説明されるシングルステップ機構に依存しない、デバッグまたはシングルステップ機構を使用してもよいことを留意すべきである。例えば、IA−32 ISAでは、VMは、シングルステップ・トラップを生成することを目的としてEFLAGSレジスタ内のTFビットを1に設定してもよく、または、デバッグ・ブレークポイントを生成することを目的としてデバッグ・レジスタを使用してもよい。最初のVM命令がこのようなブレークポイントまたはトラップを引き起こした場合、ブレークポイントまたはトラップのベクタ化を行う前に、シングルステップ機構によりVM exitが発生する。待機ブレークポイントまたはトラップに関する情報は、一実施形態では、VMが使用する機構を正しくエミュレートすることを目的としてVMMによって使用されるように、VMCSに格納される。 It should be noted that the VM may use a debug or single step mechanism that does not rely on the single step mechanism described herein. For example, in an IA-32 ISA, the VM may set the TF bit in the EFLAGS register to 1 for the purpose of generating a single-step trap, or for the purpose of generating a debug breakpoint Debug registers may be used. If the first VM instruction causes such a breakpoint or trap, a VM exit is generated by a single step mechanism before vectorizing the breakpoint or trap. Information about wait breakpoints or traps is stored in the VMCS, in one embodiment, for use by the VMM to properly emulate the mechanism used by the VM.
図2は、VM環境においてVMのシングルステップ機能のサポートを提供する処理200の一実施形態を示すフロー図である。この処理は、ハードウェア(例:回路、専用ロジック、プログラマブル・ロジック、マイクロコード、など)、ソフトウェア(汎用コンピュータシステムまたは専用マシン上で実行するソフトウェア)、またはハードウェアおよびソフトウェアの組み合わせを有する処理ロジックによって実行されてもよい。一実施形態では、処理200は、図1のシングルステップ・ロジック122によって実行される。
FIG. 2 is a flow diagram illustrating one embodiment of a
図2を参照すると、処理200は、処理ロジックがVMに制御を移行させる要求をVMMから受信する、処理ブロック202から開始する。一実施形態では、制御を移行させる要求は、VMMによって実行されるVM entry命令によって受信される。
Referring to FIG. 2,
判定ボックス204において、処理ロジックは、VMMが呼び出されるVMのシングルステップを要求したかどうかを判定する。一実施形態では、処理ロジックは、VMMによって維持されるシングルステップ・インジケータの現在値を読み取ることによって、VMMがVMのシングルステップを要求したかどうかを判定する。シングルステップ・インジケータは、VMCS内またはVMMおよび処理ロジック200によってアクセス可能なその他のいかなるデータ構造内に存在してもよい。一実施形態では、VMMがVMのシングルステップを行いたい場合は、VMMは、シングルステップ・インジケータをシングルステップ値(例:1)に設定し、制御をこのVMに移行させる要求を生成する。一実施形態では、VMMがシングルステップ・インジケータをシングルステップ値に設定した場合、VMMは、VMの実行中に発生しうる各フォルトの際にVM exitが発生するように、実行制御インジケータも設定する。あるいは、シングルステップ・インジケータの設定は、いくつかのまたは全ての実行制御インジケータに依存しない。
In
一実施形態では、シングルステップ・インジケータは、各VM exitにおいて、非シングルステップ値(例:0)に再設定される。他の実施形態では、VMMは、VMのシングルステップが必要とされない場合は、制御をVMに移行させる要求をする前に、シングルステップ・インジケータを非シングルステップ値に再設定する。 In one embodiment, the single step indicator is reset to a non-single step value (eg, 0) at each VM exit. In other embodiments, if the VM single step is not required, the VMM resets the single step indicator to a non-single step value before making a request to transfer control to the VM.
上述のように、例えば、VMで実行されるシステムまたはアプリケーションコードをデバッグする場合、VMの動作中にデバイスまたはプラットフォームを仮想化する場合、VMの実行をトレースする場合などに、VMMは、VMのシングルステップを要求してもよい。 As described above, for example, when debugging system or application code running on a VM, virtualizing a device or platform while the VM is running, tracing VM execution, etc. A single step may be requested.
処理ロジックが、VMのシングルステップが必要とされていると判定した場合、処理ロジックは、処理ブロック208において、VMの最初の命令を実行し、判定ボックス210において、最初のVM命令の実行が正常終了したかどうかを判定する。最初のVM命令の実行が正常終了した場合、処理ロジックは、処理ブロック212において、VM exitを生成し、処理ブロック214において、VM exitの原因がシングルステップであることをVMMに通知する。一実施形態では、処理ロジックは、指定されたリーズン・コードを生成することによって、VM exitの原因をVMMに通知する。一実施形態では、リーズン・コードはVMCSに格納される。
If the processing logic determines that a single step of the VM is required, the processing logic executes the first instruction of the VM at
最初の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に通知する。
If execution of the first VM instruction fails, processing logic determines in decision box 216 whether the resulting fault causes a VM exit. This determination is made by examining associated execution control information (eg, stored in VMCS 124). If the resulting fault generates a VM exit, processing logic generates a VM exit at
フォルトの送付が失敗した場合、処理ロジックは、結果として生じた新規フォルトを処理することを目的として、判定ボックス216に戻る。 If the fault delivery fails, processing logic returns to decision box 216 for the purpose of processing the resulting new fault.
判定ボックス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に戻る。
If the processing logic determines at
いくつかの実施形態では、シングルステップ値に設定されたシングルステップ・インジケータに関連する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と併せて以下に説明される。 In some embodiments, certain events may occur during the operation of a VM invoked in response to a request for a VM entry associated with a single step indicator set to a single step value. For example, the VMM requires that a fault be sent to the VM as part of the VM entry, that the VM entry put the processor in an inactive state, that the first instruction after the VM entry causes a VM exit, etc. It is good. In the Intel Pentium 4 instruction set architecture (ISA) (referred to herein as the IA-32 ISA), examples of inactive states include Halt, Wait-for-SIPI, shutdown, and MWAIT state. During these inactive states, the processor does not complete any instructions and waits for the occurrence of one or more break events that can cause the processor to transition from the inactive state to the normal state. For example, during a Halt active state, the processor may not block hardware interrupts, system management interrupts (SMI), system initialization messages (INIT), non-maskable interrupts (NMI), debug exceptions, machine confirmation exceptions, etc. Wait for outbreak. A typical process for handling such events while supporting the VM's single-step functionality is described below in conjunction with FIGS.
図3は、シングルステップ・インジケータがシングルステップ値に設定されたVM entryの要求に応答する処理300の一実施形態を示すフロー図である。この処理は、ハードウェア(例:回路、専用ロジック、プログラマブル・ロジック、マイクロコード、など)、ソフトウェア(汎用コンピュータシステムまたは専用マシン上で実行するソフトウェア)、またはハードウェアおよびソフトウェアの組み合わせを有する、処理ロジックによって実行されてもよい。一実施形態では、処理300は、図1のシングルステップ・ロジック122によって実行される。
FIG. 3 is a flow diagram illustrating one embodiment of a
図3を参照すると、処理300は、処理ロジックが、シングルステップ・インジケータがシングルステップ値に設定されたVM entryを検出する、処理ブロック302から開始する。次に、判定ボックス304において、処理ロジックは、VMMがVM entryの一部として待機フォルトのVMへの送付を要求したかどうかを判定する(すなわち、ベクタ化されたフォルトがVMに送付されるかどうか)。そうである場合は、処理ロジックは、処理ブロック306において、待機フォルトをVMに送付する。フォルトの送付は、送付されるフォルトに関連するエントリのリダイレクト構造を検索することと、対応するフォルト・ハンドラの場所の記述子をこのエントリから抽出することと、この記述子を使用してフォルト・ハンドラの先頭に移動することを含んでもよい。フォルトの送付中に、新規フォルト(例:ページフォルト、一般保護違反、など)を結果として生じうるいくつかの処理(例:アドレス変換、セグメンテーション・レジスタおよびアクセス・アドレスの確認、パーミッション・レベル確認、など)が実行される必要があってもよい。判定ボックス308において、処理ロジックは、待機フォルトの送付が正常終了したかどうかを判定する。もしそうであれば(すなわち、新規フォルトが発生しなかったら)、処理ロジックは、処理ブロック310において、対応するハンドラの命令を実行する前に、シングルステップ・インジケータを指定するリーズン・コードと共にVM exitを生成する。
Referring to FIG. 3,
待機フォルトの送付が失敗した場合、処理ロジックは、判定ボックス312において、結果として生じた新規フォルトがVM exitを引き起こすかどうかを判定する。もしそうであれば、処理ロジックは、処理ブロック314において、新規フォルトを指定するリーズン・コードと共にVM exitを生成する。そうではなく、新規フォルトがVM exitを生じない場合は、処理ロジックは、新規フォルトを処理することを目的として処理ブロック306に戻る。
If delivery of the wait fault fails, processing logic determines in
判定ボックス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の動作状態の指示子が保存された場合、指示子は通常(すなわち、活性)活動状態を示すという効果を有する。
If the processing logic determines in decision box 304 that the VMM has not requested the sending of a standby fault as part of the VM entry, then processing logic further determines that the VM entry inactivates the processor in
判定ボックス316において、処理ロジックが、VM entryはプロセッサを非活性活動状態に移行させないと判定した場合、処理ロジックは、処理ブロック324において、VMの最初の命令を実行し、判定ボックス326において、最初の命令の実行がVM exitを引き起こすかどうかを判定する。もしそうである場合、処理ロジックは、処理ブロック328において、命令を識別するリーズン・コードと共にVM exitを生成する。そうでない場合、処理ロジックは、判定ボックス330において、最初の命令が正常終了したかどうかを判定する。
If the processing logic determines in
最初の命令の実行が失敗した場合、処理ロジックは、結果として生じた新規フォルトを処理することを目的として判定ボックス312に進む。最初の命令の実行が正常終了した場合、処理ロジックは、更に、判定ボックス332において、命令がプロセッサを非活性活動状態に移行させるかどうかを判定する。例えば、IA−32 ISAでは、HLT命令は、プロセッサを非活性活動状態であるHalt状態に移行させる。実行された命令が実際に非活性活動状態に移行した場合、処理ロジックは、更に、判定ボックス334において、活動状態の指示子が保存される必要があるかどうかを(例:VMCS内の実行制御情報の保存活動状態インジケータを調査することによって)判定する。活動状態の指示子が保存される必要がある場合、処理ロジックは、処理ブロック336において、活動状態の指示子を(例:VMCS内に)保存し、処理ブロック338において、シングルステップ・インジケータを指定するリーズン・コードと共にVM exitを生成する。命令がプロセッサを非活性活動状態に移行させなかった場合、または、命令がプロセッサを非活性活動状態に移行させたが活動状態の指示子が保存される必要がない場合、処理ロジックは、処理ブロック338に直接進む。
If execution of the first instruction fails, processing logic proceeds to
いくつかの実施形態では、シングルステップは、いくつかの他のイベント(例えば、INITおよびSMIのような、プラットフォームイベント)の優先度よりも低い優先度を有してもよい。図4は、シングルステップより高い優先度を有するイベントを処理する処理400の一実施形態を示すフロー図である。この処理は、ハードウェア(例:回路、専用ロジック、プログラマブル・ロジック、マイクロコード、など)、ソフトウェア(汎用コンピュータシステムまたは専用マシン上で実行するソフトウェア)、またはハードウェアおよびソフトウェアの組み合わせを有する、処理ロジックによって実行されてもよい。一実施形態では、処理400は、図1のシングルステップ・ロジック122によって実行される。
In some embodiments, a single step may have a priority that is lower than the priority of some other events (eg, platform events such as INIT and SMI). FIG. 4 is a flow diagram illustrating one embodiment of a
図4を参照すると、処理400は、処理ロジックが、シングルステップ・インジケータがシングルステップ値に設定されたVM entryを検出する、処理ブロック402から開始し、処理ブロック404において、VMの最初の命令を実行する。
Referring to FIG. 4,
次に、VMの最初の命令の実行後に、処理ロジックは、処理ブロック406において、シングルステップより高い優先度を有するイベント(例:NMI、SMI、など)を検出し、判定ボックス408において、優先度が高いイベントがVMMまたはいくつかの指定されたソフトウェアによって処理されるかどうかを判定する。一実施形態では、シングルステップ機構を使用するVMMが、関連するVM entryより前に、優先度が高いイベントの実行制御インジケータをVM exitが発生するように設定することができる場合、優先度が高いイベントは、VMMによって処理される。シングルステップ機構を使用するVMMが対応する実行制御インジケータを上述のように設定することができない場合、(例:使用可能なそのような実行制御インジケータが存在しない場合)、優先度が高いイベントは、指定されたソフトウェアによって処理される。例えば、シングルステップ機構を使用するVMMは、関連するVM entryより前に、NMIがVM exitを引き起こすように対応する実行制御ビットを設定してもよい。他の例では、シングルステップ機構を使用するVMMは、関連するVM entryの前に、SMIに関連する実行制御インジケータを更新する機能を有しなくてもよい。そして、SMIは、優先度が高いイベントを管理するように指定されたソフトウェアによって処理されてもよい。
Next, after execution of the first instruction of the VM, processing logic detects an event (eg, NMI, SMI, etc.) having a higher priority than a single step in processing
優先度が高いイベントがシングルステップ機構を使用するVMMによって処理される場合、処理ロジックは、処理ブロック410において、優先度が高いイベントを指定するリーズン・コードと共にVM exitを生成する。あるいは、優先度が高いイベントが、優先度が高いイベントを管理するように指定されたソフトウェアによって処理される場合、処理ロジックは、処理ブロック412において、(例:VMCS内の)待機VM exitインジケータをシングルステップ値に設定し、処理ブロック414において、指定されたソフトウェアに制御を移行する。そして、指定されたソフトウェアは、ブロック416において、優先度が高いイベントを処理し、シングルステップ機構により待機VM exitのVMMへの送付を容易にする。待機VM exitインジケータは、優先度が高いイベントの処理が完了した際に、指定されたソフトウェアによって、または、プロセッサによってVMMに送付されてもよい。例えば、SMI処理は、VMMから独立した管理ソフトウェアによって処理されてもよい。SMIの処理が完了すると、管理ソフトウェアは、RSM(システム管理モードからの復帰)命令を実行してもよく、その後、この命令の実行時に、プロセッサは、シングルステップ機構により待機VM exitの存在を認識し、それに従って待機VM exitを送付してもよい。
If a high priority event is processed by a VMM using a single step mechanism, processing logic generates a VM exit at process block 410 with a reason code specifying the high priority event. Alternatively, if a high priority event is processed by software designated to manage the high priority event, processing logic sets a waiting VM exit indicator (eg, in VMCS) at
上述のように、VMMによるVMのシングルステップは、例えば、VMにおいて実行されるシステムまたはアプリケーションコードのデバッグ、VMの動作中におけるデバイスまたはプラットフォームの仮想化、VMの実行のトレース、などを含む種々の用途を有してもよい。デバイスの仮想化を容易にすることを目的としてシングルステップを使用する典型的な処理について、以下において詳細に説明する。 As described above, VM single stepping with VMM can include a variety of, including, for example, debugging of system or application code executed in VM, device or platform virtualization during VM operation, tracing of VM execution, etc. You may have a use. A typical process using single step for the purpose of facilitating device virtualization is described in detail below.
図5は、一実施形態による、デバイスの仮想化を容易にすることを目的としたVMのシングルステップを使用する典型的な処理500を示すフロー図である。デバイスは、メモリ・マップド・プログラミング・モデル(例:高度プログラマブル割り込みコントローラ(APIC))を使用する入力/出力(I/O)デバイスであってもよく、VMMは、VMによるメモリ・マップドI/Oデバイスへのデータ書き込みを防ぎつつ、VMによるメモリ・マップドI/Oデバイスからのデータ読み取りを許可することを要求してもよい。処理500は、ハードウェア(例:回路、専用ロジック、プログラマブル・ロジック、マイクロコード、など)、ソフトウェア(汎用コンピュータシステムまたは専用マシン上で実行するソフトウェア)、またはハードウェアおよびソフトウェアの組み合わせを含む、処理ロジックによって実行されてもよい。
FIG. 5 is a flow diagram illustrating an
図5を参照すると、処理500は、VMM内の処理ロジックがデバイスのメモリ・マップド空間を書き込み禁止にするためにVMのページテーブルを設定し、(例:対応する実行制御情報を使用して)VMの実行中に発生するページフォルトがVM exitを引き起こすようにページフォルトを設定する、処理ブロック502から開始する。一実施形態では、VMページテーブルの設定は、VMMの制御によって各VMに対して独立したアクティブなゲスト・ページテーブルを維持する、仮想トランスレーション・ルックアサイド・バッファ(VTLB)データ構造を使用することによって、有効にされる。
Referring to FIG. 5,
処理ブロック504において、プロセッサ内の処理ロジックは、VMがデバイスのメモリ・マップド空間にアクセスしたとき、ページフォルトVM exitを生成する。
At
処理ブロック506において、VMM内の処理ロジックは、(例:フォルト・アドレス値がメモリ・マップドI/Oページ内に収まることを調査することによって)VMのアクセスは保護されたメモリ・マップド空間へのものであったことを判定する。
At
処理ブロック508において、VMM内の処理ロジックは、フォルト・アドレスを通常の物理メモリに存在する異なる物理メモリページ(すなわち、メモリ・マップドI/O空間ではない)にマップすることを目的として、VMページテーブルを変更する。
At
処理ブロック510において、VMM内の処理ロジックは、シングルステップ・インジケータを設定して、VM entryを要求する。
At
処理ブロック512において、プロセッサ内の処理ロジックは、VMMによって選択された上記ページにアクセスすることを目的として、VMの命令を実行する。
At
処理ブロック514において、プロセッサ内の処理ロジックは、命令の正常終了の後に、シングルステップ・インジケータによりVM exitを発生させる。
At
次に、VMM内の処理ロジックは、処理ブロック516において、処理ブロック508で設定された物理メモリのページに書かれたデータを調査し、判定ボックス518において、データがデバイスに書き込まれるべきかどうかを判定する。この判定は、セキュリティ(例:デバイスへのいくつかのデータの書き込みは許可され、他のデータの書き込みは許可されない)または正確性(例:仮想化によって必要とされる場合は、デバイスに書き込まれるまえにデータが変更される必要がある)に基づいてもよい。
Next, processing logic within the VMM examines the data written to the physical memory page set at
判定ボックス518において下された判断が正である場合、VMM内の処理ロジックは、処理ブロック520において、データをデバイスに書き込む。あるいは、VMMは、例えばセキュリティ、性能、またはデバイスの仮想化に関する一定の性質が適切であることを保証することを目的として、デバイスに書き込む前に、データを修正してもよい。
If the determination made in
このように、仮想マシン環境における仮想マシンのシングルステップ機能のサポートを提供する方法および装置が説明された。上述の説明は、本発明を説明することを意図したものであって、本発明を限定することは意図していない。上記の説明を読解することにより、当業者には多くの他の実施形態が明白となる。このため、本発明の範囲は、添付の特許請求の範囲および特許請求の範囲の均等物の全ての範囲によって決定される。 Thus, a method and apparatus have been described that provides support for virtual machine single-step functionality in a virtual machine environment. The above description is intended to illustrate the present invention and is not intended to limit the present invention. Many other embodiments will be apparent to those of skill in the art upon reading the above description. Thus, the scope of the present invention is determined by the full scope of the appended claims and their equivalents.
Claims (21)
仮想マシン(VM)に制御を移行させる要求を仮想マシンモニタ(VMM)から受信する段階と、
シングルステップ・インジケータがシングルステップ値に設定されていることを判定する段階と、
前記シングルステップ・インジケータがシングルステップ値に設定されていることを判定することに応じて、
前記VMに制御を移行する段階と、
前記VMの最初の命令の実行が正常終了した場合に、前記最初の命令の前記実行の前記正常終了の後に、前記VMMに制御を移行する段階と、
前記VMの前記最初の命令の前記実行が、前記最初の命令の前記実行に依って生じた現在のフォルトにより正常終了しなかった場合に、前記現在のフォルトが前記VMMへの制御の移行に関連するかどうかどうかを判定する段階と、
前記現在のフォルトが前記VMMへの制御の前記移行に関連するならば前記VMMに制御を移行して前記現在のフォルトにより前記VMMに制御が移行されたことを前記VMMに通知する段階と、
前記現在のフォルトが前記VMMへの制御の前記移行に関連しない場合、前記VMに前記現在のフォルトを送付する段階と、前記現在のフォルトの前記送付が正常終了した場合、対応するフォルト・ハンドラの命令が実行される前に、前記VMMに制御を移行し、前記シングルステップ・インジケータの値が、シングルステップ値を指示していることにより制御が前記VMMに移行されたことを前記VMMに通知する段階と
を行う段階と、
を備える方法。 A step performed by single-step logic,
Receiving a request to transition control to the virtual machine (VM) from virtual machine monitor (VMM),
A step of determining that the single-step indicator is set to single-step values,
In response to determining that the single step indicator is set to a single step value,
The method comprising transferring control to the VM,
If the execution of the first instruction of the VM is successful, after the successful completion of said execution of the first instruction, the steps of transferring control to the VMM,
If the execution of the first instruction of the VM did not complete successfully due to a current fault caused by the execution of the first instruction , the current fault is related to a transfer of control to the VMM. Do the same steps for determining whether or not to,
A step of notifying that the current fault control in the VMM by the transition to and transfers control to the VMM if relevant the current fault control to the VMM is migrated to the VMM,
When the current fault is not related to the transfer of control to the VMM, and the stage to send the current of the fault to the VM, if the is the sending of the current fault was successful, the corresponding fault handler Before the instruction is executed , control is transferred to the VMM, and the value of the single step indicator indicates a single step value to notify the VMM that control has been transferred to the VMM. Stage and
And the stage of
A method comprising:
新規フォルトが前記VMMへの制御の移行に関連するかどうかを判定する段階と、
前記新規フォルトが前記VMMへの制御の移行に関連する場合、前記VMMに制御を移行し、前記新規フォルトにより前記VMMに制御が移行されたことを前記VMMに通知する段階と
を更に備える請求項1に記載の方法。A step of determining that said sending of the current fault is unsuccessful,
A step determining whether a new fault is associated with transfer of control to the VMM,
Wherein when a new fault is associated with transfer of control to the VMM, the VMM to transfers control, the new fault in the claims, further comprising the steps of: notifying the VMM that control the VMM is migrated The method according to 1.
前記VMに前記新規フォルトを送付する段階と、
前記新規フォルトの前記送付が正常終了した場合、対応するフォルト・ハンドラの命令が実行される前に、前記VMMに制御を移行し、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する段階と
を更に備える請求項3に記載の方法。A step determining that the new fault is not associated with the transition of control to the VMM,
Comprising the steps of: sending the new fault to the VM,
If the delivery of the new fault is successful, control is transferred to the VMM before the corresponding fault handler instruction is executed, and control is transferred to the VMM according to the current value of the single step indicator. the method of claim 3, further comprising the steps of: notifying the VMM that was.
前記VMに制御を移行するときに、前記VMに前記ベクタ化されたフォルトを送付する段階と、
前記ベクタ化されたフォルトの前記送付が正常終了した場合、
対応するフォルト・ハンドラの命令を実行するようにベクタ化された前記VMMに制御を移行し、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する段階と
を更に備える請求項1から4のいずれか1項に記載の方法。Before transfers control to the VM, the step of determining that the request to transfer control to the VM is associated with vectorized fault is sent to the VM,
When transfers control to the VM, the steps of sending the vectorized fault to the VM,
If the sending of the vectorized fault is successful,
Corresponding to migrate vectorized controlled by the VMM to execute instructions fault handler, the method comprising: notifying that control the VMM is migrated by the current value of the single-step indicator to the VMM The method according to any one of claims 1 to 4, further comprising:
新規フォルトが前記VMMへの制御の移行に関連するかどうかを判定する段階と、
前記新規フォルトが前記VMMへの制御の前記移行に関連する場合、前記VMMに制御を移行し、前記新規フォルトにより前記VMMに制御が移行されたことを前記VMMに通知する段階と、
前記新規フォルトが前記VMMへの制御の前記移行に関連しない場合、前記VMに前記新規フォルトを送付し、対応するフォルト・ハンドラの命令を実行する前に前記VMMに制御を移行し、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する段階と
を更に備える請求項5に記載の方法。A step of determining that the sending of the vectorized fault has failed,
A step determining whether a new fault is associated with transfer of control to the VMM,
If the new fault is associated with the transfer of control to the VMM, the steps of notifying that the VMM to transfers control, the control to the VMM by new fault is migrated to the VMM,
If the new fault is not related to the transfer of control to the VMM, send the new fault to the VM and transfer control to the VMM before executing the corresponding fault handler instruction; · the method of claim 5, the current value further comprises the steps of notifying the VMM that control the VMM is migrated indicator.
前記VMに制御を移行する段階と、
ブレークイベントの発生の後まで前記VMMへの制御の移行を自制する段階と
を更に備える請求項1から6のいずれか1項に記載の方法。Before transfers control to the VM, determining if said request to transition control to the VM is associated with inactive active state of the processor,
The method comprising transferring control to the VM,
The method according to any one of claims 1 to 6, further comprising the step of restraining the transfer of control to the VMM until after the occurrence of a break event.
前記VMに前記ブレークイベントを送付する段階と、
前記ブレークイベントの前記送付が正常終了した場合、対応するハンドラの命令を実行する前に、前記VMMに制御を移行し、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する段階と、
前記ブレークイベントの前記送付が失敗した場合、新規フォルトが前記VMMへの制御の移行に関連するかどうかを判定する段階と、
前記新規フォルトが前記VMMへの制御の前記移行に関連する場合、前記VMMに制御を移行し、前記新規フォルトにより前記VMMに制御が移行されたことを前記VMMに通知する段階と、
前記新規フォルトが前記VMMへの制御の前記移行に関連しない場合、対応するフォルト・ハンドラの命令を実行する前に、前記VMMに制御を移行し、前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する段階と
を更に備える請求項7または8に記載の方法。A step of determining that the break event is not associated with transfer of control to the VMM,
Comprising the steps of: sending the break event in the VM,
If the sending of the break event ends normally, control is transferred to the VMM before executing the instruction of the corresponding handler, and control is transferred to the VMM according to the current value of the single step indicator. comprising the steps of: notifying the VMM,
If the sending of the break event fails, determining if the new fault is associated with transfer of control to the VMM,
If the new fault is associated with the transfer of control to the VMM, the steps of notifying that the VMM to transfers control, the control to the VMM by new fault is migrated to the VMM,
If the new fault is not related to the transfer of control to the VMM, control is transferred to the VMM before executing the corresponding fault handler instruction, and the current value of the single-step indicator returns to the VMM. the method according to claim 7 or 8 comprising that the control has been migrated further comprising: notifying the VMM.
前記優先度が高いイベントは前記VMMによって処理されるのかどうかを判定する段階と、
前記優先度が高いイベントが前記VMMによって処理される場合、前記VMMに制御を移行し、前記優先度が高いイベントにより前記VMMに制御が移行されたことを前記VMMに通知する段階と、
前記高い優先度のイベントが前記VMMによって処理されない場合、待機VM exitインジケータをシングルステップ値に設定し、高い優先度のイベントを処理するように指定されたソフトウェアに制御を移行する段階と
を更に備える請求項1から11のいずれか1項に記載の方法。And detecting an event having a higher priority than the single step after the execution of the first instruction,
Said high priority events and determining whether to be processed by the VMM,
If the high priority event is handled by the VMM, the steps of notifying that the VMM to transfers control, control on the VMM by the high priority event is migrated to the VMM,
If the high priority event is not handled by the VMM, further comprising the steps of transferring control of the standby VM exit indicator set to a single step value, the software designated to handle the higher priority event 12. A method according to any one of claims 1 to 11.
前記VMMに制御を移行する段階と、
前記シングルステップ・インジケータの現在値により前記VMMに制御が移行されたことを前記VMMに通知する段階と
を更に備える請求項12から14のいずれか1項に記載の方法。And detecting that after the specified software has completed the operation, the current value of the single-step indicator VM exit is waiting,
The method comprising transfer control to the VMM,
The method according to any one of the single-step indicator that control the VMM is migrated by the current value of claims 12, further comprising the steps of: notifying the VMM 14.
シングルステップ・インジケータを格納する、前記VMMによって制御されるデータ構造と、
制御を仮想マシン(VM)に移行させる要求を前記VMMから受信し、前記シングルステップ・インジケータがシングルステップ値に設定されていることを判定し、前記シングルステップ・インジケータがシングルステップ値に設定されていることを判定することに応じて、前記VMの最初の命令の実行が正常終了した場合、前記最初の命令の前記正常終了の後に制御を前記VMMに移行し、前記VMの前記最初の命令の前記実行が、前記最初の命令の前記実行によって生じた現在のフォルトにより正常終了しなかった場合、前記現在のフォルトが前記VMMへの制御の移行に関連するかどうかどうかを判定し、
前記現在のフォルトが前記VMMへの制御の前記移行に関連するならば前記VMMに制御を移行して前記現在のフォルトにより前記VMMに制御が移行されたことを前記VMMに通知し、
前記現在のフォルトが前記VMMへの制御の前記移行に関連しない場合、前記現在のフォルトを前記VMに送付し、前記現在のフォルトの前記送付が正常終了した場合に、対応するフォルト・ハンドラの命令が実行される前に前記VMMに制御を移行し、前記シングルステップ・インジケータの値が、シングルステップ値を指示していることにより前記VMMに制御が移行されたことを前記VMMに通知する
シングルステップ・ロジックと
を備える装置。A virtual machine monitor (VMM),
A data structure controlled by the VMM that stores a single step indicator;
A request is received from the VMM to transfer control to a virtual machine (VM), it is determined that the single step indicator is set to a single step value, and the single step indicator is set to a single step value. If the execution of the first instruction of the VM ends normally in response to determining that the first instruction of the VM is transferred, control is transferred to the VMM after the normal end of the first instruction. If the execution was not successful due to a current fault caused by the execution of the first instruction, determine whether the current fault is related to a transfer of control to the VMM;
If the current fault is related to the transfer of control to the VMM, transfer control to the VMM to notify the VMM that control has been transferred to the VMM due to the current fault;
If the current fault is not related to the transfer of control to the VMM, send the current fault to the VM, and if the delivery of the current fault is successful, the corresponding fault handler instruction Control to the VMM before execution is performed, and the value of the single step indicator indicates a single step value, thereby notifying the VMM that control has been transferred Single step・ A device with logic.
仮想マシン(VM)のシングルステップが示されているかどうかを判定することを目的として前記1つ以上のインジケータを使用し、前記1つ以上のインジケータがシングルステップを示していることを判定することに応じて、前記VMの最初の命令を実行し、前記最初の命令の前記実行が正常終了した場合は、前記最初の命令の前記実行の前記正常終了の後に制御を仮想マシンモニタ(VMM)に移行し、前記VMの前記最初の命令の前記実行が、前記最初の命令の前記実行によって生じた現在のフォルトにより正常終了しなかった場合は、前記現在のフォルトが前記VMMへの制御の移行に関連するかどうかどうかを判定し、
前記現在のフォルトが前記VMMへの制御の前記移行に関連するならば前記VMMに制御を移行して前記現在のフォルトにより前記VMMに制御が移行されたことを前記VMMに通知し、
前記現在のフォルトが前記VMMへの制御の前記移行に関連しない場合、前記VMに前記現在のフォルトを送付し、前記現在のフォルトの前記送付が正常終了した場合、対応するフォルト・ハンドラの命令が実行される前に前記VMMに制御を移行し、前記1つ以上のインジケータの値が、シングルステップ値を指示していることにより前記VMMに制御が移行されたことを前記VMMに通知する、前記メモリに接続されたプロセッサと
を備えるシステム。A memory for storing one or more indicators;
Using the one or more indicators for the purpose of determining whether a single step of a virtual machine (VM) is indicated, and determining that the one or more indicators indicate a single step. In response, if the first instruction of the VM is executed and the execution of the first instruction is normally completed, control is transferred to a virtual machine monitor (VMM) after the normal completion of the execution of the first instruction And if the execution of the first instruction of the VM was not successful due to a current fault caused by the execution of the first instruction , the current fault is related to the transfer of control to the VMM. Determine whether to
If the current fault is related to the transfer of control to the VMM, transfer control to the VMM to notify the VMM that control has been transferred to the VMM due to the current fault;
If the current fault is not related to the transfer of control to the VMM, send the current fault to the VM, and if the delivery of the current fault is successful, the corresponding fault handler instruction is Transferring control to the VMM before it is executed and notifying the VMM that control has been transferred to the VMM by the value of the one or more indicators indicating a single step value ; And a processor connected to memory.
前記命令群が処理システムによって実行されることにより、前記処理システムのプロセッサに、
仮想マシン(VM)に制御を移行させる要求を仮想マシンモニタ(VMM)から受信し、
シングルステップ・インジケータがシングルステップ値に設定されていることを判定し、前記シングルステップ・インジケータがシングルステップ値に設定されていることを判定することに応じて、
前記VMに制御を移行し、
前記VMの最初の命令の実行が正常終了した場合、前記最初の命令の前記実行の前記正常終了の後に前記VMMに制御を移行し、前記VMの前記最初の命令の前記実行が、前記最初の命令の前記実行によって生じた現在のフォルトにより正常終了しなかった場合は、前記現在のフォルトが前記VMMへの制御の移行に関連するかどうかどうかを判定し、
前記現在のフォルトが前記VMMへの制御の前記移行に関連するならば前記VMMに制御を移行して前記現在のフォルトにより前記VMMに制御が移行されたことを前記VMMに通知し、前記現在のフォルトが前記VMMへの制御の前記移行に関連しない場合、前記VMに前記現在のフォルトを送付し、前記現在のフォルトの前記送付が正常終了した場合、対応するフォルト・ハンドラの命令が実行される前に前記VMMに制御を移行し、前記シングルステップ・インジケータの値が、シングルステップ値を指示していることにより前記VMMに制御が移行されたことを前記VMMに通知する
媒体。A machine readable medium recording instructions,
When the instruction group is executed by the processing system , the processor of the processing system
Receives a request from the virtual machine monitor (VMM) to transfer control to the virtual machine (VM),
In response to determining that the single step indicator is set to a single step value and determining that the single step indicator is set to a single step value,
Transfer control to the VM,
If execution of the first instruction of the VM is successful, control is transferred to the VMM after the normal completion of the execution of the first instruction, and the execution of the first instruction of the VM is If the current fault caused by the execution of the instruction did not complete successfully, determine whether the current fault is related to a transfer of control to the VMM;
If the current fault is related to the transfer of control to the VMM, transfer control to the VMM to notify the VMM that control has been transferred to the VMM due to the current fault; If a fault is not associated with the transfer of control to the VMM, send the current fault to the VM, and if the delivery of the current fault is successful, the corresponding fault handler instruction is executed. A medium that has previously transferred control to the VMM and notifies the VMM that control has been transferred because the value of the single step indicator indicates a single step value .
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 (en) | 2007-09-06 |
JP4688862B2 true JP4688862B2 (en) | 2011-05-25 |
Family
ID=34964164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007502123A Expired - Fee Related JP4688862B2 (en) | 2004-03-30 | 2005-03-25 | Providing support for single step functionality of virtual machines in virtual machine environments |
Country Status (5)
Country | Link |
---|---|
US (1) | US7356735B2 (en) |
EP (1) | EP1735710A2 (en) |
JP (1) | JP4688862B2 (en) |
CN (1) | CN101189582B (en) |
WO (1) | WO2005098616A2 (en) |
Families Citing this family (29)
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 (en) * | 2009-11-06 | 2016-07-19 | 삼성전자주식회사 | Virtual system and instruction executing method thereof |
KR101651202B1 (en) * | 2009-12-21 | 2016-08-26 | 삼성전자주식회사 | Virtualization apparatus and method of operating thereof |
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 (en) * | 2014-12-03 | 2016-06-09 | 株式会社日立製作所 | Computer and control method for logical processors |
CN104731616A (en) * | 2015-03-25 | 2015-06-24 | 浪潮集团有限公司 | Method for closing energy-saving mode of Intel CPU under Linux OS |
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 (en) * | 2020-05-15 | 2021-11-23 | 삼성전자주식회사 | Handling operation system (OS) in a system for predicting and managing faulty memories based on page faults |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6376028A (en) * | 1986-09-19 | 1988-04-06 | Fujitsu Ltd | Method for controlling execution of instruction step in virtual computer system |
Family Cites Families (156)
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 (en) | 1978-11-30 | 1983-05-16 | 国産電機株式会社 | Liquid level detection device |
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 (en) | 1980-09-13 | 1982-04-22 | Robert Bosch Gmbh, 7000 Stuttgart | READ-OUT LOCK FOR ONE-CHIP MICROPROCESSORS |
JPS58140862A (en) | 1982-02-16 | 1983-08-20 | Toshiba Corp | Mutual exclusion system |
US4521852A (en) | 1982-06-30 | 1985-06-04 | Texas Instruments Incorporated | Data processing device formed on a single semiconductor substrate having secure memory |
JPS59111561A (en) | 1982-12-17 | 1984-06-27 | Hitachi Ltd | Access controlling system of composite processor system |
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 (en) | 1985-03-11 | 1986-09-12 | Hitachi Ltd | Address converting device |
FR2592510B1 (en) | 1985-12-31 | 1988-02-12 | Bull Cp8 | METHOD AND APPARATUS FOR CERTIFYING SERVICES OBTAINED USING A PORTABLE MEDIUM SUCH AS A MEMORY CARD |
FR2601525B1 (en) | 1986-07-11 | 1988-10-21 | Bull Cp8 | SECURITY DEVICE PROHIBITING THE OPERATION OF AN ELECTRONIC ASSEMBLY AFTER A FIRST SHUTDOWN OF ITS POWER SUPPLY |
FR2601535B1 (en) | 1986-07-11 | 1988-10-21 | Bull Cp8 | METHOD FOR CERTIFYING THE AUTHENTICITY OF DATA EXCHANGED BETWEEN TWO DEVICES CONNECTED LOCALLY OR REMOTELY THROUGH A TRANSMISSION LINE |
FR2601476B1 (en) | 1986-07-11 | 1988-10-21 | Bull Cp8 | METHOD FOR AUTHENTICATING EXTERNAL AUTHORIZATION DATA BY A PORTABLE OBJECT SUCH AS A MEMORY CARD |
FR2618002B1 (en) | 1987-07-10 | 1991-07-05 | Schlumberger Ind Sa | METHOD AND SYSTEM FOR AUTHENTICATING ELECTRONIC MEMORY CARDS |
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 (en) | 1988-12-20 | 1993-01-08 | Bull Cp8 | DATA PROCESSING DEVICE COMPRISING AN ELECTRICALLY ERASABLE AND REPROGRAMMABLE NON-VOLATILE MEMORY |
JPH02171934A (en) | 1988-12-26 | 1990-07-03 | Hitachi Ltd | Virtual machine system |
JPH02208740A (en) | 1989-02-09 | 1990-08-20 | Fujitsu Ltd | Virtual computer control system |
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 (en) | 1989-06-30 | 1997-03-12 | 株式会社日立製作所 | Display control method in virtual machine |
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 (en) | 1989-09-21 | 1998-11-18 | 株式会社日立製作所 | Multiple virtual space address control method and computer system |
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 (en) | 1991-10-21 | 1994-08-23 | Intel Corp | Method for preservation and restoration of computer-system processing state and computer system |
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 (en) | 1992-11-30 | 1998-06-18 | 株式会社日立製作所 | Virtual computer system |
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 (en) | 1992-12-18 | 1994-07-08 | Hitachi Ltd | Input and output interruption control method for virtual computer system |
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 (en) | 1993-04-06 | 1995-05-24 | Bull Cp8 | Method for signing a computer file, and device for implementing it. |
FR2704341B1 (en) | 1993-04-22 | 1995-06-02 | Bull Cp8 | Device for protecting the keys of a smart card. |
JPH06348867A (en) | 1993-06-04 | 1994-12-22 | Hitachi Ltd | Microcomputer |
FR2706210B1 (en) | 1993-06-08 | 1995-07-21 | Bull Cp8 | Method for authenticating a portable object by an offline terminal, portable object and corresponding terminal. |
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 (en) | 1994-03-09 | 1996-04-05 | Bull Cp8 | Method and device for authenticating a data medium intended to allow a transaction or access to a service or a place, and corresponding medium. |
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 (en) | 1994-09-12 | 1996-03-26 | Mitsubishi Electric Corp | Data processor |
US6058478A (en) * | 1994-09-30 | 2000-05-02 | Intel Corporation | Apparatus and method for a vetted field upgrade |
FR2725537B1 (en) | 1994-10-11 | 1996-11-22 | Bull Cp8 | METHOD FOR LOADING A PROTECTED MEMORY AREA OF AN INFORMATION PROCESSING DEVICE AND ASSOCIATED DEVICE |
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 (en) | 1995-03-10 | 1997-04-18 | Schlumberger Ind Sa | METHOD FOR SECURE INFORMATION RECORDING ON A PORTABLE MEDIUM |
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 (en) | 1995-06-07 | 2003-09-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | Microprocessor with architectural mode control capable of supporting extension to two distinct instruction set architectures |
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 (en) | 1995-11-10 | 2005-09-07 | Necエレクトロニクス株式会社 | Microcomputer with built-in flash memory and test method thereof |
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 (en) * | 1996-11-28 | 1998-06-04 | Deutsche Telekom Ag | Access protection method for pay television |
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 (en) * | 1997-08-19 | 1998-10-01 | Siemens Nixdorf Inf Syst | Method for improving controllability in data processing equipment with translation-look-aside-buffer (TLB) |
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 (en) * | 1999-09-09 | 2001-05-29 | Nikon Corp | Aligner, method for controlling output of energy source, laser using the method and method for manufacturing device |
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 (en) * | 2001-05-30 | 2002-12-06 | Omron Corp | Program execution device and portable information processing device |
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 |
-
2004
- 2004-03-30 US US10/814,569 patent/US7356735B2/en not_active Expired - Fee Related
-
2005
- 2005-03-25 JP JP2007502123A patent/JP4688862B2/en not_active Expired - Fee Related
- 2005-03-25 CN CN200580007742.6A patent/CN101189582B/en not_active Expired - Fee Related
- 2005-03-25 EP EP05730850A patent/EP1735710A2/en not_active Ceased
- 2005-03-25 WO PCT/US2005/010156 patent/WO2005098616A2/en not_active Application Discontinuation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6376028A (en) * | 1986-09-19 | 1988-04-06 | Fujitsu Ltd | Method for controlling execution of instruction step in virtual computer system |
Also Published As
Publication number | Publication date |
---|---|
WO2005098616A3 (en) | 2006-11-02 |
JP2007525776A (en) | 2007-09-06 |
US7356735B2 (en) | 2008-04-08 |
CN101189582A (en) | 2008-05-28 |
EP1735710A2 (en) | 2006-12-27 |
WO2005098616A2 (en) | 2005-10-20 |
US20050240819A1 (en) | 2005-10-27 |
CN101189582B (en) | 2010-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4688862B2 (en) | Providing support for single step functionality of virtual machines in virtual machine environments | |
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 (en) | Mechanisms that support reliability, availability, and maintainability (RAS) flows in peer monitors | |
JP6006248B2 (en) | Instruction emulation processor, method and system | |
TWI556109B (en) | Avoiding premature enabling of nonmaskable interrupts when returning from exceptions | |
JP4579972B2 (en) | Method and apparatus for facilitating recognition of open event windows during execution of guest software in a virtual machine environment | |
US10120738B2 (en) | Hypervisor techniques for performing non-faulting reads in virtual machines | |
JP2007506162A (en) | Vector processing of interrupt or execution for return of operation of virtual machine | |
IL293321A (en) | An apparatus and method for handling exceptions | |
US20120072638A1 (en) | Single step processing of memory mapped accesses in a hypervisor | |
JP6920286B2 (en) | Exception handling | |
JP5452336B2 (en) | Peripheral device failure simulation system, peripheral device failure simulation method, and peripheral device failure simulation program | |
JP2018531462A6 (en) | Exception handling | |
WO2018214482A1 (en) | Method and apparatus for monitoring virtual machines | |
JP2013008188A (en) | Computing machine, device management method, program and storage medium |
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 |