(57)【要約】計算機は、第１及び第２の仮想マシン（ＶＭ）と、第１のＶＭに割り当てられたリソースとを有する。このリソースに対するそれぞれのアクセス・リクエストは、第１のＶＭが保存される又は移動されるまで、送られる。その後で、それぞれのアクセス・リクエストはそれぞれ保持キューへ転送される。リソースは、それ自体に送られたすべてのアクセス・リクエストに作用したときに、今後は、第２のＶＭに割り当てられ、保持キューにおけるそれぞれのアクセス・リクエストは第２のＶＭへ、そして次にリソースへ送られる。このようにして、リソースが第１のＶＭから削除され第２のＶＭに割り当てられた後でも、リソースに対するすべてのアクセス・リクエストは当該リソースに作用され、第１のＶＭの保存又は移動はこうして完了する。
2009528620.tif 000002
【特許請求の範囲】
【請求項１】
計算システムであって、
リソース・サービスを提供するリソースと、
インスタンス化された第１及び第２の仮想マシン（ＶＭ）を有する計算機であって、それぞれのＶＭは１又は複数のアプリケーションがインスタンス化されるオペレーティング・システムのインスタンスをホストし、第１のＶＭは当初から前記リソースに通信可能に結合されており、前記リソースは前記第１のＶＭに当初から割り当てられており、前記第１のＶＭは前記リソースと前記リソースによって提供されるサービスとを当初から有しており、前記第１のＶＭは保存可能であり第１のプラットフォームから第２のプラットフォームに移動可能なこの計算機の上のソフトウェア構成物である計算機と、
を備えており、前記第１のＶＭは、
前記リソースに対応するリソース・スタックであって、このリソース・スタックによって送られるアクセス・リクエストに従って前記リソースにアクセスするリソース・スタックと、
前記リソースに通信可能に結合された第１のポートと、
通信媒体に通信可能に結合された第２のポートと、
前記リソース・スタックと前記第１及び第２のポートとに通信可能に結合されており、前記リソース・スタックからのそれぞれのアクセスを前記第１及び第２のポートの一方においてキューされるように送るポート・リディレクタと、
を含み、前記ポート・リディレクタは、前記第１のＶＭが保存され移動されるように命じられるまで前記リソース・スタックからのそれぞれのアクセス・リクエストを前記第１のポートにおいてキューされるように送り、前記第１のポートにおけるそれぞれのアクセス・リクエストは前記リソースによって作用を受ける前記リソースに更に送られ、
前記ポート・リディレクタは、前記第１のＶＭが保存され移動されるとき及びその後に前記リソース・スタックからのそれぞれのアクセス・リクエストを前記第２のポートに送り、前記第２のポートにおけるそれぞれのアクセス・リクエストは、前記リソースが前記第１のポートにおいてキューされているすべてのアクセス・リクエストに作用し次いで前記第１のＶＭによって所有されている状態から削除された後でのみ更に送られ、
前記第２のＶＭは次いで前記リソースに通信可能に結合され、前記リソースは次いで前記リソースが前記第１のＶＭから削除された後で前記第２のＶＭに割り当てられ、前記第２のＶＭは次いで前記リソースと前記リソースによって提供されるサービスとを所有し、前記第２のＶＭは前記リソースの所有者として前記通信媒体を介して前記第１のＶＭの前記第２のポートに通信可能に結合され、前記第２のポートにおけるそれぞれのアクセス・リクエストは前記通信媒体を介して前記第２のＶＭに送られ、更に、前記リソースによって作用される前記第２のＶＭを介して前記リソースに送られ、
よって、前記第１のＶＭの前記リソース・スタックからのすべてのアクセス・リクエストは、前記リソースが前記第１のＶＭから削除され前記第２のＶＭに割り当てられた後でも前記リソースによって作用され、保存及び移動を完了することが可能であることを特徴とする計算システム。
【請求項２】
請求項１記載の計算システムにおいて、前記計算機は、前記第１のＶＭと前記第２のＶＭとを通信可能に結合する通信媒体としてＶＭバスを更に有することを特徴とする計算システム。
【請求項３】
請求項１記載の計算システムにおいて、前記計算機は前記リソースを有していることを特徴とする計算システム。
【請求項４】
請求項１記載の計算システムにおいて、前記リソースはハードウェア・リソースであることを特徴とする計算システム。
【請求項５】
請求項１記載の計算システムにおいて、前記リソースは記憶装置リソースであることを特徴とする計算システム。
【請求項６】
計算システムであって、
リソース・サービスを提供するリソースと、
インスタンス化された第１及び第２の仮想マシン（ＶＭ）を有する計算機であって、それぞれのＶＭは１又は複数のアプリケーションがインスタンス化されるオペレーティング・システムのインスタンスをホストし、第１のＶＭは当初から前記リソースに通信可能に結合されており、前記リソースは前記第１のＶＭに当初から割り当てられており、前記第１のＶＭは前記リソースと前記リソースによって提供されるサービスとを当初から有しており、前記第１のＶＭは保存可能であり第１のプラットフォームから第２のプラットフォームに移動可能なこの計算機の上のソフトウェア構成物である計算機と、
を備えており、前記第１のＶＭは、
前記リソースに対応するリソース・スタックであって、このリソース・スタックによって送られるアクセス・リクエストに従って前記リソースにアクセスするリソース・スタックと、
前記リソースに通信可能に結合された第１のポートと、
通信媒体に通信可能に結合された第２のポートと、
前記リソース・スタックと前記第１及び第２のポートとに通信可能に結合されており、前記リソース・スタックからのそれぞれのアクセスを前記第１及び第２のポートの一方においてキューされるように送るポート・リディレクタと、
を含む計算システムに関する方法であって、
前記ポート・リディレクタは、前記第１のＶＭが保存され移動されるように命じられるまで前記リソース・スタックからのそれぞれのアクセス・リクエストを前記第１のポートにおいてキューされるように送るステップであって、前記第１のポートにおいてキューされているそれぞれのアクセス・リクエストは前記リソースによって作用を受ける前記リソースに更に送られる、ステップと、
前記第１のＶＭが保存され移動され第１のプラットフォームから第２のプラットフォームに移動されるように命じられていると第１に判断し、前記第１の判断の際に、前記ポート・リディレクタは、前記リソース・スタックからのそれぞれのアクセス・リクエストを前記第２のポートにおいてキューされるように送るステップと、
前記第１のポートにおいてキューされており前記第１のポートによって送られたすべてのアクセス・リクエストに作用していることを第２に判断するステップと、
を含んでおり、前記第２の判断の際に、
前記リソースを、前記第１のＶＭによって所有されている状態から削除し、次いで第２のＶＭを前記リソースに通信可能に結合し、次いで前記リソースを前記第２のＶＭに割り当て、前記第２のＶＭが前記リソースと前記リソースによって提供されるサービスとを所有するようにし、
更に、前記第２のＶＭを前記リソースの所有者として前記通信媒体を介して前記第１のＶＭの前記第２のポートに通信可能に結合し、
前記第２のポートにおいてキューされているそれぞれのアクセス・リクエストを前記通信媒体を介して前記第２のＶＭに送り、それぞれのアクセス・リクエストは前記リソースによって作用される前記第２のＶＭを介して前記リソースに送られ、
よって、前記第１のＶＭの前記リソース・スタックからのすべてのアクセス・リクエストは、前記リソースが前記第１のＶＭから削除され前記第２のＶＭに割り当てられた後でも前記リソースによって作用され、前記第１のＶＭの保存及び移動が完了することを特徴とする方法。
【請求項７】
請求項６記載の方法において、前記計算機は、前記第１のＶＭと前記第２のＶＭとを通信可能に結合する通信媒体としてＶＭバスを更に有することを特徴とする方法。
【請求項８】
請求項６記載の方法において、前記計算機は前記リソースを有していることを特徴とする方法。
【請求項９】
請求項６記載の方法において、前記リソースはハードウェア・リソースであることを特徴とする方法。
【請求項１０】
請求項６記載の方法において、前記リソースは記憶装置リソースであることを特徴とする方法。
【請求項１１】
計算システムであって、
リソース・サービスを提供するリソースと、
インスタンス化された第１及び第２の仮想マシン（ＶＭ）を有する計算機であって、それぞれのＶＭは１又は複数のアプリケーションがインスタンス化されるオペレーティング・システムのインスタンスをホストし、第１のＶＭは当初から前記リソースに通信可能に結合されており、前記リソースは前記第１のＶＭに当初から割り当てられており、前記第１のＶＭは前記リソースと前記リソースによって提供されるサービスとを当初から有している、計算機と、
を含む計算システムに関する方法であって、
まず、前記リソースに対するそれぞれのアクセス・リクエストを、前記リソースによって作用されるリソースに送るステップと、
前記第１のＶＭが保存され移動され第１のプラットフォームから第２のプラットフォームに移動されるように命じられていると第１に判断し、前記第１の判断の際に、前記リソースに対するそれぞれのアクセス・リクエストを保持キューに送るステップと、
前記リソースが前記リソースに送られたすべてのアクセス・リクエストに作用していることを第２に判断するステップと、
を含んでおり、前記第２の判断の際に、
前記リソースを、前記第１のＶＭによって所有されている状態から削除し、次いで第２のＶＭを前記リソースに通信可能に結合し、次いで前記リソースを前記第２のＶＭに割り当て、前記第２のＶＭが前記リソースと前記リソースによって提供されるサービスとを所有するようにし、
更に、前記第２のＶＭを前記リソースの所有者として前記保持キューに通信可能に結合し、
前記保持キューにおけるそれぞれのアクセス・リクエストを前記第２のＶＭに送り、それぞれのアクセス・リクエストは前記リソースによって作用される前記第２のＶＭを介して前記リソースに送られ、
よって、前記リソースに対するすべてのアクセス・リクエストは、前記リソースが前記第１のＶＭから削除され前記第２のＶＭに割り当てられた後でも前記リソースによって作用され、前記第１のＶＭの保存及び移動が完了することを特徴とする方法。
【請求項１２】
請求項１１記載の方法において、前記計算機は、前記第１のＶＭと前記第２のＶＭとを通信可能に結合する通信媒体としてＶＭバスを更に有することを特徴とする方法。
【請求項１３】
請求項１１記載の方法において、前記計算機は前記リソースを有していることを特徴とする方法。
【請求項１４】
請求項１１記載の方法において、前記リソースはハードウェア・リソースであることを特徴とする方法。
【請求項１５】
請求項１１記載の方法において、前記リソースは記憶装置リソースであることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアデバイス、第１のマシンからの別のフィジカルデバイス、別のマシンへのプラットホーム又はプラットホームなどのリソースを所有する仮想マシンを移動させるために用いられることがある方法及び機構に関する。本発明は、特にリソースに関係のあるどんな状態情報も失わずに、そのような仮想マシンを移動させることを可能にするような方法及び機構に関する。
【背景技術】
【０００２】
評価されるべきように、仮想マシンはソフトウェアである、構築する、など、ａ上で動作すること、計算機又はハードウェア・システムをエミュレートするためのその他同種のもの。典型的に、必ずではなく、仮想マシンはアプリケーションなどで、そのようなユーザ−そのような計算機、又はそのような計算機上の他のアプリケーションからのアプリケーション−を同時に孤立させる間にユーザ・アプリケーションなどをホストするために計算機上で用いられる。仮想マシンの異なる変化、だろう、例えば書かれている、個々、異なる計算機のうちのどの上でも仮想マシンのために書かれたどんなユーザ・アプリケーションも操作することができるように多くの異なる計算機に。したがって、個々の異なる計算機のユーザ・アプリケーションの異なる変化は必要ではない。
【０００３】
計算機と新ソフトウェア用の新しいアーキテクチャは、単一の計算機が多くのパーティションを実証し実行することを今可能にする、個々、１つ以上のアプリケーションが実証されることがあるオペレーティングシステムのインスタンスを次にはホストする仮想マシンを実証するためにどれを雇うことができるかの。典型的に、ない、必ず、計算機は、仮想コンピュータ・モニタとのバーチャリゼーション層を含んでいる、など、それは監督者アプリケーション又は「ハイパーバイザー」として働く、バーチャリゼーション層が各仮想マシンの監視様相を監視しかつ／またはそうでなければ管理し、そして、各仮想マシンと、そのような仮想マシンに外部の世界の間の可能なリンクとして働くところで。
【０００４】
とりわけ、計算機上の特別の仮想マシンは、計算機に関連したリソースへのアクセスを要求することがある。理解すべきであるが、、そのようなリソースはある程度（任意の）計算機に関係しているかもしれないリソースであることがある。例えば、リソースは、蓄積とデータ検索への、及び一般に記憶装置が用いられるあらゆる目的のための記憶装置であることがある。同様に、リソースは、ネットワーク、プリンタ、スキャナ、ネットワーク・ドライブ、仮想ドライブ、サーバなどなどの他の長所であることがある。従って、リソースが何でも、仮想マシンには、そのようなリソースによって提供したサービスへのアクセスが実際提供されることがある。
【０００５】
実証された多数のパーティションを備えた計算機では、特別のＶＭがそのようなリソース、及び計算機上の他のＶＭからのリソースのためのサービス要求を直接コントロールすることができるように、計算機のどんな特別のリソースはも、特別のパーティション／仮想マシン（以下では、「仮想マシン」又は「ＶＭ」）にダイナミックに譲渡されることがある。そのような特別のＶＭはそれでは、そうである、効力中で、リソース・ホストＶＭ（「ＶＭ−Ｈ」）としてリソース能力を提供するホスト、それは特別のリソースを「所有」する。同様に、そのようなＶＭ−Ｈは、有効にリソース・クライアントＶＭ（「ＶＭ−Ｃ）などの能力を消費するクライアントである別のＶＭにリソース・サービスを提供する。したがって、組合せの中のＶＭ−Ｃ及びＶＭ−Ｈは、特別のリソースの使用を要求する動作を遂行する。
【０００６】
計算機上で典型的に動作する特別のＶＭ−Ｃは動作するために構築される、あたかも、かのように、実計算機。すなわち、あたかもそのような特別のリソースが直接のリクエスト経由でそれにアクセス可能かのように、特別のリソースへのアクセスにおける特別のＶＭ−Ｃは典型的には作用する。従って、それはＶＭ−Ｃが構築したその場合であることがある、パス、又はそれである期待値と共に、そのようなリクエストが導かれるドライバに積み重ねる（以下に、「積み重ねる」）特別のリソースはスタックの終わりにある。しかし、確立されたように、ＶＭ−Ｃは、実計算機及び特別のリソースがスタックの終わりに実際ないという事実にない。
【０００７】
従って、それは、スタックの終わりにあることとして、バーチャリゼーション層／仮想コンピュータ・モニタによってリソースがエミュレートされるというその場合であることがある。実際には、バーチャリゼーション層は、そのようなリソースへのアクセスを所有するかアクセスするＶＭ−Ｈへリソースの要請を転送する。同様に、それは、そのようなＶＭ−Ｃがそれの事実上の存在有無に気づいており、特別のリソースにリクエストを送信する、啓発された能力をＶＭ−Ｃが賦与されることがあるというその場合であることがある、経由で、１つの「啓蒙された」リソースへのアクセスを所有するかアクセスするＶＭ−ＨとＶＭ−Ｃを連絡するＶＭバス又は他の通信・パスがである終わりで積み重ねる、どこで、ＶＭバス・バイパス、バーチャリゼーション層。更に同様に、それはそうであることがある、ＶＭ―啓発された能力を備えたＣは、ＶＭ−ＣとＶＭバスでインプリメントされるようなＶＭ−Ｈの間の事実上のパイプ経由で特別のリソースにリクエストを送信する。いかなる通信プロトコルが雇われても、ＶＭ−ＣはＶＭ−Ｈ経由で特別のリソースにアクセスする。また、従って、特別のリソースにＶＭ−Ｃによって送信されたリクエストはそれぞれ、対応するＶＭ−Ｈ経由で特別のリソースへのパスに続く。
【０００８】
特に、特別のリソースをそれでは所有するＶＭ−Ｈに関して、ＶＭ−Ｈに譲渡されるリソースのための適切なアダプタ経由でそのようなＶＭ−Ｈが直接リソースをアクセスすることがあることは認識されるべきである。典型的に、必ずではなく、アダプタはＶＭ−Ｈの計算機上の１個のハードウェア又はソフトウェアであるが、どこで、そのようなハードウェア又はソフトウェアインターフェース、ＶＭ−Ｈへのリソース。例えば、そのようなアダプタはＬＡＮ接続カードまたはビデオカードであることがある、又はソフトウェア等価物。そのようなアダプタへの直接アクセスで、それでは、ＶＭ−Ｈは、比較的高度の効率及び性能を備えたリソースを雇うことができる。特別のリソースが特別のＶＭ−Ｈに割り当てられて、多数の対応するアダプタを各々潜在的に持っていることがあり、従って多数のＶＭ−Ｈが特別のリソースを所有することができることにここで注意してください。しかし、少なくとも典型的に、１つのＶＭ−Ｈだけに譲渡することができるか、又はいつでも特別のアダプタを「所有」する。とにかく、典型的に特別のアダプタの所有権が特別のアダプタのリソースの所有権に等しいと仮定することができる。
【０００９】
ＶＭの１つの品質証明はそれである、ＶＭ、として、１つの、仮想、構築する、停止され再度スタートすることができる、でしょう、そして更にそれ、停止上のＶＭは随意に保存し、検索し、再度始めることができる。特別の計算機上で実証されるようなＶＭは特に珍しいソフトウェアである、それを構築する、きれいにありえる、パッケージにする、ので、ソフトウェア、構築する、操作のデータ、及びＶＭに関係のある状態情報を含むそのようなＶＭへの関連付け情報をすべて含んでいる。その結果、第１の計算機上のＶＭは移動させることができるか、又は第１の計算機でＶＭを停止させて、第２のデバイスに停止されたＶＭを移動させて、第２の計算機などで移動されたＶＭを再度始めることにより、別の計算機に「移動」した。より一般には、ＶＭは、同様のやり方で第１のプラットホームから別のプラットホームへ移動させることができる。そこでは、プラットホームは、同じ計算機の異なる計算機か異なる構成を表わす。後の場合に、また、例えば、付加メモリが加えられる場合、評価されるべきように、計算機には異なる構成があることがある、プロセッサは変更される、追加入力デバイスは提供される、セレクション・デバイスは削除される、などである。
【００１０】
しかし、時には、ＶＭに関係のある状態情報のすべてがソフトウェア内に含まれているとは限らない、構築する、そのようなＶＭの。リソース又はそれのアダプタを所有するＶＭ−Ｈにはそのようなリソース又はそれのそのようなアダプタで備えられたリソースに関係のある特別の状態情報が特にあることがある。として、しかし１つの例、ＶＭ−Ｈがネットワーク及びＶＭ−Ｈまでに所有されるような対応するアダプタであるリソースを所有する場合、ＬＡＮ接続カードである、それはそうであることがある、ネットワークのためのある読書きコマンドなどのその状態情報、作用されるまでＬＡＮ接続カードに少なくとも一時的に格納される。別の例として、リソースが含まれたアダプタを備えたドライブを読む光ディスクである場合、それは同様にそうであることがある、ドライブ用のあるリードコマンドなどのその状態情報、そのようなドライブに格納される。として、まだ、別の例、リソースがプリンタ及び対応するアダプタである場合、プリントスプーラを含んでいる、更に、それは同様にそうであることがある、プリンタのためのある書込コマンドなどのその状態情報、そのようなスプーラに格納される。
【００１１】
とにかく、それは理解されることになっている、ＶＭの状態情報の一部がソフトウェア内に含まれていない場合、構築する、ＶＭの、のように、ＶＭ−Ｈがリソースを所有し、第１のプラットホームから別のプラットホームへＶＭを移動させて、リソースで状態情報を格納する場合、そうであることがある、より困難になる。リソースの状態情報がリソースのそのような状態情報が失われないか、永久にＶＭから分けられないようなもので分配されるまで、そのような移動は特に起こるべきでない。
【００１２】
したがって、必要は、ＶＭ−Ｈが第１のプラットホームから別のプラットホームへ移動させられることになっている時そのために所有されたリソースでＶＭ−Ｈの状態情報に対処するために存在する。必要は、特にリソースの状態情報が移動に先立ってそれの通常の動作中のリソースから削除することができるか、移動の後にＶＭ−Ｈまでに後の回復のためにほかに格納することができる方法及び機構のために存在するか、又は別のＶＭ−Ｈまでにほかに処理することができる。
【発明の概要】
【００１３】
前述のニーズは、その上に第１と第２仮想マシン（ＶＭ）を実証するリソース・サービス及び計算機の提供のために、計算機システムがリソースを持っている本発明によって少なくとも一部分満たされる。ＶＭはそれぞれ、１つ以上のアプリケーションが実証されることがあるオペレーティングシステムのインスタンスをホストする。第１のＶＭは、当初はリソースに通信でつながれる。また、第１のＶＭがリソースと提供したサービスを当初はそのために所有するように、リソースは第１のＶＭに当初は譲渡される。第１のＶＭは、第１のプラットホームから別のプラットホームへ保存され移動させることができる計算機上のソフトウェア構成物である。
【００１４】
第１のＶＭはリソース・スタックを含んでいる、対応する、に、またそのようなリソース経由で送られたアクセス・リクエストによってリソースにアクセスすること、積み重ねる、リソースに通信でつながれた一世ポート、１つの、通信手段に通信でつながれたポート、及びリソース・スタック、第１のポート及び第２のポートに通信でつながれたポート・リディレクタを支持する。ポート・リディレクタは、第１のポート及び第２のポートのうちの１つでキューなるリソース・スタックからの各アクセス・リクエストを進める。
【００１５】
ポート・リディレクタは、特に第１のＶＭが保存されるか移動させられるために導かれるまで、第１のポートでキューなるリソース・スタックからの各アクセス・リクエストを進める。第１のポートでのアクセス・リクエストはそれぞれ、そのようなリソースによって作用されるリソースへ、更に順番に転送される。第１のＶＭが保存されるか移動させられるために導かれ、その後、ポート・リディレクタが、リソースからの各アクセス・リクエストを進める場合、第２のポートへ積み重ねる。リソースがすべてのアクセス・リクエストに作用した後だけ、第２のポートでのアクセス・リクエストはそれぞれ更に順番に進められる、第１のポートでキューにし、第１のＶＭによって所有されることからその後取り除かれた。
【００１６】
第２のＶＭは、続いてリソースに通信でつながれる。また、第２のＶＭがリソースと提供したサービスを続いてそのために所有するように、リソースが第１のＶＭから取り除かれた後、リソースは第２のＶＭに続いて譲渡される。リソースの所有者としての第２のＶＭは、手段及び第２のポートでの各アクセス・リクエストが通信手段経由で第２のＶＭに更に順番に発送され、更にそのようなリソースによって作用される第２のＶＭ経由で、リソースへ順番に転送した通信経由で第１のＶＭの第２のポートに通信でつながれる。従って、リソースが第１のＶＭから取り除かれ、第２のＶＭ及び保存に割り当てられる後さえ、第１のＶＭのリソース・スタックからのすべてのアクセス・リクエストは、リソースによって順番に作用されるか又は移動する、その後完成することができる。
【発明を実施するための最良の形態】
【００１７】
コンピュータ環境：
図１及び以下の説明では、本発明が実装可能なある適切なコンピュータ環境の簡潔な概説を提供することが意図されるている。しかし、ハンドヘルド型機器、ポータブル及びすべての種類の他の計算機が本発明に関する使用のために想定されていることは理解されるはずである。汎用コンピュータが以下で述べられているが、これは単なる一例である。したがって、本発明は、全くわずかしか又は最小のクライアント・リソースだけしか関係しないネットワーク化されホストされているサービスの環境中で実行されることがある（例えば、クライアント・デバイスがワールド・ワイド・ウェブへの単なるブラウザかインターフェースとして役立つネットワーク環境）。
【００１８】
必須ではないが、本発明、開発者による使用のため、アプリケーション・プログラム・インターフェイス（ＡＰＩ）によって実行することができ、及び／又は、クライアント・ワークステーション、サーバ又は他のデバイスなどの１又は複数のコンピュータによって実行されて、プログラム・モジュールなどのコンピュータ実行可能命令の一般的なコンテキストで説明されるネットワーク・ブラウジング・ソフトウェア内に含まれる。一般に、プログラム・モジュールは、特別のタスクを実行するか特定の抽象データ・タイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含んでいる。典型的には、様々な実施例中で望まれるように、プログラム・モジュールの機能は組み合わせられることがあるし、分配されることがある。更に、当業者であれば、本発明が他のコンピュータ・システム構成でも実行可能であることを認識するはずである。本発明は、他の周知の計算システム、環境及び／又は構成においても使用が可能である。制限を意味しないが、パーソナル・コンピュータ（ＰＣ）、自動預金受払機、サーバ・コンピュータ、携帯型のデバイス又はラップトップ・デバイス、マルチプロセッサ方式、マイクロプロセッサ・ベースのシステム、プログラム可能な家電、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ、などが例である。本発明は、また、通信ネットワーク又は他のデータ伝送媒体によってリンクされる遠隔処理デバイスによってタスクが行なわれる分散コンピューティング環境中で実行されることがある。分散コンピューティング環境では、プログラム・モジュールは、記憶装置デバイスを含むローカル及びリモートのコンピュータ記憶媒体の両方に位置することがある。
【００１９】
図１では、本発明が実行されることがある適切な計算機システム環境１００の例を図解している。上述したように、計算システム環境１００は適切なコンピュータ環境の単なる１つの例であり、使用又は発明の機能の範囲に関してはどなどの制限も、示唆も意図もされていない。また、コンピュータ環境１００は、動作環境１００に図解されているコンポーネントのいかなる組合せにも限定されない。
【００２０】
図１に関して、本発明が実装される典型的なシステムは、汎用計算機をコンピュータ１１０の形で含んでいる。コンピュータ１１０の成分は、限定的ではないが、演算処理装置１２０、システム・メモリ１３０及び演算処理装置１２０へのシステム・メモリを含む様々なシステムコンポーネントを連結するシステム・バス１２１を含む。システム・バス１２１は、様々なバス方式の中の任意であり、メモリ・バスかメモリ・コントローラ、周辺バス及びローカルバスを含むいくつかのタイプのバス構造のいずれかでありうる。例示であって限定を意味しないが、そのようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ（ＩＳＡ）バス、マイクロチャネル・アーキテクチャ（ＭＣＡ）バス、エンハンストＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ（ＶＥＳＡ）ローカルバス、ペリフェラル・コンポーネント・インタコネクト（ＰＣＩ）バス（メザニーン・バスとしても知られる）及びＰＣＩエクスプレスを含む。
【００２１】
コンピュータ１１０は、典型的には様々なコンピュータ可読媒体を含んでいる。コンピュータ可読媒体は、コンピュータ１１０によってアクセスすることができ、揮発性・不揮発性の媒体、取り外し可能及び不可能な媒体を含むあらゆる利用可能な媒体でありうる。例示であり限定は意味しないが、コンピュータ可読媒体は、コンピュータ記憶装置媒体及び通信メディアを含むことがある。コンピュータ記憶装置媒体は、揮発性、コンピュータ可読命令、データ構造、プログラム・モジュール又は他のデータなどの情報の記憶のための任意の方法又は技術において実現される不揮発性で、取り外し可能及び不可能なメディアの両方を含んでいる。コンピュータ記憶装置媒体には、限定を意味しないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリ又は他のメモリ技術、ＣＤＲＯＭ、デジタル・バーサタイル・ディスク（ＤＶＤ）又は他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶装置、又は所望の情報を格納するために使用することができ、コンピュータ１１０によってアクセスすることができる他の媒体も含まれる。通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータを搬送波又は他の移送機構などの変調データ信号として実現される任意の情報配送媒体も含んでいる。用語「変調データ信号」は、信号中の情報をエンコードして１又は複数の特性を設定又は変更された信号を意味する。例示であるが、通信媒体には、ワイアード・ネットワークやダイレクト・ワイアード接続や光ファイバなどの有線媒体と、アコースティック、ＲＦ、赤外線、光、任意の波長で動作するフェーズド・アレー・アンテナ、任意の波長で動作する指向性及び非指向性型の電磁気エミッタ及び受信機、それ以外の無線媒体などが含まれる。上記のものの任意の組合せも、コンピュータ可読媒体の範囲に含まれる。
【００２２】
システム・メモリ１３０は、コンピュータ記憶装置媒体を、揮発性及び／又は読み取り専用メモリ（ＲＯＭ）１３１及びランダムアクセス記憶装置（ＲＡＭ）１３２などの不揮発性メモリの形で含んでいる。始動中にコンピュータ１１０内の要素間の情報を転送するのを支援する基本ルーチンを含む基本入出力システム１３３（ＢＩＯＳ）は、ＲＯＭ１３１に典型的に格納される。ＲＡＭ１３２は、典型的にはデータ及び／又は直ちにアクセス可能であり処理ユニット１２０が動作するプログラム・モジュールを含む。例示であるが、図１は、オペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラムモジュール１３６及びプログラム・データ１３７を図解している。
【００２３】
コンピュータ１１０は、取り外し可能な／不可能な、揮発性の／不揮発性のコンピュータ記憶装置媒体など、他のものを含んでいることがある。例示であるが、図１は、取り外し不可能で不揮発性の磁気媒体、取り外し可能で不揮発性の磁気ディスク１５２、磁気ディスク装置１５１、ＣＤＲＯＭ又は他の光学媒体などの取り外し可能で不揮発性の光ディスク１５６、光ディスク・ドライブ１５５などとの間で読み書きを行うハードディスクドライブ１４１を図解している。他の取り外し可能な／不可能、揮発性の／不揮発性のコンピュータ記憶装置媒体も典型的な動作操作環境において使用される。例示であるが、磁気カセットテープ、フラッシュ・メモリ・カード、ディジタル・バーサタイル・ディスク、デジタル・ビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれる。ハードディスク・ドライブ１４１は、インターフェース１４０などの取り外しが不可能なインターフェースを介してシステム・バス１２１に典型的に接続される。また、磁気ディスク装置１５１及び光ディスクドライブ１５５は、インターフェース１５０などの取り外しが可能なメモリ・インターフェースによってシステム・バス１２１に典型的に接続される。
【００２４】
上述され図１に図解されているドライブ及び関連するコンピュータ記憶装置媒体は、コンピュータ１１０のために、コンピュータ可読命令、データ構造、プログラムモジュール及び他のデータの記憶を提供する。図１では、例えば、ハードディスク・ドライブ１４１は、オペレーティングシステム１４４、アプリケーション・プログラム１４５、他のプログラムモジュール１４６及びプログラム・データ１４７の格納として図解される。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーション・プログラム１３５、他のプログラムモジュール１３６及び番組データ１３７と異なる場合も同一の場合もある。オペレーティングシステム１４４、アプリケーション・プログラム１４５、他のプログラムモジュール１４６及びプログラム・データ１４７は、最小では、それらが異なるコピーであることを図解するため、ここで異なる参照番号を与えられる。ユーザは、キーボード１６２や、マウス、トラックボール又はタッチパッドと一般に呼ばれるポインティング・デバイス１６１などの入力装置を介してコンピュータ１１０にコマンドと情報とを入力する。他の入力装置（図示せず）には、マイクロホン、ジョイスティック、ゲーム・パッド、衛星放送アンテナ、スキャナなどが含まれる。これら及び他の入力装置は、ユーザ入力によって演算処理装置１２０にしばしば接続されるシステム・バス１２１につながれるが、パラレルポート、ゲームポート又はユニバーサル・シリアル・バス（ＵＳＢ）などの、他のインターフェース１６０及びバス構造によって接続されることもある。
【００２５】
モニタ１９１又は他のタイプの表示装置もビデオインタフェース１９０などのインターフェース経由でシステム・バス１２１に接続される。ノースブリッジなどのグラフィックインターフェイス１８２もシステム・バス１２１に接続されることがある。ノースブリッジは、ＣＰＵ（すなわちホスト処理ユニット１２０）と通信し、アクセラレイテッド・グラフィック・ポート（ＡＧＰ）通信に対する責任を負うチップセットである。１つ以上のグラフィック処理装置（ＧＰＵ）１８４が、グラフィックインターフェイス１８２で伝達することがある。この点では、ＧＰＵ１８４は、一般にレジスタ記憶装置のように、オンチップ記憶装置を含んでいる。また、ＧＰＵ１８４はビデオメモリ１８６と通信する。しかし、ＧＰＵ１８４は、コプロセサのただ１つの例であり、様々なコプロセシング装置がコンピュータ１１０に含まれていることがある。モニタ１９１又は他のタイプの表示装置も、ビデオインタフェース１９０などのインターフェース経由でシステム・バス１２１に接続され、ビデオメモリ１８６と通信する。モニタ１９１に加えて、コンピュータは、更にスピーカ１９７及びプリンタ１９６などの他の周辺の出力デバイスを含んでいることがある。これらはアウトプット周辺インタフェース１９５によって接続されることがある。
【００２６】
コンピュータ１１０は、リモートコンピュータ１８０などの１又は複数のリモートコンピュータへの論理結合を使用して、ネットワーク化された環境中で動作することがある。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア・デバイス又は他の共通ネットワークノードであり、典型的には、記憶装置デバイス１８１だけが図１には図解されているが、コンピュータ１１０に関連のある多くの又はすべての要素を含む。図１に描かれた論理結合は、ローカルエリアネットワーク（ＬＡＮ）１７１及び広域ネットワーク（ＷＡＮ）１７３を含むが、更に他のネットワークを含むこともある。そのようなネットワーキング環境は、オフィス、企業全体に渡るコンピュータネットワーク、イントラネット及びインターネットなどにおいて、一般的である。
【００２７】
ＬＡＮネットワーキング環境の中で用いられるときには、コンピュータ１１０は、ネットワークインタフェイスまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境の中で用いられるときには、コンピュータ１１０は、典型的にはモデム１７２又はインターネットなどのＷＡＮ１７３の上の通信を確立する他の手段を含んでいる。モデム１７２（内蔵も外付けもありうる）が、ユーザ入力インターフェース１６０経由でシステム・バス１２１又は他の適切な機構に接続されることがある。ネットワーク化された環境では、コンピュータ１１０（又はその一部）との関係で示されているプログラムモジュールは、遠隔的な記憶装置に格納されることがある。例示であるが、図１は、メモリ・デバイス１８１に常駐するものとしてリモート・アプリケーション・プログラム１８５を図解している。示されているネットワーク接続は、コンピュータ間で用いられる例示的な通信リンクとして図解されている。
【００２８】
当業者であれば、コンピュータ１１０又は他のクライアントデバイスがコンピュータネットワークの一部として用いられることを認識するであろう。この点で、本発明は、任意の数のメモリ又は記憶装置、任意の数の記憶装置にわたって生じる任意の数のアプリケーション又は処理を有する任意のコンピュータ・システムに関係する。本発明は、リモート又はローカルなメモリを有するネットワーク環境中で用いられるサーバコンピュータとクライアント計算器を備えた環境に応用可能である。本発明は、更に、プログラミング言語機能、解釈及び実行能力を有するスタンドアロンの計算機にも応用可能である。
【００２９】
分散コンピューティングは、計算機とシステムとの間の直接的な交換によりコンピュータ・リソースとサービスとの共有を促進する。これらのリソースとサービスには、ファイルのための情報、キャッシュ記憶装置及びディスク記憶装置の交換が含まれる。分散コンピューティングは、ネットワーク接続の効果を利用して、クライアントが集合的な能力をてことして用いて企業全体に役立てることを可能にする。この点で、様々なデバイスが、相互作用することにより信頼できるグラフィックス・パイプラインのための本発明の認証技術を用いることができるアプリケーション、オブジェクト又はリソースを有する。
【００３０】
図２には、典型的なネットワーク化又は分配されたコンピュータ環境の概要図を提供する。分散コンピューティング環境は、計算オブジェクト１０ａ、１０ｂ、計算オブジェクト又はデバイス１１０ａ、１１０ｂ、１１０ｃなどを含む。これらのオブジェクトは、プログラム、メソッド、データ・ストア、プログラマブルロジックなどを含むことがある。オブジェクトは、ＰＤＡ、テレビ、ＭＰ３プレーヤ、パーソナルコンピュータなどの同じ又は異なるデバイスの部分で構成される。それぞれのオブジェクトは、通信ネットワーク１４経由で別のオブジェクトと通信できる。このネットワークは、図２のシステムにサービスを提供する他の計算するオブジェクト及び計算機をそれ自身が含むことがある。本発明のある側面によると、それぞれのオブジェクト１０又は１１０は、信頼されるグラフィックスパイプラインのための本発明の認証テクニックを必要とすることがある。
【００３１】
１１０ｃなどのオブジェクトが別の計算機１０又は１１０上においてホストされることもある。したがって、示されている物理的環境はコンピュータとして接続されているデバイスを示しているが、そのような図解は単なる例示であって、物理的環境を、ＰＤＡ、テレビ、ＭＰ３プレーヤなどなどの様々なデジタル・デバイス、インターフェースなどのソフトウェア・オブジェクト、ＣＯＭオブジェクトなどを含むようにも図解できる。
【００３２】
分散コンピューティングをサポートするシステム、コンポーネント及びネットワーク・コンフィギュレーションには様々なものがある。例えば、計算機システムを、ローカル・ネットワーク又は広域分散ネットワークを介して、有線又は無線によって接続することがある。現在では、ネットワークの多くはインターネットにつながれていて、インターネットが、広域的に分散された計算のためのインフラストラクチャを提供し、多くの異なるネットワークを包含する。
【００３３】
ホームネットワーキング環境では、少なくとも４つのネットワーク転送媒体が存在していて、それぞれが、電力線、データ（ワイヤレス及びワイヤードの両方）、ボイス（例えば、電話）及びエンタテイメント媒体というなどのユニークなプロトコルをサポートしている。光スイッチ及び器具などのほとんどの家庭用制御機器は、電力線を接続に使用している。データサービスは、ブロードバンド（例えばＤＳＬ又はケーブル・モデムのいずれか）として家庭に入り、ワイヤレス（例えば、ホームＲＦ又は８０２．１１ｂ）又はワーアード（例えば、ホームＰＮＡ、Ｃａｔ５、更には電力線も）接続のいずれかを用いて家庭内でアクセス可能である。音声トラフィックは、ワイアード（例えば、Ｃａｔ３）又はワイヤレス（例えば携帯電話）として家庭に入り、家庭の中ではＣａｔ３ワイアリングで分配される。エンタテイメント媒体は、サテライトかケーブルのいずれかを介して家庭に入り、典型的には同軸ケーブルを用いて家庭内では分配される。メディアデバイスのクラスターのためのデジタル相互接続としては、ＩＥＥＥ１３９４及びＤＶＩが普及している。プロトコル標準として普及しているこれらのネットワーク環境及び他のものは、すべて、インターネット経由で外部の世界に接続されるイントラネットを形成して相互に連結することがある。要するに、様々な異なるソースが、データの記憶と伝送とのために存在する。その結果として、計算機は、データ処理パイプラインのすべての部分において、コンテンツを保護する複数の方法を必要とする。
【００３４】
「インターネット」とは、一般的に、ＴＣＰ／ＩＰプロトコルを利用するネットワーク及びゲートウエイの集合を指し、これは、コンピュータ・ネットワーキングの技術において周知である。ＴＣＰ／ＩＰは「トランスミッション・コントロール・プロトコル／インターネット・プロトコル」の頭文字である。インターネットは、ユーザが互いに対話しネットワークを介して情報を共有することを可能にするコンピュータ処理ネットワークプロトコルによって相互に接続された地理的に分散するリモートコンピュータ・ネットワークのシステムと説明することができる。このように広範囲の情報を共有のため、インターネットなどの遠隔ネットワークは、これまでオープンなシステムとして成長してきたのであり、オープン・システムでは、開発者たちは、ほぼ制限なしで特別の動作又はサービスを実行するソフトウェア・アプリケーションを設計することができる。
【００３５】
したがって、こなどのネットワークインフラストラクチャにより、クライアント／サーバ、ピア・ツー・ピア又はハイブリッド・アーキテクチャなど多数のネットワークトポロジが可能になる。「クライアント」とは、それが関係していない別のクラス又はグループのサービスを利用するクラス又はグループのメンバである。したがって、コンピューティングでは、クライアントとはプロセスであり、つまり、別のプログラムによって提供されるサービスを要求する命令又はタスクの集合であると言える。クライアント・プロセスは、別のプログラム又はサービス自体に関するどんな作業上の詳細も「知る」ことは必要なく、要求されたサービスを利用する。クライアント／サーバ・アーキテクチャ（特にネットワーク化されたシステム）では、クライアントは、通常、別のコンピュータ（例えばサーバ）によって提供される共用のネットワーク・リソースにアクセスするコンピュータである。図２の例では、コンピュータ１１０ａ、１１０ｂなどはクライアントと考えることができ、コンピュータ１０ａ、１０ｂなどはサーバと考えることができる。ここで、サーバ１０ａ、１０ｂは、クライアント・コンピュータ１１０ａ、１１０ｂなどにおいて複製されるデータを維持管理する。
【００３６】
サーバは、典型的には、インターネットなどの遠隔ネットワークを介してアクセス可能な遠隔計算機システムである。クライアント・プロセスは、第１のコンピュータ・システムにおいてアクティブなことがあり、また、サーバプロセスは第２のコンピュータ・システムにおいてアクティブであって、通信媒体を介して相互に通信し、分配された機能を提供し、多数のクライアントがサーバの情報収集能力を利用することを可能が可能になる。
【００３７】
クライアントとサーバとはプロトコル層によって提供される機能を利用して、相互に通信する。例えば、ハイパーテキスト・トランスファ・プロトコル（ＨＴＴＰ）は、ワールド・ワイド・ウェブ（ＷＷＷ）と共に使用される一般的なプロトコルである。典型的には、ユニバーサル・リソース・ロケータ（ＵＲＬ）又はインターネット・プロトコル（ＩＰ）アドレスなどのコンピュータネットワーク・アドレスは、相互にサーバ又はクライアント・コンピュータを識別するのに用いられる。ネットワーク・アドレスは、ユニバーサル・リソース・ロケータ・アドレスと呼ばれることもある。例えば、通信は、通信手段を介して提供されることがある。特に、クライアントとサーバとは、大容量通信のためのＴＣＰ／ＩＰ接続によって相互に接続可能である。
【００３８】
このように、図２には、本発明が実装される例示的なネットワーク化された又は分散的な環境が図解されていて、ネットワーク／バスを介してサーバとクライアントとが通信する。より詳細には、多くのサーバ１０ａ、１０ｂが、通信ネットワーク／バス１４を介して相互接続されている。この通信ネットワーク／バス１４は、ＬＡＮ、ＷＡＮ、イントラネット、インターネットなどであり、ポータブル・コンピュータ、ハンドヘルドコンピュータ、シン・クライアント、ネットワーキングされた器具、又は、ＶＣＲ、ＴＶ、オーブン、照明、ヒータなどなどの他のデバイスを含む多数のクライアント又は遠隔計算機１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅなどが本発明に従って相互に連結されている。従って、本発明は、任意の計算機に応用が可能であり、信頼できるソースからの安全なコンテンツを処理、記憶又はレンダリングする、更には、仮想マシンによって生成された高性能グラフィックスのレンダリングに用いることができる。
【００３９】
例えば通信網／バス１４がインターネットであるようなネットワーク環境では、サーバ１０は、ＨＴＴＰなどの多くの既知のプロトコルの中の任意のものを介してクライアント１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅなどが通信するウェブサーバでありうる。分散型の計算環境の特性であるが、サーバ１０は、クライアント１１０として機能することもある。通信は、適正に応じて、有線の場合と無線の場合とがある。クライアントデバイス１１０は、通信網／バス１４を介して通信することも通信しないこともあって、独立した通信が関連付けられていることもある。テレビやＶＣＲの場合には、例えば、その制御に関しては、ネットワーク化された側面が存在する場合としない場合とがある。クライアントコンピュータ１１０及びサーバコンピュータ１０は、それぞれが、各種用途プログラムモジュール又はオブジェクト１３５、及び接続又は記憶素子又はオブジェクト（ファイルはそれを横切って格納されることがあるか、それにファイルの部分がダウンロードされることがあるし、移動させられることがある）の多種類へのアクセスを装備していることがある。したがって、本発明は、クライアントコンピュータ１１０ａ、１１０ｂ１など、及び他のデバイス１１１及びデータベース２０と対話することがあるコンピュータネットワーク／バス１４及びサーバコンピュータ１０ａでアクセスし対話することができるクライアント計算器１１０ａ、１１０ｂなどがある、コンピュータネットワーク環境、１０ｂなど中で利用することができる。
分割（パーティション）された計算機
ここで、図３を参照すると、計算機１０は、計算機１０にリソース・サービスを提供するために用いられる特定のリソース１２へのアクセスを含む又は有する。そのような計算機１０、リソース１２及びリソース・サービスは、任意の適切な計算機、リソース及び本発明の精神及び範囲から外れることのないリソース・サービスであることがある。例えば、計算機１０は、リソース１２データ提供保管サービスとしてハードディスク・ドライブでデスクトップかラップトップ・コンピュータなどなどのパーソナルコンピュータであることがある。同様に、計算機１０はすることがある、ディスプレイ・サービスを提供するリソース１２として表示画面を備えたポータブルオーディオかビデオプレーヤーなどのポータブル・プレイバック・マシンである。同様に、計算機１０は、通信サービスを提供するリソース１２としてのデータ通信網を備えたサーバマシンであることがある。同様のやり方で、サーバマシンはそれ自体リソース１２であることがある。リソース１２が特別の１片のハードウェア、特別の１片のハードウェアにアクセスするためのアダプタ、リモート・サービス、局所サービス、それの組合せなどであることがあることに注意してください。
【００４０】
意義深いことに、１つ以上のアプリケーションが実証されることがあるオペレーティングシステムのインスタンスを次にはホストする仮想マシンを実証するためにパーティションをそれぞれ雇うことができる場合、計算機１０は多くのパーティションを実行するように構成されている。示されているように、特別のＶＭ１４が直接そのような特別のリソース１２をコントロールすることができるように、そのような計算機１０では、計算機１０の特別のリソース１２は、特別のパーティションか仮想マシン１４（以下ではＶＭ１４）に譲渡される。そのような特別のＶＭ１４は、リソース能力（ＶＭ−Ｈ１４）を提供するホストである。同様に、そのようなＶＭ−Ｈ１４は、１つ以上の他のＶＭ１６にリソース・サービスを提供する。ここで、ＶＭ１６は、それぞれが、そのようなサービス（ＶＭ−Ｃ１６）を消費するクライアントである。典型的には、ＶＭ−Ｃ１６及びＶＭ−Ｈ１４は、それぞれが、リソースに関連する動作を実行するために、仮想マシン（ＶＭ）バス１８などのパイプ又はチャネル経由で通信する。
【００４１】
本発明の精神及び範囲から逸脱することなく、ＶＭバス１８は、計算機１０においてオブジェクトとして確立されることがあり、又はその代りに、それ自体では存在しない概念対象として確立されることがある。後の場合には、そのようなＶＭ１４及び１６が通信をその間に確立することに決める場合、評価されるべきように、そのような概念のＶＭバス１８はＶＭ１４及び１６の間の通信経路として明示される。そのようなＶＭバス１８の明示は特に発生すると考えられることがある、いつ、その間に通信することに決めるＶＭ１４及び１６の間に、そのようなＶＭ１４、各々、そのような通信のための必要なサービスを確立し、実際そのようなサービスを使用するように通信する。そのような場合には、通信が本発明の精神及び範囲から外れずに、計算機１０内の任意の適切な通信手段上に生じることがある。
【００４２】
そのようなモードは本発明の目的に絶対に必要に分かられないが、図３では、各ＶＭ１４、１６の計算機１０は、それについてユーザモード及びカーネル・モードの両方を含めるために機能的に動作することがある。コードの実行がハードウェアによってある動作を行なうことを禁止される場合、理解すべきであるが、、ユーザモードは一般に非特権状態（non-privileged）であるように、そのようなコードに割り当てられない記憶に書かれる。一般に、そのような禁止されている動作は、ＶＭ１４、１６のオペレーティングシステムを不安定にするか、又はセキュリティ上のリスクを構成する。オペレーティングシステムの点では、動作しているコードがカーネルによってシステム構成ファイルに書き、他のプロセスを殺し、システムをリブートするなどような潜在的に危険な動作を行なうことを禁止される場合、ユーザモードは類似した特権がない実行モードである。
【００４３】
更に理解すべきであるが、、カーネル・モードか特権モードはオペレーティングシステム及び関連するコア成分が動作するモードである。カーネル・モードで動作するコードは、ＶＭ／パーティション１４及び１６に譲渡されるシステムメモリー及びリソースに無制限にアクセスする。一般に、カーネル・モードで走るコードの量はセキュリティの目的及び上品の両方のために最小化される。概略的には、計算機１０のユーザは、ユーザモードとそこで動作しているアプリケーションとを介して最も直接的にインターフェースし、他方で、計算機１０は、カーネル・モードを介して最も直接的に特定のリソース１２を含むリソースとインターフェースする。
ハードウェア・リソース１２を有するＶＭ−Ｈ１４の移動：
上に指摘したように、ＶＭ１４及び１６は、仮想的な構成物として、随意に停止、保存、検索、再開が可能である。その結果、保存されるような第１のプラットホーム上のＶＭ１４及び１６は動かす、又は別のプラットホームへ「移動できる」。ここでプラットホームとは、同じ計算機の異なる計算機か異なる構成を表わす。したがって、ウェブサーバであるＶＭ１４及び１６は、例えば、第１の物理的なマシン上で走る、停止、移動、またウェブサーバのクライアントのない別の物理的なマシン上での再開が可能である。そのようなウェブサーバが移動されたことを更にわかっている。そのような移動で、それでは、第１の物理的なマシンはその上に走るワークを中断せずに、メンテナンスまたは再コンフィギュレーションにはオフラインに得ることができる。更に、そのような移動は、物理的なマシンのグループがダイナミックにロードの平衡を保つことを可能にする。同様に、ユーザの個人のワークスペースを表わすＶＭ１４及び１６は、ホームなどで、計算機１２間のユーザによって働いて移動させることができる。
【００４４】
しかし、時には、ＶＭ１４及び１６に関係のある状態情報のすべてが、ソフトウェア内に含まれているとは限らない、そのようなＶＭから１４と１６を造る。１個のハードウェア又はそれのアダプタであるリソース１２を所有するＶＭ−Ｈ１４にはそのようなリソース１２で備えられたリソース１２に関係のある特別の状態情報が特に存在することがある。状況により、どこでＶＭ−Ｈ１４の状態情報の一部、の中で、特別、ソフトウェア内に含まれていない、構築する、そのようなＶＭ−Ｈ１４のうち、それでは、第１のプラットホームから別のプラットホームへＶＭ−Ｈ１４を移動させることは困難になる、ｆｎ項目、リソース１２のＶＭ−Ｈ１４の状態情報が、リソース１２のそのような状態情報が失われないか、永久にＶＭ−Ｈ１４から分けられないようなもので分配されるまで、そのような移動は起こるべきでない。
【００４５】
ＶＭ−Ｈ１４がハードウェアリソース１２の使用での割込みを許容することができる１つのシナリオでは、リソース１２の状態情報は比較的、本来良性で、恐らくリソース１２に基づいて行動することができ、それの移動用のＶＭ−Ｈ１４を停止させる前にリソースから削除することができる。例えば、リソース１２がプリンタで、状態情報がプリントジョブに関係のある場合、プリントジョブはプリンタ（プリンタ・リソース１２の所有権はそれの後にＶＭ−Ｈ１４から奪われることがあり、そのようなＶＭ−Ｈ１４が移動させられることがある）によって状態情報が消費されるようなものを完成することを許すことができる。
【００４６】
ＶＭ−Ｈ１４がハードウェアリソース１２の使用での割込みを許容することができる別のシナリオでは、リソース１２の状態情報は多少本来それほど良性でないが、それの移動用のＶＭ−Ｈ１４を停止させる前にＶＭ−Ｈ１４に恐らく移動することができる。例えば、以前のように、リソース１２が同じプリンタで、以前のように、状態情報が同じプリントジョブに関係のある場合、しかし、そのようなプリントジョブは合理的な量の時間で終わることができない、プリントジョブは停止することができる、またプリントジョブに関係のある残存状態情報。それの移動（プリンタ・リソース１２の所有権はそれの後にＶＭ−Ｈ１４から再び奪われることがあり、そのようなＶＭ−Ｈ１４が移動させられることがある）用のＶＭ−Ｈ１４を停止させる前にＶＭ−Ｈ１４に移動することができる。移動の後にそれでは、また、ＶＭ−Ｈ１４が再び同じプリンタ・リソース１２を所有すると考えると、プリントジョブに関係のある残存状態情報は、プリントジョブを終えるためにＶＭ−Ｈ１４からそのようなプリンタに移動することができる。
【００４７】
しかし、それは前述の仮定をなすことができないというその場合でありえる。したがって、ＶＭ−Ｈ（移動が異なるタイプのプリンタなどの完全に異なるプリンタ・リソース１２だったことがある後、）１４、又はアップグレードされたプリント・コントローラと同じプリンタなどのわずかに異なるプリンタ・リソース１２によって所有されたプリンタ・リソース１２。著しく、いずれの場合も、異なるプリンタ・リソースがもはやそのような状態情報で認識しないか作用することができるので、プリントジョブを終えるためにＶＭ−Ｈ１４からそのようなプリンタにプリントジョブに関係のある残存状態情報を移動することができないことはありそうである。
【００４８】
また、リソース１２を所有するＶＭ−Ｈ１４は、ジョブリスト、内部状態マシン変数などを含むリソースで状態情報を含んでいることがある。ＶＭ−１４が任意に停止され再開されれば、リソース１２の状態情報は恐らく異なるだろう。また、顕著なリクエストはせいぜい、中断されるだろう。それはＶＭ−１４を衝突させる場合がある。最悪の場合でも、ドライバなどはリソース１２のためにシチュエーションを誤解し、リソース１２をプログラムする際にリソース１２の記憶を悪くし、その結果衝突するために再びＶＭ−Ｈ１４を引き起こすだろう、更に恐らく計算機１０上の他のＶＭ１４及び１６を同様に衝突させるだろう。
【００４９】
したがって、移動の後に同じ計算機１０上で、及びそれに利用可能な同じリソース１２でＶＭ−Ｈ１４が再度始められるであろうことが保証されることがある場合、ＶＭ−Ｈ１４のオペレーティングシステムにリソース１２から状態情報をすべて移動させて、同じを移動させる前にＶＭ−Ｈ１４で同じを格納させることは十分なことがある。ＶＭ−Ｈ１４が移動の後に再開される場合、それでは、ＶＭ−Ｈ１４のオペレーティングシステムは一層のアクション用のリソース１２に格納された状態情報をそのために移動させることができる。
【００５０】
しかし、そのような保証を持つことができない場合、又は作業負荷が移動に先立って状態情報の万物の移動を防ぐ場合、削除するほど多くの場合それがあることは、認識されることになっている「又は取り出す」移動に先立ったＶＭ−Ｈ１４までに所有権からのリソース１２。理解すべきであるが、、そのような突出は、ＶＭ−Ｈ１４のオペレーティングシステムへの適切なリクエストで達成することができる。本発明の１つの実施例中で、そのような突出は停止前に命じられる、移動させられるＶＭ−Ｈ１４、ＶＭ−Ｈ１４のオペレーティングシステムを移動させる、リソース１２からのその状態情報だけ、またＶＭ−Ｈ１４へ、考慮される、重要、またリソース１２の状態情報の万物未満で推測上ある。エジェクションの後、理解されるに違いないように、リソース１２は、ＶＭ−Ｈ１４まで関係のある状態情報を持っておらず、移動の前に、又はその移動の後に所有され、ＶＭ−Ｈ１４に利用可能ではない。したがって、移動の後、ＶＭ−Ｈ１４は、リソース１２にどんな状態情報も移動させることを試みないだろう。また、そのような動きからのどんな可能な問題もそのために回避される。もちろん、利用可能で、そのように望まれたならば、ＶＭ−Ｈ１４はリソース１２の所有権を回復しなければならない。
【００５１】
まだ別のシナリオでは、しかし、ＶＭ−Ｈ１４は、ハードウェアリソース１２の使用での割込みを許容することができない。また、リソース１２の状態情報はこのように、比較的本来批判的である。例えば、リソース１２がディスクドライブなどのＶＭ−Ｈ１４までに使用された主記憶装置である場合、同じへのアクセスはＶＭ−Ｈ１４まで重大である。さもないと、ＶＭ−Ｈ１４のオペレーティングシステムは衝突する。したがって、そのようなシナリオでは、ＶＭ−Ｈ１４がそのようなリソース１２への状態情報を常に導くことができなければならないので、ディスクドライブ・リソース１２の所有権がＶＭ−Ｈ１４から奪われることがある時点はない。そのようなシナリオでは、それでは、ＶＭ−Ｈ１４がそのようなリソース１２に状態情報を向けることをまだ可能にする同時にいる間、ある機構はリソース１２の休止動作に雇われ、ＶＭ−Ｈ１４のどんな状態情報もそこから削除するに違いない。
【００５２】
今、それを図４に向けることは見られる、典型的なＶＭ−Ｈ１４は、記憶装置スタック２２経由で記憶装置リソース１２などのリソース１２にアクセスする。それはファイルシステムドライバ、パーティション・ドライバ、ボリューム・ドライバ、ディスクドライバなどを含んでいることがある。もちろん、本発明は記憶装置リソース１２に制限されていなくその場合には、適切な対応するスタック２２などが同じにアクセスするために用いられることがあるが、その代り、本発明の趣旨及び範囲から外れずに、他のタイプのリソース１２であることがある。
【００５３】
示されたように、記憶装置、図４のうちの２２を積み重ねる、ポートのドライバ２４など（以下に、「２４を運ぶ」又は等価物）経由で記憶装置リソース１２と通信する。評価されることがあるとともに、また、典型的なように、ポート２４は総括的で理想化されたコマンドを翻訳する。また、記憶装置からのリクエストは、記憶装置リソース１２に特有のコマンド又はリクエストに２２を積み重ねる。顕著に、例えば、記憶装置リソース１２がＶＭ−Ｈ１４のオペレーティングシステムが存在する記憶の一部を含んでいる場合、ページングリクエストとその他同種のものを受理するために、そのような記憶装置リソース１２は連続操作にあるに違いない。さもないと、ＶＭ−Ｈ１４のオペレーティングシステムは衝突するだろう。手短かに言って、そのようなインスタンスでは、少なくともＶＭ−Ｈ１４がアクセス・リクエストの形をしている状態情報を常に導くことができなければならない限りでは、記憶装置リソース１２へのアクセスは中断することができない、など、そのような記憶装置リソース１２に。
【００５４】
従って、また図５に今オンを引き渡すこと、本発明の実施例、図４の単一ポート２４は１ペアのポート２４ａと取り替えられる、２４ｂ、どこで、ポート２４ａ、通信で、カップル、記憶装置リソース１２及びポート２４ｂを備えた記憶装置スタック２２、通信で、カップル、通信手段経由の代替宛先を備えた記憶装置スタック２２。示されるように、通信手段はＶＭバス１８である。また、推測上、代替宛先は、計算機１０上で動作する別のＶＭ１４及び１６である。しかし、代替宛先及び通信手段は本発明の趣旨及び範囲から外れずに、任意の適切な代替宛先及び通信手段であることがある。
【００５５】
本発明の１つの実施例中で、著しく、また、図５で見られたとともに、各ポート２４ａ、２４ｂは記憶装置につながれる、ポート・リディレクタ２６経由で２２を積み重ねる。恐らく評価されるように、ポート・リディレクタ２６は、ポートの２４ｂ及び通信・ミディアム／ＶＭバス１８経由でポートの２４ａ経由のそのような記憶装置リソース１２への記憶装置リソース１２又は代替宛先への１２のいずれかに各アクセス・リクエストを伝える。主に、ポート・リディレクタ２６は、下に述べられた方法で各アクセス・リクエストを指図する方法を決定する。
【００５６】
次に図６を参照すると、本発明のある１つの実施例では、記憶装置リソース１２などのリソース１２を所有するＶＭ−Ｈ１４を移動するのに用いられる一連の動作が示されている。この一連の動作は、このようなＶＭ−Ｈ１４を必ずしも移動させることなく保存するのにも用いられる。移動でも保存でも、ＶＭ−Ｈ１４の正常な実行時間動作の中には、記憶装置リソース１２はＶＭ−Ｈ１４によって所有され、ポート・リディレクタ２６は、アクセス・リクエストなどを、ＶＭ−Ｈ１４の記憶装置装置スタック２２から、記憶装置リソース１２にポート２４ａを介して方向付け、ポート２４ａと記憶装置リソース１２は、そのようなアクセス・リクエストなどをキュー・アップする（ステップ６０１）。しかし、いずれかの適切なソースによるＶＭ−Ｈ１４の保存及び移動の後で（ステップ６０３）、ポート・リディレクタ２６は、ＶＭ−Ｈ１４の記憶装置スタック２２からポート２４ｂにアクセス・リクエストなどを方向付ける（ステップ６０５）。
【００５７】
当初は、ポートの２４ｂは、受け取られたアクセス・リクエストなどをキューし、他方では、ポート２４ａと記憶装置リソース１２とが任意の残りのアクセス・リクエストなどを処理する（ステップ６０７）。こうして、ポート２４ａにおけるすべてのアクセス・リクエストなどと記憶装置リソース１２とは完了することが可能になり、その後では、それに関係する状態情報は、記憶装置リソース１２には残らない（ステップ６０９）。重要であるのは、ポート２４ａにおけるすべてのアクセス・リクエストなどと記憶装置リソース１２とは完了することが可能になるが、ポート２４ｂでは、更なるアクセス・リクエストなどがキューさて、そのようなアクセス・リクエストなどは、否定され、無視され、あるいはＶＭ−Ｈ１４のオペレーティング・システムをクラッシュさせる任意の態様で拒絶される。
【００５８】
顕著であるのは、ポート２４ａにおけるすべてのアクセス・リクエストなどと記憶装置リソース１２とがいったん完了してそれに関する状態情報が記憶装置リソース１２には残っていないようになると、記憶装置リソース１２は、おそらくはイジェクトなどによって（第１の）ＶＭ−Ｈ１４から取り除かれることにより（第１の）ＶＭ−Ｈ１４がもはやそれを有してないようにする（ステップ６１１）。この記憶装置リソース１２は、次に、別のＶＭ１４、１６に割り当てられる。この別のＶＭ１４、１６は、記憶装置リソース１２を有する第２のＶＭ−Ｈ１４である。理解すべきであるが、このような除去及び割り当ての実行は、本発明の精神及び範囲から逸脱することなく、任意の適切な方法によって、任意の適切な手段によってなされることが可能である。
【００５９】
更に、やはり顕著であるが、記憶装置リソース１２が第２のＶＭ−Ｈ１４にいったん割り当てられると、ポートの２４ｂは、ＶＭバス１８などを介して第２のＶＭ−Ｈ１４に結合され（ステップ６１５）、ポート２４ｂにおいてキューされているアクセス・リクエストなどは、次に、第２のＶＭ−Ｈ１４に送られ、現在所有している記憶装置リソース１２に送られる（ステップ６１７）。ここで理解すべきは、ある時点において、すべての必要なアクセス・リクエストなどは、第１のＶＭ−Ｈ１４の記憶装置スタック１２によって記憶装置リソース１２に送られる。これは、その保存又は移動の際に、ポート２４ａ又はポート２４ｂを介してなされる。記憶装置リソース１２は、そのようにして送られたアクセス・リクエストなどのすべてを処理する（ステップ６１９）。このようにして、第１のＶＭ−Ｈ１４の保存又は移動は完了する。ここで、記憶装置リソース１２に対するＶＭ−Ｈ１４からのアクセス・リクエストは、すべて、ポート２４ａによって直接的に又はポート２４ｂ及び第２のＶＭ−Ｈ１４によって間接的に、作用されることがわかる。また、記憶装置リソース１２が、第１のＶＭ−Ｈ１４のどのような状態情報を維持することなく第１のＶＭ−Ｈ１４から削除されることもわかっている（ステップ６２１）。
【００６０】
記憶装置リソース１２をその移動の後で第１のＶＭ−Ｈ１４に再度割り当てることは、ステップ６０３−６２１において実行された削除とは本質的に逆である。従って、そのような再割り当ての詳細をここで述べる必要はないと思われる。
【００６１】
第１のＶＭ−Ｈ１４のポートの２４ｂはそれが受け取った一般的なコマンドと特定のコマンドに変換するべきでない。第２のＶＭ−Ｈ１４の記憶装置スタック２２は、第１のＶＭ−Ｈ１４の記憶装置スタック２２よりも機能的に上にあることは必要ない。特に、そのようなスタック２２は、共に、一般的なコマンドを生じ、第２のＶＭ−Ｈ１４のポート２４において受け取られたそのような一般的なコマンドは、特定のものでありうる。
結論
本発明は少なくともホストとクライアントのＶＭ１４、１６の点から部分的に述べられるが、ハードウェアを所有するパーティションかＶＭが移動させられることになっているあらゆるシチュエーションの方へ本発明が導かれることは認識されることになっている。そのような移動するＶＭは恐らく他のクライアントへのホストであるが、それは、必ずしもそのような移動するＶＭが常に他のクライアントへのそのようなホストであるというその場合ではない。更に、それは評価されることになっている、移動の間のそれ、ＶＭ−Ｈ１４、で、ハードウェアデバイスの所有権を実際放棄する、少なくともここに使用される用語によって、ＶＭ−Ｃ１６になる。それでは評価されるべきとともに、ホストとクライアントのＶＭ１４及び１６のコンテキストに適切に示されたが本発明は、「ホスト」又は「クライアント」などの（つまり移動することで、そうする前に、別のＶＭにそのようなハードウェアの所有権を譲っているハードウェアを所有するＶＭの点から）項に対する尊敬なしでより適切に考慮されるべきである。
【００６２】
本発明に関して行なわれたプロセスを有効にするのに必要なプログラミングは、比較的真直ぐで、適切なプログラムする公に明白であるべきである。個々のそのようなオブジェクト及びステップに必要な機能性に基づいて、特に図５に示されるオブジェクトの各々を構築し、かつ更に図６のステップを有効にするのに必要なプログラミングは、特に明白に違いない。従って、そのようなプログラミングはここに付けられない。どんな特別のプログラミングもそれでは、それのスピリット及び範囲から外れずに、本発明を有効にするために用いられることがある。
【００６３】
本発明では、方法と機構は、ＶＭ−Ｈ１４が第１のプラットホームから別のプラットホームへ保存されることになっているか移動させられることになっている時そのために所有されたリソース１２でＶＭ−Ｈ１４の状態情報に対処するために提供される。リソース１２の状態情報は、移動に先立ってそれの通常の動作中のリソース１２から削除することができるか、又は移動の後にＶＭ−Ｈ１４までに後の回復のためにほかに格納することができるか、別のＶＭ−Ｈ１４までにほかに処理することができる。
【００６４】
それについて発明概念から外れずに、上に記述された実施例に変更を行なうことができることがあることは認識されるべきである。１例として、本発明はＶＭ−Ｈ１４の状態情報を備えたハードウェアリソース１２の点から述べられるが、そのようなリソース１２は、更に本発明の趣旨及び範囲から外れずに、ソフトウェアリソース１２などのＶＭ−Ｈ１４の状態情報を備えた別のタイプのリソースであることがある。別の例として、本発明はスタック２２の点から述べられるが、またリソース１２へのアクセスのために２４を運ぶ、そのようなものは２２を積み重ねて、２４を運ぶ、含むように意図される、だけでなく、積み重ねる、またそれぞれポートだがスピリットから外れずに、リソース１２、すべて及び本発明の範囲にアクセスするための他の適切なアクセスする機構。したがって、この発明が示された特別の実施例に制限されていないことは理解されるに違いない。しかし、それは、アペンドされたクレームによって定義されるような本発明の趣旨及び範囲内の変更をカバーするように意図される。
【図面の簡単な説明】
【００６５】
【図１】本発明を実装可能な例示的で制限的ではない計算環境を表すブロック図である。
【図２】本発明を実装可能な様々な計算機を有する例示的なネットワーク環境を表すブロック図である。
【図３】本発明の実施例による、特定のリソースを有しそのためのリソース・サービスを提供する仮想マシン（ＶＭ−Ｈ）を備えたホスト・パーティションとＶＭ−Ｈのリソース・サービスを用いる仮想マシン（ＶＭ−Ｃ）を備えたクライアント・パーティションとを含む複数のパーティションを動作させる計算機を示すブロック図である。
【図４】図３のＶＭ−Ｈを示すブロック図であり、そのようなＶＭ−Ｈが有するリソースに結合されている追加的な詳細が示されている。
【図５】図３のＶＭ−Ｈを示すブロック図であり、本発明のある１つの実施例による、ＶＭ−Ｈが有するリソースに結合されている追加的な詳細が示されている。
【図６】図５のＶＭ−Ｈに関して実行されるキー・ステップを示す流れ図であり、リソースへのすべてのアクセス・リクエストが本発明のある１つの実施例に従って適切に処理されることを保証しながら、ＶＭ−Ｈの保存及び移動が実行されている。
【図１】
2009528620.tif 000003
【図２】
2009528620.tif 000004
【図３】
2009528620.tif 000005
【図４】
2009528620.tif 000006
【図５】
2009528620.tif 000007
【図６】
2009528620.tif 000008
【国際調査報告】
2009528620.tif 000009
2009528620.tif 000010