JP4579972B2 - 仮想マシン環境におけるゲストソフトウェアの実行中にオープン・イベント・ウィンドウの認識を容易にする方法および装置 - Google Patents

仮想マシン環境におけるゲストソフトウェアの実行中にオープン・イベント・ウィンドウの認識を容易にする方法および装置 Download PDF

Info

Publication number
JP4579972B2
JP4579972B2 JP2007503121A JP2007503121A JP4579972B2 JP 4579972 B2 JP4579972 B2 JP 4579972B2 JP 2007503121 A JP2007503121 A JP 2007503121A JP 2007503121 A JP2007503121 A JP 2007503121A JP 4579972 B2 JP4579972 B2 JP 4579972B2
Authority
JP
Japan
Prior art keywords
event
open
window
event window
control
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
JP2007503121A
Other languages
English (en)
Other versions
JP2007528084A (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 JP2007528084A publication Critical patent/JP2007528084A/ja
Application granted granted Critical
Publication of JP4579972B2 publication Critical patent/JP4579972B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Description

本発明の実施形態は、概して、仮想マシンに関する。本発明の実施形態は、特に、仮想マシン環境においてゲストソフトウェアの実行中にオープン・イベント・ウィンドウの認識を容易にすることに関する。
クローズド割り込みウィンドウは、割り込みがソフトウェアに伝達されない、ソフトウェア実行中の時間間隔である。また、オープン割り込みウィンドウは、割り込みがソフトウェアに伝達されることができる、ソフトウェア実行中の時間間隔である。割り込みウィンドウのオープンおよびクローズは、多くの手段によって発生しうる。
割り込みウィンドウは、ソフトウェアが割り込みを回避することを目的として、クローズされうる。例えば、命令セット・アーキテクチャ(ISA)は、ビットのマスキングまたは他の手法によって、ソフトウェアが外部の割り込みをブロックすることを可能にする。特に、Intel(登録商標) Pentium(登録商標)4のISA(本明細書ではIA−32 ISAと呼ぶ)では、EFLAGSレジスタのIFビットがクリアされている場合、ハードウェア割り込みはブロックされる。IFビットは、EFLAGSレジスタをロードする命令群(例:POPF)、または、IFビットを明示的にセットまたはクリアする命令群(例:STI、CLI)によって、セットまたはクリアされうる。更に、特定のマシン状態推移は、IFビットに変更を加えうる(例:割り込みおよび例外ベクタ処理は、IFビットをクリアしうる)。
割り込みウィンドウは、ソフトウェアが割り込みの伝達を妨げるマシン状態推移の過程にあることを理由として、クローズされうる。IA−32 ISAでは、例えば、適切な割り込みベクタ処理は、スタック・セグメントおよびスタック・ポインタが整合性を保つことを必要とするので、スタック・セグメントおよびスタック・ポインタのソフトウェア更新(MOVSS/POPSS)が実行されている間、CPUは、自動的に割り込みベクタ処理をブロックすることができる。更に、IA−32 ISAは、STIの次の命令が完了するまで効力を発しないIFビットをセットする、STI命令の実行を指示する。このため、割り込みウィンドウは、STIの後の1つの命令に対してオープンする。
追加のイベント、例えば、マスク不可能割り込み(NMI)、システム管理割り込み(SMI)などは、同様のイベントブロック動作を有してもよい。クローズド・イベント・ウィンドウは、関連するイベントがソフトウェアに伝達されない、ソフトウェアの実行中の時間間隔である。また、オープン・イベント・ウィンドウは、関連するイベントがソフトウェアに伝達されることができる、ソフトウェアの実行中の時間間隔である。
特定のISAに従って、イベント・ウィンドウの条件は複雑であってもよく、ソフトウェアがあるイベントに対してオープン・イベント・ウィンドウを有するかどうかを判定することを目的として、プロセッサの状態を示す情報についての詳細な調査が必要としてもよい。
本発明は、参照番号が同様の要素を指す添付図面における図を、本発明を限定するものとしてではなく、本発明の一例として使用することによって、説明される。
本発明が動作しうる仮想マシン環境の一実施形態を示す図である。
ゲストソフトウェアの動作中における、オープン・イベント・ウィンドウの認識を容易にする処理の一実施形態を示すフロー図である。
本発明の一実施形態による、リオーダー・バッファ・ロジックの単純化された動作を示す図である。
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は、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)およびシステムマネージメント割り込み(SMIs))のような種々のイベントを処理することを想定する。これらの例外、割り込み、およびプラットフォームイベントは、本明細書内では集合的および個別的に「イベント」と呼ぶ。これらのイベントのうちのいくつかは、VM102および114の正常な動作を保証するため、および、ゲストソフトウェアから保護するために、VMM112によって処理される必要があることから、「特権的」である。
特権的イベントが発生したとき、または、ゲストソフトウェアが特権的リソースにアクセスしたとき、制御は、VMM112に移行される。ゲストソフトウェアからVMM112への制御の移行は、本明細書ではVM exitと呼ぶ。リソースへのアクセスを容易にした後、または、イベントを適切に処理した後、VMM112は、制御をゲストソフトウェアに戻してもよい。VMM112からゲストソフトウェアへの制御の移行は、VM entryと呼ぶ。
一実施形態では、プロセッサ118は、仮想マシン制御構造(VMCS)124に格納されたデータに従って、VM102および114の動作を制御する。VMCS124は、ゲストソフトウェアの状態、VMM112の状態、VMM112がゲストソフトウェアの動作をどのように制御したいのかを示す実行制御情報、VMM112とVMの間の移行を制御する情報などを含んでもよい。プロセッサ118は、VMの実行環境を判定するため、および、その動作を抑制するために、VMCS124から情報を読み取る。一実施形態では、VMCSは、メモリ120に格納される。いくつかの実施形態では、複数のVMをサポートすることを目的として、複数のVMCS構造が使用される。
VMM112が、例えば、割り込み(例:VMM112の動作中に割り込みが発生、または、VMの動作中にVM exitとなる割り込みが発生)のようなイベントの後に制御を受け取ると、VM112は、イベント自体を処理する、または、イベントが適切なVMによって処理されるべきであることを判定する。イベントがVMによって処理されるべきである場合、イベントは、VMがイベントを受け取る準備ができたとき(例:イベントが割り込みである場合は、VMがオープン割り込みウィンドウを有するとき)にのみ、伝達される。一実施形態では、VMM112は、VMの関連するイベント・ウィンドウがオープンであるかどうかを判定し、関連するイベント・ウィンドウがオープンではない場合は、関連するイベント・ウィンドウがオープンするまでVMへのイベントの伝達を遅らせる待機イベントモジュール130を含む。
一実施形態では、待機イベントモジュール130は、プロセッサ118からインジケータを受け取ったときに、イベント・ウィンドウがオープンされたことを判定する。一実施形態では、待機イベントモジュール130は、オープン・イベント・ウィンドウを要する待機イベントをVMに伝達するかどうかを判定することを目的として、イベント・ウィンドウ状態のインジケータを使用する。他の実施形態では、待機イベントモジュール130は、オープン・イベント・ウィンドウを要する待機イベントの伝達以外の機能を容易にするために、イベント・ウィンドウ状態のインジケータを使用する。例えば、待機イベントモジュール130は、VMスケジュールの判断を下すことを目的として、VMのイベント・ウィンドウの状態に関する情報を使用してもよい(例:現在のVMがクローズド割り込みウィンドウを有する場合、VMMは、スケジュールポイントにおいて、他のVMにスイッチしないことを選択してもよい)。待機イベントモジュール130は、VMM112が他のVMを実行するようにスケジュールことを選択するまでの間、VMがオープン・イベント・ウィンドウを有する限り実行される、VMへのVM entryを生成することを目的として、待機イベント・インジケータを使用してもよい。
一実施形態では、プロセッサ118は、待機イベントモジュール130にそのようなインジケータを提供するイベント・ウィンドウ監視ロジック122を含む。特に、待機イベントモジュール130は、VMのイベント・ウィンドウがクローズされていることを判定した場合、待機イベント・インジケータを伝達値にセットして、このVMに対してVM entryを要求する。一実施形態では、待機イベント・インジケータは、VMCS124に格納される。1つ以上のイベントに関連する、1つ以上のこのような待機イベント・インジケータが存在してもよい。例えば、VMCS124は、それぞれ割り込みおよびSMIイベントに対応する、待機割り込みインジケータおよび待機SMIインジケータを含んでもよい。あるいは、待機イベント・インジケータは、プロセッサ118、メモリ120およびプロセッサ118の組み合わせ、またはいかなる他のストレージ・ロケーションに存在してもよい。
VM entry要求に応じて、イベント・ウィンドウ監視ロジック122は、VMに制御を移行してVMの関連するイベント・ウィンドウの監視を開始する。VMの関連するイベント・ウィンドウがオープンであることを検知すると、イベント・ウィンドウ監視ロジック122は、制御をVMM112に移行する。一実施形態では、イベント・ウィンドウ監視ロジック122は、VM exitがオープン・イベント・ウィンドウによって生じたことを、(VM exitのソースを示す、指定されたリーズン・コードを使用して)VMM112に通知する。一実施形態では、各イベントタイプに対して、1つのそのような指定されたリーズン・コードが存在してもよい。
一実施形態では、イベント・ウィンドウ監視ロジック122は、VMM112によって発行されたVM entry要求を実行するとVMのイベント・ウィンドウ状態の監視を開始し、VM entry要求がオープン・イベント・ウィンドウを通知されるべき要求に関連することを判定する。一実施形態では、イベント監視ロジック122は、待機イベント・インジケータの現在値に基づいて、VM entry要求がオープン・イベント・ウィンドウを通知されるべき要求に関連するかどうかを判定する。1つ以上のイベントのそれぞれに対応する、1つ以上のそのような待機イベント・インジケータが存在してもよい。例えば、一実施形態では、割り込みに対応する待機割り込みインジケータおよびSMIに対応する待機SMIインジケータが存在してもよい。
一実施形態では、イベント・ウィンドウが割り込みに対してオープンであるかどうかの判定は、ゲストソフトウェアの割り込みを受け入れる能力の状態が変化したときにゲストソフトウェアによって更新されることができる割り込みフラッグの現在値に基づく。例えば、IA−32 ISAでは、EFLAGSレジスタは、割り込みがソフトウェアに伝達されるかどうかを一部として制御する、IF割り込みフラッグビットを有する(上述の通り、IA−32 ISAでは、割り込みウィンドウがオープンであるかどうかを判定するために、割り込みをブロックしうる他の要因が検討される)。あるいは、VMの割り込みウィンドウがオープンであるかどうかを判定するために、他のいかなる従来技術の技法も使用されることができる。他のイベントは、関連するイベント・ウィンドウの状態を判定するために、同様の機構を有してもよい。
VMM112がVMのイベント・ウィンドウはオープンであるというインジケータを受け取ると、VMM112は、一実施形態では、VMに待機イベントを伝達するようにプロセッサ118に要求する。他の実施形態では、VMM112は、ソフトウェアによってイベントの伝達をエミュレートすることによってイベントをVMに伝達(例:割り込みの場合は、VMの割り込みディスクリプタ・テーブルにアクセスすることによって、アクセスおよびフォルト確認を実行することによって、など)し、VMのイベントハンドラの最初の命令から実行が開始するように、ゲストへのVM entryを実行する。更に他の実施形態では、VMM112は、上述のように、オープン・イベント・ウィンドウのインジケータに基づいて、スケジューリングの判断を下す。
図2は、ゲストソフトウェアの動作中にオープン・イベント・ウィンドウの認識を容易にする、処理200の一実施形態を示すフロー図である。この処理は、ハードウェア(例:回路、専用ロジック、プログラマブル・ロジック、マイクロコード、など)、ソフトウェア(汎用コンピュータシステムまたは専用マシン上で実行するソフトウェア)、またはハードウェアおよびソフトウェアの組み合わせを含む、処理ロジックによって実行されてもよい。一実施形態では、処理200は、図1のイベント・ウィンドウ監視ロジック122によって実行される。
図2を参照すると、処理200は、処理ロジックがVMMからVM entry要求を受け取る、処理ブロック202から開始する。一実施形態では、VM entry要求は、VMMによって実行されるVM entry命令によって受け取られる。
次に、処理ロジックは、処理ブロック204において、VMに制御を移行し、処理ブロック206において、VM entry要求がオープン・イベント・ウィンドウを通知されるべきVMM要求に関連するかどうかを判断する。一実施形態では、処理ロジックは、待機イベント・インジケータが伝達値にセットされているかどうかを判定することによって、VM entry要求がオープン・イベント・ウィンドウを通知されるべきVMM要求に関連するかどうかを判断する。
VM entry要求がオープン・イベント・ウィンドウを通知されるべきVMM要求に関連しない場合、処理ロジックは、処理ブロック208において、VMが通常通り実行することを許可する(すなわち、特権的イベントがVM exitを生じるまで実行する(図2には図示されない))。
VM entry要求がオープン・イベント・ウィンドウを通知されるべきVMM要求に関連する場合、処理ロジックは、判定ボックス210において、VMのイベント・ウィンドウがオープンであるかどうかを判定するためにイベント・ウィンドウ確認を実行する(例:待機割り込みに対しては、割り込みウィンドウがオープンであるかどうかを確認)。一実施形態では、処理ロジックは、VMが命令を実行する前に、イベント・ウィンドウ確認を実行する。あるいは、処理ロジックは、VMがその最初の命令を実行した後に、イベント・ウィンドウ確認を実行する。
イベント・ウィンドウ確認がVMの関連するイベント・ウィンドウがオープンであることを示す場合、処理ロジックは、処理ブロック212において、VM exitを生成し、一実施形態では、VM exitがオープン・イベント・ウィンドウによって生じたことを(例:関連するリーズン・コードを提供することによって)VMMに通知する。
イベント・ウィンドウ確認がVMの関連するイベント・ウィンドウがクローズであることを示す場合、処理ロジックは、処理ブロック214において、VMに1つの命令を実行することを許可し、イベント・ウィンドウ確認を再度実行するために、判定ボックス210に戻る。このループは、処理ロジックがVMのイベント・ウィンドウがオープンであると判定するまで、または、(例:特権状態のVMのアクセスにより)他のVM exitが発生するまで繰り返される。
いくつかの実施形態では、ゲスト命令の実行は、フォルト(例:ページ・フォルト、一般保護フォルトなど)によって割り込みされうる。いくつかのフォルトは、VM exitを生じさせうる。例えば、VMMが物理メモリを保護および仮想化するためにページ・フォルトの際にVM exitを必要とする場合、VMでの命令の実行中にページ・フォルトが発生し、結果としてVM exitが生じる。したがって、フォルトによって生じるVM exitは、イベント・ウィンドウ確認を実行する前に発生しうる。更に、特定の条件(例:INIT、SMIT、など)がイベント・ウィンドウ確認より高い優先度を有する場合、これらの条件は、VM命令の実行の後に、しかし、イベント・ウィンドウ確認を実行する前に評価されてもよい。これらの条件のうちのいくつかは、イベント・ウィンドウ確認が実行される前にVM exitも生じうる。VMMがイベント・ウィンドウのオープン以外のイベントによって生じたVM exitにより制御を受け取ると、VMMは、下記に詳細に説明されるように、VMのイベント・ウィンドウの状態を確認する、または、VM entryを要求してプロセッサのインジケータがイベント・ウィンドウはオープンされたことを示すのを待つ。
一実施形態では、待機イベント機能は、ハードウェア・リオーダ・バッファ(ROB)の拡張ロジックによって、割り込みに対して実装される。図3は、本発明の一実施形態によるROBロジックの単純化された動作を示す。
図3を参照すると、ROBロジック300は、割り込みウィンドウ状態信号302、VMM/VM割り込み制御信号304、および割り込み信号306を受け取ることによって、動作する。割り込みウィンドウ状態信号302は、現在動作しているVMの割り込みウィンドウがオープンであるかどうかを示す。割り込み信号306は、待機状態のハードウェア割り込みを示す。例えば、この信号は、プロセッサのハードウェア割り込み要求(INTR)ピンに直接的または間接的に関連付けられてもよい。一実施形態では、割り込み信号306は、プロセッサに接続された割り込みコントローラによって提供される。VMM/VM割り込み制御信号304は、割り込みがVMMまたはVMによって制御されるかどうかを示す。一実施形態では、VMM/VM割り込み制御信号304は、VMMによって維持されてVMCSに格納される。
VMM/VM制御信号304が現在の割り込みはVMMによって制御されていることを示し、割り込み信号306が割り込みを示す場合、ROBロジック300は、割り込みによってVM exitが発生すべきであることを示す信号310をアサートする。この信号は、このようなVM exitを容易にすることを目的として、マイクロコード、専用ハードウェア、またはソフトウェアを起動してもよい。
VMM/VM制御信号304が現在の割り込みがVMによって制御されることを示し、割り込み信号306が割り込みを示し、割り込みウィンドウ状態信号302がVMの割り込みウィンドウがオープンであることを示す場合、ROBロジック300は、割り込みがVMに伝達されるべきことを示す信号312をアサートする。この信号は、VMへの割り込みの伝達を容易にするために、マイクロコード、専用ハードウェア、またはソフトウェアを起動してもよい。
更に、拡張ROBロジック300は、VMMによってVMに伝達されるべき待機割り込みが存在するかどうかを示す、待機割り込み信号308を入力として受け取る。本発明の一実施形態では、待機割り込み信号308は、VMMによって維持されてVMCSに格納される。待機割り込み信号308が待機割り込みの存在を示し、割り込みウィンドウ状態信号302がVMのウィンドウがオープンであることを示す場合、ROBロジック300は、オープン割り込みウィンドウによりVM exitが生成されるべきことを示す信号314をアサートする。この信号は、そのようなVM exitを容易にするために、マイクロコード、専用ハードウェア、またはソフトウェアを起動してもよい。
下記に示す表1は、ROBロジック300の入力および出力を要約したものである。ここに示される実施形態では、ハードウェア割り込みによるVM exitは、オープン割り込みウィンドウによるVM exitより高い優先度を有する。両方のVM exitの原因は、VMへの割り込みの伝達に対して優先される。他の実施形態は、これらのイベントに対して異なる優先順位付けを有してもよい。表では、Xはドントケア値(1でも0でもよい)を示し、表内の1は、アサートされた信号を示す。
Figure 0004579972
図4は、VMのイベント・ウィンドウの状態を判定する、処理400の一実施形態を示すフロー図である。この処理は、ハードウェア(例:回路、専用ロジック、プログラマブル・ロジック、マイクロコード、など)、ソフトウェア(汎用コンピュータシステムまたは専用マシン上で実行するソフトウェア)、またはハードウェアおよびソフトウェアの組み合わせを含む、処理ロジックによって実行されてもよい。一実施形態では、処理400は、図1の待機イベントモジュール130によって実行される。
図4を参照すると、処理400は、処理ロジックが、VMイベント・ウィンドウがオープンされたことを通知される必要性を確認する、処理ブロック402から開始する。上述の通り、このような情報は、いつ待機イベントをVMに伝達するか、いつスケジュールの判断を下すか、またはその他の理由を判定するために必要とされうる。
処理ブロック404において、処理ロジックは、VMイベント・ウィンドウがオープンであることを示す通知を受け取る意図を示すために、待機イベント・インジケータを伝達値にセットする。一実施形態では、待機イベント・インジケータは、VMCSに含まれる。
処理ブロック406において、処理ロジックは、プロセッサに対して、制御をVMに移行するように要求する。一実施形態では、VM entry命令の実行によって、制御を移行させる要求がプロセッサに送信される。
次に、処理ロジックは、処理ブロック408において、VM exitの際にVMから制御を受け取り、処理ブロック410において、VM exitがVMイベント・ウィンドウのオープンによるものかどうかを(例:VM exitに関連付けられたリーズン・コードに基づいて)判定する。もしそうである場合、処理ロジックは、処理ブロック412において、待機イベント・インジケータを非伝達値にリセットし、処理ブロック414において、オープン・イベント・ウィンドウを必要とする操作(例:VMへの待機イベントの伝達)を実行する。
イベント・ウィンドウのオープンによってVM exitが発生しなかった場合、処理ロジックは、処理ブロック416において、その原因に従ってVM exitを処理し、VMに対してVM entryを要求するために処理ブロック408に戻る。
図5は、待機イベントをVMに伝達する、処理500の一実施形態を示すフロー図である。この処理は、ハードウェア(例:回路、専用ロジック、プログラマブル・ロジック、マイクロコード、など)、ソフトウェア(汎用コンピュータシステムまたは専用マシン上で実行するソフトウェア)、またはハードウェアおよびソフトウェアの組み合わせを含む、処理ロジックによって実行されてもよい。一実施形態では、処理400は、図1の待機イベントモジュール130によって実行される。
処理500は、処理ロジックがVMに伝達されるべきイベントを特定する、処理ブロック502から開始し、処理ブロック504において、このVMの対応するイベント・ウィンドウがオープンであるかどうかを判定する。例えば、VMに伝達されるべきイベントが割り込みである場合は、処理ロジックは、VMの割り込みウィンドウの状態を確認する。
イベント・ウィンドウがオープンである場合、処理ロジックは、一実施形態では、処理ブロック506において、プロセッサに対してイベントをVMへ伝達するように要求する。この要求は、VM entry命令の実行によって開始されるVM entry要求の一部であってもよい。他の実施形態では、VMMは、ソフトウェアの技法を使用してイベントのVMへの伝達をエミュレートし、最初に実行される命令がVMのイベントハンドラの最初の命令となるようにVMへのVM entryを実行してもよい。
イベント・ウィンドウがオープンでない場合、処理ロジックは、処理ブロック508において、待機イベントのために、待機イベント・インジケータを伝達値にセットする。例えば、VMCS内に待機イベント・インジケータ用の1つのビットが存在する場合は、処理ロジックは、それをアサート値にセットしてもよい(例:1にセット)。次に、処理ロジックは、処理ブロック510において、VM entry要求をプロセッサに送信する。ある実施形態では、待機イベント・インジケータは、VMCS内の1つのビットである。ある実施形態では、VM entry要求は、VM entry命令を実行することによって、プロセッサに送信される。
次に、処理ロジックは、処理ブロック512において、VM exit時にVMから制御を受け取り、処理ブロック514において、VM exitがVMのイベント・ウィンドウのオープンによるものであるかどうかを(例:VM exitに関連付けられたリーズン・コードに基づいて)判定する。もしそうである場合、処理ロジックは、処理ブロック518において、待機イベント・インジケータを非伝達値にリセットし、処理ブロック516において、プロセッサに対して待機イベントをVMへ伝達するように要求する。この要求は、VM entry命令の実行によって開始されるVM entry要求の一部であってもよい。他の実施形態では、VMMは、ソフトウェアの技法を使用して、VMへの待機イベントの伝達をエミュレートしてもよい。VM exitが、イベント・ウィンドウのオープンによって生じなかった場合、処理ロジックは、処理ブロック520において、その原因に従ってVM exitを処理し、一実施形態では、VMにVM entryを要求するために処理ブロック510に戻る。この要求に応じて、プロセッサは、制御をVMに移行して、VMの最初の命令が実行される前に、VMのイベント・ウィンドウがオープンであるかどうかを確認する。
他の実施形態では、処理ロジックは、処理ブロック520において、VM exitを処理した後にVMのイベント・ウィンドウがオープンであるかどうかを判定し、VMのイベント・ウィンドウがクローズであることを判定すると、処理ブロック510に戻る。処理ロジックは、VMの関連する状態を調査することによって、この判定を行う。例えば、待機割り込みの場合、処理ロジックは、EFLAGSレジスタのIFビット、および、VMの割り込みウィンドウの状態を示す他の状態を調査してもよい。本実施形態では、プロセッサは、VMに制御を移行し、VMにその最初の命令の実行を許可し、そしてVMのイベント・ウィンドウがオープンであるかどうかを確認することによって、VM entry要求に応答する。
一実施形態では、処理ロジックは、前のVM exitがイベント・ウィンドウのオープンより高い優先度を有するイベントによって生じた場合にのみ、VMのイベント・ウィンドウがオープンであるかどうかを判定するために追加の確認を実行する。換言すると、処理ロジックは、VM exitを生じさせた高い優先度を有するイベントにより、イベント・ウィンドウのオープンがプロセッサによって認識されなかった可能性がある場合にのみ、追加のイベント・ウィンドウ確認を実行する。
上述の通り、他の実施形態では、VMMは、オープン・イベント・ウィンドウを必要とする待機イベントの伝達以外の機能を容易にするために、待機イベント・インジケータを使用してもよい。例えば、そのようなVMMは、VMのスケジュールの判断を行うために、VMのイベント・ウィンドウの状態に関する情報を使用してもよい(例:現在のVMがクローズド割り込みウィンドウを有する場合、VMMは、スケジュールポイントにおいて、他のVMにスイッチしないことを選択してもよい)。そのようなVMMは、VM exitが生成され制御がVMMに移行されるまでの間、VMがオープン・イベント・ウィンドウを有する限り実行される、VMへのVM entryを生成することを目的として待機イベント・インジケータを使用してもよい。このVM exitに続いて、VMMは他のVMの実行をスケジュールすることを選択してもよい。
このように、仮想マシン環境においてゲストソフトウェアの動作中にオープン・イベント・ウィンドウの認識を容易にする方法および装置が説明された。上述の説明は、本発明を説明することを意図したものであって、本発明を限定することは意図していないと理解されるべきである。上記の説明を読解することにより、当業者には多くの他の実施形態が明白となる。このため、本発明の範囲は、添付の特許請求の範囲および特許請求の範囲の均等物の全ての範囲によって決定される。

