(58)【調査した分野】(Int.Cl.,DB名)
前記識別されたメモリ構造内のデータの一部に少なくとも部分的に基づいて、前記識別されたメモリ構造を処理するためのハンドラを識別するステップを更に有する請求項1に記載の方法。
前記識別されたメモリ構造内のデータの前記部分は、仮想機械間通信構文の特定のバージョンを示すバージョンデータ、仮想機械間通信のタイプを示すタイプストリング、及び通信データの長さを示す長さデータのうちの少なくとも1つを有する請求項4に記載の方法。
前記セキュア仮想機械を使用し、基礎をなしている物理的プラットフォームの1つ又は複数のプラットフォーム環境属性を監視するステップを更に有する請求項1に記載の方法。
前記1つ又は複数のプラットフォーム環境属性は、CPU利用率、メモリ利用率、ネットワーク利用率、及びストレージ利用率のうちの少なくとも1つを有する請求項7に記載の方法。
前記識別されたメモリ構造内に設定された前記値は、前記識別されたゲスト仮想機械プロセスに対する構成可能な抑制値を示す設定を有しており、前記構成可能な抑制値に起因し、前記識別されたゲスト仮想機械プロセスが、前記構成可能な抑制値に比例してCPUリソースの使用量を低減させる請求項9に記載の方法。
前記プロセスは、ウイルススキャニングプロセス、ウイルス対策更新プロセス、データバックアッププロセス、及びデータ回復プロセスのうちの少なくとも1つを有する請求項9に記載の方法。
セキュア仮想機械を使用してゲスト仮想機械の電子メモリ内へのイメージ読込みを監視する前記ステップは、前記セキュア仮想機械には既知であるプロセスの読込みを検出し、命名規則に従って命名されたエクスポートされたデータ構造を提供するステップを有する請求項1に記載の方法。
前記識別されたメモリ構造の1つ又は複数の部分を読み取る前記ステップは、前記ゲスト仮想機械上において稼働している特定のプロセスの複写の現在の数を含むエクスポートされたゲスト仮想機械プロセス情報を読み取ることを更に有する請求項1に記載の方法。
【発明の概要】
【発明が解決しようとする課題】
【0003】
上記の内容に鑑み、現在の仮想機械通信技術に関連した大きな問題点及び欠点が存在していることが理解されよう。
【課題を解決するための手段】
【0004】
仮想機械間通信のための技法が開示される。特定の例示用の一実施形態においては、この技法は、ゲスト仮想機械とやり取りするための方法として実現してもよく、この方法は、セキュア仮想機械を使用し、ゲスト仮想機械の電子メモリ内へのイメージ読込みを監視するステップと、規定のフォーマットを有するメモリ構造を識別するステップと、セキュア仮想機械を使用して、識別されたメモリ構造の1つ又は複数の部分を読み取ることと識別されたメモリ構造内に値を設定することのうちの少なくとも1つを実行するステップと、を有する。
【0005】
この特定の例示用の実施形態のその他の態様によれば、イメージ読込みは、実行可能コードの読込みと動的リンクライブラリの読込みのうちの少なくとも1つを有してもよい。
【0006】
この特定の例示用の実施形態の更なる態様によれば、規定のフォーマットは、タグ付き制御ブロック(tagged control block)を有してもよい。
【0007】
この特定の例示用の実施形態の更なる態様によれば、方法は、識別されたメモリ構造内のデータの一部に少なくとも部分的に基づいて、識別されたメモリ構造を処理するためのハンドラを識別するステップを更に含んでもよい。
【0008】
この特定の例示用の実施形態の更なる態様によれば、識別されたメモリ構造内のデータの一部は、仮想機械間通信構文の特定のバージョンを示すバージョンデータ、仮想機械間通信のタイプを示すタイプストリング、及び通信データの長さを示す長さデータのうちの少なくとも1つを有してもよい。
【0009】
この特定の例示用の実施形態の更なる態様によれば、方法は、ゲスト仮想機械を使用し、識別されたメモリ構造内に設定されている値を読み取るステップと、少なくとも1つの値の読み取りに応答して、ゲスト仮想機械による少なくとも1つの動作を実行するステップと、を更に含んでもよい。
【0010】
この特定の例示用の実施形態の更なる態様によれば、方法は、セキュア仮想機械を使用し、基礎をなしている物理的なプラットフォームの1つ又は複数のプラットフォーム環境属性を監視するステップを更に含んでもよい。
【0011】
この特定の例示用の実施形態の更なる態様によれば、1つ又は複数のプラットフォーム環境属性は、CPU利用率、メモリ利用率、ネットワーク利用率、及びストレージ利用率のうちの少なくとも1つを含んでもよい。
【0012】
この特定の例示用の実施形態の更なる態様によれば、方法は、1つ又は複数のプラットフォーム属性が規定の閾値を超過していると判定するステップと、リソース消費量が低減されることになるゲスト仮想機械プロセスを識別するステップと、識別されたゲスト仮想機械プロセスに対応した識別されたメモリ構造内に値を設定するステップと、ゲスト仮想機械を使用し、識別されたゲスト仮想機械プロセスに対応する識別されたメモリ構造内に設定されている値を読み取るステップと、少なくとも1つの値の読み取りに応答して、ゲスト仮想機械による少なくとも1つの動作を実行し、識別されたゲスト仮想機械プロセスによるリソース消費量を低減するステップと、を含んでもよい。
【0013】
この特定の例示用の実施形態の更なる態様によれば、識別されたメモリ構造内に設定されている値は、識別されたゲスト仮想機械プロセスに対する構成可能な抑制値(throttle value)を示す設定を有してもよく、構成可能な抑制値に起因し、識別されたゲスト仮想機械プロセスが、構成可能な抑制値に比例してCPUリソースの使用量を低減させる。
【0014】
この特定の例示用の実施形態の更なる態様によれば、プロセスは、ウイルススキャニングプロセス、ウイルス対策更新プロセス、データバックアッププロセス、及びデータ回復プロセスのうちの少なくとも1つを有してもよい。
【0015】
この特定の例示用の実施形態の更なる態様によれば、リソース消費量が低減されることになるゲスト仮想機械プロセスを識別するステップは、エクスポートされたタグ付き制御ブロックを介してセキュア仮想機械に提供されるゲスト仮想機械プロセス情報を使用するステップを有してもよい。
【0016】
この特定の例示用の実施形態の更なる態様によれば、セキュア仮想機械を使用してゲスト仮想機械の電子メモリ内へのイメージ読込みを監視するステップは、セキュア仮想機械には既知のプロセスの読込みを検出し、エクスポートされたタグ付き制御ブロックを提供するステップを有してもよい。
【0017】
この特定の例示用の実施形態の更なる態様によれば、識別されたメモリ構造の1つ又は複数の部分を読み取るステップは、エクスポートされたゲスト仮想機械プロセス情報を読み取るステップを有してもよい。
【0018】
この特定の例示用の実施形態の更なる態様によれば、エクスポートされたゲスト仮想機械プロセス情報は、ゲスト仮想機械上において稼働している特定のプロセスの複写の現在の数を有してもよい。
【0019】
この特定の例示用の実施形態の更なる態様によれば、技法は、方法を実行するためのコンピュータプロセスを実行するように少なくとも1つのプロセッサに対して指示するために少なくとも1つのプロセッサによって読み取ることができるように構成された命令のコンピュータプログラムを保存するための少なくとも1つの一時的ではないプロセッサ可読ストレージ媒体として実現してもよい。
【0020】
別の特定の例示用の実施形態においては、技法は、ゲスト仮想機械とやり取りするための製品として実現してもよく、この製品は、少なくとも1つの一時的ではないプロセッサ可読媒体と、少なくとも1つの媒体上に保存された命令と、を有してもよく、命令は、少なくとも1つのプロセッサが少なくとも1つの媒体から読み取ることができるように構成されており、且つ、この結果、これらの命令により、少なくとも1つのプロセッサは、セキュア仮想機械を使用してゲスト仮想機械の電子メモリ内へのイメージ読込みを監視し、規定のフォーマットを有するメモリ構造を識別し、且つ、セキュア仮想機械を使用して、識別されたメモリ構造の1つ又は複数の部分を読み取ることと識別されたメモリ構造内に値を設定することのうちの少なくとも1つを実行するように動作する。
【0021】
別の特定の例示用の実施形態においては、技法は、ネットワークに対して通信可能に結合された1つ又は複数のプロセッサを有するゲスト仮想機械とやり取りするためのシステムとして実現してもよく、1つ又は複数のプロセッサは、セキュア仮想機械を使用してゲスト仮想機械の電子メモリ内へのイメージ読込みを監視し、規定のフォーマットを有するメモリ構造を識別し、且つ、セキュア仮想機械を使用して、識別されたメモリ構造の1つ又は複数の部分を読み取ることと識別されたメモリ構造内に値を設定することのうちの少なくとも1つを実行するように、構成されている。
【0022】
この特定の例示用の実施形態の更なる態様によれば、規定のフォーマットは、タグ付き制御ブロックを有してもよい。
【0023】
この特定の例示用の実施形態の更なる態様によれば、1つ又は複数のプロセッサは、識別されたメモリ構造内のデータの一部に少なくとも部分的に基づいて、識別されたメモリ構造を処理するためのハンドラを識別するように更に構成してもよい。
【0024】
この特定の例示用の実施形態の更なる態様によれば、1つ又は複数のプロセッサは、ゲスト仮想機械を使用し、識別されたメモリ構造内に設定されている値を読み取り、且つ、少なくとも1つの値の読み取りに応答して、ゲスト仮想機械による少なくとも1つの動作を実行するように更に構成してもよい。
【0025】
以下、添付図面に示されているその例示用の実施形態を参照し、本開示について更に詳細に説明することとする。本開示については、例示用の実施形態を参照して後述するが、本開示は、これらの例示用の実施形態に限定されるものではないことを理解されたい。当業者は、本明細書の教示内容を参照することにより、本明細書に記述されている本開示の範囲に含まれると共に本開示が有意な有用性を有しうる実装形態、変形形態、及び実施形態、並びに、その他の使用分野について認識するであろう。
【0026】
本開示について更に十分に理解することができるように、以下、添付図面を参照するが、これらの図面においては、同一の要素が同一の符号によって示されている。これらの図面は、例示を目的としたものに過ぎず、本開示を限定するものと解釈してはならない。
【発明を実施するための形態】
【0028】
図1は、本開示の一実施形態による仮想機械間通信のためのネットワークアーキテクチャ100を示すブロックダイアグラムを示している。
図1は、ネットワークアーキテクチャ100の概略図であり、このネットワークアーキテクチャ100は、図示されてはいない更なる要素を含んでもよい。ネットワークアーキテクチャ100は、クライアントシステム110と、サーバー140A及び140Bと、を含んでもよい(これらのうちの1つ又は複数は、
図2に示されているコンピュータシステム200を使用して実施してもよい)。クライアントシステム110は、ネットワーク150に対して通信可能に結合してもよい。サーバー140Aは、ストレージ装置160A(1)〜160A(N)に対して通信可能に結合してもよく、且つ、サーバー140Bは、ストレージ装置160B(1)〜160B(N)に対して通信可能に結合してもよい。サーバー140A及び140Bは、管理モジュール(例えば、サーバー140Aのタグ付きメモリ相互動作管理モジュール154)を含んでもよい。サーバー140A及び140Bは、SAN(Storage Area Network)ファブリック170に対して通信可能に結合してもよい。SANファブリック170は、サーバー140A及び140Bによる及びネットワーク150を介したクライアントシステム110によるストレージ装置180(1)〜180(N)へのアクセスをサポートしてもよい。サーバー140Aは、ネットワーク190に対して通信可能に結合してもよい。サーバー140Aは、仮想化環境145をホスティングするプラットフォームであってよい。仮想化環境145は、例えば、ゲスト仮想機械156A〜156C及びセキュア仮想機械158などの1つ又は複数の仮想機械をサポートする能力を有してもよい。ゲスト仮想機械156A〜156Cは、タグ付きメモリモジュール165A〜165Cを含んでもよい。セキュア仮想機械156は、メモリモニタモジュール168を含んでもよい。更に詳細に後述するように、タグ付きメモリモジュール165A〜165C及びメモリモニタモジュール168は、仮想機械間(例えば、ゲスト仮想機械とセキュア仮想機械の間)の通信及びやり取りを許容してもよい。
【0029】
図2のコンピュータシステム200を参照すれば、モデム247、ネットワークインターフェイス248、又はなんらかのその他の方法を使用し、1つ又は複数のクライアントシステム110からネットワーク150への接続を提供してもよい。クライアントシステム110は、例えば、ウェブブラウザ又はその他のクライアントソフトウェアを使用してサーバー140A又は140B上の情報にアクセス可能であってもよい。このようなクライアントは、サーバー140A又は140B又はストレージ装置160A(1)〜160A(N)、160B(1)〜160B(N)、及び/又は180(A)〜180(N)のうちの1つによってホスティングされたデータに対してクライアントシステム110がアクセスできるようにしてもよい。
【0030】
ネットワーク150及び190は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、セルラーネットワーク、衛星ネットワーク、或いは、クライアント110、サーバー140、及びネットワーク150及び190に対して通信可能に結合されたその他の装置間の通信を許容するその他のネットワークであってよい。ネットワーク150及び190は、スタンドアロンネットワークとして又は相互協働状態において動作する前述の1つの又は任意の数の例示用のタイプのネットワークを更に含んでもよい。ネットワーク150及び190は、自身が通信可能に結合されている1つ又は複数のクライアント又はサーバーの1つ又は複数のプロトコルを利用してもよい。ネットワーク150及び190は、その他のプロトコルに変換してもよく、或いは、その他のプロトコルからネットワーク装置の1つ又は複数のプロトコルに変換してもよい。ネットワーク150及び190は、それぞれ、1つのネットワークとして示されているが、1つ又は複数の実施形態によれば、ネットワーク150及び190は、それぞれ、複数の相互接続されたネットワークを有してもよいことを理解されたい。
【0031】
ストレージ装置160A(1)〜160A(N)、160B(1)〜160B(N)、及び/又は180(1)〜180(N)は、ネットワークによるアクセスが可能なストレージであってよく、且つ、サーバー140(A)又は140(B)に対してローカル接続されたものであってもよく、リモート接続されたものであってもよく、或いは、これらの組合せであってもよい。ストレージ装置160A(1)〜160A(N)、160B(1)〜160B(N)、及び/又は180(1)〜180(N)は、RAID(Redundant Array of Inexpensive Disks)、磁気テープ、ディスク、SAN(Storage Area Network)、iSCSI(internet Small Computer Systems Interface) SAN、Fibre Channel SAN、CIFS(Common Internet File System)、NAS(Network Attached Storage)、NFS(Network File System)、光に基づいたストレージ、又はその他のコンピュータによるアクセスが可能なストレージを利用してもよい。ストレージ装置160A(1)〜160A(N)、160B(1)〜160B(N)、及び/又は180(1)〜180(N)は、バックアップ又はアーカイブのために使用してもよい。
【0032】
いくつかの実施形態によれば、クライアント110は、スマートフォン、PDA、デスクトップコンピュータ、ラップトップコンピュータ、サーバー、その他のコンピュータ、或いは、ネットワーク150に対して無線又は有線接続を介して結合されたその他の装置であってもよい。クライアント110は、ユーザー入力、データベース、ファイル、ウェブサービス、及び/又はアプリケーションプログラミングインターフェイスからデータを受け取ってもよい。
【0033】
サーバー140A及び140Bは、アプリケーションサーバー、アーカイブプラットフォーム、バックアップサーバー、ネットワークストレージ装置、メディアサーバー、電子メールサーバー、文書管理プラットフォーム、インタープライズサーチサーバー、又はネットワーク150に対して通信可能に結合されたその他の装置であってもよい。サーバー140A及び140Bは、アプリケーションデータ、バックアップデータ、又はその他のデータの保存のために、ストレージ装置160A(1)〜160A(N)、160B(1)〜160B(N)、及び/又は180(1)〜180(N)を利用してもよい。サーバー140A及び140Bは、アプリケーションサーバーなどのホストであってもよく、これは、クライアント110とバックアッププラットフォームの間においてやり取りされるデータ、バックアッププロセス、及び/又は保存を処理してもよい。いくつかの実施形態によれば、サーバー140A及び140Bは、データをバックアップすると共に/又はアーカイブするために使用されるプラットフォームであってもよい。
【0034】
仮想化環境145のゲスト仮想機械156A〜156Cは、セキュア仮想機械158との間において予め規定された通信方式を使用してもよい。ゲスト仮想機械156A〜156Cは、タグ付きメモリモジュール165A〜165Cを含んでもよく、これらのタグ付きメモリモジュール165A〜165Cは、セキュア仮想機械158との間において合意されたフォーマット(例えば、タグ付き制御ブロックなど)を使用し、1つ又は複数のメモリ構造をエクスポートしてもよい。ゲスト仮想機械からのエクスポートされたメモリ構造は、情報をセキュア仮想機械に提供してもよく、或いは、セキュア仮想機械が1つ又は複数のパラメータを設定できるようにしてもよい。例えば、ゲスト仮想機械156Aのタグ付きメモリモジュール165Aは、ゲスト仮想機械156A上において稼働している1つ又は複数のプロセス(例えば、ウイルススキャニングプロセスやウイルス対策更新プロセスなど)に関する情報を含むメモリ構造をエクスポートしてもよい。セキュア仮想機械156は、メモリモニタモジュール168を使用し、合意された又は規定のフォーマットを使用するメモリ構造を検出してもよい。セキュア仮想機械156は、このようなエクスポートされたメモリ構造を消費してもよく、或いは、読み取ってもよい。エクスポートされたメモリ構造を消費することにより、セキュア仮想機械156がゲスト仮想機械上の1つ又は複数のプロセスの数、タイプ、及び状態を監視できるようにしてもよい。又、ゲスト仮想機械は、エクスポートされたメモリ構造内において、その他のデータを提供してもよい。
【0035】
又、ゲスト仮想機械156Aのタグ付きメモリモジュール165Aは、セキュア仮想機械156のメモリモニタモジュール168によって設定可能な1つ又は複数のパラメータを含むメモリ構造をエクスポートしてもよい。セキュア仮想機械156は、規定のフォーマットを使用するメモリ構造を検出してもよく、且つ、エクスポートされたメモリ構造内に1つ又は複数のパラメータを設定してもよい。例えば、ゲスト仮想機械156Aは、タグ付きメモリモジュール165Aを使用してタグ付きメモリ構造をエクスポートしてもよい。いくつかの実施形態によれば、タグ付きメモリ構造は、ゲスト仮想機械156A上において稼働しているプロセスのリソース消費量を決定してもよい1つ又は複数のパラメータを提供してもよい。タグ付きメモリ構造は、ゲスト仮想機械が自身に割り当てられている限りのリソースを使用できるようにする値を既定値としてもよい。
【0036】
セキュア仮想機械156は、例えば、サーバー140Aなどの基礎をなしているプラットフォームを監視してもよい。セキュア仮想機械156のメモリモニタモジュール168は、ストレージ、CPU利用率、メモリ、ネットワーク入出力(I/O)、及びその他の基準を監視してもよい。セキュア仮想機械156は、ハイパーバイザなどの仮想化プラットフォームの管理コンポーネントであってもよい。従って、セキュア仮想機械156は、ゲスト仮想機械が利用不能なプラットフォームリソース情報に対してアクセス可能であってもよい。いくつかの実施形態によれば、セキュア仮想機械156は又、ゲスト仮想機械のメモリ読込みを監視するために1つ又は複数のハイパーバイザAPIを有してもよい。
【0037】
いくつかの実施形態によれば、例えば、最大CPU利用率、最大メモリ利用率、又はその他の閾値などの1つ又は複数の利用率閾値を規定してもよい。閾値が満足又は超過された場合に、メモリモニタモジュール168は、1つ又は複数の仮想機械のリソース利用率が低減されてもよいかどうかを判定してもよい。メモリモニタモジュール168は、ゲスト仮想機械上における稼働プロセスに関する情報を使用してもよく、この情報は、プロセスデータを含むタグ付きメモリ構造をエクスポートするゲスト仮想機械によって提供されたものであってもよい。いくつかの実施形態によれば、メモリモニタモジュール168は、ゲスト仮想機械プロセスの優先順位に関するデータを含んでもよく、或いは、これに対してアクセスしてもよく、このデータは、ゲスト仮想機械プロセスの識別を支援することになろう。いくつかの実施形態によれば、メモリモニタモジュール168は、識別されたゲスト仮想機械プロセスのうちで最もリソース集約的なゲスト仮想機械プロセスを識別してもよい。その他の要因(例えば、プロセス開始時刻や推定プロセス完了時刻など)を使用し、ゲスト仮想機械プロセスを識別してもよい。ゲスト仮想機械プロセスが識別されたら、メモリモニタモジュール168は、そのプロセスに対応するエクスポートされたメモリ構造内の1つ又は複数のパラメータを変更してもよい。メモリモニタモジュール168は、パラメータを使用することにより、消費量を低減するように、消費を停止するように、又はその他の目的を実現するように、ゲスト仮想機械プロセスに対して通知してもよい。例えば、パラメータは、ゼロを上回る任意の値がリソース消費量の低減を示す「抑制値」であってよい(例えば、パラメータは、ファイルのスキャニングなどの動作の間のミリ秒を単位とした待機時間を表してもよい)。その他の値によってその他のプロセス入力を提供してもよい。例えば、パラメータを設定することにより、ゲスト仮想機械上のプロセスを停止又は中断させる必要があることを示してもよい。従って、特定のフォーマット又は命名規則を有するエクスポートされたメモリ構造を識別することにより、セキュア仮想機械は、ゲスト仮想機械から情報を受け取ることも可能であり、且つ、情報をゲスト仮想機械に対して提供することもできる。
【0038】
いくつかの実施形態によれば、セキュア仮想機械156は、メモリモニタモジュール168を使用し、ゲストVM(GVM)内のEXE及びDLLのイメージ読込みを待ち受けてもよい。セキュア仮想機械156は、特定の命名規則を有するエクスポートを待ち受けると共に探してもよい。ソフトウェア開発者は、ゲスト仮想機械上において稼働するソフトウェア内において命名規則をサポートしてもよく、且つ、このソフトウェアのプロセスは、メモリ構造をエクスポートすることにより、例えば、セキュア仮想機械などの管理コンポーネントと通信してもよい。これらのエクスポートは、セキュア仮想機械(SVM)が消費するか又は入力する(或いは、これらの両方を行う)ように意図されたデータを収容することができるデータ構造であってもよい。いくつかの実施形態によれば、命名規則に従って命名されたエクスポートされたデータ構造は、「タグ付き制御ブロック」と呼称することができる。
【0039】
少なくとも1つの特定の実施形態によれば、命名規則又はフォーマットは、その名称が「SymSVM_」によって始まるエクスポートされたメモリ構造を使用してもよい。エクスポートされたメモリ構造は、それぞれ、ページの第1バイトを開始するようにアライメントされた状態において、その独自のページ内に位置してもよく、且つ、エクスポートされたタグ付き制御ブロックを収容するページは、ページング不能とマーキングされてもよい。
【0040】
少なくとも1つの実施形態によれば、ページング不能なメモリ内における制御ブロックの配置を実行してもよく、その理由は、SVMがページ書込みブレークポイントを使用してタグ付き制御ブロック内の状態変化を追跡してもよいためである。制御ブロックがページング可能である場合には、その結果、コンテキストスイッチが存在するたびにブレークポイントが生成されることになろう。いくつかの実施形態によれば、SVMが最初にタグ付き制御ブロックを見出した際に、そのプロセスと関連するCR3(制御レジスタ3)の値をその追跡対象の制御ブロックに関する情報と共に保存してもよい。そのページのページ書込みブレークポイントが異なるCR3値を有すると識別された場合には、それは、そのページが別のプロセスによってアンロック及び再使用されたために関連するプロセスがシャットダウン又はクラッシュしていることを通知していよう。
【0041】
1つ又は複数の実施形態によれば、タグ付き制御ブロックは、それぞれ、次の3つの情報片を含むことになる標準ヘッダによって始まっていてもよい。
1.特定のフォーマット、命名規則、又は方式を識別することができるようなバージョン
2.タイプストリング
3.後続するべきタイプ固有のデータの長さ
【0042】
タイプストリングは、特定のタイプのタグ付き制御ブロックと関連する名称を規定してもよい。例えば、タグ付き制御ブロックのタイプは、次のものを含んでもよい。
・ClientDataStruct―SVMが管理サーバーに対してクライアントを識別できるようにするデータを含む。
・VMEnvironmentInfo―このプロセスが稼働しているGVM(ゲスト仮想機械)及び物理的なホストに関するデータがSVMによって入力されることになる。
・ScanControlStruct―収容元であるGVM内において継続稼働しているスキャニングの数をSVMが認知できるようにし、且つ、GVMが処理するファイルの間においてミリ秒を単位とする規定の時間にわたって休止することにより、GVMがそのスキャニングを抑制するようにする値をSVMが規定できるようにする。
【0043】
タイプ及び長さを有する共通ヘッダを伴うこの方式を使用することにより、SVMは、タグ付き制御ブロックの検出及び管理を一般的に処理することができるようになり、且つ、制御ブロックタイプに固有の特定の処理を、登録されている制御ブロックタイプに固有のハンドラに対して手渡すことができるようになる。
【0044】
一実施形態によれば、ScanControlStructのタグ付き制御ブロックを実装してもよい。この実施形態においては、セキュリティエンドポイント保護を実装したゲスト仮想機械(SEPクライアント)は、スキャニング機能を抑制してもよい。又、SVMが非ゼロの抑制値を提供している場合には、SEPクライアントは、いまや、その仕様に従って抑制してもよい。又、SEPクライアントは、自身がスキャニングを起動又は停止している場合には、現在のスキャニングのカウントがScanControlStruct内において継続的に更新されるにすることにより、SVMがこの情報を取得できるようにしてもよい。SEPクライアントは、そのクライアントを管理サーバーに対して識別するために使用される最新の情報が継続的にClientDataStruct内のデータに入力されるようにしてもよい。SVMは、この情報を使用し、管理システム内においてそのクライアントに関する情報を取得又は設定してもよい。
【0045】
この方式のための対応するSVMコンポーネント(例えば、メモリモニタモジュール168)は、いまや、GVMを収容している所与の物理的ホスト上における全体な負荷をその権限の下において監視してもよい。SVMは、いまや、この物理的ホストの負荷情報と、GVMからのそのスキャニング状態に関する情報と、を使用し、GVM内におけるスキャニング動作に起因した負荷パターンを生成してもよい。例えば、物理的システムの負荷が複数のGVM内において継続稼働するいくつかのスキャニングに起因して大きい場合には、SVMは、物理的システム上の全体負荷が望ましい閾値未満に低下する時点まで、1つ又は複数のGVMに対して抑制するように指示してもよい。SVMは、それぞれのGVMがスキャニングされることを依然として保証しつつ、様々な方式を実装して物理的システム上の負荷を管理してもよい(例えば、負荷が許容可能な状態となる時点まで複数のGVMの全体を抑制するか、或いは、複数のGVMのすべてがそのスキャニングを完了する時点まで複数のGVMのそれぞれを一度に1つずつ稼働させることにより、最大負荷に対するGVMのスキャニングの組全体の寄与度に対して上限を課してもよい)。
【0046】
ウイルススキャニングプロセス、ウイルス対策更新プロセス、又はその他のプロセスの抑制に加えて、タグ付きメモリブロックプロトコル又は方式を使用することにより、様々な目的のためにゲスト仮想機械と管理コンポーネント(例えば、SVM)の間の通信を実行してもよい。
【0047】
一実施形態によれば、SVMによるタグ付き制御ブロックの検出及び処理は、以下のように概略的に表現してもよい。
【0048】
タグ付き制御ブロックを含むプロセスのイメージ読込みを検出してもよい。これは、いくつかの実施形態によれば、タグ付きメモリブロックを含んでいるとセキュア仮想機械が認知しているプロセスと関連したメモリを監視することによって実行してもよい。セキュア仮想機械は、タグ付きメモリブロックを含む1つ又は複数のプロセスを示すリスト、表、又はその他のデータを含んでもよく、或いは、これらに対してアクセスしてもよい。
【0049】
仮想化環境用のAPI及び/又はハイパーバイザ用のAPIを使用することにより、メモリをセキュア仮想機械によって監視してもよい。例えば、いくつかの実施形態によれば、デバッグサービスルーチンにおいて、ページブレークポイント割込みを使用してもよい。この割込みは、ユーザーモードイメージとカーネルモードイメージの両方についてイメージ読込み当たりに1回ずつ、或いは、その他のインターバル又はトリガポイントにおいて、起動してもよい。割込み、API、又はその他のメモリアクセスメカニズムにより、SVMがゲスト仮想機械内における1つ又は複数のイメージ読込みを観察することができるようにしてもよい。イメージ読込み情報は、ファイル名、ファイルサイズ、及びその他のデータを含んでもよい(例えば、「LoadImage Filename 0x80548ef4 Info 0x80548ec4 Filename (27 bytes): \WINDOWS\system32\KDCOM.DLL」)。
【0050】
監視プロセス又はセキュア仮想機械は、特定のプロセス名(例えば、「\Program Files\Symantec\rtvscan.exe」)のイメージ読込みイベントを待ち受けてもよく、且つ、特定のプロセス名が検出されたら、関連するエクスポートされたメモリ構造を含むエクスポートテーブルをチェックしてもよい。監視プロセス又はセキュア仮想機械は、その名称が特定の命名規則に準拠しているエクスポートを識別してもよい(例えば、SymSVM_ScanContorlStructなどのタグ付き制御ブロック)。検出されたら、監視プロセス又はセキュア仮想機械は、1つ又は複数の場所に注目し、且つ、その見出されたページ上にページ書込みブレークポイントをセットアップしてもよい。監視プロセスは、見出されたページ上のトリガイベント又はページ書込みブレークポイントを生成したゲスト仮想機械を判定してもよい。
【0051】
5つの仮想機械が存在している場合には、5つの別個の物理的ページ上に5つのページ書込みブレークポイントが存在しよう(それぞれがそのVM用のタグ付き制御ブロック構造を含んでいてもよい)。SVM内に、アレイ、ハッシュテーブル、又はその他のデータ構造を維持してもよく、或いは、ページ書込みブレークポイントを生成した物理的ページアドレスをVMに対して関連付けるSVMに対してアクセス可能であってもよい。
【0052】
メモリ制御ブロックにタグ付けすることにより、ゲストVM(GVM)及びこの方式を実装したセキュリティVM(SVM)内の特定のプロセス間における簡単且つ効果的な(制御を可能とする)通信のための一般的なメカニズムが得られることになる。セキュリティ仮想機械によるゲスト仮想機械のメモリ読込みの監視は、ハイパーバイザ又は仮想化環境のAPIを使用して実行してもよい。これに必要とされるのは、従来の物理的インフラストラクチャ指向のソフトウェアに対するわずかな追加のみであろう。
【0053】
図2は、本開示の一実施形態によるコンピュータシステム200のブロックダイアグラムを示している。コンピュータシステム200は、本開示による技法を実施するのに適している。コンピュータシステム200は、バス212を含んでもよく、バス212は、中央プロセッサ214、システムメモリ217(例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュRAM、又はこれらに類似したもの)、入出力(I/O)コントローラ218、オーディオ出力インターフェイス222を介したスピーカシステム220などの外部オーディオ装置、ディスプレイアダプタ226を介した表示画面224などの外部装置、シリアルポート228及び230、(キーボードコントローラ233を介してインターフェイスされた)キーボード232、ストレージインターフェイス234、フロッピーディスク238を受け入れるように動作可能なフロッピーディスクドライブ237、Fibre Channelネットワーク290と接続するように動作可能なホストバスアダプタ(HBA:Host Bus Adapter)インターフェイスカード235A、SCSIバス239に接続するように動作可能なホストバスアダプタ(HBA)インターフェイスカード235B、及び光ディスク242を受け入れるように動作可能な光ディスクドライブ240などのコンピュータシステム210の主要なサブシステムを相互接続してもよい。又、マウス246(又は、シリアルポート228を介してバス212に結合されたその他のポインティング及びクリック装置)、(シリアルポート230を介してバス212に結合された)モデム247、(バス212に直接結合された)ネットワークインターフェイス248、パワーマネージャ250、及び電池252を含んでもよい。
【0054】
バス212は、中央プロセッサ214とシステムメモリ217の間のデータ通信を許容しており、システムメモリ217は、上述のように、読み出し専用メモリ(ROM)又はフラッシュメモリ(いずれも図示されてはいない)と、ランダムアクセスメモリ(RAM)(図示されてはいない)と、を含んでもよい。RAMは、オペレーティングシステム及びアプリケーションプログラムがその内部に読み込まれることになるメインメモリであってよい。ROM又はフラッシュメモリは、その他のコードとしては、周辺コンポーネントとのやり取りなどの基本的なハードウェア動作を制御する基本入出力システム(BIOS:Basic Input−Output System)を収容することができる。コンピュータシステム210と共に存在するアプリケーションは、ハードディスクドライブ(例えば、固定ディスク244)、光ドライブ(例えば、光ドライブ240)、フロッピーディスクユニット237、又はその他のストレージ媒体などのコンピュータ可読媒体上に保存してもよく、或いは、これを介してアクセスしてもよい。例えば、タグ付きメモリ相互動作管理モジュール154は、システムメモリ217内に存在してもよい。
【0055】
ストレージインターフェイス234は、コンピュータシステム210のその他のストレージインターフェイスと同様に、固定ディスクドライブ244などの情報の保存及び/又は検索のために標準コンピュータ可読媒体に対して接続することができる。固定ディスクドライブ244は、コンピュータシステム210の一部であってもよく、或いは、別個であると共にその他のインターフェイスシステムを通じてアクセスしてもよい。モデム247は、電話リンクを介してリモートサーバーに対する又はインターネットサービスプロバイダ(ISP)を介してインターネットに対する直接的な接続を提供してもよい。ネットワークインターフェイス248は、POP(Point Of Presence)を介したインターネットに対する直接的なネットワークリンクを介してリモートサーバーに対する直接的な接続を提供してもよい。ネットワークインターフェイス248は、デジタルセルラー電話接続、CDPD(Cellular Digital Packet Data)接続、デジタル衛星データ接続、又はこれらに類似したものを含む無線技法を使用し、このような接続を提供してもよい。
【0056】
多くのその他の装置又はサブシステム(図示されてはいない)を類似の方式によって接続してもよい(例えば、文書スキャナやデジタルカメラなど)。逆に、本開示を実施するために、
図2に示されている装置のすべての存在が必要であるというわけでない。
図2に示されているものとは異なる方式によって装置及びサブシステムを相互接続することもできる。本開示を実装するためのコードは、システムメモリ217、固定ディスク244、光ディスク242、又はフロッピーディスク238のうちの1つ又は複数のものなどのコンピュータ可読ストレージ媒体内に保存してもよい。又、本開示を実装するためのコードは、1つ又は複数のインターフェイスを介して受信してもよく、且つ、メモリ内に保存してもよい。コンピュータシステム210上に提供されるオペレーティングシステムは、MS−DOS(登録商標)、MS−WINDOWS(登録商標)、OS/2(登録商標)、OS X(登録商標)、UNIX(登録商標)、Linux(登録商標)、又はその他の既知のオペレーティングシステムであってよい。
【0057】
パワーマネージャ250は、電池252のパワーレベルを監視してもよい。パワーマネージャ250は、パワーレベル及びコンピュータシステム200のシャットダウン前の残存時間ウィンドウを判定できるようにするための1つ又は複数のAPI(アプリケーションプログラミングインターフェイス(Application Programming Interface))、電力消費率、コンピュータシステムが商用電源(例えば、AC電源)又は電池電力のいずれによって動作しているのかを示すインジケータ、及びその他の電源関係の情報を提供してもよい。いくつかの実施形態によれば、パワーマネージャ250のAPIは、リモートアクセス可能であってよい(例えば、ネットワーク接続を介してリモートバックアップ管理モジュールからアクセス可能であってよい)。いくつかの実施形態によれば、電池252は、コンピュータシステム200にローカル又はリモート配置されたUPS(無停電電源装置(Uninterruptable Power Supply))であってもよい。このような実施形態においては、パワーマネージャ250は、UPSのパワーレベルに関する情報を提供してもよい。
【0058】
図3を参照すれば、本開示の一実施形態によるタグ付きメモリ相互動作管理モジュール310が示されている。図示のように、タグ付きメモリ相互動作管理モジュール310は、メモリエクスポートモジュール312、メモリ読込み監視モジュール314、エクスポートされたメモリハンドラモジュール316、及びエラーロギング及び報告モジュール318を含む1つ又は複数のコンポーネントを含んでもよい。
【0059】
以下の説明は、1つ又は複数のモジュールを含んでもよい仮想機械間通信のためのシステム及び方法のネットワーク要素、コンピュータ、及び/又はコンポーネントについて記述している。本明細書において使用されている「モジュール」という用語は、演算ソフトウェア、ファームウェア、ハードウェア、及び/又はこれらの様々な組合せを意味するものと理解してもよい。但し、モジュールは、ハードウェア又はファームウェア上において実装されていない又はプロセッサ可読記録可能ストレージ媒体上に記録されていないソフトウェアであると解釈してはならない(例えば、モジュールは、それ自体がソフトウェアではない)。モジュールは、例示を目的としていることに留意されたい。モジュールは、様々なアプリケーションをサポートするように、組み合わせてもよく、統合してもよく、分離してもよく、且つ/又は、複製してもよい。又、特定のモジュールにおいて実行されるものと本明細書に記述されている機能は、機能が特定のモジュールにおいて実行される代わりに又はこれに加えて、1つ又は複数のその他のモジュールにおいて、且つ/又は、1つ又はその他の装置により、実行されてもよい。更には、モジュールは、相互にローカル又はリモートの関係にある複数の装置及び/又はその他のコンポーネントに跨って実装されてもよい。更には、モジュールは、1つの装置から除去すると共に別の装置に追加してもよく、且つ/又は、両方の装置内に含まれてもよい。
【0060】
メモリエクスポートモジュール312は、仮想化管理コンポーネント(例えば、セキュア仮想機械158)との間において合意された規定のフォーマット又は命名規則を使用し、ゲスト仮想機械からメモリの1つ又は複数の部分をエクスポートしてもよい。ゲスト仮想機械からのエクスポートされたメモリ構造は、情報をセキュア仮想機械に提供してもよく、或いは、セキュア仮想機械が1つ又は複数のパラメータを設定できるようにしてもよい。例えば、メモリエクスポートモジュール312は、ゲスト仮想機械内に存在してもよく、且つ、ゲスト仮想機械上において稼働している1つ又は複数のプロセス(例えば、ウイルススキャニングプロセスやウイルス対策更新プロセスなど)に関する情報を含むメモリ構造をエクスポートしてもよい。又、ゲスト仮想機械は、エクスポートされたメモリ構造内において、その他のデータを提供してもよい。
【0061】
又、メモリエクスポートモジュール312は、セキュア仮想機械によって設定可能な1つ又は複数のパラメータを含むメモリ構造をエクスポートしてもよい。例えば、メモリエクスポートモジュール312は、ゲスト仮想機械上において稼働しているプロセスのリソース消費量を決定することになる1つ又は複数のパラメータを提供するタグ付きメモリ構造をエクスポートしてもよい。その他のタグ付きメモリ構造をエクスポートすることにより、仮想機械のその他のプロセスを制御してもよい。
【0062】
メモリ読込み監視モジュール314は、合意された又は規定のフォーマットを使用するメモリ構造を検出してもよい。メモリ読込み監視モジュール314は、セキュア仮想機械上に存在してもよい。メモリ読込み監視モジュール314は、このようなエクスポートされたメモリ構造を消費してもよく、或いは、読み取ってもよい。エクスポートされたメモリ構造を消費することにより、セキュア仮想機械がゲスト仮想機械上の1つ又は複数のプロセスの数、タイプ、及び状態を監視できるようにしてもよい。メモリ読込み監視モジュール314は、規定されたフォーマットを使用するメモリ構造を検出してもよく、且つ、エクスポートされたメモリ構造内に1つ又は複数のパラメータを設定してもよい。いくつかの実施形態によれば、タグ付き制御ブロックを検出した際に、メモリ読込み監視モジュール314は、タグ付き制御ブロック内の情報を使用して特定のハンドラを判定してもよい。例えば、タグ付き制御ブロックは、それぞれ、次の3つの情報片を含むことになる標準ヘッダによって始まっていてもよい。
1.特定のフォーマット、命名規則、又は方式を識別することができるようなバージョン
2.タイプストリング
3.後続するべきタイプ固有のデータの長さ
【0063】
タイプストリングは、タグ付き制御ブロックの特定のタイプと関連した名称を規定してもよい。メモリ読込み監視モジュール314は、この名称を使用し、そのタイプ用の特定のハンドラを呼び出してもよく、或いは、そのインスタンスを生成してもよい。
【0064】
いくつかの実施形態によれば、メモリ読込み監視モジュール314は、ゲストVM(GVM)内におけるEXE及びDLLのイメージ読込みを待ち受けてもよい。メモリ読込み監視モジュール314は、特定の命名規則を有するエクスポートを探してもよい。ソフトウェア開発者は、ゲスト仮想機械上において稼働するソフトウェア内において命名規則をサポートしてもよく、且つ、このソフトウェアのプロセスは、メモリ構造をエクスポートすることにより、例えば、セキュア仮想機械などの管理コンポーネントと通信してもよい。エクスポートは、セキュア仮想機械(SVM)が消費又は入力する(又は、これらの両方を実行する)ように意図されたデータを収容することができるデータ構造であってよい。いくつかの実施形態によれば、命名規則に従って命名されたエクスポートされたデータ構造は、「タグ付き制御ブロック」を呼称することができる。
【0065】
エクスポートされたメモリハンドラモジュール316は、特定のタイプのタグ付きメモリ構造(例えば、タグ付き制御ブロック)を処理するための1つ又は複数の特定のハンドラであってよい。エクスポートされたメモリハンドラモジュール316は、セキュア仮想機械上に存在してもよい。特定のタイプのタグ付きメモリ構造を処理するようにそれぞれが設計された複数の異なるハンドラが存在してもよい。この結果、タグ付きメモリ通信方式の容易な拡張性及び柔軟性が実現されよう。エクスポートされたメモリハンドラモジュール316は、対象のタグ付きメモリ構造を消費すると共に/又はこれに入力してもよい。
【0066】
エラーロギング及び報告モジュール318は、ログ、報告、又は仮想機械間通信と関連したその他の情報を生成してもよい。
【0067】
図4を参照すれば、本開示の一実施形態による仮想機械間通信のための方法400が示されている。方法400は、ブロック402において始まってもよい。
【0068】
ブロック404において、規定のタグ付けフォーマットを使用し、タグ付きメモリ構造をゲスト仮想機械からエクスポートしてもよい。
【0069】
ブロック406において、ゲスト仮想機械のイメージ読込みをセキュア仮想機械から監視してもよい。いくつかの実施形態によれば、タグ付きメモリ通信方式を実装したプロセスのイメージ読込みについてのみ、イメージ読込みのスキャニングを実行してもよい。セキュア仮想機械は、このようなプロセスの表又はその他のメモリ構造を利用可能であってよい。
【0070】
ブロック408において、セキュア仮想機械は、イメージ読込みにおいて、タグ付きメモリ構造が識別されているかどうかを判定してもよい。タグ付きメモリ構造は、例えば、タグ付き制御ブロックであってよい。例えば、命名規則又はフォーマットは、その名称が「SymSVM_」によって始まるエクスポートされたメモリ構造を使用してもよい。エクスポートされたメモリ構造は、それぞれ、ページの第1バイトを開始するようにアライメントされた状態において、その独自のページ内に位置してもよく、且つ、エクスポートされたタグ付き制御ブロックを収容するページは、ページング不能とマーキングされてもよい。タグ付きメモリ構造が検出されている場合には、本方法は、ブロック410に継続してもよい。タグ付きメモリ構造が検出されていない場合には、本方法は、ブロック406に戻ってもよい。
【0071】
ブロック410において、識別されたタグ付きメモリ構造を特定のハンドラに送信してもよく、或いは、特定のハンドラを呼び出すか又はそのインスタンスを生成してもよく、且つ、特定のハンドラにタグ付きメモリ構造のアドレスを提供してもよい。ハンドラは、タグ付きメモリ構造のタイプによって判定してもよい。タグ付きメモリ構造タイプをハンドラに対してマッピングするルックアップ表、タグ付きメモリ構造をハンドラに対してマッピングする特定の命名規則、又はタグ付きメモリ構造の特定のタイプ用のハンドラを識別するその他の方法が存在してもよい。
【0072】
ブロック412において、特定のハンドラは、タグ付きメモリ構造を消費するか又はこれに入力するべきかどうか(例えば、データを読み取るか又はデータ値を設定するかどうか)を判定してもよい。いくつかの実施形態によれば、これらの両方を実行してもよい。タグ付きメモリ構造を読み取る場合には、本方法は、ブロック414に継続してもよい。タグ付きメモリ構造に入力する場合には、本方法は、ブロック416に継続してもよい。
【0073】
ブロック414において、特定のタイプのタグ付きメモリ構造用のハンドラは、エクスポートされた制御構造の値を読み取ってもよい。例えば、メモリ構造は、ゲスト仮想機械上に稼働している1つ又は複数のプロセス(例えば、ウイルススキャニングプロセスやウイルス対策更新プロセスなど)に関する情報を含んでいてもよい。
【0074】
ブロック416において、エクスポートされたメモリ構造の値又はパラメータを設定又は入力してもよい。例えば、ゲスト仮想機械上において稼働しているプロセスのリソース消費量を決定することになる1つ又は複数のパラメータを提供する値を入力してもよい。その他のタグ付き構造をエクスポートすることにより、仮想機械のその他のプロセスを制御してもよい。
【0075】
ブロック418において、本方法400は、終了してもよい。
【0076】
図5を参照すれば、本開示の一実施形態による仮想機械間通信のための方法500が示されている。方法500は、ブロック502において始まってもよい。
【0077】
ブロック504において、セキュア仮想機械又は仮想化プラットフォームのその他の管理コンポーネントは、プラットフォーム環境状態インジケータ(例えば、CPU利用率、メモリ利用率、ネットワーク利用率、及びストレージ利用率)を監視してもよい。セキュア仮想機械は、ゲスト仮想機械には入手不能なプラットフォームリソース情報に対してアクセス可能であってもよい。又、いくつかの実施形態によれば、セキュア仮想機械は、1つ又は複数のハイパーバイザAPIを使用してゲスト仮想機械のメモリ読込みを監視してもよい。
【0078】
ブロック506において、利用率を示すパラメータが規定の閾値を超過しているかどうかを判定してもよい。いくつかの実施形態によれば、例えば、最大CPU利用率、最大メモリ利用率、又はその他の閾値などの1つ又は複数の利用閾値を規定してもよい。閾値が満足又は超過されている場合には、本方法は、ブロック508に継続してもよい。閾値が満足又は超過されていない場合には、本方法は、ブロック504に戻ってもよい。
【0079】
ブロック508において、本方法は、1つ又は複数の仮想機械のリソース利用率が低減されてもよいかどうかを判定してもよい。本方法は、ゲスト仮想機械上における稼働プロセスに関する情報を使用してもよく、この情報は、プロセスデータを含むタグ付きメモリ構造をエクスポートしたゲスト仮想機械によって提供されてもよい。いくつかの実施形態によれば、ゲスト仮想機械プロセスの優先順位に関するデータを使用してもよく、このデータは、ゲスト仮想機械プロセスの識別を支援してもよい。いくつかの実施形態によれば、識別されたゲスト仮想機械プロセスのうちの最もリソース集約的なゲスト仮想機械プロセスを識別してもよい。その他の要因(例えば、プロセス開始時刻や推定プロセス完了時刻など)を使用し、ゲスト仮想機械プロセスを識別してもよい。
【0080】
ブロック510において、セキュア仮想機械は、識別されたゲスト仮想機械プロセスに対応したエクスポートされたメモリ構造内に値を入力してもよい。入力された値を使用することにより、消費量を低減するように、消費を停止させるように、又はその他の目的を実現するように、ゲスト仮想機械プロセスに対して通知してもよい。例えば、入力された値又はパラメータは、ゼロを上回る任意の値がリソース消費量の低減を通知する「抑制値」であってもよい(例えば、パラメータは、ファイルのスキャニングなどの動作の間におけるミリ秒を単位とした待機時間を表してもよい)。その他の値によってその他のプロセス入力を提供してもよい。例えば、パラメータを設定することにより、ゲスト仮想機械上のプロセスを停止又は中断させる必要があることを通知してもよい。
【0081】
ブロック512において、ゲスト仮想機械は、エクスポートされたメモリ構造の入力された値を読み取ってもよい。
【0082】
ブロック514において、ゲスト仮想機械は、入力されたメモリ構造値に従ってリソース(例えば、CPU)の使用量を変更してもよい。例えば、仮想機械プロセスは、プロセスの反復の間における休止又は待機を実施してもよい。
【0083】
ブロック516において、方法500は、終了してもよい。
【0084】
ここで、上述の本開示による仮想機械間通信は、通常、ある程度の入力データの処理及び出力データの生成を伴うことに留意されたい。この入力データの処理及び出力データの生成は、ハードウェア又はソフトウェアにおいて実施してもよい。例えば、仮想機械間通信モジュール又は上述の本開示に従って仮想機械間通信と関連した機能を実施するための類似の又は関係した回路において、特定の電子コンポーネントを利用してもよい。或いは、この代わりに、命令に従って動作する1つ又は複数のプロセッサにより、上述の本開示に従って、仮想機械間通信と関連した機能を実施してもよい。その場合にも、本開示の範囲に含まれ、それらの命令は、1つ又は複数のプロセッサ可読ストレージ媒体(例えば、磁気ディスク又はその他のストレージ媒体)上に保存してもよく、或いは、1つ又は複数の搬送波内において実施された1つ又は複数の信号を介して1つ又は複数のプロセッサに送信してもよい。
【0085】
本開示の範囲は、本明細書に記述されている特定の実施形態によって限定されるものではない。実際に、上述の説明及び添付の図面から、当業者には、本明細書に記述されているものに加えて、本開示のその他の様々な実施形態及び本開示に対する変更形態が明らかとなろう。従って、それらのその他の実施形態及び変更形態も、本開示の範囲に含まれるものと解釈されたい。更には、本明細書においては、本開示について、特定の目的を有する特定の実施形態における特定の実装形態の文脈において説明しているが、当業者は、その有用性が、これに限定されるものではなく、且つ、本開示を任意の数の目的を有する任意の数の環境において有益に実装してもよいことを認識するであろう。従って、添付の請求項は、本明細書に記述されている本開示の十分な広さ及び精神を考慮して解釈することを要する。