(57)【特許請求の範囲】
【請求項１】
サーバー内のゲスト仮想機械とやり取りするための方法であって、
前記サーバー内のセキュア仮想機械を使用し、ゲスト仮想機械の電子メモリ内への１つ又は複数のイメージ読込みをプロセス間通信を行って監視するステップと、
監視対象のイメージ読込みにおいて、規定のフォーマットを有するメモリ構造を識別するステップであって、前記規定のフォーマットは前記セキュア仮想機械による消費のために前記ゲスト仮想機械によってエクスポートされるタグ付きメモリブロックを含む、ステップと、
前記セキュア仮想機械を使用し、前記識別されたメモリ構造の１つ又は複数の部分を読み取ることと前記識別されたメモリ構造内に値を設定することとを少なくとも実行するステップと、
を有する方法。
【請求項２】
前記イメージ読込みは、実行可能コードの読込みと動的リンクライブラリの読込みのうちの少なくとも１つを有する請求項１に記載の方法。
【請求項３】
前記規定のフォーマットは、命名規則に従って命名されたエクスポートされたデータ構造を有する請求項１に記載の方法。
【請求項４】
前記識別されたメモリ構造内のデータの一部に少なくとも部分的に基づいて、前記識別されたメモリ構造を処理するためのハンドラを識別するステップを更に有する請求項１に記載の方法。
【請求項５】
前記識別されたメモリ構造内のデータの前記部分は、仮想機械間通信構文の特定のバージョンを示すバージョンデータ、仮想機械間通信のタイプを示すタイプストリング、及び通信データの長さを示す長さデータのうちの少なくとも１つを有する請求項４に記載の方法。
【請求項６】
前記ゲスト仮想機械を使用し、前記識別されたメモリ構造内に設定された前記値を読み取るステップと、
前記少なくとも１つの値の読取りに応答して、前記ゲスト仮想機械による少なくとも１つの動作を実行するステップと、
を更に有する請求項１に記載の方法。
【請求項７】
前記セキュア仮想機械を使用し、基礎をなしている物理的プラットフォームの１つ又は複数のプラットフォーム環境属性を監視するステップを更に有する請求項１に記載の方法。
【請求項８】
前記１つ又は複数のプラットフォーム環境属性は、ＣＰＵ利用率、メモリ利用率、ネットワーク利用率、及びストレージ利用率のうちの少なくとも１つを有する請求項７に記載の方法。
【請求項９】
１つ又は複数のプラットフォーム属性が規定の閾値を超過していると判定するステップと、
１つ又は複数のゲスト仮想機械プロセスを識別するステップと、
前記識別されたゲスト仮想機械プロセスに対応した識別されたメモリ構造内に値を設定するステップと、
前記ゲスト仮想機械を使用し、前記識別されたゲスト仮想機械プロセスに対応した前記識別されたメモリ構造内に設定された前記値を読み取るステップと、
前記少なくとも１つの値の読取りに応答して、前記ゲスト仮想機械による少なくとも１つの動作を実行し、前記識別されたゲスト仮想機械プロセスによるリソース消費量を低減させるステップと、
を更に有する請求項７に記載の方法。
【請求項１０】
前記識別されたメモリ構造内に設定された前記値は、前記識別されたゲスト仮想機械プロセスに対する構成可能な抑制値を示す設定を有しており、前記構成可能な抑制値に起因し、前記識別されたゲスト仮想機械プロセスが、前記構成可能な抑制値に比例してＣＰＵリソースの使用量を低減させる請求項９に記載の方法。
【請求項１１】
前記プロセスは、ウイルススキャニングプロセス、ウイルス対策更新プロセス、データバックアッププロセス、及びデータ回復プロセスのうちの少なくとも１つを有する請求項９に記載の方法。
【請求項１２】
１つ又は複数のゲスト仮想機械プロセスを識別する前記ステップは、命名規則に従って命名されたエクスポートされたデータ構造を介して前記セキュア仮想機械に提供されるゲスト仮想機械プロセス情報を使用することを有する請求項９に記載の方法。
【請求項１３】
セキュア仮想機械を使用してゲスト仮想機械の電子メモリ内へのイメージ読込みを監視する前記ステップは、前記セキュア仮想機械には既知であるプロセスの読込みを検出し、命名規則に従って命名されたエクスポートされたデータ構造を提供するステップを有する請求項１に記載の方法。
【請求項１４】
前記識別されたメモリ構造の１つ又は複数の部分を読み取る前記ステップは、前記ゲスト仮想機械上において稼働している特定のプロセスの複写の現在の数を含むエクスポートされたゲスト仮想機械プロセス情報を読み取ることを更に有する請求項１に記載の方法。
【請求項１５】
サーバー内のゲスト仮想機械とやり取りするためのシステムであって、
ネットワークに対して通信可能に結合された１つ又は複数のプロセッサを有し、
前記１つ又は複数のプロセッサは、
前記サーバー内のセキュア仮想機械を使用し、ゲスト仮想機械の電子メモリ内へのイメージ読込みをプロセス間通信を行って監視し、
規定のフォーマットであって前記セキュア仮想機械による消費のために前記ゲスト仮想機械によってエクスポートされるタグ付きメモリブロックを含む規定のフォーマットを有するメモリ構造を識別し、且つ、
前記セキュア仮想機械を使用し、前記識別されたメモリ構造の１つ又は複数の部分を読み取ることと前記識別されたメモリ構造内に値を設定することとを少なくとも実行する、
ように構成されている、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、仮想機械間通信に関し、且つ、より具体的には、ゲスト仮想機械とやり取りするための技法に関する。
【背景技術】
【０００２】
仮想機械は、その基礎をなしている物理的プラットフォームの状態を考慮することなしに、仕様として獲得するべくその仮想機械が構成されているすべてのリソースを利用するように設計してもよい。基礎をなしている物理的プラットフォームが複数のゲスト仮想機械を含み、これらの複数のゲスト仮想機械が、全体として、その物理的プラットフォーム上に実際に存在しているリソースよりも多くのリソースを使用するように構成されている場合がある（例えば、基礎をなしているホストが２０ギガバイトのメモリしか含んでいない際に、３つの仮想的なゲスト仮想機械が、それぞれ、１０ギガバイトのメモリを使用するように構成されている場合がある）。ゲスト仮想機械は、基礎をなしているプラットフォームの状態（例えば、利用可能なリソース）及び基礎をなしているプラットフォーム上において稼働しているその他の仮想機械の状態を判定することができないであろう。この結果、ゲスト仮想機械は、基礎をなしているプラットフォーム上において現在利用可能であるリソースよりも多くのリソースを使用するように試みることになろう。ゲスト仮想機械上において稼働しているプロセスは、状態を示す通信をその他の仮想機械から受信するための方法を有していないであろう。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
上記の内容に鑑み、現在の仮想機械通信技術に関連した大きな問題点及び欠点が存在していることが理解されよう。
【課題を解決するための手段】
【０００４】
仮想機械間通信のための技法が開示される。特定の例示用の一実施形態においては、この技法は、ゲスト仮想機械とやり取りするための方法として実現してもよく、この方法は、セキュア仮想機械を使用し、ゲスト仮想機械の電子メモリ内へのイメージ読込みを監視するステップと、規定のフォーマットを有するメモリ構造を識別するステップと、セキュア仮想機械を使用して、識別されたメモリ構造の１つ又は複数の部分を読み取ることと識別されたメモリ構造内に値を設定することのうちの少なくとも１つを実行するステップと、を有する。
【０００５】
この特定の例示用の実施形態のその他の態様によれば、イメージ読込みは、実行可能コードの読込みと動的リンクライブラリの読込みのうちの少なくとも１つを有してもよい。
【０００６】
この特定の例示用の実施形態の更なる態様によれば、規定のフォーマットは、タグ付き制御ブロック（ｔａｇｇｅｄ  ｃｏｎｔｒｏｌ  ｂｌｏｃｋ）を有してもよい。
【０００７】
この特定の例示用の実施形態の更なる態様によれば、方法は、識別されたメモリ構造内のデータの一部に少なくとも部分的に基づいて、識別されたメモリ構造を処理するためのハンドラを識別するステップを更に含んでもよい。
【０００８】
この特定の例示用の実施形態の更なる態様によれば、識別されたメモリ構造内のデータの一部は、仮想機械間通信構文の特定のバージョンを示すバージョンデータ、仮想機械間通信のタイプを示すタイプストリング、及び通信データの長さを示す長さデータのうちの少なくとも１つを有してもよい。
【０００９】
この特定の例示用の実施形態の更なる態様によれば、方法は、ゲスト仮想機械を使用し、識別されたメモリ構造内に設定されている値を読み取るステップと、少なくとも１つの値の読み取りに応答して、ゲスト仮想機械による少なくとも１つの動作を実行するステップと、を更に含んでもよい。
【００１０】
この特定の例示用の実施形態の更なる態様によれば、方法は、セキュア仮想機械を使用し、基礎をなしている物理的なプラットフォームの１つ又は複数のプラットフォーム環境属性を監視するステップを更に含んでもよい。
【００１１】
この特定の例示用の実施形態の更なる態様によれば、１つ又は複数のプラットフォーム環境属性は、ＣＰＵ利用率、メモリ利用率、ネットワーク利用率、及びストレージ利用率のうちの少なくとも１つを含んでもよい。
【００１２】
この特定の例示用の実施形態の更なる態様によれば、方法は、１つ又は複数のプラットフォーム属性が規定の閾値を超過していると判定するステップと、リソース消費量が低減されることになるゲスト仮想機械プロセスを識別するステップと、識別されたゲスト仮想機械プロセスに対応した識別されたメモリ構造内に値を設定するステップと、ゲスト仮想機械を使用し、識別されたゲスト仮想機械プロセスに対応する識別されたメモリ構造内に設定されている値を読み取るステップと、少なくとも１つの値の読み取りに応答して、ゲスト仮想機械による少なくとも１つの動作を実行し、識別されたゲスト仮想機械プロセスによるリソース消費量を低減するステップと、を含んでもよい。
【００１３】
この特定の例示用の実施形態の更なる態様によれば、識別されたメモリ構造内に設定されている値は、識別されたゲスト仮想機械プロセスに対する構成可能な抑制値（ｔｈｒｏｔｔｌｅ  ｖａｌｕｅ）を示す設定を有してもよく、構成可能な抑制値に起因し、識別されたゲスト仮想機械プロセスが、構成可能な抑制値に比例してＣＰＵリソースの使用量を低減させる。
【００１４】
この特定の例示用の実施形態の更なる態様によれば、プロセスは、ウイルススキャニングプロセス、ウイルス対策更新プロセス、データバックアッププロセス、及びデータ回復プロセスのうちの少なくとも１つを有してもよい。
【００１５】
この特定の例示用の実施形態の更なる態様によれば、リソース消費量が低減されることになるゲスト仮想機械プロセスを識別するステップは、エクスポートされたタグ付き制御ブロックを介してセキュア仮想機械に提供されるゲスト仮想機械プロセス情報を使用するステップを有してもよい。
【００１６】
この特定の例示用の実施形態の更なる態様によれば、セキュア仮想機械を使用してゲスト仮想機械の電子メモリ内へのイメージ読込みを監視するステップは、セキュア仮想機械には既知のプロセスの読込みを検出し、エクスポートされたタグ付き制御ブロックを提供するステップを有してもよい。
【００１７】
この特定の例示用の実施形態の更なる態様によれば、識別されたメモリ構造の１つ又は複数の部分を読み取るステップは、エクスポートされたゲスト仮想機械プロセス情報を読み取るステップを有してもよい。
【００１８】
この特定の例示用の実施形態の更なる態様によれば、エクスポートされたゲスト仮想機械プロセス情報は、ゲスト仮想機械上において稼働している特定のプロセスの複写の現在の数を有してもよい。
【００１９】
この特定の例示用の実施形態の更なる態様によれば、技法は、方法を実行するためのコンピュータプロセスを実行するように少なくとも１つのプロセッサに対して指示するために少なくとも１つのプロセッサによって読み取ることができるように構成された命令のコンピュータプログラムを保存するための少なくとも１つの一時的ではないプロセッサ可読ストレージ媒体として実現してもよい。
【００２０】
別の特定の例示用の実施形態においては、技法は、ゲスト仮想機械とやり取りするための製品として実現してもよく、この製品は、少なくとも１つの一時的ではないプロセッサ可読媒体と、少なくとも１つの媒体上に保存された命令と、を有してもよく、命令は、少なくとも１つのプロセッサが少なくとも１つの媒体から読み取ることができるように構成されており、且つ、この結果、これらの命令により、少なくとも１つのプロセッサは、セキュア仮想機械を使用してゲスト仮想機械の電子メモリ内へのイメージ読込みを監視し、規定のフォーマットを有するメモリ構造を識別し、且つ、セキュア仮想機械を使用して、識別されたメモリ構造の１つ又は複数の部分を読み取ることと識別されたメモリ構造内に値を設定することのうちの少なくとも１つを実行するように動作する。
【００２１】
別の特定の例示用の実施形態においては、技法は、ネットワークに対して通信可能に結合された１つ又は複数のプロセッサを有するゲスト仮想機械とやり取りするためのシステムとして実現してもよく、１つ又は複数のプロセッサは、セキュア仮想機械を使用してゲスト仮想機械の電子メモリ内へのイメージ読込みを監視し、規定のフォーマットを有するメモリ構造を識別し、且つ、セキュア仮想機械を使用して、識別されたメモリ構造の１つ又は複数の部分を読み取ることと識別されたメモリ構造内に値を設定することのうちの少なくとも１つを実行するように、構成されている。
【００２２】
この特定の例示用の実施形態の更なる態様によれば、規定のフォーマットは、タグ付き制御ブロックを有してもよい。
【００２３】
この特定の例示用の実施形態の更なる態様によれば、１つ又は複数のプロセッサは、識別されたメモリ構造内のデータの一部に少なくとも部分的に基づいて、識別されたメモリ構造を処理するためのハンドラを識別するように更に構成してもよい。
【００２４】
この特定の例示用の実施形態の更なる態様によれば、１つ又は複数のプロセッサは、ゲスト仮想機械を使用し、識別されたメモリ構造内に設定されている値を読み取り、且つ、少なくとも１つの値の読み取りに応答して、ゲスト仮想機械による少なくとも１つの動作を実行するように更に構成してもよい。
【００２５】
以下、添付図面に示されているその例示用の実施形態を参照し、本開示について更に詳細に説明することとする。本開示については、例示用の実施形態を参照して後述するが、本開示は、これらの例示用の実施形態に限定されるものではないことを理解されたい。当業者は、本明細書の教示内容を参照することにより、本明細書に記述されている本開示の範囲に含まれると共に本開示が有意な有用性を有しうる実装形態、変形形態、及び実施形態、並びに、その他の使用分野について認識するであろう。
【００２６】
本開示について更に十分に理解することができるように、以下、添付図面を参照するが、これらの図面においては、同一の要素が同一の符号によって示されている。これらの図面は、例示を目的としたものに過ぎず、本開示を限定するものと解釈してはならない。
【図面の簡単な説明】
【００２７】
【図１】本開示の一実施形態による仮想機械間通信のためのプラットフォームを含むネットワークアーキテクチャを示すブロックダイアグラムを示す。
【図２】本開示の一実施形態によるコンピュータシステムのブロックダイアグラムを示す。
【図３】本開示の一実施形態による仮想機械間通信のためのモジュールを示す。
【図４】本開示の一実施形態による仮想機械間通信のための方法を示す。
【図５】本開示の一実施形態による仮想機械間通信のための方法を示す。
【発明を実施するための形態】
【００２８】
図１は、本開示の一実施形態による仮想機械間通信のためのネットワークアーキテクチャ１００を示すブロックダイアグラムを示している。図１は、ネットワークアーキテクチャ１００の概略図であり、このネットワークアーキテクチャ１００は、図示されてはいない更なる要素を含んでもよい。ネットワークアーキテクチャ１００は、クライアントシステム１１０と、サーバー１４０Ａ及び１４０Ｂと、を含んでもよい（これらのうちの１つ又は複数は、図２に示されているコンピュータシステム２００を使用して実施してもよい）。クライアントシステム１１０は、ネットワーク１５０に対して通信可能に結合してもよい。サーバー１４０Ａは、ストレージ装置１６０Ａ（１）〜１６０Ａ（Ｎ）に対して通信可能に結合してもよく、且つ、サーバー１４０Ｂは、ストレージ装置１６０Ｂ（１）〜１６０Ｂ（Ｎ）に対して通信可能に結合してもよい。サーバー１４０Ａ及び１４０Ｂは、管理モジュール（例えば、サーバー１４０Ａのタグ付きメモリ相互動作管理モジュール１５４）を含んでもよい。サーバー１４０Ａ及び１４０Ｂは、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）ファブリック１７０に対して通信可能に結合してもよい。ＳＡＮファブリック１７０は、サーバー１４０Ａ及び１４０Ｂによる及びネットワーク１５０を介したクライアントシステム１１０によるストレージ装置１８０（１）〜１８０（Ｎ）へのアクセスをサポートしてもよい。サーバー１４０Ａは、ネットワーク１９０に対して通信可能に結合してもよい。サーバー１４０Ａは、仮想化環境１４５をホスティングするプラットフォームであってよい。仮想化環境１４５は、例えば、ゲスト仮想機械１５６Ａ〜１５６Ｃ及びセキュア仮想機械１５８などの１つ又は複数の仮想機械をサポートする能力を有してもよい。ゲスト仮想機械１５６Ａ〜１５６Ｃは、タグ付きメモリモジュール１６５Ａ〜１６５Ｃを含んでもよい。セキュア仮想機械１５６は、メモリモニタモジュール１６８を含んでもよい。更に詳細に後述するように、タグ付きメモリモジュール１６５Ａ〜１６５Ｃ及びメモリモニタモジュール１６８は、仮想機械間（例えば、ゲスト仮想機械とセキュア仮想機械の間）の通信及びやり取りを許容してもよい。
【００２９】
図２のコンピュータシステム２００を参照すれば、モデム２４７、ネットワークインターフェイス２４８、又はなんらかのその他の方法を使用し、１つ又は複数のクライアントシステム１１０からネットワーク１５０への接続を提供してもよい。クライアントシステム１１０は、例えば、ウェブブラウザ又はその他のクライアントソフトウェアを使用してサーバー１４０Ａ又は１４０Ｂ上の情報にアクセス可能であってもよい。このようなクライアントは、サーバー１４０Ａ又は１４０Ｂ又はストレージ装置１６０Ａ（１）〜１６０Ａ（Ｎ）、１６０Ｂ（１）〜１６０Ｂ（Ｎ）、及び／又は１８０（Ａ）〜１８０（Ｎ）のうちの１つによってホスティングされたデータに対してクライアントシステム１１０がアクセスできるようにしてもよい。
【００３０】
ネットワーク１５０及び１９０は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、インターネット、セルラーネットワーク、衛星ネットワーク、或いは、クライアント１１０、サーバー１４０、及びネットワーク１５０及び１９０に対して通信可能に結合されたその他の装置間の通信を許容するその他のネットワークであってよい。ネットワーク１５０及び１９０は、スタンドアロンネットワークとして又は相互協働状態において動作する前述の１つの又は任意の数の例示用のタイプのネットワークを更に含んでもよい。ネットワーク１５０及び１９０は、自身が通信可能に結合されている１つ又は複数のクライアント又はサーバーの１つ又は複数のプロトコルを利用してもよい。ネットワーク１５０及び１９０は、その他のプロトコルに変換してもよく、或いは、その他のプロトコルからネットワーク装置の１つ又は複数のプロトコルに変換してもよい。ネットワーク１５０及び１９０は、それぞれ、１つのネットワークとして示されているが、１つ又は複数の実施形態によれば、ネットワーク１５０及び１９０は、それぞれ、複数の相互接続されたネットワークを有してもよいことを理解されたい。
【００３１】
ストレージ装置１６０Ａ（１）〜１６０Ａ（Ｎ）、１６０Ｂ（１）〜１６０Ｂ（Ｎ）、及び／又は１８０（１）〜１８０（Ｎ）は、ネットワークによるアクセスが可能なストレージであってよく、且つ、サーバー１４０（Ａ）又は１４０（Ｂ）に対してローカル接続されたものであってもよく、リモート接続されたものであってもよく、或いは、これらの組合せであってもよい。ストレージ装置１６０Ａ（１）〜１６０Ａ（Ｎ）、１６０Ｂ（１）〜１６０Ｂ（Ｎ）、及び／又は１８０（１）〜１８０（Ｎ）は、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）、磁気テープ、ディスク、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ｉＳＣＳＩ（ｉｎｔｅｒｎｅｔ  Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｆａｃｅ）  ＳＡＮ、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  ＳＡＮ、ＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、光に基づいたストレージ、又はその他のコンピュータによるアクセスが可能なストレージを利用してもよい。ストレージ装置１６０Ａ（１）〜１６０Ａ（Ｎ）、１６０Ｂ（１）〜１６０Ｂ（Ｎ）、及び／又は１８０（１）〜１８０（Ｎ）は、バックアップ又はアーカイブのために使用してもよい。
【００３２】
いくつかの実施形態によれば、クライアント１１０は、スマートフォン、ＰＤＡ、デスクトップコンピュータ、ラップトップコンピュータ、サーバー、その他のコンピュータ、或いは、ネットワーク１５０に対して無線又は有線接続を介して結合されたその他の装置であってもよい。クライアント１１０は、ユーザー入力、データベース、ファイル、ウェブサービス、及び／又はアプリケーションプログラミングインターフェイスからデータを受け取ってもよい。
【００３３】
サーバー１４０Ａ及び１４０Ｂは、アプリケーションサーバー、アーカイブプラットフォーム、バックアップサーバー、ネットワークストレージ装置、メディアサーバー、電子メールサーバー、文書管理プラットフォーム、インタープライズサーチサーバー、又はネットワーク１５０に対して通信可能に結合されたその他の装置であってもよい。サーバー１４０Ａ及び１４０Ｂは、アプリケーションデータ、バックアップデータ、又はその他のデータの保存のために、ストレージ装置１６０Ａ（１）〜１６０Ａ（Ｎ）、１６０Ｂ（１）〜１６０Ｂ（Ｎ）、及び／又は１８０（１）〜１８０（Ｎ）を利用してもよい。サーバー１４０Ａ及び１４０Ｂは、アプリケーションサーバーなどのホストであってもよく、これは、クライアント１１０とバックアッププラットフォームの間においてやり取りされるデータ、バックアッププロセス、及び／又は保存を処理してもよい。いくつかの実施形態によれば、サーバー１４０Ａ及び１４０Ｂは、データをバックアップすると共に／又はアーカイブするために使用されるプラットフォームであってもよい。
【００３４】
仮想化環境１４５のゲスト仮想機械１５６Ａ〜１５６Ｃは、セキュア仮想機械１５８との間において予め規定された通信方式を使用してもよい。ゲスト仮想機械１５６Ａ〜１５６Ｃは、タグ付きメモリモジュール１６５Ａ〜１６５Ｃを含んでもよく、これらのタグ付きメモリモジュール１６５Ａ〜１６５Ｃは、セキュア仮想機械１５８との間において合意されたフォーマット（例えば、タグ付き制御ブロックなど）を使用し、１つ又は複数のメモリ構造をエクスポートしてもよい。ゲスト仮想機械からのエクスポートされたメモリ構造は、情報をセキュア仮想機械に提供してもよく、或いは、セキュア仮想機械が１つ又は複数のパラメータを設定できるようにしてもよい。例えば、ゲスト仮想機械１５６Ａのタグ付きメモリモジュール１６５Ａは、ゲスト仮想機械１５６Ａ上において稼働している１つ又は複数のプロセス（例えば、ウイルススキャニングプロセスやウイルス対策更新プロセスなど）に関する情報を含むメモリ構造をエクスポートしてもよい。セキュア仮想機械１５６は、メモリモニタモジュール１６８を使用し、合意された又は規定のフォーマットを使用するメモリ構造を検出してもよい。セキュア仮想機械１５６は、このようなエクスポートされたメモリ構造を消費してもよく、或いは、読み取ってもよい。エクスポートされたメモリ構造を消費することにより、セキュア仮想機械１５６がゲスト仮想機械上の１つ又は複数のプロセスの数、タイプ、及び状態を監視できるようにしてもよい。又、ゲスト仮想機械は、エクスポートされたメモリ構造内において、その他のデータを提供してもよい。
【００３５】
又、ゲスト仮想機械１５６Ａのタグ付きメモリモジュール１６５Ａは、セキュア仮想機械１５６のメモリモニタモジュール１６８によって設定可能な１つ又は複数のパラメータを含むメモリ構造をエクスポートしてもよい。セキュア仮想機械１５６は、規定のフォーマットを使用するメモリ構造を検出してもよく、且つ、エクスポートされたメモリ構造内に１つ又は複数のパラメータを設定してもよい。例えば、ゲスト仮想機械１５６Ａは、タグ付きメモリモジュール１６５Ａを使用してタグ付きメモリ構造をエクスポートしてもよい。いくつかの実施形態によれば、タグ付きメモリ構造は、ゲスト仮想機械１５６Ａ上において稼働しているプロセスのリソース消費量を決定してもよい１つ又は複数のパラメータを提供してもよい。タグ付きメモリ構造は、ゲスト仮想機械が自身に割り当てられている限りのリソースを使用できるようにする値を既定値としてもよい。
【００３６】
セキュア仮想機械１５６は、例えば、サーバー１４０Ａなどの基礎をなしているプラットフォームを監視してもよい。セキュア仮想機械１５６のメモリモニタモジュール１６８は、ストレージ、ＣＰＵ利用率、メモリ、ネットワーク入出力（Ｉ／Ｏ）、及びその他の基準を監視してもよい。セキュア仮想機械１５６は、ハイパーバイザなどの仮想化プラットフォームの管理コンポーネントであってもよい。従って、セキュア仮想機械１５６は、ゲスト仮想機械が利用不能なプラットフォームリソース情報に対してアクセス可能であってもよい。いくつかの実施形態によれば、セキュア仮想機械１５６は又、ゲスト仮想機械のメモリ読込みを監視するために１つ又は複数のハイパーバイザＡＰＩを有してもよい。
【００３７】
いくつかの実施形態によれば、例えば、最大ＣＰＵ利用率、最大メモリ利用率、又はその他の閾値などの１つ又は複数の利用率閾値を規定してもよい。閾値が満足又は超過された場合に、メモリモニタモジュール１６８は、１つ又は複数の仮想機械のリソース利用率が低減されてもよいかどうかを判定してもよい。メモリモニタモジュール１６８は、ゲスト仮想機械上における稼働プロセスに関する情報を使用してもよく、この情報は、プロセスデータを含むタグ付きメモリ構造をエクスポートするゲスト仮想機械によって提供されたものであってもよい。いくつかの実施形態によれば、メモリモニタモジュール１６８は、ゲスト仮想機械プロセスの優先順位に関するデータを含んでもよく、或いは、これに対してアクセスしてもよく、このデータは、ゲスト仮想機械プロセスの識別を支援することになろう。いくつかの実施形態によれば、メモリモニタモジュール１６８は、識別されたゲスト仮想機械プロセスのうちで最もリソース集約的なゲスト仮想機械プロセスを識別してもよい。その他の要因（例えば、プロセス開始時刻や推定プロセス完了時刻など）を使用し、ゲスト仮想機械プロセスを識別してもよい。ゲスト仮想機械プロセスが識別されたら、メモリモニタモジュール１６８は、そのプロセスに対応するエクスポートされたメモリ構造内の１つ又は複数のパラメータを変更してもよい。メモリモニタモジュール１６８は、パラメータを使用することにより、消費量を低減するように、消費を停止するように、又はその他の目的を実現するように、ゲスト仮想機械プロセスに対して通知してもよい。例えば、パラメータは、ゼロを上回る任意の値がリソース消費量の低減を示す「抑制値」であってよい（例えば、パラメータは、ファイルのスキャニングなどの動作の間のミリ秒を単位とした待機時間を表してもよい）。その他の値によってその他のプロセス入力を提供してもよい。例えば、パラメータを設定することにより、ゲスト仮想機械上のプロセスを停止又は中断させる必要があることを示してもよい。従って、特定のフォーマット又は命名規則を有するエクスポートされたメモリ構造を識別することにより、セキュア仮想機械は、ゲスト仮想機械から情報を受け取ることも可能であり、且つ、情報をゲスト仮想機械に対して提供することもできる。
【００３８】
いくつかの実施形態によれば、セキュア仮想機械１５６は、メモリモニタモジュール１６８を使用し、ゲストＶＭ（ＧＶＭ）内のＥＸＥ及びＤＬＬのイメージ読込みを待ち受けてもよい。セキュア仮想機械１５６は、特定の命名規則を有するエクスポートを待ち受けると共に探してもよい。ソフトウェア開発者は、ゲスト仮想機械上において稼働するソフトウェア内において命名規則をサポートしてもよく、且つ、このソフトウェアのプロセスは、メモリ構造をエクスポートすることにより、例えば、セキュア仮想機械などの管理コンポーネントと通信してもよい。これらのエクスポートは、セキュア仮想機械（ＳＶＭ）が消費するか又は入力する（或いは、これらの両方を行う）ように意図されたデータを収容することができるデータ構造であってもよい。いくつかの実施形態によれば、命名規則に従って命名されたエクスポートされたデータ構造は、「タグ付き制御ブロック」と呼称することができる。
【００３９】
少なくとも１つの特定の実施形態によれば、命名規則又はフォーマットは、その名称が「ＳｙｍＳＶＭ＿」によって始まるエクスポートされたメモリ構造を使用してもよい。エクスポートされたメモリ構造は、それぞれ、ページの第１バイトを開始するようにアライメントされた状態において、その独自のページ内に位置してもよく、且つ、エクスポートされたタグ付き制御ブロックを収容するページは、ページング不能とマーキングされてもよい。
【００４０】
少なくとも１つの実施形態によれば、ページング不能なメモリ内における制御ブロックの配置を実行してもよく、その理由は、ＳＶＭがページ書込みブレークポイントを使用してタグ付き制御ブロック内の状態変化を追跡してもよいためである。制御ブロックがページング可能である場合には、その結果、コンテキストスイッチが存在するたびにブレークポイントが生成されることになろう。いくつかの実施形態によれば、ＳＶＭが最初にタグ付き制御ブロックを見出した際に、そのプロセスと関連するＣＲ３（制御レジスタ３）の値をその追跡対象の制御ブロックに関する情報と共に保存してもよい。そのページのページ書込みブレークポイントが異なるＣＲ３値を有すると識別された場合には、それは、そのページが別のプロセスによってアンロック及び再使用されたために関連するプロセスがシャットダウン又はクラッシュしていることを通知していよう。
【００４１】
１つ又は複数の実施形態によれば、タグ付き制御ブロックは、それぞれ、次の３つの情報片を含むことになる標準ヘッダによって始まっていてもよい。
１．特定のフォーマット、命名規則、又は方式を識別することができるようなバージョン
２．タイプストリング
３．後続するべきタイプ固有のデータの長さ
【００４２】
タイプストリングは、特定のタイプのタグ付き制御ブロックと関連する名称を規定してもよい。例えば、タグ付き制御ブロックのタイプは、次のものを含んでもよい。
・ＣｌｉｅｎｔＤａｔａＳｔｒｕｃｔ―ＳＶＭが管理サーバーに対してクライアントを識別できるようにするデータを含む。
・ＶＭＥｎｖｉｒｏｎｍｅｎｔＩｎｆｏ―このプロセスが稼働しているＧＶＭ（ゲスト仮想機械）及び物理的なホストに関するデータがＳＶＭによって入力されることになる。
・ＳｃａｎＣｏｎｔｒｏｌＳｔｒｕｃｔ―収容元であるＧＶＭ内において継続稼働しているスキャニングの数をＳＶＭが認知できるようにし、且つ、ＧＶＭが処理するファイルの間においてミリ秒を単位とする規定の時間にわたって休止することにより、ＧＶＭがそのスキャニングを抑制するようにする値をＳＶＭが規定できるようにする。
【００４３】
タイプ及び長さを有する共通ヘッダを伴うこの方式を使用することにより、ＳＶＭは、タグ付き制御ブロックの検出及び管理を一般的に処理することができるようになり、且つ、制御ブロックタイプに固有の特定の処理を、登録されている制御ブロックタイプに固有のハンドラに対して手渡すことができるようになる。
【００４４】
一実施形態によれば、ＳｃａｎＣｏｎｔｒｏｌＳｔｒｕｃｔのタグ付き制御ブロックを実装してもよい。この実施形態においては、セキュリティエンドポイント保護を実装したゲスト仮想機械（ＳＥＰクライアント）は、スキャニング機能を抑制してもよい。又、ＳＶＭが非ゼロの抑制値を提供している場合には、ＳＥＰクライアントは、いまや、その仕様に従って抑制してもよい。又、ＳＥＰクライアントは、自身がスキャニングを起動又は停止している場合には、現在のスキャニングのカウントがＳｃａｎＣｏｎｔｒｏｌＳｔｒｕｃｔ内において継続的に更新されるにすることにより、ＳＶＭがこの情報を取得できるようにしてもよい。ＳＥＰクライアントは、そのクライアントを管理サーバーに対して識別するために使用される最新の情報が継続的にＣｌｉｅｎｔＤａｔａＳｔｒｕｃｔ内のデータに入力されるようにしてもよい。ＳＶＭは、この情報を使用し、管理システム内においてそのクライアントに関する情報を取得又は設定してもよい。
【００４５】
この方式のための対応するＳＶＭコンポーネント（例えば、メモリモニタモジュール１６８）は、いまや、ＧＶＭを収容している所与の物理的ホスト上における全体な負荷をその権限の下において監視してもよい。ＳＶＭは、いまや、この物理的ホストの負荷情報と、ＧＶＭからのそのスキャニング状態に関する情報と、を使用し、ＧＶＭ内におけるスキャニング動作に起因した負荷パターンを生成してもよい。例えば、物理的システムの負荷が複数のＧＶＭ内において継続稼働するいくつかのスキャニングに起因して大きい場合には、ＳＶＭは、物理的システム上の全体負荷が望ましい閾値未満に低下する時点まで、１つ又は複数のＧＶＭに対して抑制するように指示してもよい。ＳＶＭは、それぞれのＧＶＭがスキャニングされることを依然として保証しつつ、様々な方式を実装して物理的システム上の負荷を管理してもよい（例えば、負荷が許容可能な状態となる時点まで複数のＧＶＭの全体を抑制するか、或いは、複数のＧＶＭのすべてがそのスキャニングを完了する時点まで複数のＧＶＭのそれぞれを一度に１つずつ稼働させることにより、最大負荷に対するＧＶＭのスキャニングの組全体の寄与度に対して上限を課してもよい）。
【００４６】
ウイルススキャニングプロセス、ウイルス対策更新プロセス、又はその他のプロセスの抑制に加えて、タグ付きメモリブロックプロトコル又は方式を使用することにより、様々な目的のためにゲスト仮想機械と管理コンポーネント（例えば、ＳＶＭ）の間の通信を実行してもよい。
【００４７】
一実施形態によれば、ＳＶＭによるタグ付き制御ブロックの検出及び処理は、以下のように概略的に表現してもよい。
【００４８】
タグ付き制御ブロックを含むプロセスのイメージ読込みを検出してもよい。これは、いくつかの実施形態によれば、タグ付きメモリブロックを含んでいるとセキュア仮想機械が認知しているプロセスと関連したメモリを監視することによって実行してもよい。セキュア仮想機械は、タグ付きメモリブロックを含む１つ又は複数のプロセスを示すリスト、表、又はその他のデータを含んでもよく、或いは、これらに対してアクセスしてもよい。
【００４９】
仮想化環境用のＡＰＩ及び／又はハイパーバイザ用のＡＰＩを使用することにより、メモリをセキュア仮想機械によって監視してもよい。例えば、いくつかの実施形態によれば、デバッグサービスルーチンにおいて、ページブレークポイント割込みを使用してもよい。この割込みは、ユーザーモードイメージとカーネルモードイメージの両方についてイメージ読込み当たりに１回ずつ、或いは、その他のインターバル又はトリガポイントにおいて、起動してもよい。割込み、ＡＰＩ、又はその他のメモリアクセスメカニズムにより、ＳＶＭがゲスト仮想機械内における１つ又は複数のイメージ読込みを観察することができるようにしてもよい。イメージ読込み情報は、ファイル名、ファイルサイズ、及びその他のデータを含んでもよい（例えば、「ＬｏａｄＩｍａｇｅ  Ｆｉｌｅｎａｍｅ  ０ｘ８０５４８ｅｆ４  Ｉｎｆｏ  ０ｘ８０５４８ｅｃ４  Ｆｉｌｅｎａｍｅ  （２７  ｂｙｔｅｓ）：  ＼ＷＩＮＤＯＷＳ＼ｓｙｓｔｅｍ３２＼ＫＤＣＯＭ．ＤＬＬ」）。
【００５０】
監視プロセス又はセキュア仮想機械は、特定のプロセス名（例えば、「＼Ｐｒｏｇｒａｍ  Ｆｉｌｅｓ＼Ｓｙｍａｎｔｅｃ＼ｒｔｖｓｃａｎ．ｅｘｅ」）のイメージ読込みイベントを待ち受けてもよく、且つ、特定のプロセス名が検出されたら、関連するエクスポートされたメモリ構造を含むエクスポートテーブルをチェックしてもよい。監視プロセス又はセキュア仮想機械は、その名称が特定の命名規則に準拠しているエクスポートを識別してもよい（例えば、ＳｙｍＳＶＭ＿ＳｃａｎＣｏｎｔｏｒｌＳｔｒｕｃｔなどのタグ付き制御ブロック）。検出されたら、監視プロセス又はセキュア仮想機械は、１つ又は複数の場所に注目し、且つ、その見出されたページ上にページ書込みブレークポイントをセットアップしてもよい。監視プロセスは、見出されたページ上のトリガイベント又はページ書込みブレークポイントを生成したゲスト仮想機械を判定してもよい。
【００５１】
５つの仮想機械が存在している場合には、５つの別個の物理的ページ上に５つのページ書込みブレークポイントが存在しよう（それぞれがそのＶＭ用のタグ付き制御ブロック構造を含んでいてもよい）。ＳＶＭ内に、アレイ、ハッシュテーブル、又はその他のデータ構造を維持してもよく、或いは、ページ書込みブレークポイントを生成した物理的ページアドレスをＶＭに対して関連付けるＳＶＭに対してアクセス可能であってもよい。
【００５２】
メモリ制御ブロックにタグ付けすることにより、ゲストＶＭ（ＧＶＭ）及びこの方式を実装したセキュリティＶＭ（ＳＶＭ）内の特定のプロセス間における簡単且つ効果的な（制御を可能とする）通信のための一般的なメカニズムが得られることになる。セキュリティ仮想機械によるゲスト仮想機械のメモリ読込みの監視は、ハイパーバイザ又は仮想化環境のＡＰＩを使用して実行してもよい。これに必要とされるのは、従来の物理的インフラストラクチャ指向のソフトウェアに対するわずかな追加のみであろう。
【００５３】
図２は、本開示の一実施形態によるコンピュータシステム２００のブロックダイアグラムを示している。コンピュータシステム２００は、本開示による技法を実施するのに適している。コンピュータシステム２００は、バス２１２を含んでもよく、バス２１２は、中央プロセッサ２１４、システムメモリ２１７（例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュＲＡＭ、又はこれらに類似したもの）、入出力（Ｉ／Ｏ）コントローラ２１８、オーディオ出力インターフェイス２２２を介したスピーカシステム２２０などの外部オーディオ装置、ディスプレイアダプタ２２６を介した表示画面２２４などの外部装置、シリアルポート２２８及び２３０、（キーボードコントローラ２３３を介してインターフェイスされた）キーボード２３２、ストレージインターフェイス２３４、フロッピーディスク２３８を受け入れるように動作可能なフロッピーディスクドライブ２３７、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌネットワーク２９０と接続するように動作可能なホストバスアダプタ（ＨＢＡ：Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）インターフェイスカード２３５Ａ、ＳＣＳＩバス２３９に接続するように動作可能なホストバスアダプタ（ＨＢＡ）インターフェイスカード２３５Ｂ、及び光ディスク２４２を受け入れるように動作可能な光ディスクドライブ２４０などのコンピュータシステム２１０の主要なサブシステムを相互接続してもよい。又、マウス２４６（又は、シリアルポート２２８を介してバス２１２に結合されたその他のポインティング及びクリック装置）、（シリアルポート２３０を介してバス２１２に結合された）モデム２４７、（バス２１２に直接結合された）ネットワークインターフェイス２４８、パワーマネージャ２５０、及び電池２５２を含んでもよい。
【００５４】
バス２１２は、中央プロセッサ２１４とシステムメモリ２１７の間のデータ通信を許容しており、システムメモリ２１７は、上述のように、読み出し専用メモリ（ＲＯＭ）又はフラッシュメモリ（いずれも図示されてはいない）と、ランダムアクセスメモリ（ＲＡＭ）（図示されてはいない）と、を含んでもよい。ＲＡＭは、オペレーティングシステム及びアプリケーションプログラムがその内部に読み込まれることになるメインメモリであってよい。ＲＯＭ又はフラッシュメモリは、その他のコードとしては、周辺コンポーネントとのやり取りなどの基本的なハードウェア動作を制御する基本入出力システム（ＢＩＯＳ：Ｂａｓｉｃ  Ｉｎｐｕｔ−Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）を収容することができる。コンピュータシステム２１０と共に存在するアプリケーションは、ハードディスクドライブ（例えば、固定ディスク２４４）、光ドライブ（例えば、光ドライブ２４０）、フロッピーディスクユニット２３７、又はその他のストレージ媒体などのコンピュータ可読媒体上に保存してもよく、或いは、これを介してアクセスしてもよい。例えば、タグ付きメモリ相互動作管理モジュール１５４は、システムメモリ２１７内に存在してもよい。
【００５５】
ストレージインターフェイス２３４は、コンピュータシステム２１０のその他のストレージインターフェイスと同様に、固定ディスクドライブ２４４などの情報の保存及び／又は検索のために標準コンピュータ可読媒体に対して接続することができる。固定ディスクドライブ２４４は、コンピュータシステム２１０の一部であってもよく、或いは、別個であると共にその他のインターフェイスシステムを通じてアクセスしてもよい。モデム２４７は、電話リンクを介してリモートサーバーに対する又はインターネットサービスプロバイダ（ＩＳＰ）を介してインターネットに対する直接的な接続を提供してもよい。ネットワークインターフェイス２４８は、ＰＯＰ（Ｐｏｉｎｔ  Ｏｆ  Ｐｒｅｓｅｎｃｅ）を介したインターネットに対する直接的なネットワークリンクを介してリモートサーバーに対する直接的な接続を提供してもよい。ネットワークインターフェイス２４８は、デジタルセルラー電話接続、ＣＤＰＤ（Ｃｅｌｌｕｌａｒ  Ｄｉｇｉｔａｌ  Ｐａｃｋｅｔ  Ｄａｔａ）接続、デジタル衛星データ接続、又はこれらに類似したものを含む無線技法を使用し、このような接続を提供してもよい。
【００５６】
多くのその他の装置又はサブシステム（図示されてはいない）を類似の方式によって接続してもよい（例えば、文書スキャナやデジタルカメラなど）。逆に、本開示を実施するために、図２に示されている装置のすべての存在が必要であるというわけでない。図２に示されているものとは異なる方式によって装置及びサブシステムを相互接続することもできる。本開示を実装するためのコードは、システムメモリ２１７、固定ディスク２４４、光ディスク２４２、又はフロッピーディスク２３８のうちの１つ又は複数のものなどのコンピュータ可読ストレージ媒体内に保存してもよい。又、本開示を実装するためのコードは、１つ又は複数のインターフェイスを介して受信してもよく、且つ、メモリ内に保存してもよい。コンピュータシステム２１０上に提供されるオペレーティングシステムは、ＭＳ−ＤＯＳ（登録商標）、ＭＳ−ＷＩＮＤＯＷＳ（登録商標）、ＯＳ／２（登録商標）、ＯＳ  Ｘ（登録商標）、ＵＮＩＸ（登録商標）、Ｌｉｎｕｘ（登録商標）、又はその他の既知のオペレーティングシステムであってよい。
【００５７】
パワーマネージャ２５０は、電池２５２のパワーレベルを監視してもよい。パワーマネージャ２５０は、パワーレベル及びコンピュータシステム２００のシャットダウン前の残存時間ウィンドウを判定できるようにするための１つ又は複数のＡＰＩ（アプリケーションプログラミングインターフェイス（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ））、電力消費率、コンピュータシステムが商用電源（例えば、ＡＣ電源）又は電池電力のいずれによって動作しているのかを示すインジケータ、及びその他の電源関係の情報を提供してもよい。いくつかの実施形態によれば、パワーマネージャ２５０のＡＰＩは、リモートアクセス可能であってよい（例えば、ネットワーク接続を介してリモートバックアップ管理モジュールからアクセス可能であってよい）。いくつかの実施形態によれば、電池２５２は、コンピュータシステム２００にローカル又はリモート配置されたＵＰＳ（無停電電源装置（Ｕｎｉｎｔｅｒｒｕｐｔａｂｌｅ  Ｐｏｗｅｒ  Ｓｕｐｐｌｙ））であってもよい。このような実施形態においては、パワーマネージャ２５０は、ＵＰＳのパワーレベルに関する情報を提供してもよい。
【００５８】
図３を参照すれば、本開示の一実施形態によるタグ付きメモリ相互動作管理モジュール３１０が示されている。図示のように、タグ付きメモリ相互動作管理モジュール３１０は、メモリエクスポートモジュール３１２、メモリ読込み監視モジュール３１４、エクスポートされたメモリハンドラモジュール３１６、及びエラーロギング及び報告モジュール３１８を含む１つ又は複数のコンポーネントを含んでもよい。
【００５９】
以下の説明は、１つ又は複数のモジュールを含んでもよい仮想機械間通信のためのシステム及び方法のネットワーク要素、コンピュータ、及び／又はコンポーネントについて記述している。本明細書において使用されている「モジュール」という用語は、演算ソフトウェア、ファームウェア、ハードウェア、及び／又はこれらの様々な組合せを意味するものと理解してもよい。但し、モジュールは、ハードウェア又はファームウェア上において実装されていない又はプロセッサ可読記録可能ストレージ媒体上に記録されていないソフトウェアであると解釈してはならない（例えば、モジュールは、それ自体がソフトウェアではない）。モジュールは、例示を目的としていることに留意されたい。モジュールは、様々なアプリケーションをサポートするように、組み合わせてもよく、統合してもよく、分離してもよく、且つ／又は、複製してもよい。又、特定のモジュールにおいて実行されるものと本明細書に記述されている機能は、機能が特定のモジュールにおいて実行される代わりに又はこれに加えて、１つ又は複数のその他のモジュールにおいて、且つ／又は、１つ又はその他の装置により、実行されてもよい。更には、モジュールは、相互にローカル又はリモートの関係にある複数の装置及び／又はその他のコンポーネントに跨って実装されてもよい。更には、モジュールは、１つの装置から除去すると共に別の装置に追加してもよく、且つ／又は、両方の装置内に含まれてもよい。
【００６０】
メモリエクスポートモジュール３１２は、仮想化管理コンポーネント（例えば、セキュア仮想機械１５８）との間において合意された規定のフォーマット又は命名規則を使用し、ゲスト仮想機械からメモリの１つ又は複数の部分をエクスポートしてもよい。ゲスト仮想機械からのエクスポートされたメモリ構造は、情報をセキュア仮想機械に提供してもよく、或いは、セキュア仮想機械が１つ又は複数のパラメータを設定できるようにしてもよい。例えば、メモリエクスポートモジュール３１２は、ゲスト仮想機械内に存在してもよく、且つ、ゲスト仮想機械上において稼働している１つ又は複数のプロセス（例えば、ウイルススキャニングプロセスやウイルス対策更新プロセスなど）に関する情報を含むメモリ構造をエクスポートしてもよい。又、ゲスト仮想機械は、エクスポートされたメモリ構造内において、その他のデータを提供してもよい。
【００６１】
又、メモリエクスポートモジュール３１２は、セキュア仮想機械によって設定可能な１つ又は複数のパラメータを含むメモリ構造をエクスポートしてもよい。例えば、メモリエクスポートモジュール３１２は、ゲスト仮想機械上において稼働しているプロセスのリソース消費量を決定することになる１つ又は複数のパラメータを提供するタグ付きメモリ構造をエクスポートしてもよい。その他のタグ付きメモリ構造をエクスポートすることにより、仮想機械のその他のプロセスを制御してもよい。
【００６２】
メモリ読込み監視モジュール３１４は、合意された又は規定のフォーマットを使用するメモリ構造を検出してもよい。メモリ読込み監視モジュール３１４は、セキュア仮想機械上に存在してもよい。メモリ読込み監視モジュール３１４は、このようなエクスポートされたメモリ構造を消費してもよく、或いは、読み取ってもよい。エクスポートされたメモリ構造を消費することにより、セキュア仮想機械がゲスト仮想機械上の１つ又は複数のプロセスの数、タイプ、及び状態を監視できるようにしてもよい。メモリ読込み監視モジュール３１４は、規定されたフォーマットを使用するメモリ構造を検出してもよく、且つ、エクスポートされたメモリ構造内に１つ又は複数のパラメータを設定してもよい。いくつかの実施形態によれば、タグ付き制御ブロックを検出した際に、メモリ読込み監視モジュール３１４は、タグ付き制御ブロック内の情報を使用して特定のハンドラを判定してもよい。例えば、タグ付き制御ブロックは、それぞれ、次の３つの情報片を含むことになる標準ヘッダによって始まっていてもよい。
１．特定のフォーマット、命名規則、又は方式を識別することができるようなバージョン
２．タイプストリング
３．後続するべきタイプ固有のデータの長さ
【００６３】
タイプストリングは、タグ付き制御ブロックの特定のタイプと関連した名称を規定してもよい。メモリ読込み監視モジュール３１４は、この名称を使用し、そのタイプ用の特定のハンドラを呼び出してもよく、或いは、そのインスタンスを生成してもよい。
【００６４】
いくつかの実施形態によれば、メモリ読込み監視モジュール３１４は、ゲストＶＭ（ＧＶＭ）内におけるＥＸＥ及びＤＬＬのイメージ読込みを待ち受けてもよい。メモリ読込み監視モジュール３１４は、特定の命名規則を有するエクスポートを探してもよい。ソフトウェア開発者は、ゲスト仮想機械上において稼働するソフトウェア内において命名規則をサポートしてもよく、且つ、このソフトウェアのプロセスは、メモリ構造をエクスポートすることにより、例えば、セキュア仮想機械などの管理コンポーネントと通信してもよい。エクスポートは、セキュア仮想機械（ＳＶＭ）が消費又は入力する（又は、これらの両方を実行する）ように意図されたデータを収容することができるデータ構造であってよい。いくつかの実施形態によれば、命名規則に従って命名されたエクスポートされたデータ構造は、「タグ付き制御ブロック」を呼称することができる。
【００６５】
エクスポートされたメモリハンドラモジュール３１６は、特定のタイプのタグ付きメモリ構造（例えば、タグ付き制御ブロック）を処理するための１つ又は複数の特定のハンドラであってよい。エクスポートされたメモリハンドラモジュール３１６は、セキュア仮想機械上に存在してもよい。特定のタイプのタグ付きメモリ構造を処理するようにそれぞれが設計された複数の異なるハンドラが存在してもよい。この結果、タグ付きメモリ通信方式の容易な拡張性及び柔軟性が実現されよう。エクスポートされたメモリハンドラモジュール３１６は、対象のタグ付きメモリ構造を消費すると共に／又はこれに入力してもよい。
【００６６】
エラーロギング及び報告モジュール３１８は、ログ、報告、又は仮想機械間通信と関連したその他の情報を生成してもよい。
【００６７】
図４を参照すれば、本開示の一実施形態による仮想機械間通信のための方法４００が示されている。方法４００は、ブロック４０２において始まってもよい。
【００６８】
ブロック４０４において、規定のタグ付けフォーマットを使用し、タグ付きメモリ構造をゲスト仮想機械からエクスポートしてもよい。
【００６９】
ブロック４０６において、ゲスト仮想機械のイメージ読込みをセキュア仮想機械から監視してもよい。いくつかの実施形態によれば、タグ付きメモリ通信方式を実装したプロセスのイメージ読込みについてのみ、イメージ読込みのスキャニングを実行してもよい。セキュア仮想機械は、このようなプロセスの表又はその他のメモリ構造を利用可能であってよい。
【００７０】
ブロック４０８において、セキュア仮想機械は、イメージ読込みにおいて、タグ付きメモリ構造が識別されているかどうかを判定してもよい。タグ付きメモリ構造は、例えば、タグ付き制御ブロックであってよい。例えば、命名規則又はフォーマットは、その名称が「ＳｙｍＳＶＭ＿」によって始まるエクスポートされたメモリ構造を使用してもよい。エクスポートされたメモリ構造は、それぞれ、ページの第１バイトを開始するようにアライメントされた状態において、その独自のページ内に位置してもよく、且つ、エクスポートされたタグ付き制御ブロックを収容するページは、ページング不能とマーキングされてもよい。タグ付きメモリ構造が検出されている場合には、本方法は、ブロック４１０に継続してもよい。タグ付きメモリ構造が検出されていない場合には、本方法は、ブロック４０６に戻ってもよい。
【００７１】
ブロック４１０において、識別されたタグ付きメモリ構造を特定のハンドラに送信してもよく、或いは、特定のハンドラを呼び出すか又はそのインスタンスを生成してもよく、且つ、特定のハンドラにタグ付きメモリ構造のアドレスを提供してもよい。ハンドラは、タグ付きメモリ構造のタイプによって判定してもよい。タグ付きメモリ構造タイプをハンドラに対してマッピングするルックアップ表、タグ付きメモリ構造をハンドラに対してマッピングする特定の命名規則、又はタグ付きメモリ構造の特定のタイプ用のハンドラを識別するその他の方法が存在してもよい。
【００７２】
ブロック４１２において、特定のハンドラは、タグ付きメモリ構造を消費するか又はこれに入力するべきかどうか（例えば、データを読み取るか又はデータ値を設定するかどうか）を判定してもよい。いくつかの実施形態によれば、これらの両方を実行してもよい。タグ付きメモリ構造を読み取る場合には、本方法は、ブロック４１４に継続してもよい。タグ付きメモリ構造に入力する場合には、本方法は、ブロック４１６に継続してもよい。
【００７３】
ブロック４１４において、特定のタイプのタグ付きメモリ構造用のハンドラは、エクスポートされた制御構造の値を読み取ってもよい。例えば、メモリ構造は、ゲスト仮想機械上に稼働している１つ又は複数のプロセス（例えば、ウイルススキャニングプロセスやウイルス対策更新プロセスなど）に関する情報を含んでいてもよい。
【００７４】
ブロック４１６において、エクスポートされたメモリ構造の値又はパラメータを設定又は入力してもよい。例えば、ゲスト仮想機械上において稼働しているプロセスのリソース消費量を決定することになる１つ又は複数のパラメータを提供する値を入力してもよい。その他のタグ付き構造をエクスポートすることにより、仮想機械のその他のプロセスを制御してもよい。
【００７５】
ブロック４１８において、本方法４００は、終了してもよい。
【００７６】
図５を参照すれば、本開示の一実施形態による仮想機械間通信のための方法５００が示されている。方法５００は、ブロック５０２において始まってもよい。
【００７７】
ブロック５０４において、セキュア仮想機械又は仮想化プラットフォームのその他の管理コンポーネントは、プラットフォーム環境状態インジケータ（例えば、ＣＰＵ利用率、メモリ利用率、ネットワーク利用率、及びストレージ利用率）を監視してもよい。セキュア仮想機械は、ゲスト仮想機械には入手不能なプラットフォームリソース情報に対してアクセス可能であってもよい。又、いくつかの実施形態によれば、セキュア仮想機械は、１つ又は複数のハイパーバイザＡＰＩを使用してゲスト仮想機械のメモリ読込みを監視してもよい。
【００７８】
ブロック５０６において、利用率を示すパラメータが規定の閾値を超過しているかどうかを判定してもよい。いくつかの実施形態によれば、例えば、最大ＣＰＵ利用率、最大メモリ利用率、又はその他の閾値などの１つ又は複数の利用閾値を規定してもよい。閾値が満足又は超過されている場合には、本方法は、ブロック５０８に継続してもよい。閾値が満足又は超過されていない場合には、本方法は、ブロック５０４に戻ってもよい。
【００７９】
ブロック５０８において、本方法は、１つ又は複数の仮想機械のリソース利用率が低減されてもよいかどうかを判定してもよい。本方法は、ゲスト仮想機械上における稼働プロセスに関する情報を使用してもよく、この情報は、プロセスデータを含むタグ付きメモリ構造をエクスポートしたゲスト仮想機械によって提供されてもよい。いくつかの実施形態によれば、ゲスト仮想機械プロセスの優先順位に関するデータを使用してもよく、このデータは、ゲスト仮想機械プロセスの識別を支援してもよい。いくつかの実施形態によれば、識別されたゲスト仮想機械プロセスのうちの最もリソース集約的なゲスト仮想機械プロセスを識別してもよい。その他の要因（例えば、プロセス開始時刻や推定プロセス完了時刻など）を使用し、ゲスト仮想機械プロセスを識別してもよい。
【００８０】
ブロック５１０において、セキュア仮想機械は、識別されたゲスト仮想機械プロセスに対応したエクスポートされたメモリ構造内に値を入力してもよい。入力された値を使用することにより、消費量を低減するように、消費を停止させるように、又はその他の目的を実現するように、ゲスト仮想機械プロセスに対して通知してもよい。例えば、入力された値又はパラメータは、ゼロを上回る任意の値がリソース消費量の低減を通知する「抑制値」であってもよい（例えば、パラメータは、ファイルのスキャニングなどの動作の間におけるミリ秒を単位とした待機時間を表してもよい）。その他の値によってその他のプロセス入力を提供してもよい。例えば、パラメータを設定することにより、ゲスト仮想機械上のプロセスを停止又は中断させる必要があることを通知してもよい。
【００８１】
ブロック５１２において、ゲスト仮想機械は、エクスポートされたメモリ構造の入力された値を読み取ってもよい。
【００８２】
ブロック５１４において、ゲスト仮想機械は、入力されたメモリ構造値に従ってリソース（例えば、ＣＰＵ）の使用量を変更してもよい。例えば、仮想機械プロセスは、プロセスの反復の間における休止又は待機を実施してもよい。
【００８３】
ブロック５１６において、方法５００は、終了してもよい。
【００８４】
ここで、上述の本開示による仮想機械間通信は、通常、ある程度の入力データの処理及び出力データの生成を伴うことに留意されたい。この入力データの処理及び出力データの生成は、ハードウェア又はソフトウェアにおいて実施してもよい。例えば、仮想機械間通信モジュール又は上述の本開示に従って仮想機械間通信と関連した機能を実施するための類似の又は関係した回路において、特定の電子コンポーネントを利用してもよい。或いは、この代わりに、命令に従って動作する１つ又は複数のプロセッサにより、上述の本開示に従って、仮想機械間通信と関連した機能を実施してもよい。その場合にも、本開示の範囲に含まれ、それらの命令は、１つ又は複数のプロセッサ可読ストレージ媒体（例えば、磁気ディスク又はその他のストレージ媒体）上に保存してもよく、或いは、１つ又は複数の搬送波内において実施された１つ又は複数の信号を介して１つ又は複数のプロセッサに送信してもよい。
【００８５】
本開示の範囲は、本明細書に記述されている特定の実施形態によって限定されるものではない。実際に、上述の説明及び添付の図面から、当業者には、本明細書に記述されているものに加えて、本開示のその他の様々な実施形態及び本開示に対する変更形態が明らかとなろう。従って、それらのその他の実施形態及び変更形態も、本開示の範囲に含まれるものと解釈されたい。更には、本明細書においては、本開示について、特定の目的を有する特定の実施形態における特定の実装形態の文脈において説明しているが、当業者は、その有用性が、これに限定されるものではなく、且つ、本開示を任意の数の目的を有する任意の数の環境において有益に実装してもよいことを認識するであろう。従って、添付の請求項は、本明細書に記述されている本開示の十分な広さ及び精神を考慮して解釈することを要する。
【図１】
0005873489.tif 000002
【図２】
0005873489.tif 000003
【図３】
0005873489.tif 000004
【図４】
0005873489.tif 000005
【図５】
0005873489.tif 000006