Claims (30)

  1. 仮想マシン(VM)に制御を移行させる要求を仮想マシンモニタ(VMM)から受け取ることと、
    制御を移行させる前記要求は、前記VMオープン・イベント・ウィンドウを有することを通知されるべき要求に関連するかどうかを判定することと、
    前記VMに制御を移行することと、
    制御を移行させる前記要求が、前記VMオープン・イベント・ウィンドウを有することを通知されるべき要求に関連する場合、前記VMがオープン・イベント・ウィンドウを有するかどうかを判定するためにイベント・ウィンドウ確認を実行することと、
    前記イベント・ウィンドウ確認が、前記VMはオープン・イベント・ウィンドウを有することを示す場合、制御を前記VMMに移行することと
    を備え、前記VMがオープン・イベント・ウィンドウを有することは、前記VMがイベントを受け取る準備ができていることを示す方法。
  2. 前記VMMに制御を移行することは、前記VMオープン・イベント・ウィンドウを有することを原因として制御が前記VMMに移行されたことを、前記VMMに通知することを備える請求項1に記載の方法。
  3. 制御を移行させる前記要求がオープン・イベント・ウィンドウを通知されるべき要求に関連することを判定することは、
    前記VMMによって維持される待機イベント・インジケータにアクセスすることと、
    前記待機イベント・インジケータが伝達値にセットされていることを判定することと
    を備える請求項1に記載の方法。
  4. 前記VMがオープン・イベント・ウィンドウを有しないことを判定することと、
    前記VMがオープン・イベント・ウィンドウを有すると判定されるまで、前記VMによって実行される各命令の後に前記イベント・ウィンドウ確認を繰り返すことと
    を更に備える請求項1に記載の方法。
  5. 前記イベント・ウィンドウ確認は、前記VMが命令を実行する前に、最初に実行される請求項4に記載の方法。
  6. 前記イベント・ウィンドウ確認は、前記VMが最初の命令を実行した後に、最初に実行される請求項4に記載の方法。
  7. 前記VMがオープン・イベント・ウィンドウを有することを判定する前に、
    前記VMMへの制御の移行に関連する高い優先度を有するイベントを検知することと、
    前記VMMに制御を移行することと、
    前記高い優先度を有するイベントにより制御が移行されたことを前記VMMに通知することと
    を更に備える請求項1に記載の方法。
  8. 仮想マシン(VM)のイベント・ウィンドウのオープンを示す通知を受け取る意図を示すことを目的として、処理ロジックが待機イベント・インジケータを伝達値にセットすることと、
    前記処理ロジックが前記VMへの制御の移行を要求することと、
    前記待機イベント・インジケータが伝達値にセットされている場合、前記処理ロジックが前記VMのイベント・ウィンドウのオープンを示す通知を受信することと
    を備え、前記VMのイベント・ウィンドウのオープンは、前記VMがイベントを受け取る準備ができていることを示す方法。
  9. 前記待機イベント・インジケータを伝達値にセットする前に、
    前記VMはオープン・イベント・ウィンドウを有するかどうかを、前記処理ロジックが判定することと、
    前記VMがオープン・イベント・ウィンドウを有し、前記VMに伝達されるべき待機イベントが存在する場合、前記処理ロジックが前記待機イベント・インジケータを非伝達値にリセットし、前記VMへの前記待機イベントの前記伝達を要求することと
    を更に備える請求項8に記載の方法。
  10. 前記処理ロジックが前記VMから制御を受け取ることと、
    制御の移行は前記VMがオープン・イベント・ウィンドウを有することによるものであったかどうかを、前記処理ロジックが判定することと、
    前記制御の移行は前記VMがオープン・イベント・ウィンドウを有することによるものであり、かつ、前記VMに伝達されるべき待機イベントが存在する場合、前記処理ロジックが前記VMへの前記待機イベントの前記伝達を要求することと
    を更に備える請求項8に記載の方法。
  11. 前記制御の移行は前記VMがオープン・イベント・ウィンドウを有することによるものではなかったことを、前記処理ロジックが判定することと、
    前記処理ロジックが、前記VMへのVM entryを要求することと
    を更に備える請求項10に記載の方法。
  12. 前記制御の移行は前記VMがオープン・イベント・ウィンドウを有することによるものではなかったことを、前記処理ロジックが判定することと、
    前記制御の移行に関連する1つ以上の処理を、前記処理ロジックが実行することと、
    待機イベントが前記VMに伝達されるべきである場合、前記VMが前記待機イベントを受け取る準備ができているかどうかを、前記処理ロジックが判定することと
    を更に備える請求項10に記載の方法。
  13. 前記VMが前記待機イベントを受け取る準備ができていると判定された場合、前記処理ロジックが前記待機イベント・インジケータを非伝達値にリセットすることと、
    前記処理ロジックが前記VMへの前記待機イベントの前記伝達を要求することと
    を更に備える請求項12に記載の方法。
  14. 前記VMは前記待機イベントを受け取る準備ができていないことを、前記処理ロジックが判定することと、
    前記処理ロジックが前記VMへの制御の移行を要求することと
    を更に備える請求項12に記載の方法。
  15. 仮想マシンモニタ(VMM)と、
    待機イベントに関連する待機イベント・インジケータと、
    仮想マシン(VM)に制御を移行させる要求を前記VMMから受け取ったことに応じて制御を前記VMに移行し、前記待機イベント・インジケータが伝達値にセットされているかどうかを判定し、前記待機イベント・インジケータが伝達値にセットされている場合に前記VMのイベント・ウィンドウがオープンであるかどうかを判定し、前記VMの前記イベント・ウィンドウがオープンである場合に制御を前記VMMに移行するオープン・ウィンドウ監視ロジックと
    を備え、前記VMのイベント・ウィンドウがオープンであることは、前記VMがイベントを受け取る準備ができていることを示す装置。
  16. 前記オープン・ウィンドウ監視ロジックは、更に、前記VMオープン・イベント・ウィンドウを有することを原因として前記VMMに制御が移行されたことを前記VMMに通知し、前記VMがオープン・イベント・ウィンドウを有することは、前記VMがイベントを受け取る準備ができていることを示す請求項15に記載の装置。
  17. 前記オープン・ウィンドウ監視ロジックは、更に、前記VMの前記イベント・ウィンドウがクローズであることを判定し、前記VMの前記イベント・ウィンドウがオープンであると判定されるまで前記VMによって各命令が実行された後に前記VMの前記イベント・ウィンドウがオープンであるかどうかの判定を実行する請求項15に記載の装置。
  18. 前記VMの前記イベント・ウィンドウがオープンであるかどうかの前記判定は、前記VMが命令を実行する前に最初に実行される請求項15に記載の装置。
  19. 1つ以上のインジケータを格納するメモリと、
    仮想マシン(VM)への制御の移行が前記VMのイベント・ウィンドウのオープンを通知されるべき要求に関連するかどうかを判定するために前記1つ以上のインジケータを使用し、前記制御の移行が前記VMのイベント・ウィンドウのオープンを通知されるべき要求に関連する場合に前記VMの前記イベント・ウィンドウがオープンであるかどうかを判定するためにイベント・ウィンドウ確認を実行し、前記イベント・ウィンドウ確認が前記VMの前記イベント・ウィンドウがオープンであることを示す場合に、仮想マシンモニタ(VMM)に制御を移行する、前記メモリに接続されたプロセッサと
    を備え、前記VMのイベント・ウィンドウがオープンであることは、前記VMがイベントを受け取る準備ができていることを示すシステム。
  20. 前記プロセッサは、更に、前記VMオープン・イベント・ウィンドウを有することを原因として制御が前記VMMに移行されたことを、前記VMMに通知する請求項19に記載のシステム。
  21. 前記プロセッサは、前記VMMによって維持される待機イベント・インジケータにアクセスし、前記待機イベント・インジケータが伝達値にセットされていることを判定することによって、制御を移行させる前記要求が前記VMのオープン・イベント・ウィンドウに関連することを判定する請求項19に記載のシステム。
  22. 1つ以上のインジケータを格納するメモリと、
    仮想マシン(VM)のイベント・ウィンドウのオープンを示す通知を受け取る意図を示すために前記1つ以上のインジケータを伝達値にセットし、次いで前記VMに制御を移行させる要求を受け取り、次いで前記VMに制御を移行し、次いで前記1つ以上のインジケータが伝達値にセットされている場合前記VMのイベント・ウィンドウのオープンを示す通知を受信する、前記メモリに接続されたプロセッサと
    を備え、前記VMのイベント・ウィンドウのオープンを示す通知は、前記VMがイベントを受け取る準備ができていることを示すシステム。
  23. 前記プロセッサは、前記1つ以上のインジケータが伝達値にセットする前に前記VMがオープン・イベント・ウィンドウを有するかどうかを判定し、前記VMがオープン・イベント・ウィンドウを有し、かつ、前記VMに伝達されるべき待機イベントが存在する場合は、前記1つ以上のインジケータを非伝達値にリセットし、前記VMに前記待機イベントを伝達させる要求を受け取り、前記VMがオープン・イベント・ウィンドウを有することは、前記VMがイベントを受け取る準備ができていることを示す請求項22に記載のシステム。
  24. 前記プロセッサは、更に、前記VMに制御を移行し、制御の移行は前記VMがオープン・イベント・ウィンドウを有することによるものであったかどうかを判定し、前記制御の移行前記VMがオープン・イベント・ウィンドウを有することによるものであり、かつ、前記VMに伝達されるべき待機イベントが存在する場合に、前記待機イベントを前記VMに伝達させる要求を受け取る請求項22に記載のシステム。
  25. 命令群を記録したマシン読み取り可能な媒体であって、
    前記命令群は、処理システムによって実行されることにより、
    前記処理システムに、
    仮想マシン(VM)に制御を移行させる要求を仮想マシンモニタ(VMM)から受け取ったことに応じて前記VMに制御を移行する機能と、
    制御を移行させる前記要求は前記VMオープン・イベント・ウィンドウを有することを通知されるべき要求に関連するかどうかを判定する機能と、
    制御を移行させる前記要求が前記VMオープン・イベント・ウィンドウを有することを通知されるべき要求に関連する場合、前記VMの前記イベント・ウィンドウがオープンであるかどうかを判定するためにイベント・ウィンドウ確認を実行する機能と、
    前記イベント・ウィンドウ確認が前記VMの前記イベント・ウィンドウがオープンであることを示す場合に、前記VMMに制御を移行する機能と
    を実現させ、前記VMがオープン・イベント・ウィンドウを有することは、前記VMがイベントを受け取る準備ができていることを示す媒体。
  26. 前記VMMに制御を移行する機能は、前記VMオープン・イベント・ウィンドウを有することを原因として制御が前記VMMに移行されたことを前記VMMに通知する機能を備える請求項25に記載のマシン読み取り可能な媒体。
  27. 制御を移行させる前記要求が前記VMのオープン・イベント・ウィンドウを通知されるべき要求に関連することを判定する機能は、
    前記VMMによって維持される待機イベント・インジケータにアクセスする機能と、前記待機イベント・インジケータが伝達値にセットされていることを判定する機能と
    を備える請求項25に記載のマシン読み取り可能な媒体。
  28. 命令群を記録したマシン読み取り可能な媒体であって、
    前記命令群は、処理システムによって実行されることにより、
    前記処理システムに、
    仮想マシン(VM)のイベント・ウィンドウのオープンを示す通知を受け取る意図を示すために待機イベント・インジケータを伝達値にセットする機能と、
    前記VMに制御を移行させる要求をする機能と、
    待機イベント・インジケータが伝達値にセットされている場合、前記VMのイベント・ウィンドウのオープンを示す通知を受信する機能と
    を実現させ、前記VMのイベント・ウィンドウのオープンは、前記VMがイベントを受け取る準備ができでいることを示す媒体。
  29. 前記命令群は、
    前記処理システムに、
    前記待機イベント・インジケータを伝達値にセットする前に、
    前記VMがオープン・イベント・ウィンドウを有するかどうかを判定する機能と、
    前記VMがオープン・イベント・ウィンドウを有し、かつ、前記VMに伝達されるべき待機イベントが存在する場合、前記待機イベント・インジケータを非伝達値にリセットし、前記VMに前記待機イベントを前記伝達させる要求をする機能と
    を更に実現させ、前記VMがオープン・イベント・ウィンドウを有することは、前記VMがイベントを受け取る準備ができていることを示す請求項28に記載のマシン読み取り可能な媒体。
  30. 前記命令群は、
    前記処理システムに、
    前記VMから移行された制御を受け取る機能と、
    制御の移行は前記VMがオープン・イベント・ウィンドウを有することによるものであったかどうかを判定する機能と、
    前記制御の移行が前記VMがオープン・イベント・ウィンドウを有することによるものであって、前記VMに伝達されるべき待機イベントが存在する場合、前記VMに前記待機イベントを前記伝達させる要求をする機能と
    を更に実現させる請求項28に記載のマシン読み取り可能な媒体。
