(57)【要約】【課題】  仮想マシン環境におけるハイパーバイザドライバ管理を提供する。【解決手段】  仮想マシン環境において物理的リソースへのアクセスを提供するための手法を提供する。仮想マシンは、分割されているデバイスドライバを使用して、物理的リソースにアクセスすることがある。仮想マシンで稼働するデバイスドライバの性能を監視した後、性能が低下しているデバイスドライバ又はコンテキストスイッチの割合が高いデバイスドライバが識別される。このようなデバイスドライバは、信頼できないドメインと信頼できるドメインで実行される部分に動的に適応される。信頼できるドメインでデバイスドライバの一部分を実行すると、コンテキストスイッチを軽減し、仮想マシンの性能が向上する。【選択図】  図１
2011123857.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ及びメモリを含むシステムにおいて、仮想マシン環境で物理的リソースにアクセスするための方法であって、
信頼できるドメインとドライバドメインとを含む前記仮想マシン環境で稼働する仮想マシン内で動作するデバイスドライバの性能を監視するステップと、
前記デバイスドライバの中から、所定のしきい値を下回って稼働しているデバイスドライバをその性能特性に従って識別するステップと、
前記デバイスドライバを第１の部分と第２の部分に適応させるステップと、
前記第１の部分を前記信頼できるドメイン内で実行し、前記第２の部分を前記ドライバドメイン内で実行するステップと、
を含む方法。
【請求項２】
デバイスドライバの性能を監視するステップが、前記デバイスドライバのそれぞれについてコンテキストスイッチを監視することを更に含む、請求項１に記載の方法。
【請求項３】
デバイスドライバの性能を監視するステップが、前記デバイスドライバの少なくとも１つに対してデータフロー分析を実行することを更に含む、請求項１に記載の方法。
【請求項４】
デバイスドライバを識別するステップが、他のデバイスドライバと比較してより多くのコンテキストスイッチを発生しているときに前記デバイスドライバを識別することを更に含む、請求項１に記載の方法。
【請求項５】
前記コンテキストスイッチが、前記デバイスドライバのそれぞれについてコンテキストスイッチの割合を追跡することにより計測される、請求項４に記載の方法。
【請求項６】
前記第１の部分と前記第２の部分が前記特定のデバイスドライバのスタンドアローンのセグメントを含む、請求項１に記載の方法。
【請求項７】
前記信頼できるドメインで前記第１の部分を実行する場合に、各メモリ参照に対してジャスト・イン・タイムバイナリコード変換を実行することによって、安全性確保のために前記第１の部分の各メモリ参照を動的にパッチするステップを更に含む、請求項６に記載の方法。
【請求項８】
前記デバイスドライバを適合させるステップが、前記仮想マシン環境の稼働中に前記特定のデバイスドライバを動的に修正して前記第１の部分と前記第２の部分を生成することを更に含む、請求項１に記載の方法。
【請求項９】
仮想マシンで稼働しているオペレーティングシステムのコンテキスト内で物理的コンピューティングリソースへのアクセスを提供する方法であって、
ドライバドメイン内で動作しているデバイスドライバの性能を監視するステップと、
前記オペレーティングシステムが稼働している間、前記デバイスドライバを、スタンドアローンのコードセグメントを含む第１の部分及び第２の部分に動的に分割するステップと、
前記第１の部分を信頼できるドメインで実行し、前記第２の部分を前記ドライバドメイン内の前記仮想マシンで実行するステップと、
を含む方法。
【請求項１０】
前記ドライバドメイン又は前記仮想マシン内の前記第１の部分によって使用されるデータを格納するステップであって、前記信頼できるドメインの安全性を保護するために前記データへのアクセスがアドレス変換を使用して達成されるステップを更に含む、請求項９に記載の方法。
【請求項１１】
デバイスドライバの性能を監視するステップが前記デバイスドライバと関連するコンテキストスイッチの割合を特定することを更に含み、前記コンテキストスイッチの割合がしきい値を上回った場合に前記デバイスドライバが分割される、請求項９に記載の方法。
【請求項１２】
前記信頼できるドメインがハイパーバイザを含み、前記第１の部分が前記仮想マシンに代わってパケットの送受信を行う、請求項９に記載の方法。
【請求項１３】
前記仮想マシンがコンテキストスイッチなしで前記第１の部分を呼び出す請求項９に記載の方法。
【請求項１４】
仮想マシン環境で物理的リソースへのアクセスを制御するデバイスであって、
少なくとも１つのプロセッサとメモリを含む物理的リソースと、
前記メモリ内に格納され、前記仮想マシン環境内に信頼できるドメインと、前記仮想マシン環境内にドライバドメインとを設定するハイパーバイザと、
前記メモリ内に格納され、前記ドライバモジュールが前記プロセッサを使用して前記ドライバドメイン内のデバイスドライバの性能を監視し、前記デバイスドライバを少なくとも第１の部分と第２の部分に分割し、前記第１の部分は前記信頼できるドメインで動作し、前記第２の部分は前記ドライバドメインで動作する、ドライバモニタと、
を含むデバイス。
【請求項１５】
前記プロセッサは、前記デバイスドライバの性能がしきい値と比較されるときに前記デバイスドライバを適合させ、前記第１の部分と前記第２の部分がそれぞれ前記デバイスドライバのスタンドアローンのセグメントを含む、請求項１４に記載のデバイス。
【請求項１６】
コンテキストスイッチの割合が所定の割合を上回った場合に前記デバイスドライバの性能に問題が発生する、請求項１４に記載のデバイス。
【請求項１７】
前記ドライバモニタがデータフロー分析を実行して前記デバイスドライバの性能を判定する、請求項１４に記載のデバイス。
【請求項１８】
前記メモリが、前記ハイパーバイザに割り当てられたＲＯＭ及びメモリの少なくとも１つを含む、請求項１４に記載のデバイス。
【請求項１９】
前記ドライバモニタが前記信頼できるドメインで動作している前記第１の部分に対するアドレス参照を変更して前記仮想マシン環境の安全性を維持する、請求項１４に記載のデバイス。
【請求項２０】
前記ドライバモニタがジャスト・イン・タイムバイナリコード変換を実行して前記第１の部分の各メモリ参照をパッチし、前記デバイスドライバのデータが前記ドライバドメインに格納される、請求項１４に記載のデバイス。
【請求項２１】
前記デバイスドライバを使用する仮想マシンが前記仮想マシン環境内で稼働している間に、前記ドライバモジュールが前記デバイスドライバを前記第１の部分と前記第２の部分に動的に分割する、請求項１８に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
背景
[0001]  仮想マシンは複雑なコンピューティング環境で多くの利点を与える。仮想マシンを使用すれば、同じコンピュータ上で複数のオペレーティングシステムを実行できる。コンピュータの物理的リソースは、異なるオペレーティングシステム全体で物理的リソースを共有できるように、仮想化される。各仮想マシンは、たとえソフトウェアで実装されていたとしても、自身を実際のコンピュータとして認識する。
【背景技術】
【０００２】
[0002]
仮想マシンは、同じコンピュータ上に複数のオペレーティングシステムを共存できることに加えて、他にも利点を有する。仮想マシンは、例えば、基礎となるハードウェアと独立して実行できる上、たとえ同一マシン上で稼働していても互いに切り離され、提供及び管理が容易である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
[0003]  仮想マシンの主な問題点は、効率性に関するものである。より具体的には、仮想マシンは、ネイティブに動作する従来のオペレーティングシステムほど効率的ではない。仮想マシンはコンピュータのソフトウェア実装であり、一般的に専用のハードウェア要素を持たない。
【０００４】
[0004]  しかし、動作原理上、仮想マシンのインスタンス化を可能にする仮想マシン環境では、仮想マシンとコンピュータの物理的リソースとの間に更なるソフトウェア層が加えられる。その結果、仮想マシンは、コンピュータの物理的リソースに間接的にアクセスすることになり、ネイティブに動作するシステムより効率性が劣る。
【０００５】
[0005]  例えば、多くの場合、仮想マシンは仮想デバイスドライバを使用しており、仮想マシン内部で仮想デバイスドライバを実行することが望ましい。或いは、仮想デバイスドライバをそれぞれの仮想マシン内でインスタンス化することもできる。仮想デバイスドライバを実装することにより、仮想マシン環境の他の層及び他の仮想マシンを仮想デバイスドライバの問題と切り離すことができる。但し、残念ながら、仮想マシンはコンピュータの物理的リソースに直接アクセスすることはできない。
【０００６】
[0006]  このため、多くの場合、仮想マシンには、アプリケーションから仮想デバイスドライバへの、また、仮想デバイスドライバから仮想マシン環境の下位層へのコンテキストスイッチが付き物である。コンテキストスイッチの割合が高くなる可能性があると、仮想マシンの性能低下の原因の１つになる。
【図面の簡単な説明】
【０００７】
図面の簡単な説明
【図１】[0007]  仮想マシン環境における物理的リソースへのアクセスに適応した仮想マシン環境の例示的な実施形態のブロック図である。
【図２】[0008]  ドライバドメインでデバイスドライバを監視するハイパーバイザの例示的な実施形態のブロック図である。
【図３】[0009]  ドライバドメインとハイパーバイザとの間で分割されたデバイスドライバの例示的な実施形態のブロック図である。
【図４】[0010]  仮想マシン環境で物理的リソースにアクセスするための方法の例示的な実施形態のフローチャートを示す。
【図５】[0011]  本開示に従い、仮想マシン環境で物理的リソースへのアクセスを提供するために配されたコンピューティングデバイスの例を示す。
【発明を実施するための形態】
【０００８】
詳細な説明
[0012]  以下の詳細な説明では、本明細書の一部をなす添付の図面を参照する。図面において、特に明記しない限り、類似の符号は通常類似の構成要素を示す。詳細な説明、図面、及び請求項に記載した例示的な実施形態は、これに限定するものではない。本明細書に提示する主題の趣旨又は範囲から逸脱することなしに、その他の実施形態を利用できると共に、その他の変更を加えることができる。本明細書に概説すると共に図に示した本開示の様態を、様々な異なる構成で配置、置換、結合、分割、及び設計できることは、容易に理解されよう。それら全てが本明細書で明示的に検討される。
【０００９】
[0013]  本明細書で説明する実施形態は、仮想マシン環境での物理的なコンピューティングリソースへのアクセスの実現に関する。仮想マシンは、多くの場合、抽象化層で構成される。最下位の層（以降、ハイパーバイザと称する）は、コンピューティング環境の実際の物理的リソースに完全にアクセスできる。ハイパーバイザでは、システムリソースへの確実なアクセスを実現するだけでなく、障害の切り離しにより安全性も確保する。例えば、あるゲストオペレーティングシステムを発生源とする障害又は攻撃は、仮想マシン環境において他のゲストオペレーティングシステムから切り離される。
【００１０】
[0014]  仮想マシン環境では、物理的リソースへのアクセスはハイパーバイザを介して提供される。この結果、物理的リソースへのアクセスは、コンテキストスイッチの処理コストを招く。コンテキストスイッチは、プロセス又はアプリケーションが実行している環境が変わった場合に発生する。
【００１１】
[0015]  例えば、仮想マシンで実行中のワードプロセッシングアプリケーションは、ハードディスクドライブに格納されたファイルへのアクセスが必要となる場合がある。アプリケーションはファイルへのアクセスを最初に要求する。仮想マシン環境では、この要求は、仮想マシンのゲストオペレーティングシステムによって最初に受信されるだろう。この場合、ワードプロセッシングアプリケーションが実行している環境はワードプロセッシングアプリケーションからオペレーティングシステムに変わるため、コンテキストスイッチが発生する。仮想マシンのオペレーティングシステムは物理的リソースに直接アクセスできないため、仮想マシンのゲストオペレーティングシステムから仮想デバイスドライバにもう１つコンテキストスイッチが発生し、これによって仮想デバイスドライバはハイパーバイザと相互に作用する。これは、コンテキストスイッチが大幅な性能低下の原因となり得ることを表している。
【００１２】
[0016]  本明細書で説明する実施形態では、コンテキストスイッチを監視し、仮想マシン環境を動的に適合させることにより、性能を向上させることが可能である。一実施例では、例示にすぎないが仮想マシンの特定のコードセグメントを修正することにより、そのコードセグメントが実行されるドメインを自動的及び動的に変更する。こうした修正により、仮想マシンにおけるコンテキストスイッチの数が減り、仮想マシン自体の性能及び仮想マシン環境の性能を向上させることができる。
【００１３】
[0017]  図１は、仮想マシン環境１００の例示的な実施形態のブロック図である。仮想マシン環境１００は、複数の仮想マシンを含んでも、又は同時に多くの仮想マシンをホストしてもよい。仮想マシン環境１００は、例えば、サーバコンピュータ、又はクライアントコンピュータ、又は分散コンピューティングリソースを使用するネットワークに実装され得る。
【００１４】
[0018]  仮想マシン環境１００は、システムリソース１１０、ハイパーバイザ１２０、ドメイン１３０、及びアプリケーション１４０を含み得る。システムリソース１１０は、仮想マシン環境１００の物理的なデバイス又はリソースを含む。システムリソース１１０の例としては、ソリッドステートメモリ、大容量記憶装置、グラフィックアクセラレータ、ネットワークインタフェース、プロセッサ等、又はその任意の組合せが挙げられる。
【００１５】
[0019]  ハイパーバイザ１２０は、仮想マシン環境１００でシステムリソース１１０へのアクセスを制御するオペレーティングシステムクライアントの一例である。ハイパーバイザ１２０では、仮想マシン環境１００内でインスタンス化された仮想マシンに提供される仮想リソースを実装及び管理できる。ハイパーバイザ１２０では、仮想マシン環境１００におけるプロセスの切り離し、ポリシーの適用、リソースの共有化等を実現する。ハイパーバイザ１２０は、通常、仮想マシンから保護された、システムリソース１１０からの固有のリソースを有する。
【００１６】
[0020]  ドメイン１３０は仮想マシンの例であり、ゲストオペレーティングシステム１３６及び１３８を含む。ドメインインスタンス１３０はまた、ドライバドメイン１３４を含んでもよい。アプリケーション１４２及び１４４を含むアプリケーション１４０は、それぞれのオペレーションシステム１３６及び１３８に実装される。結果として、アプリケーション１４２及び１４４は、それぞれのドメイン１３０の一部分とみなすことができる。
【００１７】
[0021]  例えば、図１では、オペレーティングシステム１３６、アプリケーション１４２、及びドライバ１３４が仮想マシン１４６として示されている。しかし、別の例では、ドライバ１３４を個別の仮想マシンとし、仮想マシン１４６をオペレーティングシステム１３６とアプリケーション１４２に対応させてもよい。仮想マシン１４６は、一般的に、仮想マシン環境１００の他の仮想マシンから切り離される。
【００１８】
[0022]  仮想マシン（ＶＭ）ドメイン１３２は、ドライバドメイン１３４等の他のドメインや仮想マシン、及びオペレーティングシステム１３６や１３８を管理するために作成できる。例えば、ＶＭドメイン１３２を使用して、他のドメインインスタンスを作成、破棄、移行、保存、及び／又はリストアすることができる。
【００１９】
[0023]  仮想マシン環境１００では、ドライバドメイン１３４は、ゲストオペレーティングシステム１３６及び１３８といった他の仮想マシンに対し、仮想デバイスドライバをインスタンス化するために使用される。ドライバドメイン１３４の仮想デバイスドライバは、システムリソース１１０に含まれるハードウェアデバイスをエミュレートするために使用できる。仮想デバイスドライバは、単一のドライバドメイン１３４又は個々のドライバドメインにおいてインスタンス化することができる。仮想デバイスドライバごとに固有のドライバドメインを使用すると、仮想デバイスドライバで障害が発生した場合でも、ＶＭドメイン１３２及びハイパーバイザ１２０を含む他のドメイン又は層は影響を受けることはない。
【００２０】
[0024]  ハイパーバイザ１２０はドライバドメイン１３４を監視し、仮想デバイスドライバの実装を適合させることにより、仮想マシン環境の性能を向上させる。
【００２１】
[0025]  図２は、ドライバドメイン１３４を監視するハイパーバイザ１２０の例示的な実施形態のブロック図である。ドライバドメイン１３４はデバイスドライバ２０２を含んでもよく、デバイスドライバ２０２は仮想デバイスドライバであってもよい。ドライバドメイン１３４はまた、デバイスドライバ２０４を含んでもよく、デバイスドライバ２０４も仮想デバイスドライバであってもよい。或いは、デバイスドライバ２０４は固有のドライバドメイン内にあってもよい。
【００２２】
[0026]  ハイパーバイザ１２０はドライバモニタ２００を含む。ドライバモニタ２００は、デバイスドライバ２０２及び２０４を監視し、それぞれの性能に応じてデバイスドライバ２０２及び２０４を適合させることにより、仮想マシン環境１００の性能、又は仮想マシン環境１００で稼働する仮想マシンの性能を向上させることができる。
【００２３】
[0027]  例えば、Ｗｅｂブラウザのようなアプリケーションが、ネットワークへのアクセスを要求することがある。Ｗｅｂブラウザが仮想マシン環境１００に実装されている場合、アプリケーションでは、ドライバドメイン１３４へのコンテキストスイッチ及びハイパーバイザ１２０へのコンテキストスイッチが発生する。
【００２４】
[0028]  ドライバモニタ２００は、仮想マシン１４６の性能を向上させるようにデバイスドライバ２０２及び２０４を適合させるために、デバイスドライバ２０２及び２０４について発生するコンテキストスイッチの割合を監視することができる。デバイスドライバ２０２及び２０４を適合させることには、仮想マシン環境１００の異なるドメイン又は層への機能の一部の移行を含んでもよい。例えば、デバイスドライバ２０２の一部分は仮想マシン１４６等信頼できないドメインで稼働し、デバイスドライバ２０２の別の一部分はハイパーバイザ１２０等の信頼できるドメインで稼働するよう、デバイスドライバ２０２及び２０４を分割できる。
【００２５】
[0029]  図３は、仮想マシン環境においてドライバドメイン１３４とハイパーバイザ１２０との間で分割されたデバイスドライバの例示的な実施形態のブロック図である。図面の参照番号２０２ａ及び２０２ｂで示されるデバイスドライバ２０２は、デバイスドライバ２０２の少なくとも一部分をハイパーバイザ１２０（信頼できるドメイン）に移行させることで、動的に適合されている。
【００２６】
[0030]  ドライバモニタ２００は、デバイスドライバ２０２の性能を監視するよう構成される。デバイスモニタ２００は、デバイスドライバ２０２で行われるコンテキストスイッチ、又はデバイスドライバ２０２に関係するコンテキストスイッチを監視する。デバイスドライバ２０２で行われるコンテキストスイッチを、コンテキストスイッチの割合に反映させることができる。
【００２７】
[0031]  ドライバモニタ２００は、ドライバドメイン１３４内の複数のデバイスドライバを監視していることがある。このため、ドライバモニタ２００は、コンテキストスイッチの割合が最も高いデバイスドライバを識別できる。或いは、ドライバモニタ２００は制御及びデータフロー分析を実行し、性能が低下しているデバイスドライバを識別することもできる。
【００２８】
[0032]  デバイスドライバ２０２がコンテキストスイッチの割合が比較的高いと識別されると、ドライバモニタ２００はデバイスドライバ２０２のスライスを自動的及び／又は動的に生成できる。
【００２９】
[0033]  図３は、デバイスドライバ２０２がドライバ部分２０２ａとドライバ部分２０２ｂとに分割されていることを示している。ある例では、ドライバ部分２０２ｂは完全なドライバであるものの、特定の機能がドライバ２０２ａによって実装される。
【００３０】
[0034]  ドライバ部分２０２ａ及び２０２ｂは、個々に独立して稼働できる、オリジナルのデバイスドライバ２０２のスタンドアローン要素を含む。ドライバ部分２０２ａはハイパーバイザ１０２の信頼できるドメインで稼働することができ、一方、ドライバ部分２０２ｂは引き続きドライバドメイン１３４（信頼できないドメインでもよい）で稼働を続ける。
【００３１】
[0035]  一実施形態では、デバイスドライバ２０２のスタンドアローン機能を識別する制御及びデータフロー分析手法を使用して、デバイスドライバ２０２を分割又はスライスすることができる。これは、スタンドアローンのコードセグメントが分割され、ドライバ部分２０２ａとして実装されることを可能にする。例えば、ドライバモニタ２００は、デバイスドライバに対応するネットワークインタフェースからのデータを追跡できる。ドライバモニタ２００は、デバイスドライバ２０２でのデータフローを監視することにより、デバイスドライバ２０２がコンテキストスイッチと関係しており、分割されることで恩恵を受け得ることを判別できる。制御フロー手法を使用すれば、かなりの時間を要しているソフトウェアループ構造、又は簡便な実行のパーティショニングを提供しているサブルーチン構成要素を識別できる。データフロー手法は、システムにおいて異なる信頼ドメイン間でのデータのコピーが回避されるように、特定のデータに触れる命令を識別する役割を果たし得る。
【００３２】
[0036]  ジャスト・イン・タイム（ＪＩＴ）バイナリコード変換は、動的にチェックされ、安全性が保証されるように、ドライバ部分２０２ａで行われた各メモリ参照をパッチするために使用できる。例えば、ドライバ２０２はドライバ部分２０２ａと２０２ｂとして実装されているが、ドライバ２０２のデータのための場所は一箇所かもしれない。ドライバ２０２のデータは、通常、ドライバドメイン１３４のデータ空間に格納される。このため、ドライバ部分２０２ａは、ハイパーバイザのデータ構造の格納、又はこのデータ構造へのアクセスを行うことはないので、データの破損に関連してドライバ部分２０２ａがハイパーバイザ１２０に悪影響を及ぼすことはない。
【００３３】
[0037]  ドライバ部分２０２ａは、ソフトウェアでサポートされるアドレス変換を使用して、データにアクセスすることができる。この手法により、ドライバ部分２０２ａは任意のゲストドメインコンテキストからドライバのデータ構造にアクセスすることができ、それによって、コンテキストスイッチが回避され、性能が向上する。一例では、デバイスドメイン１３４のアドレス空間内の仮想メモリのページアドレスをハイパーバイザ１２０のアドレス空間内のマッピングページアドレスにマッピングする変換テーブルが提供されている。変換テーブルエントリのマッピングページアドレスは、デバイスドメイン１３４のページアドレスと同じ物理的ページにマッピングするハイパーバイザページである。実行時に、ハイパーバイザ１２０のドライバ部分２０２ａからのデバイスドメイン１３４のアドレス空間内のデータに対するあらゆるメモリアクセスは、変換テーブルを使用して、マッピングアドレスにまず変換され、変換されたアドレスを使用して格納がなされる。
【００３４】
[0038]  したがって、ドライバモニタ２００は、デバイスドメイン１３４のデバイスドライバの性能を監視することにより、どのデバイスドライバを区分化又は分割すべきなのかを識別できる。類似のデータ分析手法をＪＩＴコンパイルシステムに適用すれば、頻繁に実行されることからハイパーバイザ１２０で有益にアクセラレートされるコードセグメントを識別できる。
【００３５】
[0039]  通常、ドライバドメイン１３４等の信頼できないドメインからハイパーバイザ１２０等の信頼できるドメインにソフトウェアを取り込むことは受け入れられない。前述したように、ドライバ部分２０２ａからのメモリ参照は、ソフトウェアで書き換えて実行時に安全性をチェックすることができる。
【００３６】
[0040]  図４は、仮想マシン環境で物理的リソースにアクセスするための方法の例示的な実施形態のフローチャートである。ブロック４０２で、ハイパーバイザは仮想マシン環境におけるデバイスドライバの性能を監視する。デバイスドライバの性能は、仮想マシンの性能に影響を及ぼす。
【００３７】
[0041]  ハイパーバイザは、ブロック４０４内で性能がしきい値を下回るデバイスドライバを識別する。例えば、デバイスドライバのコンテキストスイッチの割合の追跡を使用して、性能が低下しているデバイスドライバを識別できる。
【００３８】
[0042]  ブロック４０６で、ハイパーバイザはドライバを部分に適応させる。このような部分は、通常、ドライバのスタンドアローン部分であり、独立して稼働させることができる。ブロック４０８で、ドライバの部分は、異なるドメインで稼働している。具体的には、１つの部分を信頼できるドメインで稼働させ、別の部分を信頼できないドメインで稼働させてもよい。
【００３９】
[0043]  本明細書に開示されたこうした及びその他のプロセス及び方法について、そのプロセス及び方法で実施される機能を異なる順序で実装し得ることは、当業者であれば認識されよう。更に、概説したステップ及び動作は例として提供したものに過ぎず、ステップ及び動作の一部は、開示された実施形態の本質から逸れることなく、任意選択とすることも、結合してより少ないステップ及び動作にすることも、追加のステップ及び動作に拡張することも可能である。
【００４０】
[0044]  本開示は、本出願に記載される特定の実施形態に限定されるものではなく、様々な様態の例示として意図されている。当業者には明らかなように、本開示の趣旨及び範囲から逸脱することなく、多くの修正及び変形を行うことができる。本開示の範囲内にある機能的に等価な方法及び装置は、本明細書で列挙されたものに加えて、先に述べた記述から当業者にとっては明らかになろう。このような修正及び変形も、添付の請求項の範囲内に入ることを意図するものである。本開示は、添付の請求項の条件、加えてこのような請求項が充足する均等物の全範囲によってのみ限定されるものである。本開示は特定の方法、試薬、化合物組成物、又は生体系に限定されないことを理解されたい。これらは言うまでもなく変動する可能性がある。また、本明細書で使用する用語は特定の実施形態を説明することのみを目的としたものであり、限定的であることを意図するものでないことも理解されたい。
【００４１】
[0045]  図５は、本開示に従って仮想マシン環境で物理的リソースへのアクセスを実現するために配置された例示的なコンピューティングデバイス５００を示すブロック図である。非常に基本的な構成５０２では、コンピューティングデバイス５００は、通常、１つ又は複数のプロセッサ５０４及びシステムメモリ５０６を含む。プロセッサ５０４とシステムメモリ５０６との間の通信にメモリバス５０８を使用してもよい。
【００４２】
[0046]  所望の構成に応じて、プロセッサ５０４は、任意のタイプとすることができ、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、デジタル信号プロセッサ（ＤＳＰ）、又はその任意の組合せを含むが、これに限定されることはない。プロセッサ５０４は、レベル１キャッシュ５１０とレベル２キャッシュ５１２、プロセッサコア５１４、及びレジスタ５１６等、１つ又は複数のレベルのキャッシングを含んでもよい。例示的なプロセッサコア５１４は、算術論理装置（ＡＬＵ）、浮動小数点装置（ＦＰＵ）、デジタル信号処理コア（ＤＳＰコア）、又はその任意の組合せを含んでもよい。更に例示的なメモリコントローラ５１８をプロセッサ５０４と一緒に使用してもよく、又は実装によっては、メモリコントローラ５１８はプロセッサ５０４の内部的な一部分であってもよい。
【００４３】
[0047]  所望の構成に応じて、システムメモリ５０６は、任意のタイプであってよく、揮発性メモリ（ＲＡＭ等）、不揮発性メモリ（ＲＯＭ、フラッシュメモリ等）、又はその任意の組合せを含むが、これに限定されることはない。システムメモリ５０６は、オペレーティングシステム５２０、１つ又は複数のアプリケーション５２２、及びプログラムデータ５２４を含んでもよい。アプリケーション５２２は、仮想マシンの性能を向上させるために、異なるドメインで稼働するようコードセグメントを動的に適応させるために配置された、物理的リソース５２６へのアクセスを提供するためのアプリケーションプログラムを含んでもよい。プログラムデータ５２４は、異なるドメイン又はコンテキストでスタンドアローンセグメントとして稼働できる部分又はスライスにデバイスドライバを分割するために有益となり得る、仮想マシン５２８のアプリケーション又はデバイスドライバの性能を指し示すデータを含んでもよい。ある実施形態では、アプリケーション５２２は、コードセグメントが動的に分割され得るように、オペレーティングシステム５２０上のプログラムデータ５２４で動作するように、構成されてもよい。この記載の基本構成５０２を図５に示す。その構成要素は、内側の点線で囲んでいる。
【００４４】
[0048]  コンピューティングデバイス５００は、追加の特徴又は機能、及び基本構成５０２と必要とされる任意のデバイス及びインタフェースとの間の通信を容易にする追加のインタフェースを有してもよい。例えば、バス／インタフェースコントローラ５３０を使用して、基本構成５０２とストレージインタフェースバス５３４を介した１つ又は複数のデータ記憶デバイス５３２との間の通信を容易にしてもよい。データ記憶デバイス５３２は、取外し可能な記憶デバイス５３６、取外し不能の記憶デバイス５３８、又はその組合せであってもよい。取外し可能な記憶デバイス及び取外し不能の記憶デバイスの例としては、いくつか名前を挙げると、フレキシブルディスクドライブ及びハードディスクドライブ（ＨＤＤ）等の磁気ディスクデバイス、コンパクトディスク（ＣＤ）ドライブ又はデジタル多用途ディスク（ＤＶＤ）ドライブ等の光ディスクドライブ、ソリッドステートドライブ（ＳＤＤ）、及びテープドライブが含まれる。コンピュータ記憶媒体の例には、コンピュータで読取り可能な命令、データ構造、プログラムモジュール、又はその他のデータ等、情報を記憶しておくための任意の方法又は技術で実装された揮発性及び不揮発性、取外し可能及び取外し不能な媒体を含んでもよい。
【００４５】
[0049]  システムメモリ５０６、取外し可能な記憶デバイス５３６、及び取外し不能な記憶デバイス５３８は、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又はその他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）又はその他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又はその他の磁気記憶デバイス、あるいは所望の情報を記憶するために使用でき、コンピューティングデバイス５００からアクセスできるその他の任意の媒体を含むが、これに限定されることはない。このようなあらゆるコンピュータ記憶媒体が、コンピューティングデバイス５００の一部分であってよい。
【００４６】
[0050]  コンピューティングデバイス５００はまた、多様なインタフェースデバイス（出力デバイス５４２、周辺インタフェース５４４、及び通信デバイス５４６等）からバス／インタフェースコントローラ５３０を介し基本構成５０２への通信を容易にするためのインタフェースバス５４０を含んでもよい。例示的な出力デバイス５４２には、グラフィック処理装置５４８と音声処理装置５５０が含まれ、１つ又は複数のＡ／Ｖポート５５２を介しディスプレイ又はスピーカ等の多様な外部デバイスと通信するようにこれらを構成してもよい。例示的な周辺インタフェース５４４には、シリアルインタフェースコントローラ５５４又はパラレルインタフェースコントローラ５５６が含まれ、１つ又は複数のＩ／Ｏ５５８を介し、入力デバイス（キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス等）又はその他の周辺デバイス（プリンタ、スキャナ等）等の外部デバイスと通信するようにこれらを構成してもよい。例示的な通信デバイス５４６には、ネットワークコントローラ５６０が含まれ、１つ又は複数の通信ポート５６４を介したネットワーク通信リンク上の１つ又は複数のその他のコンピューティングデバイス５６２との通信を容易するようこれを配置してもよい。
【００４７】
[0051]  ネットワーク通信リンクは、通信媒体の一例となり得る。通信媒体は、一般的に、コンピュータで読取り可能な命令、データ構造、プログラムモジュール、又は搬送波やその他の伝送メカニズム等の変調されたデータ信号のその他のデータによって具現化でき、任意の情報配信媒体を含んでもよい。「変調されたデータ信号」は、信号の情報を符号化するように、その特性の１つ又は複数が設定又は変更された信号であってよい。通信媒体は、有線ネットワーク又は直接有線接続等の有線媒体、及び音響、無線周波数（ＲＦ）、マイクロ波、赤外線（ＩＲ）、及びその他の無線媒体等の無線媒体を含んでもよいが、これらは例として示すだけであって、これに限定するものではない。本明細書で使用するコンピュータで読取り可能な媒体という言葉には、記憶媒体と通信媒体の両方を含んでもよい。
【００４８】
[0052]  コンピューティングデバイス５００は、携帯電話、パーソナルデータアシスタント（ＰＤＡ）、パーソナルメディアプレーヤーデバイス、無線のＷｅｂ閲覧デバイス、パーソナルヘッドセットデバイス、アプリケーション固有のデバイス、又は上記の機能の任意を含むハイブリッドデバイス等の小型の携帯用（又はモバイル）電子デバイスの一部分として実装してもよい。コンピューティングデバイス５００はまた、ラップトップコンピュータ及び非ラップトップコンピュータの両方の構成を含む、パーソナルコンピュータとして実装してもよい。
【００４９】
[0053]  例示的な実施形態では、本明細書で説明する動作、プロセス等のいずれかを、コンピュータで読取り可能な媒体に格納したコンピュータで読取り可能な命令として実装できる。コンピュータで読取り可能な命令は、モバイル装置、ネットワーク要素、及び／又はその他の任意のコンピューティングデバイスのプロセッサで実行できる。
【００５０】
[0054]  システムの様態のハードウェア実装とソフトウェア実装との間にはほとんど区別はない。ハードウェアを使用するのか、ソフトウェアを使用するのかは、通常（但し、これは常にとは限らず、コンテキストによっては、ハードウェアとソフトウェアとの間の選択が重大となることもある）、設計上の選択であり、コストと効率のトレードオフである。本明細書で説明したプロセス及び／又はシステム及び／又はその他の技術を遂行するための媒体は多様であり（ハードウェア、ソフトウェア、及び／又はファームウェア）、望ましい媒体はそのプロセス及び／又はシステム及び／又はその他の技術が展開されるコンテキストに応じて異なる。例えば、実装者が速度と精度が重要であると決定するならば、主としてハードウェア及び／又はファームウェアの媒体を選択できる。柔軟性が重要であるならば、実装者は主としてソフトウェア実装を選択できる。或いは、更には代替的に、実装者は、ハードウェア、ソフトウェア、及び／又はファームウェアの何らかの組合せを選択してもよい。
【００５１】
[0055]  前述の詳細な説明では、ブロック図、フローチャート、及び／又は例の使用により、デバイス及び／又はプロセスの様々な実施形態を挙げた。このようなブロック図、フローチャート、及び／又は例が１つ又は複数の機能及び／又は動作を含む範囲で、このようなブロック図、フローチャート、又は例に含まれるそれぞれの機能及び／又は動作が、幅広いハードウェア、ソフトウェア、ファームウェア、又はそれらのほぼあらゆる組合せにより、個々に及び／又は全体的に実装できることは、当業者によって理解されるであろう。一実施形態では、本明細書に説明する対象のいくつかの部分は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）、又はその他の集積フォーマットを介して実装され得る。しかし、本明細書に開示される実施形態のいくつかの様態は、全体的に又は部分的に、１つ又は複数のコンピュータで動作する１つ又は複数のコンピュータプログラムとして（例えば、１つ又は複数のコンピュータシステムで動作する１つ又は複数のプログラムとして）、１つ又は複数のプロセッサで動作する１つ又は複数のプログラムとして（例えば、１つ又は複数のマイクロプロセッサで動作する１つ又は複数のプログラムとして）、ファームウェアとして、又はそれらのほぼあらゆる組合せとして、同様に集積回路に実装できることと共に、回路を設計すること及び／又はソフトウェア及び／又はファームウェアのコードを書くことが、当業者が本開示に鑑みて十分に実施できる程度の範囲にあることは、当業者には認識できるであろう。更に、本明細書に説明する対象のメカニズムは、様々な形態でプログラム生産物として配布できること、及び本明細書に説明する対象の例示的な実施形態は、実際に配布を実施するために使用される信号伝達媒体の特定の種類とは関係なく、適用されることは、当業者には認識できるであろう。信号伝達媒体の例は、以下のものを含むが、それに限定されることはない。フロッピー（登録商標）ディスク、ハードディスクドライブ、ＣＤ、ＤＶＤ、デジタルテープ、コンピュータメモリ等の記録可能なタイプの媒体、及びデジタル及び／又はアナログ通信媒体等の伝送タイプの媒体（例えば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンク等）。
【００５２】
[0056]  本明細書に挙げられている形態でデバイス及び／又はプロセスを記載し、その後、技術的手法を使用して、このような記載されるデバイス及び／又はプロセスをデータ処理システムに組み込むことが当該技術内で一般的であることは、当業者には認識できるであろう。即ち、本明細書に説明するデバイス及び／又はプロセスの少なくとも一部分は、十分な量の実験を通して、データ処理システムに組み込むことができる。代表的なデータ処理システムが、通常、システムユニットハウジング、ビデオ表示デバイス、揮発性メモリ及び不揮発性メモリ等のメモリ、マイクロプロセッサ及びデジタル信号プロセッサ等のプロセッサ、オペレーティングシステム、ドライバ、グラフィカルユーザインタフェース、及びアプリケーションプログラム等の計算エンティティ、タッチパッド又はスクリーン等の１つ又は複数の相互作用デバイス、及び／又はフィードバックループ及び制御モータを含む制御システム（例えば、位置及び／又は速度を検知するためのフィードバック、構成要素及び／又はロットを移動及び／又は調整するための制御モータ）の１つ又は複数を含むことは、当業者には認識できるであろう。代表的なデータ処理システムは、通常データ計算／通信及び／又はネットワーク計算／通信システムに見られるような、市販されている何らかの適切な構成要素を利用して、実装し得る。
【００５３】
[0057]  本明細書に説明する対象は、場合によっては、様々なその他の構成要素の中に含まれる、又は様々なその他の構成要素に接続される様々な構成要素を表す。当然ながら、このように表されるアーキテクチャは単なる例示であると共に、実際には、同じ機能を実現するその他の多くのアーキテクチャを実装できる。概念上、同じ機能を実現する構成要素のいかなる配置も、所望の機能が実現されるように、効率的に「関連付けられる（associated）」。したがって、特定の機能を実現するようここで結合されたいかなる２つの構成要素も、アーキテクチャ又は中間の構成要素とは無関係に、所望の機能が実現されるように互いに「関連付けられる（associated）」ものとしてみなすことができる。同様に、そのように関連付けられたいかなる２つの構成要素も、所望の機能を実現するよう、互いに「動作可能に接続（operably connected）」又は「動作可能に結合（operably coupled）」されていると考えることができると共に、そのように連関できるいかなる２つの構成要素も、所望の機能を実現するよう、互いに「動作可能に結合可能（operably couplable）」なものとしてみなすことができる。。動作可能に結合可能である具体的な例は、物理的な接合可能な及び／又は物理的に相互作用している構成要素及び／又は無線上相互作用可能な及び／又は無線上相互作用している構成要素及び／又は論理的に相互作用している及び／又は論理的に相互作用可能な構成要素を含むが、これに限定されることはない。
【００５４】
[0058]  本明細書中の実質的にいかなる複数形及び／又は単数形の用語の使用に関しても、コンテキスト及び／又はアプリケーションに適切であれば、当業者は複数形を単数形として及び／又は単数形を複数形として解釈できる。わかりやすくするため、様々な単数形／複数形の置換を、本明細書で明白に定義し得る。
【００５５】
[0059]  一般に、本明細書で、及び特に添付の請求項（例えば、添付の請求項の本文）で使用される用語は、概して「制限のない（open）」用語として意図されていることは、当業者には理解できるであろう（例えば、「含んでいる（including）」という用語は「含んでいるがこれに限定されない（including but not limited to）」として解釈すべきであり、「有する（having）」という用語は「少なくとも有する（having at least）」として解釈すべきであり、「含む（includes）」という用語は「含むがこれに限定されない（includes but is not limited to）」として解釈すべきである）。更に、特定の数の導入請求項の列挙が意図される場合、そのような意図は明示的に請求項に列挙され、そのような列挙がない場合は、そのような意図がないということが、当業者には理解できるであろう。例えば、理解の助けとして、以下の添付の請求項は、請求項の列挙を導入するために「少なくとも１つ」及び「１つ又は複数」という導入的語句の使用を含むことがある。しかしながら、そのような語句の使用は、同じ請求項に導入的語句「１つ又は複数」又は「少なくとも１つ」と「ａ」又は「ａｎ」等の不定冠詞が含まれるとしても、不定冠詞「ａ」又は「ａｎ」による請求項の列挙の導入によって、たった１つのそのような列挙を含む実施形態に対してそのように導入請求項の列挙を含むいかなる特定の請求項も限定されることを意味するものと解釈すべきでない（例えば、「ａ」及び／又は「ａｎ」は、「少なくとも１つ」又は「１つ又は複数」を意味するものと解釈すべきである）。請求項の列挙を導入するために使用される定冠詞の使用についても同じことが言える。更に、特定の数の導入請求項の列挙が明示的に列挙されていたとしても、そのような列挙は少なくとも列挙された数字を意味するものと解釈すべきであることは、当業者には認識できるであろう（例えば、その他の修飾語句のない単純な列挙「２つの列挙」は、少なくとも２つの列挙、又は２つ又はそれ以上の列挙を意味する）。更に、「Ａ、Ｂ、及びＣ等の少なくとも１つ」に類似する表記が使用されるような場合、通常、このような表記は、当業者がその表記を理解するような意味で意図される（例えば、「Ａ、Ｂ、及びＣの少なくとも１つを有するシステム」は、Ａだけ、Ｂだけ、Ｃだけ、ＡとＢとを一緒に、ＡとＣとを一緒に、ＢとＣとを一緒に、及び／又はＡとＢとＣとを一緒に有するシステムを含むが、それに限定されることはない、等）。「Ａ、Ｂ、及びＣ等の少なくとも１つ」に類似する表記が使用されるような場合、通常、このような表記は、当業者がその表記を理解するような意味で意図される（例えば、「Ａ、Ｂ、及びＣの少なくとも１つを有するシステム」は、Ａだけ、Ｂだけ、Ｃだけ、ＡとＢとを一緒に、ＡとＣとを一緒に、ＢとＣとを一緒に、及び／又はＡとＢとＣとを一緒に有するシステムを含むが、それに限定されることはない、等）。更に、２つ又はそれ以上の代替条件を表すほぼあらゆる選言的な単語及び／又は句は、説明であろうが、請求項であろうが、又は図面であろうが、その条件の１つ、条件のいずれか、又は両方の条件を含む可能性を検討するものと理解すべきであることは、当業者によって理解されるであろう。例えば、句「Ａ又はＢ」は、「Ａ」又は「Ｂ」或いは「ＡとＢ」の可能性を含むものと理解されよう。
【００５６】
[0060]  それに加えて、本開示の特長又は様態がマーカッシュ群の観点で記載される場合、マーカッシュ群の任意の個々のメンバー又はメンバーのサブグループの観点でも本開示が記載されていることは、当業者には認識できるであろう。
【００５７】
[0061]  当業者によって理解されるように、書面による説明を提供するという観点から等、あらゆる目的で、本明細書で開示される全ての範囲は、その範囲内のあらゆる可能な部分範囲及び部分範囲の組合せも包含する。列挙されるあらゆる範囲は、同じ範囲が少なくとも２等分、３等分、４等分、５等分、１０等分等に分解されることを十分に記載及び可能にするものとして容易に認識できる。非限定的な例として、本明細書に記載される各範囲は、下の３分の１、真ん中の３分の１、及び上の３分の１等に容易に分解できる。又、当業者によって理解されるように、「まで」、「少なくとも」及びそれに類似するもの等の全ての言葉は、列挙されている数字を含むと共に、前述したようにその後部分範囲に分解でき得る範囲を示す。最後に、当業者によって理解されるように、範囲は個々の各メンバーを含む。したがって、例えば、１〜３のセルを有するグループは、１つ、２つ、又は３つのセルを有するグループを示す。同様に、１〜５のセルを有するグループは、１つ、２つ、３つ、４つ、又は５つのセルを有するグループを示すというようになる。
【００５８】
[0062]  上記から、本開示の様々な実施形態は例示を目的として本明細書に記載したものであり、本開示の範囲及び趣旨から逸脱することなく、様々な変更を行い得ることが認識されよう。したがって、本明細書に開示される様々な実施形態は限定的であることを意図するものではなく、真の範囲及び趣旨は添付の請求項によって示される。
【符号の説明】
【００５９】
１００    仮想マシン環境
１１０    システムリソース
１２０    ハイパーバイザ
１３０    ドメイン
１３２    仮想マシン（ＶＭ）ドメイン
１３４    ドライバドメイン
１３６    ゲストオペレーティングシステム
１３８    ゲストオペレーティングシステム
１４０    アプリケーション
１４２    アプリケーション
１４４    アプリケーション
１４６    仮想マシン
２００    ドライバモニタ
２０２    デバイスドライバ
２０２ａ    ドライバ部分
２０２ｂ    ドライバ部分
２０４    デバイスドライバ
４０２    ブロック
４０４    ブロック
４０６    ブロック
４０８    ブロック
５００    コンピューティングデバイス
５０２    基本構成
５０４    プロセッサ
５０６    システムメモリ
５０８    メモリバス
５１０    レベル１キャッシュ
５１２    レベル２キャッシュ
５１４    プロセッサコア
５１６    レジスタ
５１８    メモリコントローラ
５２０    オペレーティングシステム
５２２    アプリケーション
５２４    プログラムデータ
５２６    物理的リソース
５２８    仮想マシン
５３０    バス／インタフェースコントローラ
５３２    データ記憶デバイス
５３４    ストレージインタフェースバス
５３６    取外し可能な記憶デバイス
５３８    取外し不能の記憶デバイス
５４０    インタフェースバス
５４２    出力デバイス
５４４    周辺インタフェース
５４６    通信デバイス
５４８    グラフィック処理装置
５５０    音声処理装置
５５２    Ａ／Ｖポート
５５４    シリアルインタフェースコントローラ
５５６    パラレルインタフェースコントローラ
５５８    Ｉ／Ｏ
５６０    ネットワークコントローラ
５６２    コンピューティングデバイス
５６４    通信ポート
【図１】
2011123857.tif 000003
【図２】
2011123857.tif 000004
【図３】
2011123857.tif 000005
【図４】
2011123857.tif 000006
【図５】
2011123857.tif 000007
【外国語明細書】
2011123857000001.pdf