(57)【要約】【課題】複数の仮想マシンが存在する環境内において、仮想マシン間でページを共有する方法を提供すること。【解決手段】まず、第２の仮想マシンとのページ共有のために第１の仮想マシンの一時ゲスト物理アドレスレンジが割り振られる。一時レンジは、第１の仮想マシンのゲスト物理アドレス空間内にある。第２の仮想マシンから、第１の仮想マシンが利用可能なページに対するＤＭＡ要求などのアクセス要求が受信される。ページに対する保留アクセスの参照カウントがインクリメントされて保留アクセスが示され、ページは一時ゲスト物理アドレスレンジ内にマッピングされる。ページがアクセスされ、参照カウントはデクリメントされる。次いで、参照カウントがゼロである場合、一時ゲスト物理アドレスレンジ内のマッピングが削除される。【選択図】図１
2006252554.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータからのリソースを使用して動作する仮想マシン間でページを共有する方法であって、
仮想マシン間でページを共有するために第１の仮想マシンの一時ゲスト物理アドレスレンジを割り振るステップと、
前記ホストコンピュータ上の仮想化ソフトウェアが、前記第１の仮想マシンによって利用可能なページへのアクセス要求を第２の仮想マシンから受信するステップと、
前記ページに対する保留アクセスの数を示す参照カウントをインクリメントするステップと、
前記ページを前記第１の仮想マシンの前記一時ゲスト物理アドレスレンジの一部分にマップするステップと、
前記第１の仮想マシンによって利用可能な前記ページを、前記第２の仮想マシンがアクセスできるようにするステップと、
前記第２の仮想マシンによるページのアクセスを完了し、アクセス完了を前記仮想化ソフトウェアに通知するステップと、
前記ページに対する保留アクセスの前記参照カウントをデクリメントするステップと、
前記参照カウントがゼロである場合に前記一時ゲスト物理アドレスレンジから前記ページのマッピングを削除するステップと
を含むことを特徴とする方法。
【請求項２】
前記第１の仮想マシンによって利用可能なページへのアクセス要求を第２の仮想マシンから受信するステップは、第１の仮想マシンにマップされているページをアクセスするための直接メモリアクセス（ＤＭＡ）要求を第２の仮想マシンから受信するステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ページに対する保留アクセスの参照カウントをインクリメントするステップは、ＤＭＡ転送の参照カウントをインクリメントするステップを含み、前記ページに関するゲスト物理アドレスからホスト物理アドレスへのマッピングが有効であり、ＤＭＡ排他ベクタが前記ページへのアクセスを認めることを検証するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記第１の仮想マシンによって利用可能な前記ページを、前記第２の仮想マシンがアクセスできるようにするステップは、前記第２の仮想マシンと、ホスト物理アドレスのあるレンジとの間でＤＭＡ転送をセットアップするステップを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記第２の仮想マシンによる前記ページのアクセスを完了し、アクセス完了を前記仮想化ソフトウェアに通知するステップは、ＤＭＡ操作が完了したという表示をホストハードウェアから受信し、完了メッセージを前記第１の仮想マシンから前記第２の仮想マシンに送信するステップを含み、前記第２の仮想マシンは前記仮想化ソフトウェアに完了したことを通知することを特徴とする請求項１に記載の方法。
【請求項６】
前記ページに対する保留アクセスの前記参照カウントをデクリメントするステップは、前記参照カウントがゼロにデクリメントされた場合に前記ページに対する後続のＤＭＡ操作を除外するＤＭＡ排他ベクタを設定するステップを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記一時ゲスト物理アドレスレンジから前記ページのマッピングを削除するステップは、１つまたは複数のシャドウページテーブルおよび変換索引テーブルから前記ページのエントリをアンマップするステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項８】
仮想マシン間でページを共有するためのコンピュータシステムであって、
複数の仮想マシンが利用可能なハードウェアリソースを有するホストコンピュータと、
前記ホストコンピュータと、前記複数の仮想マシンの任意のものとの間のインターフェースを備える仮想化ソフトウェアと、
少なくとも１つのページリソースにアクセスを有する第１の仮想マシン、および第２の仮想マシンと、
仮想マシン間でページを共有するための、前記第１の仮想マシンの一時ゲスト物理アドレスレンジと、
メモリにアクセスできるホストプロセッサと
を備え、前記メモリは、実行されたときに、
前記仮想化ソフトウェアが、前記第１の仮想マシンによって利用可能なページへのアクセス要求を第２の仮想マシンから受信するステップと、
前記ページに対する保留アクセスの数を示す参照カウントをインクリメントするステップと、
前記ページを前記一時ゲスト物理アドレスレンジの一部分にマップするステップと、
前記第１の仮想マシンによって利用可能な前記ページを、前記第２の仮想マシンがアクセスできるようにするステップと、
アクセス完了を前記仮想化ソフトウェアに通知するステップと、
前記ページに対する保留アクセスの前記参照カウントをデクリメントするステップと、
前記参照カウントがゼロである場合に前記一時ゲスト物理アドレスレンジから前記ページのマッピングを削除するステップと
を含む方法を実行することを特徴とするシステム。
【請求項９】
変換索引バッファおよびシャドウページテーブルのうちの少なくとも１つをさらに備え、前記変換索引バッファおよび前記シャドウページテーブルのうちの前記少なくとも１つが、前記ページのマッピングを削除する前記方法ステップの結果、更新されることを特徴とする請求項８に記載のシステム。
【請求項１０】
前記一時ゲスト物理アドレスレンジから前記ページのマッピングを削除する前記方法ステップは、１つまたは複数の前記シャドウページテーブルおよび前記変換索引バッファから前記ページのエントリをアンマップするステップをさらに含むことを特徴とする請求項９に記載のシステム。
【請求項１１】
ＤＭＡコントローラをさらに備え、前記第１の仮想マシンによって利用可能な前記ページを前記第２の仮想マシンがアクセスできるようにする前記方法ステップは、前記第２の仮想マシンと、ホスト物理アドレスのあるレンジとの間で情報を転送するように前記ＤＭＡコントローラをセットアップするステップを含むことを特徴とする請求項８に記載のシステム。
【請求項１２】
参照カウンタをさらに備え、前記ページに対する保留アクセスの参照カウントをインクリメントする前記ステップは、保留中のＤＭＡ転送を表示するために前記参照カウンタをインクリメントするステップを含み、前記ページについてのゲスト物理アドレスからホスト物理アドレスへのマッピングが有効であり、ＤＭＡ排他ベクタが前記ページへのアクセスを認めることを検証するステップをさらに含むことを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記ページに対する保留アクセスの前記参照カウントをデクリメントするステップは、前記参照カウントがゼロにデクリメントされた場合に前記ページに対する前記ＤＭＡコントローラの操作を除外するためのＤＭＡ排他ベクタを設定するステップを含むことを特徴とする請求項１２に記載のシステム。
【請求項１４】
前記第２の仮想マシンによる前記ページのアクセスを完了し、アクセス完了を前記仮想化ソフトウェアに通知する前記方法ステップは、前記情報の転送が完了したという表示を前記ＤＭＡコントローラから受信し、完了メッセージを前記第１の仮想マシンから前記第２の仮想マシンに送信するステップを含み、前記第２の仮想マシンが前記仮想化ソフトウェアに完了したことを通知することを特徴とする請求項１１に記載のシステム。
【請求項１５】
ホストコンピュータからのリソースを使用して動作する仮想マシン間でページを共有する方法を実行するためのコンピュータ実行可能命令を有するコンピュータ可読媒体であって、前記方法は、
仮想マシン間でページを共有するために第１の仮想マシンの一時ゲスト物理アドレスレンジを割り振るステップと、
前記ホストコンピュータ上の仮想化ソフトウェアが、前記第１の仮想マシンによって利用可能なページへのアクセス要求を第２の仮想マシンから受信するステップと、
前記ページに対する保留アクセスの参照カウントをインクリメントし、前記参照カウントは前記ページに対する他のアクセスをロックアウトするように働くステップと、
前記ページを前記第１の仮想マシンの前記一時ゲスト物理アドレスレンジの一部分にマップするステップと、
前記第１の仮想マシンによって利用可能な前記ページを、前記第２の仮想マシンがアクセスできるようにするステップと、
前記第２の仮想マシンによる前記ページのアクセスを完了し、アクセス完了を前記仮想化ソフトウェアに通知するステップと、
前記ページに対する保留アクセスの前記参照カウントをデクリメントするステップと、
前記参照カウントがゼロである場合に前記一時ゲスト物理アドレスレンジから前記ページのマッピングを削除するステップと
を含む方法であることを特徴とするコンピュータ可読媒体。
【請求項１６】
第２の仮想マシンから、前記第１の仮想マシンによって利用可能なページへのアクセス要求を受信する前記ステップは、前記第１の仮想マシンにマップされている前記ページをアクセスするための直接メモリアクセス（ＤＭＡ）要求を前記第２の仮想マシンから受信するステップを含むことを特徴とする請求項１５に記載のコンピュータ可読媒体。
【請求項１７】
前記ページに対する保留アクセスの参照カウントをインクリメントする前記ステップは、ＤＭＡ転送の参照カウントをインクリメントするステップを含み、前記ページに関するゲスト物理アドレスからホスト物理アドレスへのマッピングが有効であり、ＤＭＡ排他ベクタが前記ページへのアクセスを認めることを検証するステップをさらに含むことを特徴とする請求項１５に記載のコンピュータ可読媒体。
【請求項１８】
前記第１の仮想マシンによって利用可能な前記ページを、前記第２の仮想マシンがアクセスできるようにする前記ステップは、前記第２の仮想マシンと、ホスト物理アドレスのあるレンジとの間でＤＭＡ転送をセットアップするステップを含むことを特徴とする請求項１５に記載のコンピュータ可読媒体。
【請求項１９】
前記第２の仮想マシンによるページのアクセスを完了し、アクセス完了を前記仮想化ソフトウェアに通知する前記ステップは、ＤＭＡ操作が完了したという表示をホストハードウェアから受信し、完了メッセージを前記第１の仮想マシンから前記第２の仮想マシンに送信するステップを含み、前記第２の仮想マシンが前記仮想化ソフトウェアに完了したことを通知することを特徴とする請求項１５に記載のコンピュータ可読媒体。
【請求項２０】
前記ページに対する保留アクセスの前記参照カウントをデクリメントする前記ステップは、前記参照カウントがゼロにデクリメントされた場合に前記ページに対する後続のＤＭＡ操作を除外するＤＭＡ排他ベクタを設定するステップを含むことを特徴とする請求項１５に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプログラミングの分野に関する。より詳細には、本発明は、仮想マシン環境内で、第２の仮想マシンが第１の仮想マシンが利用可能なホストリソースにアクセスすることに関する。
【背景技術】
【０００２】
仮想コンピューティングは、それぞれが独自のオペレーティングシステムを有する複数の仮想マシンがホストコンピュータ上で稼動できるようにする。ホストコンピュータは、仮想マシンプログラムの命令をホストコンピュータが実行できるようにするバーチャライザプログラムを有し、仮想マシンプログラムは、ホストコンピュータと異なるＣＰＵモデルを有することがある。また、ホストコンピュータのバーチャライザプログラムは、仮想マシンによる使用のために、ホストマシンのハードウェアリソースを仮想化することもできる。ＣＰＵ、メモリ、Ｉ／Ｏおよびディスクスペースなどのハードウェアリソースを要求している仮想マシンは、ホストコンピュータに対してゲストと呼ばれる。
【０００３】
仮想マシンでは、ゲストコンピュータシステムは、特定の１つのハードウェアアーキテクチャの動作についての純粋なソフトウェア表現としてのみ、ホストコンピュータシステム内に存在する。バーチャライザ、エミュレータ（ｅｍｕｌａｔｏｒ）、仮想マシンおよびプロセッサエミュレーションの各用語は、当業者に周知であって理解されている１つまたはいくつかの手法を使用して、あるコンピュータシステム全体のハードウェアアーキテクチャを模倣する、あるいはエミュレートする能力を表すために同義的に使用されることがある。ホストコンピュータのオペレーティングシステムソフトウェアおよびハードウェアアーキテクチャ上で実行されるバーチャライザプログラムは、ゲストコンピュータシステム全体の動作を模倣する。
【０００４】
バーチャライザプログラムは、ホストマシンのハードウェアアーキテクチャと、エミュレートされたゲスト仮想マシン環境内で走るソフトウェア（たとえば、オペレーティングシステム、アプリケーションなど）から送信される命令との間のインターチェンジとして働く。仮想マシン環境の一実施形態では、エミュレートされた環境は、仮想マシンモニタ（ＶＭＭ）を含むことができる。ＶＭＭは、ホストハードウェアのすぐ上を走るソフトウェア層であり、おそらくはホストのオペレーティングシステムと並行して走るとともにこれと連動して動作し、ＶＭＭが仮想化しているハードウェアと同じインターフェースを公開することによってホストマシンの全てのリソース（および一部の仮想リソース）を仮想化することができる。この仮想化は、バーチャライザ（およびホストコンピュータシステム自体）がその上を走る複数のオペレーティングシステム層から気付かれないようにすることを可能にする。仮想マシン環境では、複数の仮想マシンが、ホストマシンのハードウェアリソースに対して性能要件を課す。ある仮想マシンを他の仮想マシンおよびホストから隔てておくことが望ましい。ある仮想マシンの障害が他の仮想マシンに影響を及ぼすことがないように、ある仮想マシンを他の仮想マシンから分離または隔離することは、エラーや障害を隔離する上で有用である。
【０００５】
一方、一部の構成では、ある仮想マシンから、第２の仮想マシンが利用可能なホストリソースにアクセスできるようにすることが望ましい。図１に、仮想コンピュータシステム１００を示す。システム１００は、第１の仮想マシン１１０、第２の仮想マシン１１５、およびホストコンピュータシステム１０５に常駐している仮想化ソフトウェア１２０を含む。仮想化ソフトウェアは、たとえば仮想マシンアドレスをホストシステムアドレスから区別することにより、仮想マシン間の制御された隔離の維持を助ける。第１の仮想マシン１１０は、データベース１４５にアクセスするためのドライバ１５０を有するオペレーティングシステム１３０上で走る複数の仮想マシンアプリケーション１２５を含むソフトウェアプログラムである。第２の仮想マシン１１５は、仮想ドライバ１５５を有するオペレーティングシステム１４０上で走る複数の仮想マシンアプリケーション１３５を含むソフトウェアプログラムである。ホストコンピュータシステム１０５は、仮想マシン１１０または１１５のいずれかに割り振ることができる、入出力チャネル、メモリ、プロセッサおよびソフトウェアなどのホストリソースを有する。図１の具体例では、ホストリソースは、データベース１４５にアクセスしているＩ／Ｏチャネル１６５である。図１の構成は、第２の仮想マシン１１５が、仮想化ソフトウェア１２０を通して仮想ドライバ１５５を使用し、そしてデータベース１４５へのＩ／Ｏパス１６５に接続されたドライバ１５０と通信することによって、データベース１４５にアクセスすることができることを示している。
【０００６】
仮想マシン環境では、ゲストにメモリなどのホストシステムリソースが割り振られる。ゲスト仮想マシンのアプリケーションが、ゲストのために、メモリにアクセスするための仮想アドレスを生成する。この仮想アドレスは、当該ゲストに関連する物理アドレスに変換される。しかし、仮想マシン環境内の各仮想マシンは、物理アドレス空間についてそれぞれ別個の観念を保持している。仮想マシンの視点からすると、それ自体の物理アドレス空間は、物理アドレスゼロまたは他の任意のページ位置合わせされた（ｐａｇｅ−ａｌｉｇｎｅｄ）物理アドレスから開始しているように見える場合があり、物理アドレス空間は、ホストシステムの様々な仮想マシン内のメモリの割振りを記録する仮想化ソフトウェアがサポートする限りの広さの領域に及ぶ可能性がある。一般に、各仮想マシンに個別の物理アドレス空間を提供するために、シャドウページテーブル（ｓｈａｄｏｗ  ｐａｇｅ  ｔａｂｌｅ）が仮想化ソフトウェアの一部として使用される。
【０００７】
ゲスト物理アドレス空間、すなわちＧＰＡ空間とは、仮想マシンの物理アドレス空間のことである。したがって、ゲスト物理アドレスすなわちＧＰＡは、ＧＰＡ空間内のアドレスを指す。ゲスト物理アドレス空間の使用は、ゲスト仮想マシンをサポートするための挿入、削除およびクエリの各操作をサポートする。ゲスト仮想アドレスすなわちＧＶＡは、特定の仮想マシンにプライベートな仮想アドレスである。通常、ゲスト仮想アドレス（ＧＶＡ）は、ゲスト物理アドレス（ＧＰＡ）に変換される。しかし、ＧＰＡを使用してホスト物理メモリにアクセスすることはできない。したがって、ＧＰＡはホストまたはシステム物理アドレス（ＳＰＡ）に変換される。アドレス変換のオーバーヘッドを軽減するために、バーチャライザプログラムは、ＧＶＡをＳＰＡにマップするシャドウページテーブルを維持する。バーチャライザはまた、ＧＰＡからＳＰＡへのマッピングを記憶する内部データ構造も維持する。図２は、ゲスト物理ページからシステム物理ページへの例示的なマッピングを示す。単一のゲスト物理アドレスにマップできる複数のゲスト物理アドレスが存在しうることに留意されたい。たとえば、ゲスト物理アドレス空間ページフレーム番号ＰＦＮ  ２０２およびＰＦＮ  ２０３は、システム物理ページ番号ＰＦＮ  １０２にマップする。
【０００８】
仮想マシンの動作およびゲスト物理アドレス空間の管理は、いくつかの興味深い問題を提示しうる。たとえば、ゲスト物理アドレス空間のある領域が削除されると、ゲスト物理アドレス空間の削除されたセクション内の領域にマップするゲスト仮想アドレスをパージ（ｐｕｒｇｅ）する必要がある。このパージの結果、ＧＰＡの削除されたセクション内の領域に対する未処理のマッピングのいずれも無効化される。したがって、ＧＰＡのあるセクションが削除された場合、削除対象の領域内のＧＰＡを使用して構築された仮想アドレスがあれば、それを無効化する必要がある。ある例示的アーキテクチャでは、ＧＶＡからＳＰＡへのマッピングが維持され、それゆえにこれらのＧＶＡからＳＰＡへのマッピングを削除しなければならない場所が２つ存在しうる。仮想−物理マッピングを維持している２つのエリアとは、シャドウページテーブル内と、ハードウェア変換索引バッファ（ＴＬＢ）の２箇所である。仮想化の正当性を維持し、仮想マシン間のセキュリティに対する侵害を防止するには、これらの各キャッシュをパージしなければならない。図３に、ＧＶＡからＳＰＡへのマッピングを示す。複数のゲスト仮想アドレスが、同じシステム物理アドレスページにマップできることに留意されたい。たとえば、ゲスト仮想アドレスＶＡ  Ｃ０００：１０００およびＶＡ  Ｃ０００：２０００は、システム物理ページ番号ＰＦＮ  １０２にマップしている。このようなマッピングは、ゲスト仮想アドレスのシステムアドレスへの変換をスピードアップするのに有用なシャドウページテーブルに顕著である。
【０００９】
残念なことに、シャドウページテーブルのデータ構造はＧＶＡからＳＰＡへのマッピングを維持するので、図３に示すシャドウページテーブルをクエリすることによって特定のＧＰＡにマップする全てのＧＶＡをクエリすることは不可能である。しかし、図２に示すＧＰＡからＳＰＡのマッピングも維持されている。特定のＧＰＡを使用して作成された全てのゲスト仮想アドレスを判断する技法の１つは、特定のＧＰＡにマップする全てのＳＰＡについてＧＰＡからＳＰＡへのマッピング（図２）をクエリし、次いでＧＶＡからＳＰＡへのマッピング（図３のシャドウページテーブル）からＳＰＡにマップする全てのエントリを削除することである。残念ながら、この方法は、各ステップがそれぞれＧＰＡからＳＰＡへのマッピングおよびＧＶＡからＳＰＡへのマッピングに対する線形探索を行うものであるため、非常に時間がかかる場合がある。代わりに、ＧＰＡからＧＶＡへの逆マッピングを維持し、それによってこの状況を明示的に扱うことができる。残念ながら、後者の手法は大量の追加メモリを消費する。
【００１０】
コンピュータシステム内の物理デバイスは仮想アドレスではなくて物理アドレスを使用してシステムメモリをアドレスすることが、問題をさらに複雑なものにしている。したがって、物理デバイスが直接メモリアクセス（ＤＭＡ）操作を実行するように設定されている場合、シャドウページテーブル（ＳＰＴ）および変換索引バッファ（ＴＬＢ）から仮想−物理マッピングをパージしても、物理デバイスによるシステムメモリに対する物理的なアクセスを防ぐことはできない。ＤＭＡ操作は、ＤＭＡコントローラハードウェアおよびソフトウェアが存在する仮想マシン環境で実行することができる。
【００１１】
ゲスト物理アドレス空間を削除するとき、その空間が現在ＤＭＡ操作に関与してないことを確認することが重要である。未処理のＤＭＡトランザクションの継続中に、一般には４Ｋバイト以上であるゲストアドレス空間ページの削除を防ぐ１つの技法は、そのページがＤＭＡ操作に使われているかどうかを明示する単一のフラグを各ページ毎に維持することである。残念なことに、異なる物理デバイスが同一の物理アドレス空間にマップされている可能性があり、したがって同じアドレス空間が、おそらくは保留中となっている、２つの異なるＤＭＡ操作に関与している可能性がある。したがって、単一のフラグは、両方のＤＭＡトランザクションがいつ完了したかを知るための情報としては不十分である。より高度なメカニズムが望まれる。
【００１２】
保留中の複数のＤＭＡ操作に関して、考えられる解決方法の１つは、システム物理メモリの特定領域へのＤＭＡ要求を防ぐメカニズムを提供することである。一般に、オペレーティングシステムが、ＤＭＡトランザクション中に起こるような非ＣＰＵエージェントを介した特定のページの読み書きの可否を、制御できるようにするテーブルが提供される。テーブルは、物理メモリの各ページ毎に、ＤＭＡ操作を介してそのページが読み書きできるかどうかを示す１つまたは複数のフラグを有する。このテーブルは、ＤＭＡ排他ベクタ（ＤＥＶ）と呼ばれる。ＤＭＡ排他ベクタメカニズムを使用しながらも、ＧＰＡテーブルからパージまたは改変すべき物理アドレス空間をターゲットとする複数のＤＭＡトランザクションの問題を回避することが望ましい。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
したがって、仮想マシン間で、ＤＭＡおよび他のＩ／Ｏ操作など、物理アドレスに対していくらかのアクセスができるようにしながら、ゲストからホストへの物理アドレスに使用される参照テーブルからの物理アドレス空間のパージまたは改変を可能にする方法およびシステムが必要である。本発明は、前述の必要性に対応し、本明細書に記載される追加の利点を提供する形でこれらの必要性を解決するものである。
【課題を解決するための手段】
【００１４】
本発明の一態様は、仮想マシン間のアクセスを可能にする方法およびシステムを含む。その中で、ある仮想マシンが他の仮想マシンに割り振られたリソースに対してアクセスを要求する。本発明の一実施形態は、第１の仮想マシンのゲスト物理アドレス内の一時レンジを使用して、２つの仮想マシン間でＤＭＡアクセスなどのアクセスを行うための要求を受け取ることを含む。アクセスされたページは、一時アドレス空間内にマップされ、参照カウンタを使用して保留アクセスの数が記録される。アクセスが完了した後、参照カウンタがデクリメントされる。マッピングは、参照カウントがゼロであって関心対象のページへの保留中となっている追加アクセスはないことを示している場合、破棄することができる。一実施形態では、本発明は、ゲスト物理アドレス位置を更新することが望まれ、依然としてアクセス要求の対象となっている所望のページに対応するアドレスを改変あるいはパージする必要がある場合に、仮想マシン環境で使用する方法として有用である。改変すべきページへの参照は、一時ゲスト物理アドレス位置、変換索引バッファまたはシャドウページテーブルに見出すことができる。
【００１５】
前述の要約、および例示的実施形態についての以下の詳細な説明は、添付の図面と併せて参照することにより、より理解される。本発明の実施形態を説明するために、図面には例示的な構成が示されているが、本発明は開示された特定の方法および手段に限定されない。
【発明を実施するための最良の形態】
【００１６】
本発明の例示的実施形態
本発明の一態様では、ＧＰＡ空間の過渡領域または一時領域が作成され、ゲスト物理アドレス空間の高速削除または改変を考慮に入れるためにＧＰＡ空間のどのセクションがゲスト物理アドレスをゲスト仮想アドレスにマップする追加のデータ構造を必要としているかが判断される。この特徴は、仮想マシン環境内でのパーティション間または仮想マシン間のＩ／Ｏトランザクションをサポートするのに必要なＧＰＡ空間の高速挿入および削除を行う上で有用である。一例として、仮想マシン間のＤＭＡトランザクションのサポートは、一時ＧＰＡ空間を使用することで促進される。一実施形態では、ＧＰＡ空間の過渡領域または一時領域は、ゲストまたは仮想化ソフトウェアにより、ＧＰＡ空間内の、ゲストマシンのオペレーティングシステムによって通常のアプリケーション操作に割り振られている空間の外に存在する空間として定義される。通常のゲストオペレーティングシステムによる使用の外というこの配置により、ゲストオペレーティングシステムまたはゲストアプリケーションがゲスト仮想マシンの通常の動作時に誤って過渡領域または一時領域を利用してしまうという問題が回避される。
【００１７】
ゲスト物理アドレスの過渡領域または一時領域の導入は、ＧＰＡ改変またはパージの際、一部のアドレス領域を速やかに削除しなければならない一方、他のアドレスの領域は仮想マシンのライフタイムを通じてめったに変化しないという観測に基づいている。したがって、個別で一時的なＳＰＡからＧＶＡへの逆マッピングテーブルが実装された場合、そのテーブルは頻繁に使用されず、無駄にメモリリソースを消費することになる。その結果、本発明の一態様によれば、改変すべき特定のＧＶＡを識別するためのＳＰＡからＧＶＡへのマッピングは、過渡領域上でのみ維持される。ＧＰＡからＳＰＡへのマッピングにおいて非過渡領域が改変されると、ＧＶＡからＳＰＡへのマッピングからのＧＶＡの低速なパージが実行される。
【００１８】
本発明の一態様では、ゲスト物理アドレス空間の過渡としてマーキングされた部分について、ＧＰＡによるＧＶＡの速やかな特定を可能にする追加のＧＰＡからＧＶＡへのマッピングが維持される。図４に、ＧＰＡからＧＶＡへのマッピングの一例を示す。単一のＧＰＡにマップすることができる複数のＧＶＡが潜在的に存在することに留意されたい。たとえば、図４で、ＧＰＡ１００はＧＶＡ  ８０００：００００、８０００：１０００、８０００：２０００および８０００：３０００にマップできる。
【００１９】
本発明の別の態様では、特定されたページをＤＭＡ操作などのＩ／Ｏトランザクションのために「ロック」することができる。ゲスト物理アドレスレンジをパージし、これらのアドレスに対応する参照を削除することが望ましくなった場合、そのぺージが処理中もしくは保留中のＩ／Ｏまたは他のＤＭＡトランザクションに関与しているときには改変が実行されないことが好ましい。本発明の一態様によれば、ゲスト物理アドレスに対応する「ロック」状態の維持により、ＧＰＡ空間のパージまたは改変が保留中となっているとき、Ｉ／ＯアクセスまたはＤＭＡなどの他操作が継続されるようになる。
【００２０】
先に述べたように、単一のぺージがＩ／ＯまたはＤＭＡトランザクションなど、複数の保留中の操作に関与している場合がある。改変中の領域の一部に対して未処理のＤＭＡ要求があるときは、ＧＰＡからＳＰＡへのマッピングに対する改変を禁止することが好ましい。本発明の一態様では、参照カウンタを使用して、所与のページに対して保留中のＩ／ＯまたはＤＭＡなどの他のトランザクションの数が集計される。一実装では、未処理のトランザクションの参照カウントを使用して、未処理のＩ／ＯまたはＤＭＡ操作などの他のトランザクションを有するページが関与するゲスト物理アドレス空間への改変の許可または不許可を行う。参照カウントの使用により、未処理のトランザクションが継続している間のゲスト物理アドレス空間の改変の回避、および単一のページに対して複数の未処理のＤＭＡ要求があり得る場合のＤＭＡ排他ベクタ内での単一のフラグの維持という、２つの問題が解決される。
【００２１】
参照カウントに関して述べると、ＧＰＡからＳＰＡへのマッピングは参照カウントが非ゼロである間は改変されないことが望ましい。さらに、ＧＰＡからＳＰＡへのマッピングを改変するための要求を受信した場合に参照カウントが非ゼロであるとき、新しいＤＭＡ要求の処理を、ゲスト物理アドレス空間に対する改変要求の処理が終わるまで延期することができる。
【００２２】
特定のページがメモリ内にロックされ、ゲスト物理アドレス空間の改変またはパージの要求があまりにも長時間にわたって抑えられるという状況を避けるために、Ｉ／Ｏトランザクションをブロックし続けることができる。ゲスト物理アドレスがそのような閉鎖状態にあるとき、ＤＭＡ要求などのトランザクションのためにその領域内のページをロックすることの新たな要求は、失敗に終わるか、あるいはゲスト物理アドレス空間に関する改変が起こった後まで待たされる。この状態は、ＧＰＡ空間への改変を防止している際のあまりにも長い待機を防ぐ。ＧＰＡからＳＰＡへのマッピングに対する改変を保護するために取られる上述の手法は、ＤＭＡ排他ベクタの保護にも使用される。詳細には、特定のページに対する未処理のＤＭＡトランザクションの数について参照カウントが維持され、カウントがゼロになると、アドレスを改変できるようになる。したがって、参照カウントがゼロになり、ページに対して直ちに保留中である追加のＩ／Ｏアクセスがないとき、そのページはＤＭＡを介してアクセスできないものとしてマークされる。
【００２３】
本発明の他の態様では、ゲスト物理アドレス空間の高速クエリおよび改変のために、平衡二分木が使用される。ゲスト物理アドレス空間マッピング内のエントリは、ゲストアプリケーションからの要求に基づいて挿入、削除およびクエリすることができる。ゲスト物理アドレス空間のデータ構造に対する高速挿入、削除およびクエリを実現するには、平衡二分木のデータ構造が好ましい。平衡二分木により、ゲスト物理アドレス空間に対する全ての操作についてＯ（ｌｏｇ２ｎ）の最悪の場合におけるパフォーマンスが提供される。
【００２４】
図５に、本発明の態様による例示的な方法５００を示す。この方法が実行されるコンピュータ環境は、図１に示されているものと同様の、ホストコンピュータが２つ以上の仮想マシンにリソースを提供する仮想マシン環境であると仮定する。仮想マシンがホストリソースについて要求を行う環境では、ゲスト仮想アドレスはゲスト物理アドレスに変換され、次いでシステム物理アドレスに変換される。変換が実行されると、アドレス変換は仮想マシンの動作をスピードアップするために、シャドウページテーブルおよび変換索引バッファの両方に使用される。しかし、ゲスト物理アドレス空間に対する変更が必要である場合、マップされていないアドレスに対する不要なアクセスを防ぐとともにアドレス空間内のより適切なエリアに再マップするために、シャドウページテーブルおよび変換索引バッファを更新する必要がある。図５の例示的方法５００はこの環境で動作し、１つのパーティションまたは仮想マシンから他のパーティションまたは仮想マシンへのアクセスを可能にしながら、アドレス変更および更新メカニズムの一部として使用することができる。
【００２５】
方法５００は、仮想マシン間でのページ共有のために第１の仮想マシン内の一時ゲスト物理アドレス空間の割振りが特定されたとき（ステップ５１０）に開始されるように設定することができる。この過渡空間または一時空間は、好ましくはゲスト物理アドレスレンジ内の、ただしその仮想マシン内のゲスト物理アドレスレンジを使用するアプリケーションが操作するレンジ外に位置する。このような過渡領域は、最初に仮想マシン内の仮想化ソフトウェアによって割り振られることができる。あるいは、過渡領域または一時領域は、ゲストのオペレーティングシステムによって割り振られることができる。ゲスト物理アドレス空間内の一時領域の割振りは、仮想マシンから仮想マシンへのトランザクションの前の任意の時点に実現することができ、トランザクションが望まれる度に実現する必要はないことに留意されたい。
【００２６】
第１の仮想マシンにおいて、第２の仮想マシンから、メモリの入出力アクセスまたは直接メモリアクセスなどの操作を実行するための要求を受け取る（ステップ５２０）。アクセスは、仮想マシン環境内のホストコンピュータ上の仮想化ソフトウェアを通して経路指定される。その要求に応答して、その要求内のアドレスぺージに関連付けられている参照カウンタがインクリメントされる（ステップ５３０）。これには、関心対象のページをロックする効果があり、指定されたページを共有する準備を行うことができる。要求されたトランザクションがＤＭＡ操作であり、参照カウンタがゼロから１にインクリメントされた場合、ＤＭＡ操作が可能であることを検証するためにＤＭＡ排他ベクタがチェックされる。関心対象のページも、それらが確実に存在し、有効なＧＰＡからＳＰＡへのマッピングであることを確かめるためにチェックされる。
【００２７】
関心対象のページは、次いで、第１の仮想マシンのゲスト物理アドレス空間内の先に定義された一時アドレスレンジ内にマップされる（ステップ５４０）。第１の仮想マシンのゲスト物理アドレス内にページがマップされた後、意図されるトランザクションを開始することができる（ステップ５５０）。アクセスがＤＭＡ要求である場合、トランザクションの開始は、ＤＭＡ転送の確立および管理のために、第２の仮想マシンから第１の仮想マシンへの読み書き命令などの命令、ビデオ色など特定のタイプのデータのためのトランザクションなどのパラメータ、ならびに特定のソースおよび宛先アドレスの送信を含む。
【００２８】
第２の仮想マシンと第１の仮想マシンとの間でデータが交換された後、トランザクションが完了する（ステップ５６０）。トランザクションがＤＭＡ操作である場合、第１の仮想マシンは第２の仮想マシンに対してデータが転送されたことを信号で伝える。完了時、第２の仮想マシンは仮想化ソフトウェアに対し、トランザクションに関与しているページをロック解除および非共有化するよう指示を送る。ステップ５３０でインクリメントされた参照カウンタはデクリメントされる（ステップ５７０）。トランザクションがＤＭＡ操作であり、参照カウントが１からゼロになる場合、ＤＭＡ排他ベクタは追加のＤＭＡトランザクションを認めないように設定することができる。本発明の一態様では、この働きによって、システムはＤＭＡトランザクションの完了後に関心対象のページが関与するゲスト物理アドレスレンジを改変またはパージできるようになる。
【００２９】
参照カウンタがデクリメントされた後、保留トランザクションがまだ残っている場合は、それらのトランザクションを実行することができる。実行され、参照カウンタがゼロになると、システムは要求に従って関心対象のページまたはマッピングを自由に改変することができる。マッピングは、参照カウンタがゼロにデクリメントされた後、必要に応じて改変することができる（ステップ５８０）。この再マッピング機会により、システムは改変されるべきシャドウページテーブルおよびトランザクション変換索引テーブルを更新し、それによってゲスト物理アドレス空間内の変更に対応するために変更すべきアドレスに関連するマッピングを変更またはパージできるようになる。
【００３０】
例示的コンピューティングデバイス
図６および以下の説明は、本発明の諸実施形態を実施することができる適切なコンピューティング環境の概要を提供することを意図している。以下では汎用コンピュータについて記載されているが、これは１つの単一プロセッサの例に過ぎず、複数のプロセッサによる本発明の諸実施形態は、たとえばネットワーク／バスの相互運用性および対話を有するクライアントのような、他のコンピューティングデバイスで実施することができる。したがって、本発明の諸実施形態は、たとえば、電気器具内に配置されたオブジェクトのようなクライアントデバイスが単にネットワーク／バスへのインターフェースの役目を果たすネットワーク環境、または他のコンピューティングデバイスおよびオブジェクトなど、非常に少ない、または最小限のクライアントリソースしか関与しないネットワークホストサービス（ｎｅｔｗｏｒｋｅｄ  ｈｏｓｔｅｄ  ｓｅｒｖｉｃｅ）の環境内で実施することができる。本質的に、どんな場所であっても、データの記憶または検索ができさえすれば、動作に望ましい、または適した環境となる。
【００３１】
必須ではないが、本発明の実施形態は、デバイスまたはオブジェクト用のサービスの開発者が使用するために、オペレーティングシステムを介して実施することもでき、および／またはアプリケーションソフトウェア内に含むこともできる。ソフトウェアは、クライアントワークステーション、サーバまたは他のデバイスなどの、１つまたは複数のコンピュータによって実行される、プログラムモジュールなどの、コンピュータ実行可能命令という一般的な文脈で説明することができる。一般に、プログラムモジュールとしては、特定のタスクの実行または特定の抽象データ型の実施を行う、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などがある。一般的に、プログラムモジュールの機能は、様々な実施形態において要望通りに組み合わせることができ、または分散させることができる。さらに、当業者は、本発明の様々な実施形態が他のコンピュータ構成で実行できることを理解するであろう。使用に適した他の周知のコンピューティングシステム、環境および／または構成としては、これらに制限されないが、パーソナルコンピュータ（ＰＣ）、現金自動預入支払機、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサに基づくシステム、プログラム可能な家庭用電化製品、ネットワークＰＣ、電気器具、照明器具、環境制御要素、ミニコンピュータ、メインフレームコンピュータなどがある。また、本発明の諸実施形態は、タスクが通信ネットワーク／バスまたは他のデータ伝送媒体でリンクされたリモート処理装置によって実行される分散コンピューティング環境で実施することができる。分散コンピューティング環境では、プログラムモジュールを、メモリ記憶装置を含むローカルおよびリモートのいずれのコンピュータ記憶媒体にも置くことができ、クライアントノードは逆にサーバノードとして働くこともできる。
【００３２】
したがって、図６は、本発明の実施形態を実施することができる、適切なコンピューティングシステム環境６００の例を示す。しかし、先に明記したように、コンピューティングシステム環境６００は、適切なコンピューティング環境の一例に過ぎず、本発明の一実施形態の使用範囲または機能に関するいかなる限定も示唆するものではない。また、コンピューティング環境６００は、例示的動作環境６００中で示されるコンポーネントの１つまたはそれらの組合せに依存するか、またはそれらを必要としていると解釈されるべきでもない。
【００３３】
図６を参照すると、本発明の一実施形態を実施するための例示的システムは、コンピュータシステム６１０の形をとる汎用コンピューティングデバイスを含む。コンピュータシステム６１０のコンポーネントは、これらに制限されないが、処理装置６２０、システムメモリ６３０、およびシステムメモリを含むシステムの様々なコンポーネントを処理装置６２０に結合するシステムバス６２１を含むことができる。システムバス６２１は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用したローカルバスを含む、いくつかのタイプのバス構造のいずれかとすることができる。限定ではなく例として、これらのアーキテクチャに、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびメザニン（Ｍｅｚｚａｎｉｎｅ）バスとも呼ばれるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを含めることができる。
【００３４】
コンピュータシステム６１０は、一般に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータシステム６１０がアクセスできる利用可能などんな媒体でもよく、揮発性および不揮発性の媒体、リムーバブルおよび非リムーバブルの媒体を含む。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体としては、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなど、情報の記憶に用いられる任意の方法または技術で実施される揮発性および不揮発性、リムーバブルおよび非リムーバブルの媒体がある。コンピュータ記憶媒体としては、例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、フラッシュメモリまたは他のメモリ技術、ＣＤＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  ＲＯＭ）、ＣＤＲＷ（ＣＤ−ｒｅｗｒｉｔａｂｌｅ）、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶または他の磁気記憶装置、または所望の情報を記憶し、コンピュータシステム６１０がアクセスできる他の任意の媒体がある。通信媒体は、一般に、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波や他の搬送機構などの変調データ信号の形で具体化し、それには任意の情報送達媒体が含まれる。「変調データ信号」という用語は、その１つまたは複数の特徴が、信号に含まれる情報を符号化するように設定または変更された信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークまたは直接配線接続などの有線媒体、ならびに音響、ＲＦ、赤外線およびその他の無線媒体を含む。上記の任意の組合せも、コンピュータ可読媒体の範囲に含まれるべきである。
【００３５】
システムメモリ６３０は、たとえばＲＯＭ６３１やＲＡＭ６３２などの揮発性および／または不揮発性のメモリの形をとるコンピュータ記憶媒体を含む。一般に、たとえば起動の際にコンピュータシステム６１０内の要素間での情報の転送を助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）６３３は、ＲＯＭ６３１に格納されている。ＲＡＭ６３２は、一般に、直ちに処理装置６２０からアクセス可能であり、および／または処理装置６２０が操作を加えているデータおよび／またはプログラムモジュールを含む。限定ではなく例として、図６はオペレーティングシステム６３４、アプリケーションプログラム６３５、他のプログラムモジュール６３６、およびプログラムデータ６３７を示す。
【００３６】
コンピュータシステム６１０は、他の揮発性および／または不揮発性の媒体、リムーバブルおよび／または非リムーバブルのコンピュータ記憶媒体を含むこともできる。あくまで一例として、図６は、非リムーバブルで不揮発性の磁気媒体を読み書きするハードディスクドライブ６４１、リムーバブルで不揮発性の磁気ディスク６５２を読み書きする磁気ディスクドライブ６５１、およびＣＤＲＯＭ、ＣＤＲＷ、ＤＶＤや他の光媒体などのリムーバブルで不揮発性の光ディスク６５６を読み書きする光ディスクドライブ６５５を示す。この例示的動作環境で使用できる他の揮発性および／または不揮発性の媒体、リムーバブルおよび／または非リムーバブルのコンピュータ記憶媒体としては、限定ではないが、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどがある。ハードディスクドライブ６４１は、一般にインターフェース６４０などの非リムーバブルメモリインターフェースを介してシステムバス６２１に接続されており、磁気ディスクドライブ６５１および光ディスクドライブ６５５は、一般にインターフェース６５０などのリムーバブルメモリインターフェースを介してシステムバス６２１に接続されている。
【００３７】
上に説明し、図６に示したドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータシステム６１０用のコンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを記憶する。たとえば、図６では、ハードディスクドライブ６４１は、オペレーティングシステム６４４、アプリケーションプログラム６４５、他のプログラムモジュール６４６、およびプログラムデータ６４７を記憶しているものとして示してある。これらのコンポーネントは、オペレーティングシステム６３４、アプリケーションプログラム６３５、他のプログラムモジュール６３６、およびプログラムデータ６３７と同じでもよく、異なっていてもよいことに留意されたい。ここでは、オペレーティングシステム６４４、アプリケーションプログラム６４５、他のプログラムモジュール６４６、およびプログラムデータ６４７が少なくとも異なるコピーであることを示すために別の参照番号を付けた。ユーザは、キーボード６６２および一般にマウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイス６６１などの入力装置を介して、コンピュータシステム６１０に命令および情報を入力することができる。他の入力装置（図示せず）としては、マイクロフォン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナなどがある。これらおよび他の入力装置は、システムバス６２１に結合されているユーザ入力インターフェース６６０を介して処理装置６２０に接続されることが多いが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）など他のインターフェースおよびバス構造によって接続することもできる。モニタ６９１または他のタイプの表示装置も、立ち代ってビデオメモリ（図示せず）と通信しうるビデオインターフェース６９０などのインターフェースを介してシステムバス６２１に接続されている。コンピュータシステムは、モニタ６９１以外に、出力周辺インターフェース６９５を介して接続することができるスピーカ６９７やプリンタ６９６などの他の周辺出力装置も含むことができる。
【００３８】
コンピュータシステム６１０は、リモートコンピュータ６８０など１つまたは複数のリモートコンピュータへの論理接続を使用したネットワーク環境または分散環境で動作することもできる。リモートコンピュータ６８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の共通ネットワークノードでよく、図６ではメモリ記憶装置６８１しか図示されていないが、一般にはコンピュータシステム６１０に関連して説明した上述の多くのまたは全ての要素を含む。図６に示された論理接続は、ローカルエリアネットワーク（ＬＡＮ）６７１およびワイドエリアネットワーク（ＷＡＮ）６７３を含むが、他のネットワークおよび／またはバスを含むこともできる。これらのネットワーク環境は、オフィス、事業体規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的となっている。
【００３９】
ＬＡＮネットワーク環境で使用する場合、コンピュータシステム６１０はネットワークインターフェースまたはアダプタ６７０を介してＬＡＮ６７１に接続される。ＷＡＮネットワーク環境で使用する場合、コンピュータシステム６１０は、一般にインターネットなどのＷＡＮ６７３上での通信を確立するためのモデム６７２または他の手段を含む。モデム６７２は、内部モデムでも外部モデムでもよく、ユーザ入力インターフェース６６０または他の適切な機構を介してシステムバス６２１に接続することができる。ネットワーク環境では、コンピュータシステム６１０に関連して図示されたプログラムモジュールあるいはその一部を、リモートメモリ記憶装置に記憶することができる。限定ではなく例として、図６ではリモートアプリケーションプログラム６８５がメモリ装置６８１上にあるものとして示してある。図示されたネットワーク接続は例示的であり、コンピュータ間の通信リンクを確立するための他の手段を使用することもできることが理解されるだろう。
【００４０】
パーソナルコンピューティングおよびインターネットの収束を鑑みて、様々な分散コンピューティングフレームワークがこれまで開発され、現在も開発されている。個人にも法人ユーザにも同様に、アプリケーションおよびコンピューティングデバイスのためのシームレスに相互運用できるウェブ対応型インターフェースが提供されており、それによってコンピュータ活動はますますウェブブラウザ志向またはネットワーク志向の強いものとなっている。
【００４１】
たとえば、マイクロソフト社から入手可能なＭＩＣＲＯＳＯＦＴ（登録商標）の．ＮＥＴ（商標）プラットフォームは、サーバ、ウェブベースのデータストレージなどのビルディングブロックサービス（ｂｕｉｌｄｉｎｇ−ｂｌｏｃｋ  ｓｅｒｖｉｃｅ）、およびダウンロード可能なデバイスソフトウェアを含む。本明細書中、例示的な実施形態がコンピューティングデバイスに常駐しているソフトウェアと関連して説明されているが、本発明の一実施形態の１つまたは複数の部分は、その操作が．ＮＥＴ（商標）の全ての言語およびサービス、ならびに他の分散コンピューティングフレームワークで実行、サポート、またはそれらを介してアクセスできるように、オペレーティングシステム、アプリケーションプログラミングインターフェース（ＡＰＩ）、または、コプロセッサ（ｃｏｐｒｏｃｅｓｓｏｒ）、ディスプレイ装置および要求オブジェクトのいずれかの間に介在する「仲介者」オブジェクトを介して実施することもできる。
【００４２】
先に述べたように、本発明の例示的な実施形態を様々なコンピューティングデバイスおよびネットワークアーキテクチャに関連して説明したが、基礎となる概念は、埋め込みシステムのためにソフトウェアプログラムプロファイラを実装することが望ましいような任意のコンピューティングデバイスまたはシステムに適用することができる。したがって、本発明の実施形態に関連して説明された方法およびシステムは、様々なアプリケーションおよびデバイスに適用することができる。本明細書では、様々な選択を代表するものとして例示的なプログラミング言語、名称および具体例が選択されているが、これらの言語、名称および具体例は限定を意図するものではない。本発明の実施形態によって実現されるシステムおよび方法と同等、同様あるいは等価のシステムおよび方法を実現するオブジェクトコードを提供する多くの方法があることは、当業者なら理解できるだろう。
【００４３】
本明細書に記載した様々な技術は、ハードウェアまたはソフトウェアに関連して、あるいは適切な場合には、両者の組合せで実施することができる。したがって、本発明の方法および装置、またはそのいくつかの態様または部分は、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ハードドライブ、または他の任意の機械可読記録媒体などの有形媒体に具体化され、それがコンピュータなどの機械にロードされて実行されるときその機械が本発明を実施するための装置となる、プログラムコード（すなわち、命令）の形をとることができる。プログラム可能なコンピュータ上でプログラムコードを実行する場合、コンピューティングデバイスは、一般にプロセッサ、プロセッサ可読の記録媒体（揮発性および不揮発性のメモリおよび／または記憶要素を含む）、少なくとも１つの入力装置、および少なくとも１つの出力装置を含む。好ましくは、たとえばデータ処理ＡＰＩなどの使用を介して本発明の一実施形態の信号処理サービスを利用しうる１つまたは複数のプログラムが、コンピュータと通信可能となるように、高水準の手続き型プログラミング言語またはオブジェクト指向プログラミング言語で実装される。しかし、望まれるなら、この（１つまたは複数の）プログラムは、アセンブリ言語または機械語で実装することができる。いずれの場合も、言語はコンパイラ型でもインタープリタ型言語でもよく、ハードウェア実装と組み合わせることができる。
【００４４】
本発明を様々な図に示した好ましい実施形態に関して説明したが、本発明から逸脱することなく、本発明の同様の機能を実行するために他の類似の実施形態を使用してよく、あるいは説明した実施形態に改変または追加を行ってもよいことが理解されるだろう。さらに、特に無線ネットワーク接続された装置の数が増え続けていることから、携帯デバイス用オペレーティングシステムや他のアプリケーション固有のオペレーティングシステムを含む様々なコンピュータプラットフォームが企図されていることが強調されるべきである。それゆえ、本発明はどの単一の実施形態にも限定されるべきではなく、添付の特許請求の範囲と一致した広さおよび範囲の中で解釈すべきである。
【図面の簡単な説明】
【００４５】
【図１】本発明の態様を実現することができる例示的な仮想マシン環境を示す図である。
【図２】仮想マシンでのゲスト物理アドレスからシステム物理アドレスへのマッピングを示す図である。
【図３】仮想マシンでのゲスト仮想アドレスからシステム物理アドレスへのマッピングを示す図である。
【図４】仮想マシンでのゲスト仮想アドレスからゲスト物理アドレスへのマッピングを示す図である。
【図５】本発明の態様を組み込んだ方法の流れ図である。
【図６】本発明の態様を実施することができる例示的コンピューティング環境を示すブロック図である。
【符号の説明】
【００４６】
１０５  ホストシステム
１２０  仮想化ソフトウェア
１２５  仮想マシン１のアプリケーション
１３０  オペレーティングシステム１
１３５  仮想マシン２のアプリケーション
１４０  オペレーティングシステム２
１４５  データベース
１５０  ドライバ
１５５  仮想ドライバ
６００  コンピューティング環境
６２０  処理装置
６２１  システムバス
６３０  システムメモリ
６３４  オペレーティングシステム
６３５  アプリケーションプログラム
６３６  その他のプログラムモジュール
６３７  プログラムデータ
６４０  非リムーバブル不揮発性メモリインターフェース
６４４  オペレーティングシステム
６４５  アプリケーションプログラム
６４６  その他のプログラムモジュール
６４７  プログラムデータ
６５０  リムーバブル不揮発性メモリインターフェース
６６０  ユーザ入力インターフェース
６６１  マウス
６６２  キーボード
６７０  ネットワークインターフェース
６７１  ローカルエリアネットワーク
６７２  モデム
６７３  ワイドエリアネットワーク
６８０  リモートコンピュータ
６８５  リモートアプリケーションプログラム
６９０  ビデオインターフェース
６９１  モニタ
６９５  出力周辺インターフェース
６９６  プリンタ
６９７  スピーカ
【図１】
2006252554.tif 000003
【図２】
2006252554.tif 000004
【図３】
2006252554.tif 000005
【図４】
2006252554.tif 000006
【図５】
2006252554.tif 000007
【図６】
2006252554.tif 000008