JP2007503121A 2004-03-31 2005-03-28 仮想マシン環境におけるゲストソフトウェアの実行中にオープン・イベント・ウィンドウの認識を容易にする方法および装置 Expired - Fee Related JP4579972B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/816,233 US7620949B2 (en) 2004-03-31 2004-03-31 Method and apparatus for facilitating recognition of an open event window during operation of guest software in a virtual machine environment
PCT/US2005/010420 WO2005098621A1 (en) 2004-03-31 2005-03-28 Method and apparatus for facilitating recognition of an open event window during operation of guest software in a virtual machine environment

Publications (2)

Publication Number Publication Date
JP2007528084A JP2007528084A (ja) 2007-10-04
JP4579972B2 true JP4579972B2 (ja) 2010-11-10

Family

ID=34968760

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007503121A Expired - Fee Related JP4579972B2 (ja) 2004-03-31 2005-03-28 仮想マシン環境におけるゲストソフトウェアの実行中にオープン・イベント・ウィンドウの認識を容易にする方法および装置

Country Status (4)

Country Link
US (2) US7620949B2 (ja)
EP (1) EP1730633A1 (ja)
JP (1) JP4579972B2 (ja)
WO (1) WO2005098621A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8127098B1 (en) * 2004-05-11 2012-02-28 Globalfoundries Inc. Virtualization of real mode execution
US8621459B2 (en) * 2006-12-22 2013-12-31 Intel Corporation Method and apparatus for multithreaded guest operating system execution through a multithreaded host virtual machine monitor
US8819699B2 (en) * 2006-12-29 2014-08-26 Intel Corporation Controlling virtual machines based on performance counters
US8510756B1 (en) * 2007-12-06 2013-08-13 Parallels IP Holdings GmbH Guest operating system code optimization for virtual machine
US8719936B2 (en) * 2008-02-01 2014-05-06 Northeastern University VMM-based intrusion detection system
WO2012127627A1 (ja) * 2011-03-22 2012-09-27 富士通株式会社 情報装置、画面切替え方法、及び画面切替えプログラム
CN102810040B (zh) * 2011-05-31 2016-03-30 联想(北京)有限公司 一种显示处理方法、装置及计算机系统
US10095662B1 (en) 2012-06-18 2018-10-09 Bromium, Inc. Synchronizing resources of a virtualized browser
US11023088B2 (en) * 2012-06-18 2021-06-01 Hewlett-Packard Development Company, L.P. Composing the display of a virtualized web browser
US20160048679A1 (en) * 2014-08-18 2016-02-18 Bitdefender IPR Management Ltd. Systems And Methods for Exposing A Current Processor Instruction Upon Exiting A Virtual Machine
US11698806B2 (en) * 2020-05-04 2023-07-11 Red Hat, Inc. Hypercall acceleration for nested virtual machines

