(57)【特許請求の範囲】
【請求項１】
ホスト・コンピューティング・システム上の仮想ゲストのランタイム・メモリを保護する方法であって、前記ホスト・コンピューティング・システムが、仮想ゲスト、仮想マシン・マネージャ、及びランタイム・メモリを備えており、前記仮想ゲストは、前記仮想マシン・マネージャによって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含み、前記仮想マシン・マネージャは、前記仮想ゲストの動作を管理し、前記仮想ゲストは、当該仮想ゲスト上で実装されるソフトウェアである仮想ゲスト・メモリ装置を含み、前記仮想ゲスト・メモリ装置は、前記ランタイム・メモリを前記仮想マシン・マネージャがアクセスできないように前記仮想ゲストによって設定することによって、前記ランタイム・メモリを保護することを可能にし、前記方法は、前記ホスト・コンピューティング・システムが、
前記ホスト・コンピューティング・システム上の前記仮想ゲストを初期化するステップと、
前記仮想ゲストに対するランタイム・メモリの割当てを受け取るステップであって、前記ランタイム・メモリの割当てが、前記ホスト・コンピューティング・システムの前記ランタイム・メモリの一部分を含む、前記受け取るステップと、
前記ランタイム・メモリの割当ての少なくとも一部分を前記仮想マシン・マネージャによるアクセスができないように当該ランタイム・メモリの割当てに対するアクセス許可を前記仮想ゲストによって設定するステップと
を含む、前記方法。
【請求項２】
前記ホスト・コンピューティング・システムが、
前記仮想マシン・マネージャによるアクセスのための共有メモリ部分を確立するステップ
をさらに含み、
前記共有メモリ部分は、前記仮想ゲストの前記ランタイム・メモリの割当ての一部分を含む、
請求項１に記載の方法。
【請求項３】
前記ランタイム・メモリの割当てに対するアクセスが、前記仮想ゲストによって決定される、請求項２に記載の方法。
【請求項４】
前記ホスト・コンピューティング・システムが、
前記仮想マシン・マネージャとは無関係に、前記仮想ゲストが前記ホスト・コンピューティング・システムのプロセッサと直接通信していることを検証するステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記仮想ゲストが前記ホスト・コンピューティング・システムのプロセッサと直接通信していることを検証するステップは、
前記ホスト・コンピューティング・システムと通信するトラステッド・プラットフォーム・モジュール（「ＴＰＭ」）からのメトリクスに基づいて、前記仮想ゲストが前記プロセッサと直接通信していることを検証するステップ
をさらに含む、請求項４に記載の方法。
【請求項６】
前記ランタイム・メモリの割当ての少なくとも一部分を前記仮想マシン・マネージャによるアクセスができないように当該ランタイム・メモリの割当てに対するアクセス許可を前記仮想ゲストによって設定するステップは、
前記仮想マシン・マネージャとは無関係に、前記ホスト・コンピューティング・システムのプロセッサと直接に通信して、前記仮想ゲストの前記ランタイム・メモリの割当てのアクセス許可を前記仮想ゲストによって設定するステップ
をさらに含む、請求項１に記載の方法。
【請求項７】
前記ランタイム・メモリの割当ての少なくとも一部分を前記仮想マシン・マネージャによるアクセスができないように当該ランタイム・メモリの割当てに対するアクセス許可を前記仮想ゲストによって設定するステップは、
１つ又は複数の仮想ゲスト識別子を、前記ランタイム・メモリの割当ての特定のランタイム・メモリ・ページに関連付けるステップ
をさらに含み、
前記仮想ゲスト識別子の少なくとも１つは、前記仮想ゲストを識別するものであり、
前記ホスト・コンピューティング・システムのプロセッサは、リクエスタからの前記特定のランタイム・メモリ・ページへのアクセス要求を、前記リクエスタが前記特定のランタイム・メモリ・ページに関する対応する仮想ゲスト識別子を有しないことに応答して拒否する、
請求項１に記載の方法。
【請求項８】
前記仮想マシン・マネージャから前記仮想ゲストに、前記アクセスできないランタイム・メモリの少なくとも一部分にアクセスする要求を送るステップをさらに含む、請求項１に記載の方法。
【請求項９】
前記ホスト・コンピューティング・システムが、
前記仮想マシン・マネージャから、前記アクセスできないランタイム・メモリの少なくとも一部分にアクセスする要求を受け取るステップと、
前記要求が１つ又は複数の所定の基準を満たすことを判断するステップと、
前記要求が前記１つ又は複数の所定の基準を満たすとの判断に応答して、前記仮想マシン・マネージャに対して、前記アクセスできないランタイム・メモリの少なくとも一部分へのアクセスを承諾するステップと
をさらに含む。請求項１に記載の方法。
【請求項１０】
前記１つ又は複数の所定の基準は、メモリ・ダンプ・データに関する要求及び仮想ゲスト移動に関する要求の１つ又は複数を含む、請求項９に記載の方法。
【請求項１１】
前記ホスト・コンピューティング・システムが、
前記仮想マシン・マネージャに対して前記アクセスできないランタイム・メモリの少なくとも一部分のアクセスを承諾する前に、前記アクセスできないランタイム・メモリの特定のデータを暗号化するステップ
をさらに含む、請求項９に記載の方法。
【請求項１２】
前記ホスト・コンピューティング・システムが、
前記仮想ゲストに対する前記ランタイム・メモリの割当てを、前記仮想マシン・マネージャが前記ランタイム・メモリの割当てにアクセスすることなく無効化するための所定のコマンドを呼び出すステップ
をさらに含み、
前記ホスト・コンピューティング・システムは、前記所定のコマンドの呼び出しに応答して前記ランタイム・メモリの割当てを無効化する、
請求項１に記載の方法。
【請求項１３】
前記ホスト・コンピューティング・システムが、
前記仮想ゲストが応答しないことを検出するステップ
をさらに含み、
前記所定のコマンドを呼び出すステップは、
前記仮想ゲストが応答しないことの検出に応じて前記所定のコマンドを呼び出すステップ
をさらに含む、請求項１２に記載の方法。
【請求項１４】
ホスト・コンピューティング・システムであって、
仮想ゲストであって、当該仮想ゲスト上で実装されるソフトウェアである仮想ゲスト・メモリ装置を含む、前記仮想ゲストと、
前記仮想ゲストの動作を管理する仮想マシン・マネージャと、
ランタイム・メモリと
を備えており、
前記仮想ゲストは、前記仮想マシン・マネージャによって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含み、
前記仮想ゲスト・メモリ装置は、前記ランタイム・メモリを前記仮想マシン・マネージャがアクセスできないように前記仮想ゲストによって設定することによって、前記ランタイム・メモリを保護することを可能にし、
前記仮想ゲスト・メモリ装置は、
前記ホスト・コンピューティング・システム上の前記仮想ゲストを初期化する初期化モジュールと、
前記仮想ゲストに対するランタイム・メモリの割当てを受け取る受信モジュールであって、前記ランタイム・メモリの割当てが、前記ホスト・コンピューティング・システムのランタイム・メモリの一部分を含む、前記受信モジュールと、
前記ランタイム・メモリの割当ての少なくとも一部分を前記仮想マシン・マネージャによるアクセスができないように当該ランタイム・メモリの割当てに対するアクセス許可を前記仮想ゲストによって設定する保護モジュールと
を含む、
前記ホスト・コンピューティング・システム。
【請求項１５】
前記保護モジュールはさらに、
前記仮想マシン・マネージャによるアクセスのための共有メモリ部分を確立し、
前記共有メモリ部分は、前記仮想ゲストの前記ランタイム・メモリの割当ての一部分を含む、
請求項１４に記載のホスト・コンピューティング・システム。
【請求項１６】
前記仮想ゲスト・メモリ装置が、
前記仮想マシン・マネージャとは無関係に、前記仮想ゲストが前記ホスト・コンピューティング・システムのプロセッサと直接通信していることを検証する検証モジュール
をさらに含む、請求項１４又は１５に記載のホスト・コンピューティング・システム。
【請求項１７】
前記仮想ゲスト・メモリ装置が、
前記仮想マシン・マネージャから、前記アクセスできないランタイム・メモリの少なくとも一部分にアクセスする要求を受け取る要求受信モジュールと、
前記要求が１つ又は複数の所定の基準をみたすことを判断する判断モジュールと、
前記要求が前記１つ又は複数の所定の基準をみたすとの判断に応答して、前記仮想マシン・マネージャに対して、前記アクセスできないランタイム・メモリの少なくとも一部分へのアクセスを承諾するアクセス・モジュールと
をさらに含む、請求項１４〜１６のいずれか一項に記載のホスト・コンピューティング・システム。
【請求項１８】
前記仮想ゲスト・メモリ装置が、
前記仮想ゲストに対する前記ランタイム・メモリの割当てを、前記仮想マシン・マネージャが前記ランタイム・メモリの割当てにアクセスすることなく無効化するための所定のコマンドを呼び出す無効化コマンド・モジュール
をさらに含み、
前記ホスト・コンピューティング・システムは、前記無効化コマンド・モジュールが前記所定のコマンドを呼び出したことに応答して前記ランタイム・メモリの割当てを無効化する、
請求項１７に記載のホスト・コンピューティング・システム。
【請求項１９】
前記仮想ゲスト・メモリ装置が、
前記仮想ゲストが応答しないことを検出する検出モジュールと、
前記検出モジュールが、前記仮想ゲストが応答しないことを検出したことに応答して、前記仮想ゲストに対する前記ランタイム・メモリの割当てを、前記仮想マシン・マネージャが前記ランタイム・メモリの割当てにアクセスすることなく、無効化するための所定のコマンドを呼び出す無効化コマンド・モジュールと
をさらに含み、
前記ホスト・コンピューティング・システムは、前記無効化コマンド・モジュールが前記所定のコマンドを呼び出したことに応答して、前記ランタイム・メモリの割当てを無効化する、
請求項１４〜１８のいずれか一項に記載のホスト・コンピューティング・システム。
【請求項２０】
前記仮想ゲスト・メモリ装置が、
１つ又は複数の仮想ゲスト識別子を、前記ランタイム・メモリの割当ての特定のランタイム・メモリ・ページに関連づける関連付けモジュールであって、少なくとも１つの前記仮想ゲスト識別子が前記仮想ゲストを識別する、前記関連付けモジュールと、
リクエスタからの前記特定のランタイム・メモリ・ページへのアクセス要求を、前記リクエスタが前記特定のランタイム・メモリ・ページに関する対応する仮想ゲスト識別子を有することに応答して承諾するアクセス要求モジュールと
をさらに含む、請求項１４〜１９のいずれか一項に記載のホスト・コンピューティング・システム。
【請求項２１】
前記仮想ゲスト・メモリ装置が、
前記仮想マシン・マネージャから、前記仮想ゲストに対する前記ランタイム・メモリの割当てを無効化するための所定のコマンドに対する呼び出しを受取り、前記所定のコマンドに対する呼び出しを受け取ったことに応答して前記ランタイム・メモリの割当てを無効化する無効化コマンド・モジュール
をさらに含む、請求項１４〜１８のいずれか一項に記載のホスト・コンピューティング・システム。
【請求項２２】
前記仮想マシン・マネージャは、前記ホスト・コンピューティング・システムの仮想動作プラットフォームを提供する、請求項１４〜２１のいずれか一項に記載のホスト・コンピューティング・システム。
【請求項２３】
前記ホスト・コンピューティング・システムが、
プロセッサと、
前記プロセッサによる実行のためのモジュールを格納するメモリと、
を含むシステムと
をさらに備えている、請求項１４〜２２のいずれか一項に記載のホスト・コンピューティング・システム。
【請求項２４】
ホスト・コンピューティング・システム上の仮想ゲストのランタイム・メモリを保護する方法であって、前記ホスト・コンピューティング・システムが、仮想ゲスト、仮想マシン・マネージャ、及びランタイム・メモリを備えており、前記仮想マシン・マネージャは、前記仮想ゲストの動作を管理し、前記仮想ゲストは、当該仮想ゲスト上で実装されるソフトウェアである仮想ゲスト・メモリ装置を含み、前記仮想ゲスト・メモリ装置は、初期化モジュール、受信モジュール及び保護モジュールを含み、前記仮想ゲスト・メモリ装置は、前記ランタイム・メモリを前記仮想マシン・マネージャがアクセスできないように前記仮想ゲストによって設定することによって、前記ランタイム・メモリを保護することを可能にし、前記方法は、前記ホスト・コンピューティング・システムが、
前記初期化モジュールを用いて、前記ホスト・コンピューティング・システム上の前記仮想ゲストを初期化するステップと、
前記受信モジュールを用いて、前記仮想ゲストに対するランタイム・メモリの割当てを受け取るステップであって、前記ランタイム・メモリの割当てが、前記ホスト・コンピューティング・システムの前記ランタイム・メモリの一部分を含む、前記受け取るステップと、
前記保護モジュールを用いて、前記ランタイム・メモリの割当ての少なくとも一部分を前記仮想マシン・マネージャによるアクセスができないように当該ランタイム・メモリの割当てに対するアクセス許可を前記仮想ゲストによって設定するステップと
を含む、前記方法。
【請求項２５】
ホスト・コンピューティング・システムに、請求項１〜１３のいずれか一項に記載の方法の各ステップを実行させるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示される主題は、仮想化及び仮想ゲストに関し、より具体的には仮想ゲストのメモリを保護することに関する。
【背景技術】
【０００２】
ハードウェアの仮想化は、アプリケーション、プログラム、さらには完全なオペレーティング・システムでさえもホスト・コンピューティング・プラットフォームの「仮想ゲスト」として実行することができる１つ又は複数のコンピュータ環境をシミュレーションすることを含む、コンピューティング・プラットフォームの抽象化を可能にする。通常、ホスト上のハイパーバイザ又は仮想マシン・マネージャなどのアプリケーションが、これらの仮想コンピュータ環境を管理し及び／又は提供する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
現在の仮想化では、仮想ゲストは、典型的には、危険にさらされたホスト（例えば、ハイパーバイザ又は仮想マシン・マネージャ）に対して脆弱である。さらに、仮想ゲストがクラウド・コンピューティング環境で動作しているとき、仮想ゲストは、クラウド・プロバイダがそのホストをセキュリティ保護しており、そのアクセスを悪用しないことを信頼しなければならない。その結果として、機密調査又はその他の機密扱いのデータをホストするような多くの仮想ゲストは、パブリック・クラウド・コンピューティング環境では、ホストが仮想ゲストの機密データにアクセスする可能性があり得るので、実行することはできないであろう。
【課題を解決するための手段】
【０００４】
仮想ゲスト・メモリを保護する方法が提供される。この方法は、ホスト・コンピューティング・システム上の仮想ゲストを初期化することを含む。ホスト・コンピューティング・システムは、仮想ゲストの動作を管理する仮想マシン・マネージャを含む。仮想ゲストは、仮想マシン・マネージャによって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含む。本方法は、仮想ゲストに対するランタイム・メモリの割当てを受取ることを含む。ランタイム・メモリの割当ては、ホスト・コンピューティング・システムのランタイム・メモリの一部分を含む。本方法は、仮想ゲストによって、ランタイム・メモリの割当ての少なくとも一部分を仮想マシン・マネージャによるアクセスができないように設定することを含む。
【０００５】
仮想ゲスト・メモリを保護するための装置には、提示された方法に関する上記のことを機能的に実行するように構成された複数のモジュールが設けられる。これらのモジュールは、説明される実施形態において、初期化モジュール、受信モジュール、及び保護モジュールを含む。初期化モジュールは、ホスト・コンピューティング・システム上の仮想ゲストを初期化する。ホスト・コンピューティング・システムは、仮想ゲストの動作を管理する仮想マシン・マネージャを含む。仮想ゲストは、仮想マシン・マネージャによって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含む。受信モジュールは、仮想ゲストに対するランタイム・メモリの割当てを受けとる。ランタイム・メモリの割当ては、ホスト・コンピューティング・システムのランタイム・メモリの一部分を含む。保護モジュールは、仮想ゲストによって、ランタイム・メモリの割当ての少なくとも一部分を仮想マシン・マネージャによってアクセスできないように設定する。
【０００６】
仮想ゲスト・メモリを保護するためのシステムが提供される。このシステムは、ホスト・コンピューティング・システムのための仮想動作プラットフォームを提供する仮想マシン・マネージャと、プロセッサと、プロセッサによる実行のためのモジュールを格納するメモリとを含む。メモリは、ホスト・コンピューティング・システム上の仮想ゲストを初期化する初期化モジュールを含む。ホスト・コンピューティング・システムは、仮想ゲストの動作を管理する仮想マシン・マネージャを含む。仮想ゲストは、仮想マシン・マネージャによって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含む。受信モジュールは、仮想ゲストに対するランタイム・メモリの割当てを受取る。ランタイム・メモリの割当ては、ホスト・コンピューティング・システムのランタイム・メモリの一部分を含む。保護モジュールは、仮想ゲストによって、ランタイム・メモリの割当ての少なくとも一部分を仮想マシン・マネージャによるアクセスができないように設定する。
【０００７】
仮想ゲスト・メモリを保護するためのコンピュータ・プログラム製品が提供される。このコンピュータ・プログラム製品は、具体化されたコンピュータ可読プログラム・コードを有するコンピュータ可読記憶媒体を含む。コンピュータ可読プログラム・コードは、ホスト・コンピューティング・システム上の仮想ゲストを初期化するためのものである。ホスト・コンピューティング・システムは、仮想ゲストの動作を管理する仮想マシン・マネージャを含む。仮想ゲストは、仮想マシン・マネージャによって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含む。コンピュータ可読プログラム・コードは、仮想ゲストに対するランタイム・メモリの割当てを受取るためのものである。ランタイム・メモリの割当ては、ホスト・コンピューティング・システムのランタイム・メモリの一部分を含む。コンピュータ可読プログラム・コードは、仮想ゲストによって、ランタイム・メモリの割当ての少なくとも一部分を仮想マシン・マネージャによるアクセスができないように設定するためのものである。
【０００８】
別の方法が提供される。この方法は、仮想ゲスト・セキュリティ装置をホスト・コンピューティング・システム上に配備することを含む。仮想ゲスト・セキュリティ装置は、ホスト・コンピューティング・システム上の仮想ゲストを初期化することが可能である。ホスト・コンピューティング・システムは、仮想ゲストの動作を管理する仮想マシン・マネージャを含む。仮想ゲストは、仮想マシン・マネージャによって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含む。仮想ゲスト・セキュリティ装置は、仮想ゲストに対するランタイム・メモリの割当てを受取ることが可能である。ランタイム・メモリの割当ては、ホスト・コンピューティング・システムのランタイム・メモリの一部分を含む。仮想ゲスト・セキュリティ装置は、仮想ゲストによって、ランタイム・メモリの割当ての少なくとも一部分を仮想マシン・マネージャによってアクセスできないように設定することが可能である。
【発明の効果】
【０００９】
機密調査又は他の機密扱いのデータをホストするような多くの仮想ゲストをパブリック・クラウド・コンピューティング環境内で実行させることが、ホストがその仮想ゲストの機密データにアクセスできないので、可能になる。
【００１０】
本発明の実施形態の利点を容易に理解できるように、上で簡単に説明した実施形態のより具体的な説明を、添付の図面に示される特定の実施形態を参照しながら提供する。これらの図面は幾つかの実施形態のみを示したものであり、それゆえに範囲を限定するものであると見なすべきではないことを理解した上で、添付の図面を使用しながら、実施形態をさらに具体性かつ詳細に記載し、説明する。
【図面の簡単な説明】
【００１１】
【図１】本発明による、仮想ゲスト・メモリを保護するためのシステムの一実施形態を示す略ブロック図である。
【図２】本発明による、仮想ゲスト・メモリを保護するためのシステムの第２の実施形態を示す略ブロック図である。
【図３】本発明による、仮想ゲスト・メモリを保護するためのシステムの第３の実施形態を示す略ブロック図である。
【図４】本発明による、仮想ゲスト・メモリを保護するための装置の一実施形態を示す略ブロック図である。
【図５】本発明による、仮想ゲスト・メモリを保護するための装置の別の実施形態を示す詳細な略ブロック図である。
【図６】本発明による、仮想ゲスト・メモリを保護する方法の一実施形態を示す略フローチャート図である。
【図７】本発明による、仮想ゲスト・メモリを保護する方法の別の実施形態を示す略フローチャート図である。
【図８】本発明による、仮想ゲスト・セキュリティ装置を配備する方法の一実施形態を示す略フローチャート図である。
【図９】本発明による、仮想ゲスト・セキュリティ装置を配備する方法の一実施形態を示す図８の続きである。
【発明を実施するための形態】
【００１２】
本明細書を通して、特徴、利点、及び同様の言葉についての言及は、特徴及び利点の全てがいずれかの単一の実施形態において実現できることを意味しない。むしろ、特徴及び利点に言及する言葉は、特定の特徴、利点、又は特性が少なくとも１つの実施形態に含まれることを意味するものと理解される。従って、特徴及び利点、並びに同様の言葉についての議論は、本明細書を通して、必ずではないが、同じ実施形態に言及するものであり得る。
【００１３】
さらに、実施形態の説明される特徴、利点、及び特性は、任意の適切な様式で組み合せることができる。当業者であれば、実施形態は、特定の実施形態の特定の特徴又は利点のうちの１つ又は複数を用いずに実施することができることを認識するであろう。他の場合には、必ずしも全ての実施形態で提示されるわけではない付加的な特徴及び利点を特定の実施形態において認識することができる。
【００１４】
実施形態のこれらの特徴及び利点は、以下の説明及び添付の特許請求の範囲からさらに十分に明白となり、又は以下に説明するような実施形態の実践によって習得することができる。当業者であれば理解するように、本発明の態様は、システム、方法、及び／又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、又はソフトウェア態様とハードウェア態様を組合せた実施形態の形をとることができ、これらを本明細書では全て一般的に「回路」、「モジュール」、又は「システム」と呼ぶことができる。さらに、本発明の態様は、その上に具体化されたコンピュータ可読プログラム・コードを有する１つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形をとることができる。
【００１５】
本明細書において説明される機能ユニットの多くは、それらの実装の独立性をより具体的に強調するために、モジュールと呼ばれている。例えば、モジュールは、特注のＶＬＳＩ回路又はゲート・アレイ、論理チップ、トランジスタなど市販の半導体、又は他の個別の構成要素を含む、ハードウェア回路として実装することができる。モジュールは、フィールド・プログラム可能ゲート・アレイ、プログラム可能アレイ論理、プログラム可能論理デバイスなどのプログラム可能ハードウェア・デバイス内で実装することもできる。
【００１６】
モジュールは、種々の型式のプロセッサによる実行のためのソフトウェア内で実装することもできる。コンピュータ可読プログラム・コードの識別されるモジュールは、例えば、例えばオブジェクト、プロシージャ、又は関数として組織化することができるコンピュータ命令の１つ又は複数の物理ブロック又は論理ブロックを含むことができる。とはいえ、識別されるモジュールの実行プログラムは、物理的に一緒に配置される必要はなく、異なる位置に格納されたばらばらの命令を含むことができ、これらは論理的に一緒に連結されると、モジュールを構成して、モジュールの言明された目的を達成する。
【００１７】
実際には、コンピュータ可読プログラム・コードのモジュールは、単一の命令又は多数の命令とすることができ、さらには、幾つかの異なるコード・セグメント上、異なるプログラム間、及び幾つかのメモリデバイスにわたって分散させることもできる。同様に、動作データは、本明細書ではモジュール内で識別し及び示すことができ、任意の適切な形で具体化することができ、任意の適切な型式のデータ構造体内で組織化することができる。動作データは、単一のデータ・セットとして集めることができ、又は、異なる記憶デバイス上を含めて異なる位置にわたって分散させることができ、少なくとも部分的に、単にシステム又はネットワーク上の電子信号として存在することができる。モジュール又はモジュールの一部分がソフトウェア内で実装される場合、コンピュータ可読プログラム・コードは、１つ又は複数のコンピュータ可読媒体上に格納すること及び／又はその上で伝搬させることができる。
【００１８】
コンピュータ可読媒体は、コンピュータ可読プログラム・コードを格納する有形のコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁気、赤外、ホログラフィック、マイクロメカニカル、若しくは半導体のシステム、装置、若しくはデバイス、又はこれらの任意の適切な組合せとすることができるが、それらに限定されない。
【００１９】
コンピュータ可読記憶媒体のより具体的な例としては、それらに限定されないが、携帯用コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、携帯用コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、光記憶デバイス、磁気記憶デバイス、ホログラフィック記憶媒体、マイクロメカニカル記憶デバイス、又はこれらの任意の適切な組合せを挙げることができる。本明細書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、又はデバイスによって及び／又はそれらと接続して使用するための、コンピュータ可読プログラム・コードを収容及び／又は記憶することができる任意の有形媒体とすることができる。
【００２０】
コンピュータ可読媒体はまた、コンピュータ可読信号媒体とすることもできる。コンピュータ可読信号媒体は、具体化されたコンピュータ可読プログラム・コードを例えばベースバンド内に又は搬送波の一部分として有する伝搬データ信号を含むことができる。そのような伝搬信号は、それらに限定されないが、電気、電磁気、磁気、光、又はこれらの任意の適切な組合せを含む様々な形態のいずれかをとることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、又はデバイスにより又はそれらと接続して使用するためのコンピュータ可読プログラム・コードを伝達し、伝搬し、又は搬送することができる、任意のコンピュータ可読媒体とすることができる。コンピュータ可読信号媒体上に具体化されたコンピュータ可読プログラム・コードは、それらに限定されないが、有線、光ファイバ、無線周波数（ＲＦ）など、又はこれらの任意の組合せを含む任意の適切な媒体を用いて伝送することができる。
【００２１】
一実施形態において、コンピュータ可読媒体は、１つ又は複数のコンピュータ可読記憶媒体及び１つ又は複数のコンピュータ可読信号媒体の組合せを含むことができる。例えば、コンピュータ可読プログラム・コードを、プロセッサによる実行のために、電磁気信号として光ファイバケーブルを通して伝搬するとともに、プロセッサによる実行のためにＲＡＭ記憶デバイス上に格納することができる。
【００２２】
本発明の態様の動作を実行するためのコンピュータ可読プログラム・コードは、ＪａＶＡ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋、ＰＨＰなどのオブジェクト指向プログラミング言語、及び、「Ｃ」プログラミング言語又は類似のプログラミング言語などの通常の手続きプログラミング言語を含む、１つ又は複数のプログラミング言語の任意の組合せで記述することができる。コンピュータ可読プログラム・コードは、完全にユーザのコンピュータ上で又は部分的にユーザのコンピュータ上で独立型ソフトウェア・パッケージとして、又は部分的にユーザのコンピュータ上かつ部分的に遠隔コンピュータ上で、又は完全に遠隔コンピュータ若しくはサーバ上で、実行することができる。後者のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を含む任意の型式のネットワークを通してユーザのコンピュータに接続することができ、又は接続は外部コンピュータに対して行うことができる（例えば、インターネット・サービス・プロバイダを用いてインターネットを通して）。
【００２３】
本明細書を通して、「１つの実施形態」、「一実施形態」、又は類似の言葉に対する言及は、その実施形態に関連して説明される特定の特徴、構造、又は特性が少なくとも１つの実施形態に含まれることを意味する。従って、本明細書を通じて「１つの実施形態において」、「一実施形態において」又は類似の言葉の出現は、必ずではないが、全て同じ実施形態を指すこともあるが、しかし、特に明示的に断らない限り、「１つ又は複数のしかし全てではない実施形態」を意味する。用語「含む」、「備える」、「有する」及びそれらの変形は、特に明示的に断らない限り、「含むがそれらに限定されない」ことを意味する。項目の列挙リストは、特に明示的に断らない限り、項目のいずれか又は全てが相互排除的であること及び／又は相互包含的であることを意味しない。「１つの（ａ）」、「１つの（ａｎ）」及び「その（ｔｈｅ）」という用語は、特に明示的に断らない限り、「１つ又は複数」を指す。
【００２４】
さらに、説明される実施形態の特徴、構造、又は特性は任意の適切な様式で組み合せることができる。以下の説明において、実施形態の十分な理解を与えるために、多数の具体的な詳細、例えば、プログラミング、ソフトウェア・モジュール、ユーザ選択、ネットワーク・トランザクション、データベース・クエリ、データベース構造体、ハードウェア・モジュール、ハードウェア回路、ハードウェア・チップなどの例が与えられる。しかし、当業者であれば、実施形態は、具体的な詳細のうちの１つ又は複数がなくても、又は他の方法、構成要素、材料などを用いて、実施することができることを認識するであろう。他の事例では、周知の構造、材料、又は動作は、実施形態の態様を不明瞭にしないために、詳細に示さず又は説明しない。
【００２５】
以下で、本発明の実施形態による方法、装置、システム、及びコンピュータ・プログラム製品の略フローチャート図及び／又は略ブロック図を参照しながら、実施形態の態様を説明する。略フローチャート図及び／又は略ブロック図の各ブロック、及び略フローチャート図及び／又は略ブロック図内のブロックの組合せは、コンピュータ可読プログラム・コードによって実装することができることを理解されたい。コンピュータ可読プログラム・コードを、汎用コンピュータ、専用コンピュータ、シーケンサ、又は他のプログラム可能データ処理装置のプロセッサに与えて、マシンを生成し、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、略フローチャート図及び／又は略ブロック図の１つ又は複数ブロック内で指定された機能／動作を実装するための手段を作成するようにすることができる。
【００２６】
コンピュータ可読プログラム・コードを、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスに特定の方式で機能するように指示することができるコンピュータ可読媒体内に格納して、その結果、コンピュータ可読媒体内に格納された命令が、略フローチャート図及び／又は略ブロック図の１つ又は複数ブロック内で指定された機能／動作を実装する命令を含む製品を製造するようにすることもできる。
【００２７】
コンピュータ可読プログラム・コードを、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスにロードして、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で実行されるコンピュータ実施プロセスを生成する一連の動作ステップを生じさせ、その結果、コンピュータ又は他のプログラム可能装置上で実行されるプログラム・コードが、フローチャート図及び／又はブロック図の１つ又は複数ブロック内で指定された機能／動作を実装するプロセスを与えるようにすることもできる。
【００２８】
図面内の略フローチャート図及び／又は略ブロック図は、本発明の種々の実施形態による装置、システム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、及び動作を示す。この点に関して、略フローチャート図及び／又は略ブロック図内の各々のブロックは、指定された論理機能を実装するためのプログラム・コードの１つ又は複数の実行可能命令を含むモジュール、セグメント、又はコードの一部分を表すことができる。
【００２９】
幾つかの代替的な実装において、ブロック内に記された機能を、図中で記された順序とは異なる順序で行われてもよいことに留意されたい。例えば、関与する機能に応じて、連続して示された２つのブロックが実際には実質的に同時に実行されることもあり、又は、ブロックは、ときには逆の順序で実行されることもある。図に示された１つ又は複数のブロック、又はそれらの一部分と、機能、論理又は効果において均等な他のステップ及び方法を考案することができる。
【００３０】
フローチャート図及び／又はブロック図には種々の矢印型式及びの線の型式が用いられているが、これらは、対応する実施形態の範囲を限定するものではないと理解される。実際、幾つかの矢印又は他の連結記号は、図示した実施形態の論理フローを示すためだけに使用されている場合がある。例えば、矢印は、図示した実施形態の列挙されたステップ間の指定されていない継続期間の待ち時間又は監視時間を示すことができる。さらに、ブロック図及び／又はフローチャート図の各々のブロック、並びに、ブロック図及び／又はフローチャート図内のブロックの組合せは、指定された機能又は動作を実行する専用ハードウェアに基づくシステム、又は専用ハードウェアとコンピュータ可読プログラム・コードとの組合せによって実装することができることに留意されたい。
【００３１】
図１は、仮想ゲスト・メモリを保護するためのシステム１００の一実施形態を示す略ブロック図である。図示した実施形態において、システム１００は、複数の仮想ゲスト１２０ａ、１２０ｂのための複数の仮想マシン１１５ａ、１１５ｂを提供する仮想マシン・マネージャ１１０を有する、ホスト・コンピューティング・システム１０５を含む。ホスト・コンピューティング・システム１０５は、ネットワーク１２５を通じて１つ又は複数のクライアント１３０ａ、１３０ｂ、１３０ｃと通信する。
【００３２】
ホスト・コンピューティング・システム１０５は、サーバ・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、モバイル機器、セットトップボックス、又は他の機器によって具体化することができる。一実施形態において、ホスト・コンピューティング・システム１０５は、及び／又は付加的なコンピューティング・システムと共同で動作するホスト・コンピューティング・システム１０５は、クライアント１３０ａ、１３０ｂ、１３０ｃによるネットワーク１２５上でのオンデマンド・アクセスのためのアプリケーション、ドキュメント、及びデータをホストし、格納し、及び／又は提供する、クラウド・コンピューティング・プラットフォームを提供する。クライアント１３０ａは、ネットワーク１２５を通じて仮想ゲスト１２０ａと通信し対話することができる。例えば、仮想ゲスト・オペレーティング・システム１２０ａは、クラウド・コンピューティング・サーバ上に常駐することができる。仮想ゲスト・オペレーティング・システム１２０ａは、ワードプロセッサ・アプリケーションを実行することができ、ユーザは、その上で、クライアントを通じてワードプロセッサ文書にアクセスすることができる。
【００３３】
ホスト・コンピューティング・システム１０５は、プロセッサと、コンピュータ可読プログラムを格納するメモリとを含むことができる。メモリは、動的ランダム・アクセス・メモリ（「ＤＲＡＭ」）、静的ランダム・アクセス・メモリ（「ＳＲＡＭ」）などの揮発性メモリ、又は他の適切な揮発性メモリによって具体化することができる。当業者には周知のように、プロセッサはコンピュータ可読プログラムを実行する。コンピュータ可読プログラムは、ホスト・コンピューティング・システム１０５内の記憶装置に有形に格納することができる。記憶装置としては、ソリッド・ステート・ドライブ（「ＳＳＤ」）、ハード・ディスク・ドライブ（「ＨＤＤ」）、光記憶装置、ホログラフィック記憶装置、マイクロメカニカル記憶装置、又は他の不揮発性データ記憶装置を挙げることができる。
【００３４】
ネットワーク１２５は、インターネット、ローカル・エリア・ネットワーク（「ＬＡＮ」）、無線ＬＡＮ（「ＷＬＡＮ」）、インターネット上で通信する複数のＬＡＮ、又は他の任意の同様の通信ネットワークなどの、通信ネットワークを含むことができる。各クライアント１３０ａ、１３０ｂ、１３０ｃは、ネットワーク１２５を介してホスト・コンピューティング・システム１０５と通信する。一実施形態において、クライアント１３０ａは、デスクトップ・コンピュータ、ポータブル・コンピュータ、サーバ、メインフレーム・コンピュータ、手持ち式コンピューティング機器、タッチ機器、ＰＤＡ、タブレット・コンピュータ、電子書籍リーダ、携帯電話、スマートフォンなどとして具体化することができる。
【００３５】
仮想マシン・マネージャ１１０は、ハイパーバイザ又は仮想マシン・モニタとしても知られ、内部で仮想ゲスト１２０ａが動作するための仮想マシン１１５ａすなわち仮想動作プラットフォームを提供する。当業者には知られているように、仮想マシン１５０ａはホスト・コンピューティング・システム１０５の実際のハードウェア特性を抽象化したものであり、仮想ゲスト１２０が使用するためのコンピューティング・リソースの仮想表現を与える。仮想ゲスト１２０ａは、仮想マシン１１５ａ内で、あたかもホスト・コンピューティング・システム１０５上で直接動作しているかのように実行されるが、但し、仮想マシン・マネージャ１１０が、仮想ゲスト１２０ａの実行を管理し、種々のシステム・リソースへのアクセスを制限することができる。仮想マシン・マネージャ１１０は、下層のホスト・コンピューティング・システム１０５のリソースの一部分、例えば、下層のマシン、カーネル・コール、ハードウェア・レジスタなどのホスト・コンピューティング・システム１０５の命令セットのサブセットを、各々の仮想ゲスト１２０ａ、１２０ｂに与えることができる。
【００３６】
図示した実施形態において、仮想マシン・マネージャ１１０は、各々が仮想ゲスト１２０ａ、１２０ｂを伴う２つの仮想マシン１１５ａ、１１５ｂを含む。しかし、任意の適切な数の仮想マシン１１５ａ、１１５ｂ及び仮想ゲスト１２０ａ、１２０ｂを使用することができる。各々の仮想ゲスト１２０ａ、１２０ｂは、アプリケーション又はプログラムとすることができる。一実施形態において、仮想ゲスト１２０ａはオペレーティング・システムである。仮想ゲスト・オペレーティング・システム１２０ａは、ホスト・コンピューティング・システム１０５のハードウェアと直接通信していると仮定することができる。例えば、仮想ゲスト・オペレーティング・システム１２０ａは、メモリ上の物理アドレスと、アプリケーションなどのクライアントからプロセッサが受取る論理アドレスとの間のマッピングを格納するページ・テーブルを保持することができる。仮想ゲスト・オペレーティング・システム１２０ａは、そのページ・テーブル内の物理アドレスがメモリ上の実際の物理アドレスであること、及び、仮想ゲスト・オペレーティング・システム１２０ａがホスト・コンピューティング・システム１０５のプロセッサ又は他のハードウェア・データ構造体と実際に通信することを仮定することができる。しかし、仮想ゲスト・オペレーティング・システム１２０ａは、プロセッサの代わりに実際には仮想マシン・マネージャ１１０と通信することができ、想定された物理アドレスは仮想マシン・マネージャ１１０によって仮想アドレスとして扱われ、仮想マシン・マネージャ１１０は、各々の想定された物理アドレスをホスト・コンピューティング・システムのメモリの実際の物理アドレスにマッピングするための別の層のマッピングを行う。
【００３７】
図２は、仮想ゲスト・メモリを保護するためのシステム２００の別の実施形態を示す略ブロック図である。具体的には、図２は、図１のホスト・コンピューティング・システム１０５、仮想マシン・マネージャ１１０、仮想マシン１１５、及び仮想ゲスト１２０の一実施形態を示す。仮想ゲスト１２０は、仮想ゲスト・メモリ装置２０５を含み、ホスト・コンピューティング・システム１０５は、ランタイム・メモリ２１０及びプロセッサ２１５を含む。
【００３８】
従来の仮想マシン・マネージャ１１０は、プロセッサ・リソース、Ｉ／Ｏリソース、及びホスト・コンピューティング・システム１０５上で動作する仮想ゲスト１２０のためのランタイム・メモリ２１０を管理し、これには各々の仮想ゲスト１２０に対するホスト・コンピューティング・システム１０５のランタイム・メモリ２１０の一部分のメモリ割当てが含まれる。従来の仮想マシン・マネージャ１１０は、従来の仮想ゲストのランタイム・メモリ２１０にアクセスすることができる。その結果として、従来の仮想マシン・マネージャ１１０上で実行される従来の仮想ゲストは、その仮想ゲストのためのランタイム・メモリ２１０への仮想マシン・マネージャ１１０のアクセスに対する制御権を有しない。さらに、ユーザは、従来の仮想マシン・マネージャ１１０がランタイム・メモリ２１０へのアクセスを試みないこと、又は、ランタイム・メモリ２１０にアクセスしようとする攻撃者を含まないことの保証を何ら有さない。従って、機密扱いのデータを伴うアプリケーションは、多くの場合、パブリック・クラウド・コンピューティング・システムのような検証できないホスト・コンピューティング・システム１０５上にはホストされない。このような機密扱いのアプリケーションをホストする機会は限られることになる。
【００３９】
従って、仮想ゲスト・メモリ装置２０５は、仮想ゲスト１２０のランタイム・メモリ２１０を、ホスト・コンピューティング・システム１０５／仮想マシン・マネージャ１１０から保護する。具体的には、仮想ゲスト・メモリ装置２０５は、仮想ゲスト１２０が、そのランタイム・メモリ２１０を仮想マシン・マネージャ１１０がアクセスできないように設定することによってランタイム・メモリ２１０を保護することを可能にする。一実施形態において、仮想ゲスト・メモリ装置２０５は、仮想ゲスト１２０がそのランタイム・メモリ２１０の一部分を仮想マシン・マネージャ１１０と共有することを可能にする。例えば、仮想マシン・マネージャ１１０は、そのランタイム・メモリ２１０の一部分を、ホスト又は他のゲストによる読み出し及び／又は書込みのためにアクセスできるように設定することができる。これにより、幾らかのランタイム・メモリ２１０はネットワーキング及び他のＩ／Ｏのために使用されることが可能になるが、大部分の仮想ゲスト・メモリは完全に非公開のままにされる。その結果、ユーザは、特定のホスト・コンピューティング・システム１０５上にホストされたアプリケーション及びデータが安全であることの保証を有することができるので、データのセキュリティが懸念される場合に利用可能なホストの数を大幅に増やすことができる。
【００４０】
さらに、仮想ゲスト・メモリ装置２０５は、仮想ゲスト１２０を、ホスト・コンピューティング・システム１０５又は仮想マシン・マネージャ１１０が危険にさらされる種々の状況から保護することができる。例えば、仮想ゲスト１２０が実行されているときに仮想マシン・マネージャ１１０が悪意のあるソフトウェア又はハッカーによって危険にさらされたとしても、仮想マシン・マネージャ１１０は仮想ゲスト・メモリにアクセスできないので、いかなるデータも危険にさらすことはあり得ない。
【００４１】
一実施形態において、仮想ゲスト・メモリ装置２０５は、従来の仮想マシン・マネージャ１１０と共に作業する。他の実施形態において、仮想マシン・マネージャ１１０は、メモリ・ダンプ・データ又は仮想ゲスト移送（例えば、仮想ゲスト１２０を別のコンピューティング・システムにコピーすること）といった特定の状況のための、仮想ゲスト・ランタイム・メモリ２１０への付加的なアクセスを要求するように構成することができる。例えば、仮想ゲスト１２０上でアプリケーションがクラッシュしたならば、仮想マシン・マネージャ１１０は、アプリケーション・クラッシュに関係したメモリ・ダンプ・データを取得するために付加的なアクセスを要求することができる。仮想ゲスト・メモリ装置２０５は、所定の基準を満たす付加的な要求を承諾することができ、特定の実施形態においては、アクセスが許可される前に機密扱いのデータを保護するアクションを取る。
【００４２】
一実施形態において、仮想ゲスト・メモリ装置２０５は、それがホスト・コンピューティング・システム１０５のプロセッサ２１５（例えば、プロセッサ２１５、及びトランザクション・ルックアサイド・バッファ「ＴＬＢ」など、他のプロセッサ関連構造体）と直接通信することを検証する。図３を参照すると、一実施形態において、仮想ゲスト・メモリ装置２０５は、仮想ゲスト１２０が、そのランタイム・メモリ２１０のアクセス許可を、プロセッサ２１５を通じて直接に（３０５）、仮想マシン・マネージャとは無関係に、設定することを可能にする。同様に、一実施形態において、仮想ゲスト・メモリ装置２０５は、仮想ゲスト１２０が、プロセッサ２１５と直接通信することによって、仮想マシン・マネージャ１１０がアクセス３１０するためのランタイム・メモリ２１０の共有メモリ部分３１５を設定することを可能にする。
【００４３】
再び図２を参照すると、図示した実施形態において、仮想ゲスト・メモリ装置２０５は仮想ゲスト１２０内で実行され、仮想ゲスト１２０と通信し、及び／又は仮想ゲスト１２０の一部分である。例えば、仮想ゲスト・メモリ装置２０５は、仮想ゲスト１２０の実行の際に走らせる実行可能コードを含むことができる。幾つかの実施形態において、仮想ゲスト・メモリ装置２０５の一部分は、仮想マシン・マネージャ１１０の一部分とすることができる。例えば、仮想ゲスト１２０及び仮想マシン・マネージャ１１０の両方が、各々、仮想ゲスト・メモリ装置２０５の一部分ずつを含むことができる。一実施形態において、仮想ゲスト・メモリ装置２０５の一部分は、プロセッサ２１５の一部分であり、及び／又はプロセッサ２１５と通信し、及び／又はホスト・コンピューティング・システム１０５の関連するハードウェア構成要素である。例えば、プロセッサ２１５は、以下で説明するように、ランタイム・メモリ２１０を特定の仮想ゲスト１２０に関連付け、他のエンティティからの要求がランタイム・メモリ２１０にアクセスすることを防ぐために、仮想ゲスト・メモリ装置２０５の一部分（例えば、プロセッサ２１５と通信するファームウェア上）を含むことができる。
【００４４】
図４は、仮想ゲスト・メモリを保護するための装置２０５の一実施形態を示す略ブロック図である。装置２０５は、図２−図３の仮想ゲスト・メモリ装置２０５の一実施形態であり、初期化モジュール４０５、受信モジュール４１０、及び保護モジュール４１５のうちの１つ又は複数を含む。
【００４５】
初期化モジュール４０５は、一実施形態において、ホスト・コンピューティング・システム１０５上の仮想ゲスト１２０を初期化する。ホスト・コンピューティング・システム１０５は、図１−図３に関連して上述した仮想マシン・マネージャ１１０を含む。初期化モジュール４０５は、仮想ゲスト１２０内のコードを実行して仮想ゲスト１２０をブートすることによって仮想ゲスト１２０を初期化する。例えば、ホスト・コンピューティング・システム１０５は、初期化モジュール４０５に仮想ゲスト１２０を初期化するよう信号を送る仮想マシン・モジュール１１０をブートすることができる。
【００４６】
受信モジュール４１０は、一実施形態において、仮想ゲスト１２０に対するランタイム・メモリ２１０の割当てを受取る。ランタイム・メモリ２１０の割当ては、ホスト・コンピューティング・システム１０５のランタイム・メモリ２１０の一部分を含む。例えば、ひとたび仮想マシン・マネージャ１１０がブートされ、初期化モジュール４０５が仮想ゲスト１２０を初期化すると、受信モジュール４１０は、仮想ゲスト１２０が実行中に使用することができるランタイム・メモリ２１０の一部分を受取ることができる。一実施形態において、仮想マシン・マネージャ１１０が、仮想ゲスト１２０に対するランタイム・メモリ２１０の割当てを割り当てる。例えば、仮想マシン・マネージャ１１０は、仮想ゲスト１２０がランタイム・メモリ２１０のある特定の部分を割り当てられることになることを決定することができ、仮想マシン・マネージャ１１０は、その割当てを仮想ゲストが使用できるようにすることができる。受信モジュール４１０は、使用可能なランタイム・メモリ２１０の割当てを検出することができる。
【００４７】
保護モジュール４１５は、仮想ゲスト１２０によって、ランタイム・メモリ２１０の割当ての少なくとも一部分を仮想マシン・マネージャ１１０によるアクセスができないように設定する。例えば、一実施形態において、保護モジュール４１５は、仮想ゲスト１２０の一部分であり、及び／又は仮想ゲスト１２０と通信し、仮想ゲスト１２０が、そのランタイム・メモリ２１０の割当てに対するアクセス許可を設定することを可能にする。従って、一実施形態において、ランタイム・メモリ２１０の割当てに対するアクセスは、仮想ゲスト１２０によって決定される。一実施形態において、保護モジュール４１５が、仮想ゲスト１２０によって、ランタイム・メモリ２１０の割当ての少なくとも一部分を仮想マシン・マネージャ１１０によるアクセスができないように設定することは、さらに、仮想ゲスト１２０によって、仮想マシン・マネージャ１１０とは無関係にプロセッサ２１５と直接に通信して、仮想ゲスト１２０のランタイム・メモリ２１０の割当てに対するアクセス許可を設定することを含む。一実施形態において、保護モジュール４１５は、そのランタイム・メモリ２１０の割当てに対する種々のレベルのアクセス許可を設定することができる。例えば、保護モジュール４１５は、ある特定の仮想ゲスト１２０及び／又は仮想マシン・マネージャ１１０に対して、読み出しのみのアクセス、読み出し／書込みアクセスなどを設定することができる。
【００４８】
保護モジュール４１５は、一実施形態において、プロッセサ２１５と直接に通信して、そのメモリの割当てに対するアクセス許可を設定する。本明細書において用いる場合、プロセッサ２１５と通信することは、プロセッサ２１５及び／又はその他のランタイム・メモリ２１０の管理に関連するホスト・コンピューティング・システム１０５のハードウェア構成要素と通信するソフトウェア又はファームウェアと通信することを意味する。一実施形態において、保護モジュール４１５は、ランタイム・メモリ２１０の特定の部分に対するアクセス許可を設定する所定のコマンドをプロセッサ２１５に対して発行する。特定の部分は、メモリ内のデータ・ページのアドレス範囲によって指定することができるが、メモリの任意の適切な単位を使用することができる。当技術分野で知られているように、データ・ページは、仮想メモリのアドレス指定のために用いられる主メモリの単位である。データ・ページは、主メモリと２次記憶装置との間でアプリケーション・データをスワップするためにオペレーティング・システムによって行われるメモリ割当てのためのデータの最小単位を含むことができる。保護モジュール４１５は、保護されるデータ・ページの特定の範囲を指定するためのコマンドを呼び出すことができる。
【００４９】
一実施形態において、保護モジュール４１５は、さらに、仮想マシン・マネージャ１１０によるアクセスのための、仮想ゲスト１２０のランタイム・メモリ２１０の割当ての共有メモリ部分を確立する。保護モジュール４１５は、一実施形態において、プロセッサ２１５と直接に通信して共有メモリ部分を確立することもできる。例えば、保護モジュール４１５は、特定のデータ・ページ範囲を仮想マシン・マネージャ１１０及び／又は他の仮想ゲスト１２０のような特定のエンティティと共有するための所定のコマンドを呼び出すことができる。保護モジュール４１５は、仮想マシン・マネージャ１１０との対話のために必要とされる場合があるネットワーキング・データ又は他のＩ／Ｏデータといった機密扱いではないデータのための共有メモリ部分を指定することができる。
【００５０】
一実施形態において、以下で説明するように、プロセッサ２１５は、仮想ゲスト１２０によって設定される許可を、特定のインテル（商標）プロセッサの場合には仮想プロセス識別子（「ＶＰＩＤ：Ｖｉｒｔｕａｌ  Ｐｒｏｃｅｓｓ  Ｉｄｅｎｔｉｆｉｅｒ」）又はランタイム・メモリ２１０のデータ・ページを一意に識別する類似の識別子を介して、特定の仮想ゲスト１２０に関連付けるように強制することができる。ページ・テーブル及び拡張ページ・テーブル（仮想化を最適化するために特定のプロセッサ実装によってサポートされる付加的なページ・テーブル）内のエントリは、そのエントリが属する仮想ゲスト１２０を識別するＶＰＩＤを含む。さらに、仮想マシン・マネージャ１１０もまた、典型的には、それ自体の一意のＶＰＩＤを有する。
【００５１】
図５は、仮想ゲスト・メモリを保護するための装置２０５の別の実施形態を示す詳細な略ブロック図である。図示した実施形態において、仮想ゲスト・メモリ装置２０５は、初期化モジュール４０５、受信モジュール４１０、及び保護モジュール４１５を含み、これらは図４に関連して説明したものと実質的に同様である。この実施形態において、仮想ゲスト・メモリ装置２０５は、検証モジュール５０５、要求送信モジュール５１０、要求受信モジュール５１５、判断モジュール５２０、アクセス・モジュール５２５、暗号化モジュール５３０、検出モジュール５３５、無効化（ｄｅｓｔｒｏｙｉｎｇ）コマンド・モジュール５４０、無効化モジュール５４５、関連付けモジュール５５０、及びアクセス要求モジュール５５５のうちの１つ又は複数をさらに含み、これらを以下で説明する。
【００５２】
検証モジュール５０５は、一実施形態において、仮想ゲスト１２０が、仮想マシン・マネージャ１１０とは無関係に、ホスト・コンピューティング・システムのプロセッサ２１５と直接通信することを検証する。別の実施形態において、このことは、検証モジュール５０５が、ホスト・コンピューティング・システム１０５と通信する及び／又はホスト・コンピューティング・システム１０５内に常駐するトラステッド・プラットフォーム・モジュール（「ＴＰＭ」）からのメトリクスを使用することを意味する。当技術分野において知られているように、ＴＰＭは、トラステッド・コンピューティング・グループ（「ＴＣＧ」）の仕様に従ってコンピューティング・システムのためのシステム・セキュリティを実装する。ＴＣＧは、クライアント側のシステム・セキュリティを伴うトラステッド・コンピューティング仕様を保守する。当技術分野において知られているように、トラスティング・コンピューティングは、データ保護、プラットフォーム承認（ｐｌａｔ  ｆｏｒｍ  ｒｅｃｏｇｎｉｔｉｏｎ）、認証などを規定する。ホスト・コンピューティング・システム１０５は、署名及び暗号鍵を格納するため、及び、コンピューティング・システムの完全性を計測するためにＴＰＭを用いることができる。具体的にはＴＰＭは、ホスト・コンピューティング・システム１０５内のソフトウェア及びハードウェアの完全性を計測して、コンピューティング機器内の特定のコンピューティング環境が検証モジュール５０５によって承認できるものとすることを許可にする。
【００５３】
ＴＰＭは、コンピューティング・システム内の完全性を計測して、コンピューティング・システム内の特定の動作環境１０２に一意の署名を与え、特定の動作環境１０２を承認できるものとすること許可する。システムの完全性を計測するために、ＴＰＭは、典型的には、ブートタイム又はプレブートタイムに、コンピューティング機器特性のメトリクスを取得する。これらのメトリクスは、ＢＩＯＳ、コンピューティング機器ファームウェア、及びカーネルなどの実行可能コードの計測値を含むことができる。これらのメトリクスは、ハードウェア構成要素の計測値も含むことができる。ＴＰＭは、これらのメトリクスのＰＣＲダイジェスト値と呼ばれるインジケータを、ＰＣＲと呼ばれる特別なレジスタ内に格納することができる。
【００５４】
コンピューティング環境が、ＴＰＭの完全性計測値が承認された環境と整合しない（例えば、検証モジュール５０５が、これがホスト・コンピューティング・システムのプロセッサ２１５と直接通信していることを検証できない）ために承認されない場合、特定のソフトウェアが未承認環境内で動作することを制限することができ、又は特定のデータへのアクセスをブロックすることができる。
【００５５】
一実施形態において、ＴＰＭは、ハードウェア・チップ、集積回路、又は、ハードウェア若しくはハードウェア及びソフトウェアを含む他の物理的構成要素である。別の実施形態において、ＴＰＭは、コンピュータ可読記憶媒体上に格納された実行可能ソフトウェア・コードを含む。別の実施形態において、単一のハードウェアＴＰＭを仮想化して、各々の仮想マシンに共通ＴＰＭへのアクセス権を与えることができる。この仮想化されたＴＰＭ（「ｖＴＰＭ」）は、当技術分野で知られているように、複数の仮想ゲスト１２０が単一のＴＰＭハードウェア・チップからのメトリクスを使用することを可能にする。
【００５６】
一実施形態において、検証モジュール５０５は、ｖＴＰＭのメトリクスを所定の署名に対して計測する（これは、仮想マシン・マネージャ１１０が直接ハードウェア通信をスプーフィングするのとは対照的に、検証モジュール５０５がプロセッサ２１５と直接通信していることを示す）。検証モジュール５０５が、メトリクスが所定の署名と一致すると判断すると、検証モジュール５０５は、仮想ゲスト１２０がプロセッサ２１５と直接通信していることを検証する。そうでない場合には、検証モジュール５０５は、直接通信を検証しない。別の実施形態において、検証モジュール５０５は、警告メッセージをトリガし、及び／又は仮想ゲスト１２０のさらなる初期化を中止する。
【００５７】
要求送信モジュール５１０は、一実施形態において、仮想マシン・マネージャ１１０から仮想ゲスト１２０（例えば、下記の要求受信モジュール５１５）に、アクセスできないランタイム・メモリ２１０の少なくとも一部分へのアクセスを求める要求を送る。別の実施形態において、要求送信モジュール５１０は、仮想マシン・マネージャ１１０の一部分であるか又は仮想マシン・マネージャ１１０と通信する。要求送信モジュール５１０は、特定の仮想ゲスト１２０上でのアプリケーション・クラッシュの検出といった１つ又は複数の所定のイベント、及び／又は、記憶装置及び／又はホスト・コンピューティング・システム１０５内の１つの位置から別の位置への保留状態の仮想ゲスト移送、等に応答して、付加的なアクセスの必要性を判断することができる。
【００５８】
要求受信モジュール５１５は、一実施形態において、仮想マシン・マネージャ１１０から、アクセスできないランタイム・メモリ２１０の少なくとも一部分へのアクセスを求める要求を受取る。上述のように、特定の実施形態において、仮想マシン・マネージャ１１０は、メモリ・ダンプ・データに関しての（例えば、アプリケーション・クラッシュに応答して）仮想ゲスト・メモリに対する付加的なアクセス、及び／又は、仮想ゲスト移送に関する要求を要求することができる。要求受信モジュール５１５は、仮想マシン・マネージャ１１０がそれを通じて付加的なアクセスを要求することができるインタフェースを提供することができる。別の実施形態において、要求受信モジュール５１５は、所望のデータのインジケータ、及び／又は、要求の理由のインジケータ、等を受入れることもできる。別の実施形態において、要求受信モジュール５１５は、仮想マシン・マネージャ１１０と通信し、及び／又は仮想マシン・マネージャ１１０の一部分であり、要求送信モジュール５１０からコマンドを受取る。
【００５９】
判断モジュール５２０は、一実施形態において、仮想マシン・マネージャ１１０からの付加的なアクセスを求める要求が１つ又は複数の所定の基準を満たすかどうか判断する。別の実施形態において、１つ又は複数の所定の基準は、メモリ・ダンプ・データに関するする要求及び／又は仮想ゲスト移送に関する要求を含む。別の実施形態において、判断モジュール５２０は、要求が所定の基準を満たすかどうかを、要求受信モジュール５１５が受け取った、アクセスが所望されるデータ及び／又は要求の理由を示す識別子に基づいて判断する。
【００６０】
アクセス・モジュール５２５は、一実施形態において、アクセスできないランタイム・メモリ２１０の少なくとも一部分へのアクセスを仮想マシン・マネージャ１１０に対して承諾するか又は拒否する。具体的には、アクセス・モジュール５２５は、要求が１つ又は複数の所定の基準を満たすと判断モジュール５２０が判断したことに応答してアクセスを承諾することができ、要求が所定の基準を満たさないと判断モジュール５２０が判断したことに応答してアクセスを拒否することができる。
【００６１】
暗号化モジュール５３０は、一実施形態において、アクセス・モジュール５２５がアクセスできないランタイム・メモリ２１０の少なくとも一部分へのアクセスを仮想マシン・マネージャ１１０に対して承諾する前に、アクセスできないランタイム・メモリ２１０の特定のデータを暗号化する。暗号化モジュール５３０は、機密扱いのデータの完全性を保持するために、アクセス・モジュール５２５がアクセスを承諾する前に機密扱いのデータを暗号化することができる。別の実施形態において、暗号化モジュール５３０が暗号化するデータのアドレス範囲及び／又は識別性は、仮想ゲスト１２０及び／又はユーザによって予め決定される。例えば、仮想マシン・マネージャ１１０は、特定のアプリケーションに関連付けられるデータを暗号化するように指定することができる。仮想マシン・マネージャ１１０は、第１のホスト・コンピューティング・システム１０５上のストレージが所定の閾値に達したことに応答して、第２のホスト・コンピューティング・システム１０５への仮想ゲストの移送を行うための付加的なアクセスを要求することができる。暗号化モジュール５３０は、特定のアプリケーションに付随するデータを暗号化することができ、アクセス・モジュール５２５は、仮想マシン・マネージャ１１０に対してアクセスを承諾することができる。仮想ゲストの移送が完了した後、暗号化モジュール５３０は、対象データを復号することができる。暗号化モジュール５３０は、任意の適切な暗号化アルゴリズムを用いて、割当てられたメモリ部分のデータを暗号化することができる。
【００６２】
検出モジュール５３５は、一実施形態において、仮想ゲスト１２０が応答しない（例えば、仮想ゲスト１２０がクラッシュしたか又はそれ以外の理由で機能しない）ことを検出する。別の実施形態において、検出モジュール５３５は、仮想マシン・マネージャ１１０と通信し、及び／又は仮想マシン・マネージャ１１０の一部分である。検出モジュール５３５は、仮想ゲスト１２０が所定の時間内に応答しないことに応じて、仮想ゲスト１２０が応答しないことを検出することができる。仮想マシン・マネージャ１１０は、ランタイム・メモリ２１０の割当てに対するアクセス権を有しないので、仮想マシン・マネージャ１１０は、仮想ゲスト１２０に対するランタイム・メモリ２１０を直接に割当解除することができない。
【００６３】
従って、無効化コマンド・モジュール５４０は、一実施形態において、仮想ゲスト１２０に対するランタイム・メモリ２１０の割当てを、仮想マシン・マネージャ１１０がランタイム・メモリ２１０の割当てにアクセスすることなく無効化するための所定のコマンドを呼び出す。検出モジュール５３５と同様に、無効化コマンド・モジュール５４０は、仮想マシン・マネージャ１１０と通信し、及び／又は仮想マシン・マネージャ１１０の一部分とすることができる。無効化コマンド・モジュール５４０は、特定の仮想ゲスト１２０に関連付けられたランタイム・メモリ２１０を無効化するために、ホスト・コンピューティング・システム１０５の所定のコマンドを呼び出すことができる。ホスト・コンピューティング・システム１０５は、無効化コマンド・モジュール５４０が所定のコマンドを呼び出したことに応答して、ランタイム・メモリ２１０の割当てを無効化する。別の実施形態において、無効化コマンド・モジュール５４０は、無効化するためのコマンドを、そのランタイム・メモリ２１０が無効化される仮想ゲスト１２０の識別子と共に発行する。別の実施形態において、識別子は、上記のような、仮想ゲスト１２０のＶＰＩＤである。例えば、無効化コマンドの１つの非限定的な実施形態は、「ＶＰＩＤ＿ＤＥＳＴＲＯＹ（ｖｐｉｄ）」とすることができ、ホスト・コンピューティング・システム１０５に対して、提出されたパラメータのＶＰＩＤを有する仮想ゲスト１２０に関連付けられたランタイム・メモリ２１０を無効化する（例えば、割当解除する）ように指示する。
【００６４】
無効化モジュール５４５は、一実施形態において、仮想マシン・マネージャ１１０から、仮想ゲスト１２０に対するランタイム・メモリ２１０の割当てを無効化するための所定のコマンドに対する呼び出しを受取る。無効化モジュール５４５は、別の実施形態において、所定のコマンドに対する呼び出しを受取ることに応答して、ランタイム・メモリ２１０の割当てを無効化する。別の実施形態において、無効化モジュール５４５は、ホスト・コンピューティング・システム１０５のプロセッサ２１５などのハードウェアと通信しており、仮想ゲスト１２０に関連付けられたランタイム・メモリ２１０を無効化する（割当解除する）ことができる。上述のように、所定のコマンドは、そのランタイム・メモリ２１０が無効化される仮想ゲスト１２０のＶＰＩＤを指定するパラメータを含むことができる。無効化モジュール５４５は、所定のコマンドと共に渡されたＶＰＩＤを有するデータ・ページを無効化し、ＶＰＩＤ実行コンテキストを無効化し、この特定のＶＰＩＤに関するページ・テーブル及び拡張ページ・テーブルのエントリを消去することができる。
【００６５】
関連付けモジュール５５０は、一実施形態において、１つ又は複数の仮想ゲスト識別子を、ランタイム・メモリ２１０の割当ての特定のランタイム・メモリ２１０ページに関連付ける。別の実施形態において、少なくとも１つの仮想ゲスト識別子が、仮想ゲストを識別する。別の実施形態において、関連付けモジュール５５０は、ホスト・コンピューティング・システム１０５のプロセッサ２１５と通信する（例えば、プロセッサ２１５に付随するファームウェア内で）。
【００６６】
仮想ゲスト識別子は、上記のようなＶＰＩＤを含むことができ、これが、特定の仮想ゲスト１２０に関連付けられたランタイム・メモリ２１０のデータ・ページを一意に識別する。関連付けモジュール５５０は、上記の保護モジュール４１５から所定のコマンドを受取ることができ、１つ又は複数の仮想ゲスト識別子をランタイム・メモリ２１０の割当ての特定のランタイム・メモリ２１０ページに関連付けることができる。例えば、関連付けモジュール５５０は、保護モジュール４１５によって要求されるデータ・ページに関する仮想ゲストのＶＰＩＤを設定することによって、仮想ゲスト識別子を仮想ゲスト１２０に対するメモリの割当ての１つ又は複数のページに関連づけることができる。一実施形態において、関連付けモジュール５５０はまた、仮想マシン・マネージャ１１０のＶＰＩＤを、保護モジュール４１５が仮想マシン・マネージャ１１０と共有するように要求したデータ・ページに関連づける。従って、特定のデータ・ページは、仮想ゲスト１２０を識別するとともに、アクセス権を有するものとして仮想マシン・マネージャ１１０を識別する、ＶＰＩＤを含むことができる。
【００６７】
アクセス要求モジュール５５５は、一実施形態において、仮想ゲスト１２０のランタイム・データ・ページにプロセッサ・レベルのアクセス保護を提供する。別の実施形態において、アクセス要求モジュール５５５は、リクエスタからの特定のランタイム・メモリ２１０データ・ページに対するアクセス要求を、リクエスタがその特定のランタイム・メモリ２１０ページに関する対応する仮想ゲスト識別子を有していることに応答して承諾する。同様に、アクセス要求モジュール５５５は、リクエスタからの特定のランタイム・メモリ２１０ページに対するアクセス要求を、リクエスタがその特定のランタイム・メモリ２１０ページに関する対応する仮想ゲスト識別子を有していないことに応答して拒否する。別の実施形態において、アクセス要求モジュール５５５は、リクエスタのＶＰＩＤを特定のデータ・ページに関する１つ又は複数のＶＰＩＤに対して照合し、リクエスタのＶＰＩＤが特定のデータ・ページに関連付けられている場合には、リクエスタに対してアクセスを承諾する。さらに別の実施形態において、アクセス要求モジュール５５５は、アクセス要求モジュール５５５がそれに対して照合するためのビットマップを使用して、特定のＶＰＩＤ（例えば、リクエスタの）に対して承諾するアクセスのレベルを決定する。
【００６８】
図６は、仮想ゲスト・メモリを保護する方法６００の一実施形態を示す略フローチャート図である。方法６００が開始すると、初期化モジュール４０５は、ハイパーバイザなどの仮想マシン・マネージャ１１０を含むホスト・コンピューティング・システム１０５上の仮想ゲスト１２０を初期化する（６０５）。仮想マシン・マネージャ１１０は、仮想ゲスト１２０の動作を管理し、仮想ゲスト１２０は、仮想マシン・マネージャ１１０によって提供される仮想動作プラットフォーム内で実行される別個の動作環境を含む。
【００６９】
受信モジュール４１０は、仮想ゲスト１２０に対するランタイム・メモリ２１０の割当てを受取る（６１０）。ランタイム・メモリ２１０の割当ては、ホスト・コンピューティング・システム１０５のランタイム・メモリ２１０の一部分を含む。次に保護モジュール４１５は、仮想ゲスト１２０によって、ランタイム・メモリ２１０の割当ての少なくとも一部分を仮想マシン・マネージャ１１０によるアクセスができないように設定する（６１５）。次いで、方法６００は終了する。
【００７０】
図７は、仮想ゲスト・メモリを保護する方法７００の別の実施形態を示す略フローチャート図である。方法７００が開始すると、初期化モジュール４０５は、ハイパーバイザなどの仮想マシン・マネージャ１１０を含むホスト・コンピューティング・システム１０５上の仮想ゲスト１２０を初期化する（７０５）。検証モジュール５０５は、仮想ゲスト１２０が仮想マシン・マネージャ１１０とは無関係にホスト・コンピューティング・システム１０５のプロセッサ２１５と直接通信していることを検証する（７１０）。例えば、検証モジュール５０５は、承認されたコンピューティング環境を、ＴＰＭを用いて検証することができる。検証モジュール５０５が、仮想ゲスト１２０がプロセッサ２１５と直接通信していないと判断した場合（７１０）、方法７００は終了する。検証モジュール５０５が、仮想ゲスト１２０がプロセッサ２１５と直接通信していると判断した場合（７１０）、受信モジュール４１０は、仮想ゲスト１２０に対するランタイム・メモリ２１０の割当てを受取る（７１５）。
【００７１】
次に、保護モジュール４１５は、仮想ゲスト１２０によって、ランタイム・メモリ２１０の割当ての少なくとも一部分を仮想マシン・マネージャ１１０によるアクセスができないように設定する（７２０）。一実施形態において、仮想ゲスト１２０は、ホスト・コンピューティング・システム１０５のプロセッサ２１５と直接に通信して所定のコマンドを呼び出すことによって、ランタイム・メモリ２１０の割当ての一部分をアクセスできないように設定する。関連付けモジュール５５０は、仮想ゲスト１２０が所定のコマンドを呼び出したことに応答して、ランタイム・メモリ２１０のデータ・ページに仮想ゲスト１２０のＶＰＩＤを関連づけることができる。次に、保護モジュール４１５は、仮想マシン・マネージャ１１０によるアクセスのための共有メモリ部分３１５を確立（７２５）する。共有メモリ部分３１５は、仮想ゲスト１２０のランタイム・メモリ２１０の割当ての一部分を含み、保護モジュール４１５は、同様にコマンドをプロセッサ２１５に対して直接に呼び出すことにより、共有メモリ部分３１５を確立することができる。
【００７２】
受信モジュール４１０が、仮想マシン・マネージャ１１０から、アクセスできないランタイム・メモリ２１０にアクセスすることを求める要求を受取らない場合（７３０）、方法７００は終了する。受信モジュール４１０が、仮想マシン・マネージャ１１０から、アクセスできないランタイム・メモリ２１０の少なくとも一部分にアクセスすることを求める要求を受け取った場合（７３０）、判断モジュール５２０は、その要求が１つ又は複数の所定の基準を満たすかどうか判断する（７３５）。判断モジュール５２０が、要求が１つ又は複数の所定の基準を満たすと判断した場合（７３５）、アクセス・モジュール５２５は、仮想マシン・マネージャ１１０に対して、アクセスできないランタイム・メモリ２１０の一部分へのアクセスを承諾する（７４０）。満たさないと判断した場合には、アクセス・モジュール５２５は、アクセスできないランタイム・メモリ２１０の一部分に対するアクセスを拒否する（７４５）。次いで、方法７００は終了する。
【００７３】
図８は、仮想ゲスト・メモリ装置２０５を配備する方法８００の一実施形態を示す略フローチャート図である。仮想ゲスト・メモリ装置２０５を具体化するプロセス・ソフトウェアは、ＣＤ、ＤＶＤなどの記憶媒体を装填することにより、クライアント、サーバ及びプロキシ・コンピュータに手動で直接ロードすることができることが理解されるが、プロセス・ソフトウェアは、該プロセス・ソフトウェアを中央サーバ又は中央サーバ群に送信することによってコンピュータ・システムに自動的又は半自動的に配備することもできる。次にプロセス・ソフトウェアは、該プロセス・ソフトウェアを実行することになるクライアント・コンピュータ内にダウンロードされる。あるいは、プロセス・ソフトウェアは、電子メールを介してクライアントシステムに直接送信される。プロセス・ソフトウェアは次に、プロセス・ソフトウェアを切り離してディレクトリに入れるプログラムを実行する電子メール上のボタンにより、切り離されてディレクトリに入れられ、又はディレクトリ内にロードされる。別の選択肢は、プロセス・ソフトウェアを、クライアント・コンピュータのハード・ディスク上のディレクトリに直接送信することである。プロキシ・サーバが存在する場合、プロセスは、プロキシ・サーバ・コードを選択し、プロキシ・サーバ・コードを配置するコンピュータを決定し、プロキシ・サーバ・コードを伝送し、次いでプロキシ・サーバ・コードをプロキシ・コンピュータ上にインストールすることになる。プロセス・ソフトウェアをプロキシ・サーバに伝送することができ、次いでこれをプロキシ・サーバ上に格納することができる。
【００７４】
プロセス・ソフトウェアを配備する方法８００が開始すると、そのプロセス・ソフトウェアが実行されると１つ又は複数のサーバ上に常駐することになるなんらかのプログラムが存在するかどうかの判断がなされる（８０２）。存在する場合、図９を参照すると、実行プログラム（ｅｘｅｃｕｔａｂｌｅｓ）を収容することになるサーバが識別される（８３６）。１つ又は複数のサーバのためのプロセス・ソフトウェアが、ＦＴＰ又は他のなんらかのプロトコルを介して、又は共有ファイル・システムの使用を通じてコピーすることにより、サーバの記憶装置に直接に伝送される。プロセス・ソフトウェアは次に、サーバにインストールされる（８４０）。
【００７５】
次に、再び図８を参照すると、プロセス・ソフトウェアを、ユーザが１つ又は複数のサーバ上のプロセス・ソフトウェアにアクセスすることによって配備すべきか否かの判断がなされる（８０４）。ユーザがサーバ上のプロセス・ソフトウェアにアクセスすることになる場合、そのプロセス・ソフトウェアを格納することになるサーバ・アドレスが識別される（８０６）。そのプロセス・ソフトウェアを格納するためにプロキシ・サーバを構築すべきかどうかの判断がなされる（８０８）。プロキシ・サーバは、ウェブ・ブラウザなどのクライアント・アプリケーションと実サーバとの間に位置するサーバである。プロキシ・サーバは、実サーバへの全ての要求を傍受して、自身がその要求を満たすことができるかどうかを調べる。できなければ、プロキシ・サーバは要求を実サーバに転送する。プロキシ・サーバの２つの主要な利点は、性能を向上させること、及び要求をフィルターにかけることである。プロキシ・サーバが必要であれば、プロキシ・サーバがインストールされる（８１０）。プロセス・ソフトウェアは、ＦＴＰなどのプロトコルを介して、又はファイル共有によりソース・ファイルからサーバ・ファイルへと直接コピーされて、サーバに送られる（８１２）。別の実施形態は、プロセス・ソフトウェアを含むサーバにトランザクションを送信し、サーバにトランザクションを処理させ、次にプロセス・ソフトウェアを受取ってサーバのファイル・システムにコピーする。ひとたびプロセス・ソフトウェアがサーバに格納されると、ユーザは次に自身のクライアント・コンピュータを介してサーバ上のプロセス・ソフトウェアにアクセス（８１４）し、自身のクライアント・コンピュータのファイル・システムにコピーする。別の実施形態は、サーバがプロセス・ソフトウェアを各クライアントに自動的にコピーするようにさせ、次いでプロセス・ソフトウェアのインストール・プログラムを各クライアント・コンピュータにおいて実行することである。ユーザは、プロセス・ソフトウェアを自身のクライアント・コンピュータ上にインストールするプログラムを実行し（８１６）、次いで方法８００は終了する。
【００７６】
ステップ８１８において、プロセス・ソフトウェアを、電子メールを介してプロセス・ソフトウェアをユーザに送信することによって配備すべきか否かの判断がなされる。プロセス・ソフトウェアが配備されることになるユーザの集団が、ユーザのクライアント・コンピュータのアドレスと共に識別される（８２０）。プロセス・ソフトウェアは、電子メールを介して各々のユーザのクライアント・コンピュータに送信される。次いでユーザがその電子メールを受取り（８２４）、プロセス・ソフトウェアを電子メールから切り離して自身のクライアント・コンピュータ上のディレクトリに入れる。ユーザは、プロセス・ソフトウェアを自身のクライアント・コンピュータ上にインストールするプログラムを実行し（８１６）、次いで方法８００は終了する。
【００７７】
最後に、プロセス・ソフトウェアを、ユーザのクライアント・コンピュータ上のユーザのディレクトリに直接送信するか否かの判断がなされる（８２８）。送信する場合には、ユーザ・ディレクトリが識別される（８３０）。プロセス・ソフトウェアは、ユーザのクライアント・コンピュータのディレクトリに直接伝送される（８３２）。このことは、ファイル・システム・ディレクトリを共有化し、次いで送信側のファイル・システムから受信側ユーザのファイル・システムにコピーすること、又は代替的にファイル転送プロトコル（ＦＴＰ）などの転送プロトコルを用いることなど、幾つかの方法で行うことができるが、それらに限定されない。ユーザは、プロセス・ソフトウェアのインストールに備えて自身のクライアント・ファイル・システム上のディレクトリにアクセスする（８３４）。ユーザは、プロセス・ソフトウェアを自身のクライアント・コンピュータ上にインストールするプログラムを実行し（８１６）、次いで方法８００は終了する。
【００７８】
実施形態は、他の特定の形態で実施することができる。説明した実施形態は、あらゆる点で単に例証的なものと見なすべきであり、限定的なものと見なすべきではない。従って、本発明の範囲は、前述の説明によるのではなく添付の特許請求の範囲によって示される。特許請求の範囲の均等の意味及び範囲に入る全ての変更は、その範囲内に包含されるものとする。
【産業上の利用可能性】
【００７９】
本発明は、仮想化及び仮想ゲストに適用することができ、より具体的には仮想ゲストのメモリを保護することに適用することができる。
【符号の説明】
【００８０】
１００：システム
１０５：ホスト・コンピューティング・システム
１１０：仮想マシン・マネージャ
１１５ａ、１１５ｂ：仮想マシン
１２０ａ、１２０ｂ：仮想ゲスト
１３０ａ、１３０ｂ、１３０ｃ：クライアント
１２５：ネットワーク
【図１】
0005736090.tif 000002
【図２】
0005736090.tif 000003
【図３】
0005736090.tif 000004
【図４】
0005736090.tif 000005
【図５】
0005736090.tif 000006
【図６】
0005736090.tif 000007
【図７】
0005736090.tif 000008
【図８】
0005736090.tif 000009
【図９】
0005736090.tif 000010