(57)【要約】  特定の実施例では、本発明は、仮想マシン・モニタの構成部分を特権化解除し、特権化解除されたサービス仮想マシン（SVMS）が、選択されたトラッピングされたイベントを扱うことを可能にするためのシステムに関する。本発明の実施例は、ハードウェア仮想化サポートを備えたプラットフォーム上で動作するハイブリッドVMMである。ハイブリッドVMMは、ハイパーバイザ・ベースのVMMアーキテクチャ及びホスト・ベースのVMMアーキテクチャからの構成を利用する。少なくとも１つの実施例では、伝統的なVMMの機能は、マイクロハイパーバイザ（MH）と呼ばれる、プラットフォームに依存する小さな部分、及びサービス仮想マシン（SVM）と呼ばれる、プラットフォームに依存しない１つ又は複数の部分に区分される。マイクロハイパーバイザが、何れのSVMよりも高い仮想マシン（VM）特権レベルにおいて動作する一方、SVMや他のVMはなお、何れかの命令セット・アーキテクチャ（ISA）特権レベルに対するアクセスを有し得る。他の実施例を本明細書及び特許請求の範囲で記載する。
2008523511.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシン・モニタの構成部分を特権化解除するためのシステムであって、
複数の仮想マシン（VM）特権レベルを有する仮想化ハードウェア・サポートを備えたプラットフォームであって、種々のVM特権レベルにおいて実行するプロセス間で、トラッピングされた少なくとも１つのイベントに基づいて移行することができるプラットフォームと、
仮想マシン・モニタ（VMM）のマイクロハイパーバイザ部分であって、前記プラットフォーム上のプログラム実行が、選択されたトラッピングされたイベント後に前記マイクロハイパーバイザ部分に移行する対象である、VMMのマイクロハイパーバイザ部分と、
前記トラッピングされた少なくとも１つのイベントをサービスするためのVMMの少なくとも１つのサービス仮想マシン（SVM）部分であって、前記マイクロハイパーバイザ部分によって動作されるVM特権レベルよりも低いVM特権レベルにおいて実行し、前記プラットフォーム上のプログラム実行が、前記マイクロハイバーバイザ部分によって前記少なくとも１つのSVM部分に、前記トラッピングされた少なくとも１つのイベントに基づいて移行する対象である、VMMの少なくとも１つのSVM部分とを備えるシステム。
【請求項２】
請求項１記載のシステムであって、前記マイクロハイパーバイザ部分が、前記プラットフォーム上の最高ＶＭ特権レベルにおいて実行する対象であるシステム。
【請求項３】
請求項１記載のシステムであって、前記プラットフォーム上の第１のゲスト仮想マシンにおいて実行する第１のオペレーティング・システムが、前記マイクロハイパーバイザ部分によって動作されるＶＭ特権レベルよりも低いＶＭ特権レベルにおいて実行するシステム。
【請求項４】
請求項３記載のシステムであって、トラッピングされたイベントは、前記第１のオペレーティング・システム下で実行するゲスト・ソフトウェアがサービスを要求した場合に引き起こされるシステム。
【請求項５】
請求項３記載のシステムであって、前記第１のオペレーティング・システムの少なくとも１つの部分が、前記プラットフォームの最高ISA特権レベルにおいて動作するシステム。
【請求項６】
請求項３記載のシステムであって、それぞれが、個別の更なる仮想マシンにおいて実行する対象である複数の更なるオペレーティング・システムを更に備えており、前記複数の更なるオペレーティング・システムが、前記マイクロハイパーバイザ部分によって動作されるVM特権レベルよりも低いVM特権レベルにおいて実行する対象であるシステム。
【請求項７】
請求項１記載のシステムであって、前記少なくとも１つのSVM部分は、選択された少なくとも１つの構成部分に対するアクセスに制限されるシステム。
【請求項８】
請求項１記載のシステムであって、前記マイクロハイパーバイザ部分が、ブートするオペレーティング・システムからドライバとして起動されるシステム。
【請求項９】
請求項１記載のシステムであって、前記マイクロハイパーバイザ部分は、通信するよう前記プラットフォームに結合されるシステム・ファームウェアに存在するシステム。
【請求項１０】
請求項１記載のシステムであって、前記マイクロハイパーバイザ部分が、システム・ブート中にロードされるシステム。
【請求項１１】
請求項１記載のシステムであって、前記少なくとも１つのSVM部分が、ハードウェア相互作用のサービスを提供するシステム。
【請求項１２】
請求項１記載のシステムであって、前記プラットフォーム上の最高VM特権レベルが、前記プラットフォーム上の最高ISA特権レベルよりも高いシステム。
【請求項１３】
仮想化プラットフォーム上の仮想マシン・モニタにおけるサービスを特権化解除する方法であって、
仮想マシン・モニタ（VMM）のマイクロハイパーバイザ部分によって、ハードウェア仮想化サポートを備えたプラットフォームにおけるゲスト仮想マシン（VM）にコントロールを移行する工程であって、前記ゲストVMが、前記マイクロハイパーバイザ部分よりも低いVM特権レベルにおいて実行する対象である工程と、
トラッピングされたイベントによってコントロールを受ける工程と、
前記トラッピングされたイベントを扱う対象の、前記VMMのサービス仮想化（SVM）部分を判定する工程と、
前記トラッピングされたイベントについて前記判定されたSVM部分にコントロールを移す工程であって、前記SVM部分が、前記マイクロハイパーバイザによって動作されるVM特権レベルよりも下のVM特権レベルにおいて実行する対象である工程とを備える方法。
【請求項１４】
請求項１３記載の方法であって、前記マイクロハイパーバイザ部分が、前記プラットフォーム上の最高ＶＭ特権レベルにおいて実行する方法。
【請求項１５】
請求項１３記載の方法であって、
前記判定されたSVM部分からコントロールを受ける工程と、
前記ゲストVMに実行を移行する工程とを更に備える方法。
【請求項１６】
請求項１３記載の方法であって、前記判定されたSVM部分は前記マイクロハイパーバイザの一部分であり、前記トラッピングされたイベントは、別のVMにコントロールを明示的に移行することなく前記マイクロハイパーバイザ部分によって局所的に扱われる方法。
【請求項１７】
請求項１３記載の方法であって、前記イベントのトラッピングが、前記ハードウェア仮想化サポートによってイネーブルされる方法。
【請求項１８】
請求項１３記載の方法であって、前記ゲスト仮想マシンにコントロールを移行する前に、仮想マシン制御構造（VMCS）においてトラッピングされる対象の少なくとも１つのイベント・タイプを列挙する工程を更に備えており、前記VMCSは、イベント・タイプ毎に、前記イベント・タイプが、前記マイクロハイパーバイザ部分への移行を引き起こす対象であるか否かを規定するコントロール組を備える方法。
【請求項１９】
請求項１３記載の方法であって、前記マイクロハイパーバイザ部分、ゲストVM、及びSVM部分のうちでコントロールを移行する工程が、前記ハードウェア仮想化サポートによってイネーブルされる方法。
【請求項２０】
仮想化プラットフォーム上の仮想マシン・モニタにおけるサービスを特権化解除するマシン・アクセス可能媒体であって、
仮想マシン・モニタ（VMM）のマイクロハイパーバイザ部分によって、ハードウェア仮想化サポートを備えたプラットフォームにおけるゲスト仮想マシン（VM）にコントロールを移行する機能であって、前記ゲストVMが、前記マイクロハイパーバイザ部分よりも低いVM特権レベルにおいて実行する対象である機能と、
トラッピングされたイベントによってコントロールを受ける機能と、
前記トラッピングされたイベントを扱う対象の、前記VMMのサービス仮想化（SVM）部分を判定する機能と、
前記トラッピングされたイベントについて前記判定されたSVM部分及びマイクロハイパーバイザ部分の一方にコントロールを移行する機能であって、前記SVM部分が、前記マイクロハイパーバイザ部分によって動作されるVM特権レベルよりも下のVM特権レベルにおいて実行する対象である機能とを、アクセスされるとマシンに行わせる命令を有するマシン・アクセス可能媒体。  
【請求項２１】
請求項２０記載のマシン・アクセス可能媒体であって、前記マイクロハイパーバイザ部分が、前記プラットフォーム上の最高ＶＭ特権レベルにおいて実行する対象であるマシン・アクセス可能媒体。
【請求項２２】
請求項２０記載のマシン・アクセス可能媒体であって、
前記判定されたSVM部分からコントロールを受ける機能と、
前記ゲストVMに実行を移行する機能とを、アクセスされるとマシンに行わせる命令を更に備えるマシン・アクセス可能媒体。
【請求項２３】
請求項２０記載のマシン・アクセス可能媒体であって、前記イベントのトラッピングが、前記ハードウェア仮想化サポートによってイネーブルされるマシン・アクセス可能媒体。
【請求項２４】
請求項２０記載のマシン・アクセス可能媒体であって、前記ゲスト仮想マシンにコントロールを移行する前にアクセスされた場合、仮想マシン制御構造（VMCS）においてトラッピングされる対象の少なくとも１つのイベント・タイプを列挙する命令を更に備えており、前記VMCSは、イベント・タイプ毎に、前記イベント・タイプが、前記マイクロハイパーバイザ部分への移行を引き起こす対象であるか否かを規定するコントロール組を備えるマシン・アクセス可能媒体。
【請求項２５】
請求項２０記載のマシン・アクセス可能媒体であって、前記マイクロハイパーバイザ部分、ゲストVM、及びSVM部分のうちでコントロールを移行する機能が、前記ハードウェア仮想化サポートによってイネーブルされるマシン・アクセス可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、一般に仮想化プラットフォームに関し、特に、より低い特権レベルにおいて仮想マシン・モニタの構成部分を実行するためのシステム及び方法に関する。
【背景技術】
【０００２】
仮想化プラットフォームにおいて仮想マシンを管理する種々の機構が存在している。一管理手法は、システム上で仮想マシン・モニタ（VMM）を実施することである。仮想マシン・モニタに一般的な２つのアーキテクチャが存在している。第１のアーキテクチャは、システム内の他のソフトウェア全てを、特権化されたハイパーバイザ（仮想マシン・モニタ）が制御するハイパーバイザ・アーキテクチャである。ハイパーバイザは、仮想マシン（VM）（本明細書ではゲストVMと表す）において実行するソフトウェアに供給したいデバイス全てのネイティブ・ドライバ及びモデルを含んでいなければならない。VMMのこのアーキテクチャでは、前述の必要性が問題になっている。ハイパーバイザ・アーキテクチャでは、VMMは、下にあるプラットフォームに対する完全なコントロールを有しており、プラットフォーム・ハードウェアに対するゲストVMのアクセスを制限し得る。ハイパーバイザは、ハードウェア全てに対するアクセスを有する。ゲストVMは、ハイパーバイザが許す場合にのみハードウェアを直接アクセスすることができる。ハイパーバイザ・システムは、ゲストVMがハードウェアを直接アクセスすることを阻止することができる（そのように設計されている場合）。ハイパーバイザが実現された場合、物理デバイス毎のデバイス・ドライバも実現されなければならない。物理デバイスが変わった（デバイスの別のバージョンによって置き換えられた）場合、新たな、又は代わりのデバイス・ドライバがハイパーバイザに存在していなければならない。通常、オペレーティング・システムは全て、VMにおいて実行する。VMは種々のやり方で特権化することができる。例えば、VM1が装置番号１に対するアクセスを有し得る一方、VM2は装置番号２に対するアクセスを有する。
【０００３】
VMMに一般的な第２のアーキテクチャは、ホストされたVMMである。このアーキテクチャでは、VMMは、ホスト・オペレーティング・システム（OS）に密接に結合され、ホストOSによって提供されるサービスを用いてその仮想化機能を実行する。このアーキテクチャでは、ホストOSは、プラットフォームに対する完全なコントロールを有する。VMM構成部分は、プラットフォームのゲストVMのコントロールを有する。すなわち、VMM構成部分は、下にあるハードウェアを直接制御しない。VMMは、ホストOSによって提供されるサービスを用いて、下にあるハードウェアにアクセスする。VMMの安定性は、ホストOSの安定性と同程度良好でしかない。ホストOSは、必要なデバイス・ドライバを全て有している。VMMは、ゲストVMに提示されるデバイス全てのモデルを実現しなければならない。このハイレベル・アーキテクチャによって実現されるVMMは、特定のホストOSに依存するので、移植性の制約を受ける。更に、スケジューリングを実行するためにホストOSに対する依存が存在している。VMMは、ゲストVMのスケジューリングを制御するが、ホストOSによって与えられる時間の量を制御しない。例えば、ホストOSがVMMを毎ミリ秒ウェークアップする旨を要求することは可能でないことがあり得る。
【０００４】
現在、いくつかの仮想化製品が存在している。例えば、ハイパーバイザ・ベースのアーキテクチャであるＥＳＸサーバは、ＶＭウェア（登録商標）社から入手可能である。マイクロソフト（登録商標）社及びＶＭウェア（登録商標）社はともに、ホスト・ベースのアーキテクチャ・ソフトウェアを提供している。すなわち、マイクロソフト社はバーチャルＰＣ及びバーチャル・サーバを提供しており、ＶＭウェア（登録商標）社はＶＭワークステーション及びＧＳＸサーバを提供している。現在、前述のソフトウェア・システムは、ハードウェア仮想化サポートを有していないサーバ上又はパソコン（PC）上にロードすることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の実施例は、仮想マシン・モニタの構成部分を特権化解除すること、及び、選択された機能を提供するよう特権化解除されたサービス仮想マシン（SVM）をイネーブルすることに関するシステム及び方法である。
【課題を解決するための手段】
【０００６】
本発明の実施例は、移植性及び信頼性を向上させた仮想マシン・モニタ（VMM）を構成することができる手段を提供する。本発明の実施例は、ハイパーバイザ・ベースのVMMアーキテクチャ及びホスト・ベースのVMMアーキテクチャアーキテクチャからの構成を用いたハイブリッドVMMである。少なくとも１つの実施例では、伝統的なVMMの機能は、マイクロハイパーバイザ（MH）と呼ばれる小さなプラットフォーム依存部分、及び、サービス仮想マシン（SVM）と呼ばれる１つ又は複数のプラットフォーム独立部分に区分することができる。  このハイブリッドVMMアーキテクチャは、既存のVMMソフトウェア・アーキテクチャに対して開発、検証、セキュリティ、信頼性及び可用性の利点をもたらす。
【発明を実施するための最良の形態】
【０００７】
本発明の特徴及び利点は、本発明の以下の詳細な説明から明らかになるであろう。
【実施例】
【０００８】
本明細書において本発明の「one  embodiment」又は「an  embodiment」に言及していることは、その実施例に関して説明する特定の特徴、構造又は特性が本発明の少なくとも１つの実施例に含まれていることを意味している。よって、本明細書を通した種々の箇所に存在している句「in  one  embodiment」は必ずしもその全てが同じ実施例を表している訳でない。
【０００９】
説明の目的で、特定の構成及び詳細を表して、本発明が徹底的に分かるようにしている。しかし、本明細書記載の特定の詳細なしで本発明の実施例を実施することができるということは当業者には明らかであろう。更に、本発明を分かりにくくすることのないように周知の特徴を割愛又は単純化していることがあり得る。本明細書を通して種々の例を記載していることがあり得る。これらは、本発明の特定の実施例の説明に過ぎない。本発明の範囲は記載された例に限定されない。
【００１０】
本発明の実施例では、マイクロハイパーバイザは、SVMを含む仮想マシン（VM）間の要求のプロキシの役目を担い、分離ポリシー及びセキュリティ・ポリシーを実施するモジュールである。マイクロハイパーバイザの設計は、固有のプラットフォーム知識、及び特権リソース（例えば、プラットフォーム・チップセット等）に対するアクセスを必要とする。図２A乃至図２Bに関して説明するように、マイクロハイパーバイザは、最も特権化されたモードにおいて実行する。マイクロハイパーバイザは、システム・ブートの初期に（OSモジュールと同様に）ロードされるモジュールとして実現するか、又は、ホストOSからドライバとして、若しくは、システム・ファームウェアの一部として起動することができる。
【００１１】
図２A乃至図２Bに関して説明するように、SVMは、VMにおいて特権化解除モードで実行するプラットフォーム独立モジュールである。SVMは、市販のOS及びデバイス・ドライバ、又は１つ若しくは複数のプラットフォーム独立ファームウェア・モジュールをベースに構築することができる。SVMは、デバイス仮想化、実際のハードウェアに対する、又は他のSVMに対する要求のプロキシなどのサービスを提供することができる。
【００１２】
図１は、伝統的なハイパーバイザVMMアーキテクチャ・プラットフォーム１００を示す構成図である。いくつかのゲストVM１０１、１０３、１０５及び１０７がプラットフォーム１００上で同時に実行し得る。仮想マシン・モニタ（VMM）１１０は、ゲストVMの、ハードウェア１２０に対するアクセスを、プロセッサ／プラットフォーム仮想化層１１１によって制御する。いくつかの仮想デバイス・モデル１１３及び１１５がVMM１１０内に存在し得る。図２A乃至図２Bに関して以下に説明するように、VMM１１０は最高の特権レベルで動作し得る。以下に更に説明するように、VMM１１０は、ファイル・システム、メモリ及びデバイス全てに対するアクセスをコントロールする。VMM１１０は通常、プラットフォーム上のハードウェア・デバイス毎にデバイス・ドライバ１１９を有する。
【００１３】
VMM１１０、並びにゲストVMM１０１、１０３、１０５及び１０７は、プラットフォーム・ハードウェア１２０上で実行する。プラットフォーム・ハードウェア１２０は、プロセッサ１２２、メモリ１２４、並びに、１つ又は複数のI／Oデバイス１２６及び１２８を含み得る。プラットフォーム・ハードウェアは、パソコン（PC）、メインフレーム、ハンドヘルド・デバイス、ポータブル型コンピュータ、セット・トップ・ボックス、又は何れかの他の計算機システムであり得る。
【００１４】
プロセッサ１２２は、ソフトウェアを実行することができる何れかのタイプのプロセッサ（マイクロプロセッサ、ディジタル信号プロセッサ、マイクロコントローラや同様なものなど）であり得る。図１は前述の１つのプロセッサ１２２しか示していないが、プラットフォーム・ハードウェア１２０には１つ又は複数のプロセッサがあり得る。1つ又は複数のプロセッサは、複数のスレッド、複数のコア、又は同様なものを含み得る。
【００１５】
メモリ１２４は、プロセッサ１２２によって読み取り可能なハード・ディスク、フロッピー（登録商標）・ディスク、ランダム・アクセス・メモリ（RAM）、リード・オンリ・メモリ（ROM）、フラッシュ・メモリ、又は何れかの他のタイプの媒体であり得る。メモリ１２４は、本発明の方法実施例の実行を行う命令を記憶することができる。
【００１６】
1つ又は複数のI／O装置１２６及び１２８は例えば、システム・バス上のネットワーク・インタフェース・カード、通信ポート、ビデオ・コントローラ、ディスク・コントローラ（例えば、PCI(周辺機器の相互接続)、ISA（業界標準アーキテクチャ）、AGP(アドバンスト・グラフィクス・ポート)）、チップセット・ロジック又はプロセッサに一体化されたデバイス（例えば、リアルタイム・クロック、プログラム可能タイマ、パーフォーマンス・カウンタ）や、プラットフォーム・ハードウェア１２０上の何れかの他のデバイスであり得る。１つ又は複数のI／Oデバイス１２６及び１２８は、当該技術分野において知られているI／O命令若しくはメモリ・マップI／Oアクセスによって、又は何れかの他の手段によってアクセスすることができる。
【００１７】
（本明細書ではIA-32  ISAとして表す）インテル社ペンティアム（登録商標）４を含む大半の命令セット・アーキテクチャ（ISA）は、命令セット・アーキテクチャにおける特権レベルのコンセプトで設計されている。前述の特権レベルは本明細書ではISA特権レベルとして表す、図２A及び図２Bを参照すれば、種々のISA特権レベルを備えたプラットフォームを示す構成図を示す。IA-32  ISAは例えば、４つのISA特権レベル（リング・レベル（リング-0  301、リング-1  303、リング-2  305及びリング-3  307）として表す）を有する。IA-32  ISAでは、リング-0  (301)が、最も特権化されたISA特権レベルである一方、リング-3  (307)は、最も特権化されていないISA特権レベルである。
【００１８】
ISA特権レベルをOSによって用いて、ユーザ・モードとカーネル・モードとの間で機能を区分する。既存のシステムでは、プロセッサ命令セット・アーキテクチャは通常、ハードウェアに対する完全なコントロール（すなわち、リング-0モード３０１）をOSコードに与えるよう設計される。ISAは、より低いISA特権レベル（すなわち、リング-1（３０３）、リング-2（３０５）及びリング-3（３０７））で他のソフトウェアが実行するためのコンテナをOSが作成することを可能にする。一般に、既存のシステムでは、OSコードは最高ISA特権レベル（すなわち、リング-0  ３０１）で実行し、アプリケーションは最低ISA特権レベル（すなわち、リング-3  ３０７）で実行する。デバイス・ドライバは通常、マイクロソフト（登録商標）社のウィンドウズ（登録商標）などの既存のOSにおける最高ISA特権レベルで実行する。既存のOSでは、一層多くのコードが最高ISA特権レベルで実行される。最高ISA特権レベルで実行されるコードのサイズが増大するにつれ、コード内の考えられる相互作用の計算量、及びコードの検証の計算量が増大する。前述の増大は、不完全なソフトウェアによるシステム・クラッシュの増加につながり得る。更に、既存のシステムは、構成部分間の明確なインタフェースがないこと、及び、何れかの定義済みインタフェースの使用の実施が満足でないことに問題を来している。
【００１９】
小さな特権化コア、及び特権化解除されたサービス構成部分を利用するという一般的な手法が、一部のシステムで試みられている。例えば、マイクロカーネルOSの研究  （Jochen  Liedtkeによる「Toward  Real  Microkernels、September  1996/Vol.  39,  No.  9  COMMUNICATIONS  OF  THE  ACM参照」は、OSの一部を特権化解除する同様な手法を施そうとしている。マイクロカーネルは、OSの非常に小さな、完全特権化部分である。完全特権化部分はリング-0（IA-32の用語では）を用いているので、OSの残りは、単独で最高ISA特権レベルにマイクロカーネルがあることを可能にするために特権化解除されなければならない。OSは、より低いISA特権レベルで対処するために修正されなければならない。
【００２０】
別個のコンテナにおける構成部分が、直接互いに影響すること、又はマイクロカーネルの動作に影響することが可能でないように、マイクロカーネルは、より下のISA特権レベルで動作するコンテナに移動させることによってオペレーティング・システムの構成部分を分離する。一部のマイクロカーネルは、既存システムにおいて実現されているが、遅くて複雑であり、仮想化プラットフォーム用に開発されていない。
【００２１】
プラットフォームがハードウェア仮想化サポートを有する場合、特権を２つの特権空間に区分する新たなやり方を導入することができる。第１の特権空間は、前述のISA特権レベルである。第２の特権空間は、本明細書ではVM特権レベルとして表す。実施例では、２つのVM特権レベルが存在している。最高VM特権レベルはルート・オペレーション（３１１）として表される一方、より低いVM特権レベルは非ルート・オペレーション（３２０）として表される。一実施例では、VMM又はマイクロハイパーバイザはルート・オペレーション３１１で実行する。ゲストVMは、非ルート・オペレーション３２０で実行する。より高いVM特権レベルにおいて実行するソフトウェアは、低いVM特権レベルにおいて実行するソフトウェアのISA特権レベルにかかわらず、低いVM特権レベルにおいて実行するソフトウェアを制御することができる。一実施例では、何れのVM特権レベルにおけるソフトウェアも、プロセッサのISA特権レベル・アーキテクチャ（例えば、IA-32  ISAにおけるリング-0  （301a））を利用することができる。しかし、より低いVM特権レベル（例えば、非ルート・オペレーション３２０）において実行するリング-0ソフトウェアは、より高いVM特権レベル（例えば、ルート・オペレーション３１１）において実行するソフトウェアによってなお制御することができる。
【００２２】
一実施例では、特定の処理のVM特権レベル及びISA特権レベルは独立している。すなわち、VMMの構成部分は、最高VM特権レベルにおいて実行することができ、最低ISA特権レベルにおいても実行することができる。最高VM特権レベルにおいて、しかし、より低いISA特権レベル（例えば、IA-32  ISAにおけるリング-3）において実行するVMMコードの機能は、より低いVM特権レベルにおいて実行するゲスト・ソフトウェアの状態を直接、制御又は操作することができることにおいて制限され得る。前述の制限は、仮想化アーキテクチャによって課され得る（例えば、ハードウェアは、より低いISA特権レベル・コードが新たなVMを起動させることを阻止し得る）か、又は、最高VM特権レベルにおいて実行する最高ISA特権レベル・コードによって（例えば、ゲスト・ソフトウェアのメモリに対するアクセスによって、より低いISA特権レベルのコードのページ・テーブルを構成することによって）課され得る。
【００２３】
図３は、本発明の実施例による、ハイブリッド・アーキテクチャVMMを示す構成図である。ハイブリッド・アーキテクチャVMMは、ハイパーバイザ・ベースのVMMアーキテクチャ及びホスト・ベースのVMMアーキテクチャからの構成要素を用いる。  図１のVMM(１１０)、及びマイクロハイパーバイザ２１０は、最高VM特権レベルにおいて実行し、プラットフォーム・ハードウェア１２０及び２２０それぞれに対する完全なコントロールを有する。
【００２４】
ハイブリッド・アーキテクチャは、SVM２０１などの1つ又は複数のサービス仮想マシン（SVM）を利用することができる。SVM２０１は、ユーザレベルVMM２１１及びデバイス・モデル２１３を備え得る。SVM２０１内のデバイス・モデル２１３は、やはりSVM２０１内のハードウェア・ドライバ２１９と相互作用し得る。以下に説明するように、ハードウェア・ドライバ２１９は、マイクロハイパーバイザ２１０のコントロール下でプラットフォーム・ハードウェア２２０と通信する。図３は前述のSVM２０１を１つしか示していないが、以下に説明するようにシステム２００において1つ又は複数のSVMが存在し得る。
【００２５】
マイクロハイパーバイザ２１０、サービスVM２０１並びにゲストVM２０３、２０５及び２０７は、プラットフォーム・ハードウェア２２０上で実行する。プラットフォーム・ハードウェア２２０は、プロセッサ２２２、メモリ２２４、並びに１つ又は複数のＩ／Ｏデバイス２２６及び２２８を含み得る。プラットフォーム・ハードウェア２２０は、パソコン（PC）、メインフレーム、ハンドヘルド・デバイス、ポータブル型コンピュータ、セット・トップ・ボックス、又は何れかの他の計算機システムのものであり得る。
【００２６】
プロセッサ２２２は、ソフトウェアを実行することができる何れかのタイプのプロセッサ（マイクロプロセッサ、ディジタル信号プロセッサ、マイクロコントローラや同様なものなど）であり得る。図３は前述の１つのプロセッサ２２２しか示していないが、プラットフォーム・ハードウェア２２０には１つ又は複数のプロセッサがあり得る。1つ又は複数のプロセッサは、複数のスレッド、複数のコア、又は同様なものを含み得る。
【００２７】
メモリ２２４は、プロセッサ２２２によって読み取り可能なハード・ディスク、フロッピー（登録商標）・ディスク、ランダム・アクセス・メモリ（RAM）、リード・オンリ・メモリ（ROM）、フラッシュ・メモリ、又は何れかの他のタイプのマシン媒体であり得る。
メモリ２２４は、本発明の方法実施例の実行を行う命令を記憶することができる。
【００２８】
1つ又は複数のI／O装置２２６及び２２８は例えば、システム・バス上のネットワーク・インタフェース・カード、通信ポート、ビデオ・コントローラ、ディスク・コントローラ（例えば、PCI、ISA、AGP）、チップセット・ロジック又はプロセッサに一体化されたデバイス（例えば、リアルタイム・クロック、プログラム可能タイマ、パーフォーマンス・カウンタ）や、プラットフォーム・ハードウェア２２０上の何れかの他のデバイスであり得る。１つ又は複数のI／Oデバイス２２６及び２２８は、I／O命令によって、又は、メモリ・マップI／Oアクセスによって、若しくは、当該技術分野において知られている何れかの他の手段によってアクセスすることができる。
【００２９】
一実施例では、マイクロハイパーバイザ２１０は、プラットフォーム・ハードウェア２２０に対する完全なアクセス、及びプラットフォーム・ハードウェア２２０のコントロールを有する。既存のホスト・ベースのVMMアーキテクチャ及びハイパーバイザ・ベースのVMMアーキテクチャでは、VMMにおけるデバイス・ドライバは、完全特権化モードで実行され得るものであり、よって、デバイス・アクセス及びその他のサービスは、よりリスクが高いオペレーションである。本明細書記載のハイブリッド・アーキテクチャでは、SVM２０１は、完全特権化レベルで実行せず、したがって、サービス及びデバイス・アクセスには、プラットフォームのインテグリティに対してより低いリスクがもたらされる。SVM２０１はデバイス・ドライバ、ファイル・システム及び全サービスを提供し得るが、前述の機能は、VM内で、特権化解除モードにおいて実行するものとする。SVM２０１は、ホスト・ベースのアーキテクチャにおいて、しかし、直接ホスト上ではなくVM内でホストOSが応える目的と同じ目的の一部に応える。VMMの一部分を、より低いVM特権レベルにおいて実行する利点は、VMMの、より低いVM特権レベル部分が最高ISA特権レベル（例えば、IA-32  ISAにおけるリング-0）において実行しても存在している。
【００３０】
ハイブリッド・アーキテクチャの実施例では、システム及びサービスを制御するホストOSは何ら存在していない。その代わりに、小さなマイクロハイパーバイザが、最高VM特権レベルにおいて実行する重要なサービスを制御する。１つ又は複数のSVMは、より低いVM特権レベルにおいて実行する他のサービスを提供することができる。例えば、SVMは、ハードウェア相互作用のサービスを提供することができる。SVMは、制限されたアクセスを、下にあるソフトウェアに対して有し得る。例えば、SVMは、制御するハードウェア・デバイスのみに制限されたアクセスを有し得る。よって、ハードウェア・コントロールは、ハードウェア・デバイスに対する認可されていないアクセスを不正なアプリケーションが有しないことを確実にするために区分することができる。
【００３１】
本発明の実施例は、修正なしでゲストVMにおいて既存のOSが実行し、ユーザが期待するアプリケーションに対するインタフェース及びサービスをなお提供することを可能にする。サービスは全て、その場合、サービスSVMを扱うのに適切なSVMを呼び出すマイクロハイパーバイザによって実行することができる。本発明の実施例では、より高いVM特権レベル（すなわち、図２のルート・オペレーション３１１）がプラットフォーム・ハードウェア上で実現されるので、このことが可能である。例えば、IBM３７０型コンピュータは、本発明の実施例をサポートする仮想化プラットフォームである。
【００３２】
VMMは、プラットフォームの何れかの特定の構成要素（メモリ、I／Oデバイス、DMAエンジン等を含む）をゲストVMがアクセスすることを可能にするか、又は阻止することができる。マイクロハイパーバイザは、特定のリソースに対するアクセスをゲストVMに与えることができる。例えば、少なくとも１つの記憶装置（すなわち、ディスク・ドライブ）に対するアクセスを有する記憶サービスを提供するSVMがあり得る。プラットフォーム拡張によって、例えば、前述の記憶装置に対するアクセスを与えられたSVMは、プラットフォーム上の他のハードウェア・デバイスに対してアクセスすることが阻止され得る。
【００３３】
一実施例では、SVMは、ゲストVMと同じVM特権レベルにおいて実行する。しかし、マイクロハイパーバイザは、全てのVMにアクセス可能な訳でない下にあるハードウェア・プラットフォームの構成部分にアクセスする機能をSVMに備えることができる。マイクロハイパーバイザは、仮想化プラットフォームにおける機構を用いて、特定のハードウェア・デバイス又はメモリをVMがアクセスすることを阻止する。例えば、特定のI／Oポートに対するアクセス全てによって、マイクロハイパーバイザへの移行が生じ得る。
【００３４】
一部のプラットフォームのハードウェア・アーキテクチャは、DMAアクセスによって物理メモリの全てが参照されることを阻止することが可能でない。DMAを行うことが可能なデバイスに対するアクセスをVMが与えられた場合、デバイスは、メモリ内のどこでもDMAを行うようプログラムすることができる。  
一実施例では、DMAによってアクセス不能な、物理メモリ内のページをVMMが規定することができる機構をハードウェア・アーキテクチャが備えることができる。よって、ページは、デバイス全てから保護することができる。しかし、CPUバスからのアクセスは阻止されないことがあり得る。これは、誤った、又は不正なデバイスに対して保護し得る。
【００３５】
別の実施例では、ハードウェア・アーキテクチャは、デバイス単位でDMAによってアクセスできない、物理メモリ内のページをVMMが規定することができる機構を提供することができる。それによって、VMMが、特定のデバイスから物理メモリの特定のページに対するアクセスをDMAに与えるが他には与えないことが可能になる。
【００３６】
仮想化のためのハードウェア・サポートは、VMMによって用いる種々の機能を含み得る。一実施例では、VMMソフトウェアは、VMMへの移行がもたらされる、ゲストVMが実行中に生起し得るイベントを規定することができる。ゲストVMからVMMへの移行はVMエグジットとして表す。VMMからゲストVMへの移行はVMエントリとして表す。一実施例では、VMエントリは、VMMによって、特定のプロセッサ命令を実行することによって起動される。ハードウェアは、VMMによって設定されるポリシーに基づいて、最高特権化モード（すなわち、高いVM特権レベル）と、より低く特権化された、又は「特権化解除された」モード（すなわち、より低いVM特権レベル）との間をプラットフォームが往復して移行することを可能にする。VMエグジットを引き起こすためにVMMによって特定することができるイベント組は広くてもよい。イベントには、物理メモリを仮想化するためにVMMが用いることができるイベント全て（すなわち、VMMはゲストVMのページ・テーブルをコントロールすることができる）、割り込みおよび例外、I/O命令、特定のプロセッサ状態（マシン特有レジスタ（MSR）や制御レジスタ（例えば、IA-32  ISAにおけるCR0））に対するアクセス、及び同様なものが含まれ得るが、これらに限定されるものでない。このようにして、VMMは特定のプラットフォーム機能を仮想化することができる。
【００３７】
例えば、ゲストVMにおいて実行するOSがI/O命令を実行した場合、VMMは、このI/OイベントがVMM（すなわち特権モード）に対するVMエグジットを用いた移行を引き起こすことを規定することによってそのイベントをトラッピングすることができる。  一実施例では、VMMは、どのI／Oポート・アクセスがVMエグジットを引き起こすかを規定し、他のポートに対するアクセスを阻止する一方で、ゲストVMが特定のI／Oポートにアクセスすることを可能にすることができる。前述のVMエグジットが生起した場合、VMMはI／Oデバイスを仮想化するか、又は、サービスを提供し、必要なI／Oを実行することができる。これは、ゲストVMにはトランスペアレントであり得る。本発明の一実施例では、最高VM特権レベルにおいて実行するマイクロハイパ―バイザは、より下のVM特権レベルにおいて実行する、SVMに対するサービス要求のプロキシとしての役目を担い得る。SVMはその場合、例えば、記憶装置にアクセスするためのサービスを提供する。
【００３８】
一実施例では、仮想マシン制御構造（VMCS）として表す制御構造内のデータによって、より低いVM特権レベルにおいて実行するソフトウェアのオペレーションをコントロールすることができる。VMCSは、VMMへの移行を引き起こすか否かをイベント・タイプ毎に規定するコントロール組を含む。例えば、I／Oポート・アクセスの場合、IA-32プラットフォーム上でアクセス可能なI/Oポート毎にVMMがセット又はクリアすることができるビットが存在している。直接アクセスすることができるか、又はできないポートのリストが存在している。更に、他のコントロールに加えて、VMCSは、VMエントリ中及びVMエグジット中に状態が管理される方法、及び、VMにおいてソフトウェアが動作する方法を判定するコントロールを含み得る。他の機構及び／又はデータ構造を用いて前述のポリシーを規定することができることは当業者に明らかであろう。
【００３９】
図４は、本発明の実施例による、特権化解除サービス仮想マシンが入出力（I／O）オペレーションを扱う例示的なプロセスを示す。ハードウェア仮想化サポートを備えたプラットフォームでは、ブロック４０１において、マイクロハイパーバイザ（MH）がゲストVMを起動させ、ゲストVMにコントロールを移行する。ゲストVMは、入出力（I／O）オペレーションを実行しようとするまで、想定通りに実行する（ブロック４０３）。  
ブロック４０５で、特権化I／Oポートに対するアクセスをI／Oオペレーションが必要とするか否かの判定を行う。前述の通り、特権化アクセスを必要とするI／Oポートのリストを、仮想マシン制御構造（VMCS）又はその他の実現構造において列挙することができる。I／Oポートに対するアクセスによってVMエグジットが生じ得る。上記アクセスが保護I／Oポートに対してでない場合、ブロック４０７で、I/Oアクセスは阻止されず、アクセスは当該ハードウェア・デバイスと直接通信する。実行は次いで、ブロック４０３で、別のI／Oオペレーションが試行されるまでゲストVMで続く（４０３）。
【００４０】
I／Oに加えて種々のハードウェア・イベントをこのやり方でトラッピングすることができることは当業者に明らかであろう。次に続く説明では、VMMへの移行を生じさせるイベントは何れも「サービス要求」として表す。VMMへの移行は、トラップとして表す。ゲストVMが、それをコントロールするVMMを知らず、プラットフォーム・ハードウェア上で直接実行しているとみていても「サービス要求」の語を用いる。マイクロハイパーバイザ及びSVMによって提供される「サービス」は例えば、プラットフォーム・デバイスのエミュレーション、又は、より高いレベルのサービスの提供を含み得る。例えば、一実施例では、SVMは、VM間通信のための共有メモリ・バッファを設定し、維持するための機能を提供することができる。別の実施例では、システムの性能、セキュリティ、信頼性等の向上のためにマイクロハイパーバイザ及びSVMの存在を知っているゲストVMに対してファイル・システム機能を提供することができる。サービス要求は、ゲストVMがI／O命令を実行すること、メモリの保護セグメントをアクセスすること、又は、マイクロハイパーバイザ若しくはSVMと（例えば、VMエグジットを引き起こす旨の命令の実行によって）明示的に通信することによって起動させることができる。図４に関する残りの説明はI／Oアクセス試行の扱いを詳説するが、これは、本明細書及び特許請求の範囲記載の本発明の適用可能性を何ら限定するものでない特定例である。SVMからのVMエグジットは、特別に扱い得る。例えば、SVMからの特定のVMエグジットは、SVM（すなわち、第２のSVM）の相互作用を何ら必要としないことがあり得るものであり、マイクロハイパーバイザにおいて直接扱い得る。このことは以下に更に説明する。
【００４１】
I／Oアクセス試行が特権化I／Oポートに対するものである場合、ブロック４１１で、プラットフォームは、ゲストVM実行から、マイクロハイパーバイザの実行に移行する。マイクロハイパーバイザは、ブロック４１３で、VMエグジットを引き起こすイベントを識別し、I／Oアクセスを扱うべきサービスVM(SVM)を判定する。マイクロハイパーバイザはブロック４１５で、I／Oアクセスを処理するために、選ばれたSVMにVMエントリによって入る。
【００４２】
特定の要求を扱うために適切なSVMの判定はいくつかの基準に基づいて行うことができる。一実施例では、全要求を扱う単一のSVMが存在している。この場合、要求に適切なSVMの判定は問題にならない。別の実施例では、特定のタイプの要求をそれぞれが扱う複数のSVMが存在している。前述の実施例では、マイクロハイパーバイザは、プロセッサ又はメモリの状態を検査することによって、又は、ゲストVMからのVMエグジットの原因を検査することによって（VMエグジットの一部としてのプロセッサによる実施例の場合）、要求のタイプを判定しなければならない。このタイプ情報を用いて、マイクロハイパーバイザは、要求タイプを当該SVMにマッピングするマッピング・テーブルやその他のデータ構造を調べる。更に別の実施例では、複数のSVMは同じタイプの要求を扱うことができる。マイクロハイパーバイザは、負荷分散、プロセッサ・アフィニティ、又はその他の選択基準に基づいて前述の複数の利用可能SVM間で選択することができる。特定の実施例では、マイクロハイパーバイザが、SVMによって規定されたポリシーを実現するだけの役割を果たして、前述のマッピング・テーブルの内容が1つ又は複数のSVMによって判定され得る。
【００４３】
SVMは、ブロック４１７で、I／Oアクセスを適宜、仮想化する。別々のI／O形態、又はその他のサービスをそれぞれが扱ういくつかのSVMが存在し得る。よって、SVMの実行は、プラットフォーム上の他のI／Oデバイスに対する認可されていないアクセスを可能にしない。要求されたI／Oの仮想化が完了すると、SVMは、ブロック４１９で、コントロールをもう一度マイクロハイパーバイザに移行させる。一実施では、この移行は、ゲストVM内のソフトウェアが、特定の命令を実行するか、又は、VMエグジットを引き起こす特定のイベントを引き起こすことによって起動させることができる。以下に説明するように、仮想化I／Oの結果がゲストVMによってアクセス可能であることを確実にした後、マイクロハイパーバイザは、ブロック４２１で、ゲストVMにコントロールを戻す。ゲストVMは、次のI／Oアクセス試行が生じるまで、ブロック４０３において通常の実行を続ける。
【００４４】
一実施例では、ゲストVMからマイクロハイパーバイザへの移行を引き起こす特定のイベントは、サービスVMへの移行をもたらさない。特定のイベントは、セキュリティ又は性能の理由でマイクロハイパーバイザにおいて扱われ得る。サービスVMは、そのために機能を実行するようマイクロハイパーバイザを構成することができる。マイクロハイパーバイザは、サービスVMによって規定されるポリシーをサポートするための機構を実現する。
【００４５】
例えば、物理メモリの仮想化に関連した頻繁に生起するイベントは、（サービスVMへの移行を除外することによって）システム性能の向上を容易にするためにマイクロハイパーバイザにおいて扱うことができる。例えば、システム・メモリを管理する役割を果たす特定のサービスVMは、特定のゲストVMが、物理メモリのページの組に対するアクセスを有することを示し得る。マイクロハイパーバイザはその場合、割り当てられていないメモリにゲストVMがアクセスするのを阻止するとともに、適切な機能を提供するために必要に応じて物理メモリの前述のページをゲストVMが用いることを管理する役割を果たす。SVM規定ポリシー（すなわち、特定のページ組を用いること）を実現するのに用いるアルゴリズムに応じて、物理メモリ内のページをゲストがアクセスするにつれ、ゲストVMからマイクロハイパーバイザへの頻繁な移行が生じ得る。マイクロハイパーバイザは、サービスVMを関係させることなく（、かつ、コントロールをサービスVMに移行するレーテンシを避けて）、イベントを扱い、ゲストVMにコントロールを戻すことができる。
【００４６】
一実施例では、マイクロハイパーバイザは、サービスVMとの相互作用なしで仮想マシン・システムのインテグリティを確実にするのに必要なセキュリティ機能を提供する。例えば、ゲスト物理アドレスからホスト物理アドレスへの変換は、保護されていなければならず、よって、マイクロハイパーバイザによって行われなければならない。別の実施例では、マイクロハイパーバイザは、DMAに用いる物理アドレスがメモリの保護領域又は禁止された領域に対するものでないことを確実にするために、プラットフォーム上の直接メモリ・アクセス（DMA）コントローラをプログラムする全試行を拒否し得る。前述の場合、SVMは、変換を実行するよう起動されない。しかし、アドレスを変換することが可能でない場合、SVMは通知される。
【００４７】
別の実施例では、マイクロハイパーバイザは、SVMの関与なしで、ゲストVMによって用いるセキュリティ機能を提供することができる。例えば、マイクロハイパーバイザは、データのパケットを暗号化する旨のゲストVMからのサービス要求に応答し得る。一実施例では、マイクロハイパーバイザは、何れのVM（何れのSVMも含む）もプラットフォーム・ベースのセキュリティ・デバイス（トラステッド・プラットフォーム・モジュール（TPM）など）をアクセスすることを可能にしないことがあり得る。
【００４８】
一実施例では、マイクロハイパーバイザには、限定数のデバイス・ドライバ及びデバイス・モデルが含まれる。このように含まれることによって、最高VM特権化レベルにおいて実行するコードのサイズが増大する。しかし、デバイス・ドライバ及びデバイス・モデルがこのように含まれることは、ゲストVMによって頻繁にアクセスされるデバイスの性能上の大きな利点をもたらし得る。例えば、プラットフォーム割り込みコントローラ（例えば、インテル（登録商標）82093  AA  I／Oアドバンスト・プログラマブル割り込みコントローラ）は、ハードウェア割り込みの生起毎に数回アクセスすることができる。割り込みコントローラのデバイス・モデル及びドライバをマイクロハイパーバイザに含めることによって、（やはりこの機能を提供することが可能な）サービスVMへの移行が削減され、これによってシステム性能が向上する。このデバイスのデバイス・モデル及びドライバをマイクロハイパーバイザに含めることによって、サービスVMは、スケジューリング及び割り込みルーティングの判定全てを行う必要がある訳でなく、これによってやはりシステム性能が向上する。
【００４９】
SVMにおけるサービスの提供の一部として、マイクロハイパーバイザ又はSVMは、サービスを要求するゲストVMに対して特定の形式で結果又はデータを供給する必要があり得る。例えば、I／O命令を用いるゲストVMによってアクセスされるデバイスをエミュレートするうえで、SVM又はマイクロハイパーバイザは、プロセッサISAによって供給されるような結果をゲストVMがアクセスすることができるようにプロセッサ・レジスタ内又はメモリ内の期待値をゲストVMに戻すことによってゲストVMに結果を提供することができる。例えば、IA-32  ISAでは、I／Oデバイスにアクセスするために（すなわち、I／Oデバイスから値を読み出すために）IN命令を用いることができる。IA-32  ISAでは、用いられるIN命令の特定の形式に応じて、IN命令の結果は、IN命令のオペランドとして与えられるプロセッサ・レジスタ又はメモリ場所において戻され得る。SVM又はマイクロハイパーバイザは、ゲストVMに処理を戻す前にISAのこの特性をエミュレートする。SVMによって提供されるサービスがより複雑な場合、データ又は結果は、メモリ内の場所を介して、又は当該技術分野において知られている何れかの他の機構を用いて戻すことができる。
【００５０】
図５は、本発明の実施例による、マイクロハイパーバイザにおいて仮想化イベントを直接扱う例示的なプロセスを示す。例示的な実施例では、マイクロハイパーバイザはコントロールをゲストVM(５０１)に移行する。一実施例では、この移行は、プロセッサ命令を実行することによってマイクロハイパーバイザによって起動される。マイクロハイパーバイザは、要求されたサービスを実行するためにVMエグジットを待つか、又は、通常の監視機能を実行するよう周期的に動作し続けることができる。
【００５１】
仮想化イベント（例えば、ハードウェア割り込みが生起する、ゲストVMが、制御されたデバイス又はメモリ場所に対するアクセスを要求するか、又は、仮想化イベントを発生させるよう指定された選択されたシステム・サービスを要求する）が生起すると、VMエグジットが発生させられ得る。マイクロハイパーバイザは次いで、この仮想化イベント（５０３）によってコントロールを受ける。
【００５２】
マイクロハイパーバイザは、５０５で、通常、セキュリティ又は性能の目的でマイクロハイパーバイザによって仮想化イベントを直接扱うものとするか否かを判定する。マイクロハイパーバイザが仮想化イベントを扱うものとする場合、イベントは５０７で扱われ、コントロールは次いで、ゲストVMに戻され得る（５０１）。一実施例では、ゲストVMへコントロールが戻されることは、マイクロハイパーバイザがVMエンター命令を実行することによって起動される。
【００５３】
場合によっては、仮想化イベントは、SVMからの完了通知であり得る。SVMは、ゲストVMにおいて実行するので、他のゲストVMと同様に（通常、VMエグジットを引き起こすことを意図した命令をSVMが明示的に実行することによって引き起こされ得るVMエグジットにおいて）マイクロハイパーバイザにコントロールを移し得る。マイクロハイパーバイザは５０９で、先行SVM要求の完了をイベントが示すか否かを判定する。仮想化イベントが先行SVM要求の完了を示す場合、前述の通り、マイクロハイパーバイザは必要なデータ又は結果があればこれを、元のSVM要求を引き起こしたゲストVMに移す（５１１）。この移行は通常、VMエンター命令の実行によって行われる。
【００５４】
仮想化イベントがSVM完了イベントでなく、新たなサービス要求又はアクセス要求である場合、マイクロハイパーバイザは、このイベントを扱うのに適切なSVMを起動させる（５１３）。この移行は通常、SVMがゲストVMにおいて実行するので、VMエンターである。
【００５５】
マイクロハイパーバイザによって他の動作が可能であることは当業者に明らかであろう。例えば、マイクロハイパーバイザは、ゲストVM実行のスケジューリングを扱う場合、別のゲストVMを、イベントを扱うようSVMを５１３で起動させる代わりに、むしろ、もう１つのゲストVM実行時間を与えることを優先してこの要求を延期して、スケジューリングすることにし得る。例えば、SVMが、他の要求を待ってブロックされ、新たな要求を直ちに扱うことが可能でない場合、マイクロハイパーバイザはこのやり方をとることができる。あるいは、より高い優先度を有するゲストVM（例えば、リアルタイム・ゲストVM）が実行を待っている場合、マイクロハイパーバイザはこのスケジューリングを行うことができる。
【００５６】
本明細書及び特許請求の範囲記載の手法は、如何なる特定のハードウェア構成又はソフトウェア構成にも限定されるものでなく、何れの計算機環境、家電環境又は処理環境にも応用性を見出し得る。上記手法は、ハードウェア、ソフトウェア、又は両方の組み合わせで実現することができる。プロセッサ、プロセッサによってアクセス可能な記憶媒体（揮発性メモリ及び不揮発性メモリ、並びに／又は記憶素子をはじめとする）、少なくとも１つの入力装置、及び１つ又は複数の出力装置を含み得るプログラム可能マシン（モバイル・コンピュータや固定型コンピュータ、携帯情報端末、セット・トップ・ボックス、携帯電話機及びページャ、家電機器（DVDプレイヤ、パーソナル・ビデオ・レコーダ、パーソナル・ビデオ・プレイヤ、衛星受信機、ステレオ受信機、ケーブルTV受像機）やその他の電子装置など）上で実行するプログラムにおいて実現することができる。入力装置を用いて入力されたデータにプログラム・コードを施して、記述された機能を行い、出力情報を生成する。出力情報は１つ又は複数の出力装置に施すことができる。ハードウェアにおける仮想化のサポートを有する種々のシステム構成（マルチプロセッサ・システム、ミニコンピュータ、メーンフレーム・コンピュータ、別個の家電機器及び同様なものをはじめとする）によって本発明を実施することが可能であることを当業者は分かり得る。本発明は、通信ネットワークを介してリンクされた遠隔処理装置によってタスク又はその一部分を行うことができる分散計算環境において実施することも可能である。
【００５７】
各プログラムをハイレベルの手続型プログラミング言語又はオブジェクト指向型プログラミング言語で実現して処理システムと通信することができる。しかし、プログラムは、所望の場合、アセンブリ言語又はマシン言語で実現することができる。いずれの場合でも、言語はコンパイル言語又はインタープリタ言語であり得る。
【００５８】
プログラム命令を用いて、命令によってプログラムされた汎用処理システム又は特定用途向処理システムに本明細書及び特許請求の範囲記載の処理を行わせることができる。あるいは、処理を行うための配線論理を含む特定のハードウェア構成部分によって、又は、プログラムされたコンピュータ構成部分及びカスタムのハードウェア構成部分の何れかの組み合わせによって処理を行うことができる。本明細書及び特許請求の範囲記載の方法は、処理システムやその他の電子装置をプログラムして方法を行うのに用いることができる命令を上に記憶させたマシン・アクセス可能媒体を含み得るコンピュータ・プログラムとして提供することができる。本明細書及び特許請求の範囲記載の「マシン・アクセス可能媒体」の語は、マシンによって実行するための命令系列を記憶又は符号化することができ、本明細書及び特許請求の範囲記載の方法のうちの何れか１つをマシンに行わせる何れかの媒体を含むものとする。「マシン・アクセス可能媒体」の語はよって、データ信号を符号化するソリッドステート・メモリ、光ディスク及び磁気ディスク、並びに搬送波を含むが、前述のものに限定されるものでない。更に、一形態又は別の形態（例えば、プログラム、手順、処理、アプリケーション、モジュール、ロジック等）でのソフトウェアといえば、動作を行うか、又は結果を引き起こすものであることが当該技術分野において一般的である。前述の表記は、処理システムによるソフトウェアの実行が、結果を生じるという動作をプロセッサに行わせることを簡潔に言うやり方に過ぎない。
【００５９】
例証的な実施例を参照して本発明を説明したが、この説明は、限定的な意味合いで解されることを意図するものでない。本発明が関係する当該技術分野における当業者に明らかである本発明の例証的な実施例の種々の修正及びその他の実施例は、本発明の趣旨及び範囲内に収まるものと認められる。
【図面の簡単な説明】
【００６０】
【図１】伝統的なハイパーバイザ仮想マシン・モニタ（VMM）のアーキテクチャ・プラットフォームを示す構成図である。
【図２Ａ】本発明の実施例による、IA-32アーキテクチャ・プラットフォーム、及びハードウェア仮想化サポートを備えたプラットフォームにおける種々の特権レベルを示す図である。
【図２Ｂ】本発明の実施例による、IA-32アーキテクチャ・プラットフォーム、及びハードウェア仮想化サポートを備えたプラットフォームにおける種々の特権レベルを示す図である。
【図３】本発明の実施例による、ハイブリッド・アーキテクチャVMMを示す構成図である。
【図４】本発明の実施例による、入出力（I／O）処理を扱う、特権化解除アクセスを備えたサービス仮想マシンのための例示的な方法を示す流れ図である。
【図５】本発明の実施例による、マイクロハイパーバイザによって実行される例示的な方法を示す流れ図である。
【図１】
2008523511.tif 000003
【図２Ａ】
2008523511.tif 000004
【図２Ｂ】
2008523511.tif 000005
【図３】
2008523511.tif 000006
【図４】
2008523511.tif 000007
【図５】
2008523511.tif 000008
【国際調査報告】
2008523511.tif 000009
2008523511.tif 000010