Family Cites Families (225)

* 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
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
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
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
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 仮想計算機制御方式
US5781753A (en) 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
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
EP0473913A3 (en) 1990-09-04 1992-12-16 International Business Machines Corporation Method and apparatus for providing a service pool of virtual machines for a plurality of vm users
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
US5551033A (en) * 1991-05-17 1996-08-27 Zenith Data Systems Corporation Apparatus for maintaining one interrupt mask register in conformity with another in a manner invisible to an executing program
JPH04348434A (ja) 1991-05-27 1992-12-03 Hitachi Ltd 仮想計算機システム
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
US5319760A (en) * 1991-06-28 1994-06-07 Digital Equipment Corporation Translation buffer for virtual machines with address space match
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
EP0600112A1 (de) 1992-11-30 1994-06-08 Siemens Nixdorf Informationssysteme Aktiengesellschaft Datenverarbeitungsanlage mit virtueller Speicheradressierung und schlüsselgesteuertem Speicherzugriff
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
EP0602867A1 (en) 1992-12-17 1994-06-22 NCR International, Inc. An apparatus for securing a system platform
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
US5533123A (en) 1994-06-28 1996-07-02 National Semiconductor Corporation Programmable distributed personal security
US5978481A (en) 1994-08-16 1999-11-02 Intel Corporation Modem compatible method and apparatus for encrypting data that is transparent to software applications
JPH0883211A (ja) * 1994-09-12 1996-03-26 Mitsubishi Electric Corp データ処理装置
EP0706275B1 (en) 1994-09-15 2006-01-25 International Business Machines Corporation System and method for secure storage and distribution of data using digital signatures
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
US6269392B1 (en) 1994-11-15 2001-07-31 Christian Cotichini Method and apparatus to monitor and locate an electronic device using a secured intelligent agent
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
US6093213A (en) 1995-10-06 2000-07-25 Advanced Micro Devices, Inc. Flexible implementation of a system management mode (SMM) in a processor
JP3693721B2 (ja) * 1995-11-10 2005-09-07 Necエレクトロニクス株式会社 フラッシュメモリ内蔵マイクロコンピュータ及びそのテスト方法
IL116708A (en) 1996-01-08 2000-12-06 Smart Link Ltd Real-time task manager for a personal computer
CA2242596C (en) 1996-01-11 2012-06-19 Mrj, Inc. System for controlling access and distribution of digital property
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
US5978892A (en) 1996-05-03 1999-11-02 Digital Equipment Corporation Virtual memory allocation in a virtual address space having an inaccessible gap
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
US6178509B1 (en) * 1996-06-13 2001-01-23 Intel Corporation Tamper resistant methods and apparatus
US6205550B1 (en) * 1996-06-13 2001-03-20 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
US5944821A (en) 1996-07-11 1999-08-31 Compaq Computer Corporation Secure software registration and integrity assessment in a computer system
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
US5937063A (en) 1996-09-30 1999-08-10 Intel Corporation Secure boot
US5935242A (en) 1996-10-28 1999-08-10 Sun Microsystems, Inc. Method and apparatus for initializing a device
JPH10134008A (ja) 1996-11-05 1998-05-22 Mitsubishi Electric Corp 半導体装置およびコンピュータシステム
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
US5818939A (en) 1996-12-18 1998-10-06 Intel Corporation Optimized security functionality in an electronic system
US6412035B1 (en) * 1997-02-03 2002-06-25 Real Time, Inc. Apparatus and method for decreasing the response times of interrupt service routines
US5953502A (en) 1997-02-13 1999-09-14 Helbig, Sr.; Walter A Method and apparatus for enhancing computer system security
JP4000654B2 (ja) 1997-02-27 2007-10-31 セイコーエプソン株式会社 半導体装置及び電子機器
US6272637B1 (en) 1997-04-14 2001-08-07 Dallas Semiconductor Corporation Systems and methods for protecting access to encrypted information
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
US5987557A (en) 1997-06-19 1999-11-16 Sun Microsystems, Inc. Method and apparatus for implementing hardware protection domains in a system with no memory management unit (MMU)
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
US6584565B1 (en) 1997-07-15 2003-06-24 Hewlett-Packard Development Company, L.P. Method and apparatus for long term verification of digital signatures
US6014745A (en) * 1997-07-17 2000-01-11 Silicon Systems Design Ltd. Protection for customer programs (EPROM)
US5978475A (en) 1997-07-18 1999-11-02 Counterpane Internet Security, Inc. Event auditing system
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
US5919257A (en) 1997-08-08 1999-07-06 Novell, Inc. Networked workstation intrusion detection system
DE19735948C1 (de) * 1997-08-19 1998-10-01 Siemens Nixdorf Inf Syst Verfahren zur Verbesserung der Steuerungsmöglichkeit in Datenverarbeitungsanlagen mit Adreßübersetzung
US6282657B1 (en) 1997-09-16 2001-08-28 Safenet, Inc. Kernel mode protection
US5935247A (en) 1997-09-18 1999-08-10 Geneticware Co., Ltd. Computer system having a genetic code that cannot be directly accessed and a method of maintaining the same
US6148379A (en) 1997-09-19 2000-11-14 Silicon Graphics, Inc. System, method and computer program product for page sharing between fault-isolated cells in a distributed shared memory system
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
US5970147A (en) 1997-09-30 1999-10-19 Intel Corporation System and method for configuring and registering a cryptographic device
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
US6085296A (en) 1997-11-12 2000-07-04 Digital Equipment Corporation Sharing memory pages and page tables among computer processes
US6219787B1 (en) 1997-12-22 2001-04-17 Texas Instruments Incorporated Method and apparatus for extending security model to native code
US6378072B1 (en) * 1998-02-03 2002-04-23 Compaq Computer Corporation Cryptographic system
US6308270B1 (en) 1998-02-13 2001-10-23 Schlumberger Technologies, Inc. Validating and certifying execution of a software program with a smart card
US6108644A (en) 1998-02-19 2000-08-22 At&T Corp. System and method for electronic transactions
US6131166A (en) 1998-03-13 2000-10-10 Sun Microsystems, Inc. System and method for cross-platform application level power management
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
US6496847B1 (en) * 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer 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
FR2778998B1 (fr) 1998-05-20 2000-06-30 Schlumberger Ind Sa Procede d'authentification d'un code personnel d'un utilisateur d'une carte a circuit integre
EP0961193B1 (en) 1998-05-29 2010-09-01 Texas Instruments Incorporated Secure computing device
US6421702B1 (en) 1998-06-09 2002-07-16 Advanced Micro Devices, Inc. Interrupt driven isochronous task scheduler system
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
JP2000076139A (ja) 1998-08-28 2000-03-14 Nippon Telegr & Teleph Corp <Ntt> 携帯型情報記憶媒体
US6363485B1 (en) * 1998-09-09 2002-03-26 Entrust Technologies Limited Multi-factor biometric authenticating device and method
US6463535B1 (en) 1998-10-05 2002-10-08 Intel Corporation System and method for verifying the integrity and authorization of software before execution in a local platform
US6230248B1 (en) 1998-10-12 2001-05-08 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for pre-validating regions in a virtual addressing scheme
US6330670B1 (en) 1998-10-26 2001-12-11 Microsoft Corporation Digital rights management operating system
US6609199B1 (en) 1998-10-26 2003-08-19 Microsoft Corporation Method and apparatus for authenticating an open system application to a portable IC device
US7194092B1 (en) 1998-10-26 2007-03-20 Microsoft Corporation Key-based secure storage
US6327652B1 (en) 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
US6445797B1 (en) 1998-12-16 2002-09-03 Secure Choice Llc Method and system for performing secure electronic digital streaming
US6463537B1 (en) 1999-01-04 2002-10-08 Codex Technologies, Inc. Modified computer motherboard security and identification system
US6282650B1 (en) 1999-01-25 2001-08-28 Intel Corporation Secure public digital watermark
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
EP1030237A1 (en) 1999-02-15 2000-08-23 Hewlett-Packard Company Trusted hardware device in a computer
US6272533B1 (en) 1999-02-16 2001-08-07 Hendrik A. Browne Secure computer system and method of providing secure access to a computer system including a stand alone switch operable to inhibit data corruption on a storage device
US6717589B1 (en) * 1999-03-17 2004-04-06 Palm Source, Inc. Computerized help system with modal and non-modal modes
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
US6615278B1 (en) 1999-03-29 2003-09-02 International Business Machines Corporation Cross-platform program, system, and method having a global registry object for mapping registry equivalent functions in an OS/2 operating system environment
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
US6651171B1 (en) 1999-04-06 2003-11-18 Microsoft Corporation Secure execution of program code
US6389537B1 (en) * 1999-04-23 2002-05-14 Intel Corporation Platform and method for assuring integrity of trusted agent communications
US6275933B1 (en) 1999-04-30 2001-08-14 3Com Corporation Security system for a computerized apparatus
EP1055989A1 (en) 1999-05-28 2000-11-29 Hewlett-Packard Company System for digitally signing a document
EP1056014A1 (en) 1999-05-28 2000-11-29 Hewlett-Packard Company System for providing a trustworthy user interface
US6321314B1 (en) 1999-06-09 2001-11-20 Ati International S.R.L. Method and apparatus for restricting memory access
US6633981B1 (en) 1999-06-18 2003-10-14 Intel Corporation Electronic system and method for controlling access through user authentication
US6158546A (en) 1999-06-25 2000-12-12 Tenneco Automotive Inc. Straight through muffler with conically-ended output passage
US6301646B1 (en) 1999-07-30 2001-10-09 Curl Corporation Pointer verification system and method
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 露光装置、エネルギ源の出力制御方法、該方法を用いるレーザ装置、及びデバイス製造方法
EP1085396A1 (en) 1999-09-17 2001-03-21 Hewlett-Packard Company Operation of trusted state in computing platform
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
US6292874B1 (en) 1999-10-19 2001-09-18 Advanced Technology Materials, Inc. Memory management method and apparatus for partitioning homogeneous memory and restricting access of installed applications to predetermined memory ranges
WO2001063567A2 (en) 2000-02-25 2001-08-30 Identix Incorporated Secure transaction system
US20010037450A1 (en) 2000-03-02 2001-11-01 Metlitski Evgueny A. System and method for process protection
JP3710671B2 (ja) 2000-03-14 2005-10-26 シャープ株式会社 1チップマイクロコンピュータ及びそれを用いたicカード、並びに1チップマイクロコンピュータのアクセス制御方法
CA2341931C (en) 2000-03-24 2006-05-30 Contentguard Holdings, Inc. System and method for protection of digital works
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
US6633963B1 (en) 2000-03-31 2003-10-14 Intel Corporation Controlling access to multiple memory zones in an isolated execution environment
GB0020416D0 (en) * 2000-08-18 2000-10-04 Hewlett Packard Co Trusted system
US6593273B2 (en) * 2000-10-06 2003-07-15 Monsanto Technology Llc Method for reducing pest damage to corn by treating transgenic corn seeds with pesticide
US6938164B1 (en) 2000-11-22 2005-08-30 Microsoft Corporation Method and system for allowing code to be securely initialized in a computer
US7818808B1 (en) * 2000-12-27 2010-10-19 Intel Corporation Processor mode for limiting the operation of guest software running on a virtual machine supported by a virtual machine monitor
US7631160B2 (en) 2001-04-04 2009-12-08 Advanced Micro Devices, Inc. Method and apparatus for securing portions of memory
US6976136B2 (en) 2001-05-07 2005-12-13 National Semiconductor Corporation Flash memory protection scheme for secured shared BIOS implementation in personal computers with an embedded controller
US7676430B2 (en) 2001-05-09 2010-03-09 Lenovo (Singapore) Ptd. Ltd. System and method for installing a remote credit card authorization on a system with a TCPA complaint chipset
EP1271277A3 (en) 2001-06-26 2003-02-05 Redstrike B.V. Security system and software to prevent unauthorized use of a computing 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
US7103771B2 (en) * 2001-12-17 2006-09-05 Intel Corporation Connecting a virtual token to a physical token
US20030126453A1 (en) 2001-12-31 2003-07-03 Glew Andrew F. Processor supporting execution of an authenticated code instruction
US7308576B2 (en) 2001-12-31 2007-12-11 Intel Corporation Authenticated code module
US7107460B2 (en) 2002-02-15 2006-09-12 International Business Machines Corporation Method and system for securing enablement access to a data security device
US7343493B2 (en) 2002-03-28 2008-03-11 Lenovo (Singapore) Pte. Ltd. Encrypted file system using TCPA
US20040117532A1 (en) * 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
US7318141B2 (en) 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines
US20050204357A1 (en) * 2004-03-15 2005-09-15 Ajay Garg Mechanism to protect extensible firmware interface runtime services utilizing virtualization technology

Also Published As

Publication number Publication date
EP1730633A1 (en) 2006-12-13
US7620949B2 (en) 2009-11-17
US20050240700A1 (en) 2005-10-27
US7861245B2 (en) 2010-12-28
WO2005098621A1 (en) 2005-10-20
JP2007528084A (ja) 2007-10-04
US20090265709A1 (en) 2009-10-22

Similar Documents

Publication Publication Date Title
JP4579972B2 (ja) 仮想マシン環境におけるゲストソフトウェアの実行中にオープン・イベント・ウィンドウの認識を容易にする方法および装置
US7177967B2 (en) Chipset support for managing hardware interrupts in a virtual machine system
JP4688862B2 (ja) 仮想マシン環境における仮想マシンのシングルステップ機能のサポートを提供すること
US7209994B1 (en) Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests
JP4354488B2 (ja) 特権イベントを処理するための複数のバーチャルマシーンモニタの利用
US7707341B1 (en) Virtualizing an interrupt controller
JP4564536B2 (ja) 仮想マシンモニタに関連するタイマへのサポートを提供する方法及び装置
US9442868B2 (en) Delivering interrupts directly to a virtual processor
JP4291301B2 (ja) ゲストソフトウェアの特権レベルに基づく1つの仮想マシンモニタへの移行の支援
JP4584315B2 (ja) 仮想マシン環境におけるタイマ・オフセット機構
EP1761850B1 (en) Support for nested faults in a virtual machine environment
US7900204B2 (en) Interrupt processing in a layered virtualization architecture
JP6017706B2 (ja) ピアモニタにて信頼性・可用性・保守性(ras)フローをサポートする機構
JP4980416B2 (ja) 物理デバイスコントローラから割り込みをリダイレクトすることによる複数の仮想デバイスコントローラの提供
US11442770B2 (en) Formally verified trusted computing base with active security and policy enforcement
JP2007506162A (ja) バーチャルマシーンの動作の復帰に対する割込又は実行のベクトル処理
Klingensmith et al. Using virtualized task isolation to improve responsiveness in mobile and iot software
US20050091022A1 (en) Ultra fast multi-processor system simulation using dedicated virtual machines

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100420

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100720

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

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

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

Free format text: PAYMENT UNTIL: 20130903

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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