(58)【調査した分野】(Int.Cl.,DB名)
第一コンテンツをパッチングする必要のある仮想マシンの数が1より多いのに応じて、最初にn個の前記仮想マシンが前記第一コンテンツをパッチングするオペレーションを実施するようにパッチングをスケジュールするステップであって、前記第一コンテンツをパッチングする必要のある前記仮想マシンは同一の物理マシン上に位置し、前記第一コンテンツをパッチングする必要のある前記仮想マシンの個数はn+mであり、nおよびmの双方は自然数である、前記スケジュールするステップと、
n個の仮想マシンの少なくとも一つが既に第一状態にあることを告知するための通知を受信するステップであって、前記第一状態は、パッチング済み第一コンテンツのメモリへのロードから、前記パッチングするオペレーションの完了にいたるまでのいずれかの状態を含む、前記受信するステップと、
前記通知の受信に応じ、n個の仮想マシン以外のm個の仮想マシンの少なくとも一つが、前記メモリにロードされた前記パッチング済み第一コンテンツを用いて前記パッチングするオペレーションを実施するように、前記m個の仮想マシンの前記少なくとも一つが前記第一コンテンツをパッチングする前記オペレーションを実施することをスケジュールするステップと、
を含み、これらのステップをコンピュータに実行させる、パッチングの方法。
前記パッチング済み第一コンテンツを保存するための前記新規メモリ空間を前記取得するステップは、前記第一コンテンツが前記メモリ中に存在するのに応じて、前記パッチング済み第一コンテンツを保存するための新規メモリ空間を取得するステップを含み、
前記新規メモリ空間中の前記パッチング済み第一コンテンツに拠って、前記現下の仮想マシン上で前記パッチング・オペレーションを前記実施するステップは、新規クライアント・メモリ・ページを取得するステップと、前記新規クライアント・メモリ・ページを前記新規メモリ空間にマッピングするステップと、前記パッチング済み第一コンテンツに、前記第一コンテンツを適用する必要のある新規プロセスをマッピングするステップと、を含み、前記新規プロセスが、前記新規クライアント・メモリ・ページを前記新規メモリ空間にマッピングした後に開始されるプロセスを含む、
請求項8に記載の方法。
前記第一コンテンツがライブラリ・ファイルを含み、前記判別モジュールが、ライブラリ・ファイル・リスト中の新規ライブラリ・ファイルの名前を修正することによって前記新規コンテンツと前記旧コンテンツとを判別可能とするよう構成される、請求項13に記載の装置。
第一コンテンツをパッチングする必要のある仮想マシンの数が1より多いのに応じて、最初にn個の前記仮想マシンが前記第一コンテンツをパッチングするオペレーションを実施するようにパッチングをスケジュールするよう構成された第一スケジューリング・モジュールであって、前記第一コンテンツをパッチングする必要のある前記仮想マシンは同一の物理マシン上に位置し、前記第一コンテンツをパッチングする必要のある前記仮想マシンの個数はn+mであり、nおよびmの双方は自然数である、前記第一スケジューリング・モジュールと、
n個の仮想マシンの少なくとも一つが既に第一状態にあることを告知するための通知を受信するよう構成された受信モジュールであって、前記第一状態は、パッチング済み第一コンテンツのメモリへのロードから、前記パッチングするオペレーションの完了にいたるまでのいずれかの状態を含む、前記受信モジュールと、
前記通知の受信に応じて、n個の仮想マシン以外のm個の仮想マシンの少なくとも一つが、前記メモリにロードされた前記パッチング済み第一コンテンツを用いて前記パッチングするオペレーションを実施するように、前記m個の仮想マシンの前記少なくとも一つが前記第一コンテンツをパッチングする前記オペレーションを実施することをスケジュールするよう構成された第二スケジューリング・モジュールと、
を含む、パッチングのための装置。
前記取得モジュールが、前記第一コンテンツが前記メモリ中に存在するのに応じて、前記パッチング済み第一コンテンツを保存するための新規メモリ空間を取得するよう構成され、
前記パッチング・モジュールが、新規クライアント・メモリ・ページを取得するよう構成されたクライアント・メモリ・ページ・サブモジュールと、前記新規クライアント・メモリ・ページを前記新規メモリ空間にマッピングするよう構成された第一マッピング・サブモジュールと、前記第一コンテンツを適用することが必要な新規プロセスを前記パッチング済み第一コンテンツにマッピングするよう構成された第二マッピング・サブモジュールとを含み、前記新規プロセスは、前記新規クライアント・メモリ・ページを前記新規メモリ空間にマッピングした後に開始されるプロセスを含む、
請求項20に記載の装置。
コンピュータ上でコンピュータ・プログラムが実行されたとき、請求項1〜12のいずれかに記載の前記方法のステップを実施するようになされたプログラム・コードを含む、前記コンピュータ・プログラム。
【発明を実施するための形態】
【0017】
いくつかの好適な実施形態を、添付の図面を参照しながらさらに詳しく説明するものとし、これらの図面には本開示の好適な実施形態が示されている。但し、本開示は、様々な仕方で実装することが可能で、しかして本明細書で開示する実施形態に限定されると解釈されるべきではない。上記に替えて、これらの実施形態は、本開示の徹底的で完全な理解のためおよび当業者に本開示の範囲を完全に伝えるために提示されるものである。
【0018】
当業者には当然のことながら、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、あるいはソフトウェア態様およびハードウェア態様を組み合わせた実施形態の形を取ることができ、これらは一般に本明細書では全て「回路」、「モジュール」、または「システム」と称することがある。さらに、本発明の態様は、コンピュータ可読プログラム・コードが具現化されている一つ以上のコンピュータ可読媒体(群)中に具体化されたコンピュータ・プログラム製品の形を取ることも可能である。
【0019】
一つ以上のコンピュータ可読媒体(群)の任意の組み合わせを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的、または半導体の、システム、装置、またはデバイス、あるいはこれらの任意の適切な組み合わせであり得る。コンピュータ可読ストレージ媒体のさらに具体的な例(非包括的リスト)には、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read−only memory)、消去可能プログラム可能読み取り専用メモリ(EPROM:erasable programmable read−only memoryまたはフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disc read−only memory)、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述の任意の適切な組み合わせが含まれよう。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体であり得る。
【0020】
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現化されたコンピュータ可読プログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の適切な組み合わせを含め、さまざまな形態の任意の形を取ることが可能である。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではないが、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムの通信、伝播、または伝送が可能な任意のコンピュータ可読媒体であり得る。
【0021】
コンピュータ可読媒体上に具現化されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、RFなど、または前述の任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。
【0022】
本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および、“C”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合わせで記述することができる。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することもできる。後者の場合は、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:widearea network)を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは(例えばインターネット・サービス・プロバイダを使いインターネットを介し)外部のコンピュータへの接続を行うこともできる。
【0023】
本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、本発明の態様を以下に説明する。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することが可能である。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するための手段を生成するようにすることができる。
【0024】
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令することができるコンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能/動作を実装する命令群を包含する製造品を作り出せるようにすることができる。
【0025】
さらに、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上、他のプログラム可能装置上、または他のデバイス上で一連のオペレーション・ステップを実行させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上もしくは他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するためのプロセスを提供するようにすることも可能である。
【0026】
ここで
図1を参照すると、本発明の実施形態を実装するのに適用できる、例示的なコンピュータ・システム/サーバ12が示されている。コンピュータ・システム/サーバ12は単なる例示であって、本明細書に記載の本発明実施形態の使用または機能の範囲に関しいかなる限定をも示唆することは意図はされていない。
【0027】
図1に示されるように、コンピュータ・システム/サーバ12は、汎用コンピューティング・デバイスの形で表されている。コンピュータ・システム/サーバ12のコンポーネントには、以下に限らないが、一つ以上のプロセッサまたは処理装置16と、システム・メモリ28と、システム・メモリ28のプロセッサ16への連結を含め様々なシステム・コンポーネントを連結するバス18とを含めることができる。
【0028】
バス18は、メモリ・バスまたはメモリ・コントローラ、周辺機器用バス、アクセラレイティッド・グラフィックス・ポート、および様々なバス・アーキテクチャの任意のものを用いたプロセッサまたはローカル・バスを含め、いくつかの種類のバス構造体の任意の一つ以上を表している。限定でなく例として、かかるアーキテクチャには、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロ・チャネル・アーキテクチャ(MCA:Micro Channel Architecture)バス、拡張ISA(EISA:Enhanced ISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA:Video Electronics Standards Association)ローカル・バス、および周辺コンポーネント相互接続(PCI:Peripheral Component Interconnect)バスが含まれる。
【0029】
コンピュータ・システム/サーバ12は、通常、様々なコンピュータ・システム可読媒体を含む。かかる媒体は、コンピュータ・システム/サーバ12がアクセス可能な任意の利用可能な媒体とすることができ、これには、揮発性および不揮発性媒体、リムーバブルおよびノンリムーバブル媒体の両方が含まれる。
【0030】
システム・メモリ28は、ランダム・アクセス・メモリ(RAM:random access memory)30もしくはキャッシュ・メモリ32またはその両方など揮発性メモリの形で、コンピュータ・システム可読の媒体を含むことができる。コンピュータ・システム/サーバ12には、他のリムーバブル/ノンリムーバブル、揮発性/不揮発性コンピュータ・システム・ストレージ媒体をさらに含めることが可能である。単なる例として、ノンリムーバブル、不揮発性の磁気媒体(図示せず、通常「ハード・ドライブ」と呼ばれる)との読み取り/書き込みのために、ストレージ・システム34を設けることができる。図示されていないが、リムーバブル、不揮発性磁気ディスク(例えば「フレキシブル・ディスク」)との読み取り/書き込みのための磁気ディスク・ドライブ、およびCD−ROM、DVD−ROMまたは他の光媒体などリムーバブル、不揮発性の光ディスクとの読み取り/書き込みのための光ディスク・ドライブを設けることも可能である。このような場合、一つ以上のデータ媒体インターフェースによってこれらの各々をバス18に接続することができる。以下にさらに提示し説明するように、メモリ28には、本発明の実施形態の機能を実行するよう構成されたプログラム・モジュールの(例えば、少なくとも一モジュールの)セットを有する少なくとも一つのプログラム製品を含めることが可能である。
【0031】
限定でなく例として、メモリ28には、オペレーティング・システム、一つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと共に、プログラム・モジュール42の(少なくとも一モジュールの)セットを有するプログラム/ユーティリティ40を格納することができる。オペレーティング・システム、一つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データの各々、またはこれらの何らかの組み合わせには、ネットワーク環境の実装を含めることが可能である。プログラム・モジュール42は、本明細書で説明するように、一般に本発明の実施形態の機能もしくは方法またはその両方を遂行する。
【0032】
また、コンピュータ・システム/サーバ12は、キーボード、ポインティング・デバイス、ディスプレイ24など一つ以上の外部デバイス14;ユーザがコンピュータ・システム/サーバ12と対話することを可能にする一つ以上のデバイス;もしくはコンピュータ・システム/サーバ12が一つ以上の他のコンピューティング・デバイスと交信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど);またはこれらの組合せと通信することができる。かかる通信は、入力/出力(I/O:Input/Output)インターフェース22を介して行うことが可能である。さらにまた、コンピュータ・システム/サーバ12は、ネットワーク・アダプタ20を介して、ローカル・エリア・ネットワーク(LAN:local area network)、一般広域ネットワーク(WAN:wide area network)、もしくは公衆ネットワーク(例えばインターネット)またはこれらの組合せなどの一つ以上のネットワークと通信することができる。図示のように、ネットワーク・アダプタ20は、バス18を介してコンピュータ・システム/サーバ12の他のコンポーネントと通信する。当然ながら、図示はされていないが、コンピュータ・システム/サーバ12と連結して、他のハードウェアもしくはソフトウェア・コンポーネントまたはその両方を用いることができよう。これらの例には、以下に限らないが、マイクロコード、デバイス・ドライバ、冗長処理装置、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ記録ストレージ・システムなどが含まれる。
【0033】
ここで
図2を参照すると、この図は、本発明の実施形態によって提供されるパッチングの方法を示す。本方法は、第一コンテンツをパッチングする必要があり且つ第一コンテンツがメモリ中に存在するのに応じて、新規コンテンツと旧コンテンツとを判別するステップ210であって、新規コンテンツはパッチング済み第一コンテンツであり、旧コンテンツはメモリ中に存在する第一コンテンツである、ステップ210と;新規コンテンツがメモリにロードされるのに応じて、第一コンテンツを適用する必要のある新規プロセスを該新規コンテンツにマッピングするステップ220であって、新規プロセスは、新規コンテンツがメモリにロードされた後に開始されるプロセスを含む、ステップ220と;を含む。
【0034】
従来技術においては、メモリ中のコンテンツを直接修正するとそのコンテンツにマッピングされたプロセスに異常が生じるので、パッチング対象のコンテンツがメモリにロードされている場合には、該コンテンツにマッピングされた全プロセスが停止されることになる。パッチング済みコンテンツをメモリにロードした後、そのコンテンツにマッピングされたプロセスを再スタートさせることにより該プロセスをパッチング済みメモリにマッピングすることができる。従来技術によって提供されるソリューションは、パッチング・オペレーションを実施するために諸プロセスを停止させる必要があるのは明白で、ユーザに使用上の不便をもたらし得る。プロセスが一時停止できなければパッチング・オペレーションは実施できない。すなわち、新規プロセスが開始されるときにまだ旧コンテンツが使われていることになり、パッチングによって機能を追加することまたはセキュリティの抜け道を埋めることができないことになる。本実施形態によって提供される技術的ソリューションを使えば、パッチング対象となるコンテンツがメモリにロードされている場合、新規コンテンツと旧コンテンツとを判別することによって、パッチング済みコンテンツも同じくメモリにロードされ、新規プロセスは新規コンテンツにマッピングされ、旧プロセスは今までどおり旧コンテンツを用いる。このようにして、プロセスが新しく開始されるときに、実行中のプロセスを強制停止することなく、パッチング済みコンテンツを用いて第一コンテンツをパッチングするオペレーションを完了することができる。
【0035】
本発明の一実施形態において、第一コンテンツにはライブラリ・ファイルを含めることができる。例えば、このライブラリ・ファイルには、動的リンク・ライブラリ(DLL:Dynamic Link Library)または静的リンク・ライブラリの少なくとも一つを含めることが可能である。本発明の別の実施形態において、第一コンテンツには、クラス・ファイルなど他のプログラム・ファイルも含めることができる。便宜上、以下の実施形態では、ライブラリ・ファイルである第一コンテンツを例として用い説明することとする。
【0036】
本発明の一実施形態において、該メモリは物理メモリである。しかしながら、当業者は、技術の発展によってメモリがもっと多くの意味を持ち得ることをよく理解していよう。本発明のこれら実施形態において、メモリにロードされるコンテンツとは、主として、パッチングされるとプロセスの実行に影響を与えることになるコンテンツを言う。本発明の一実施形態において、パッング対象のコンテンツがメモリ中に在るかどうかは、パッチング対象のコンテンツにマッピングされることになるアプリケーションが実行されているかどうかを判断することによって判断することができる。
【0037】
本発明の一実施形態において、
図2に示された方法は、物理マシンに適用することができる。本発明の別の実施形態では、
図2に示された方法は仮想マシンに適用することが可能である。
【0038】
本発明の一実施形態において、
図2に示された方法は、第一コンテンツをパッチングする必要があることを知るステップと;その第一コンテンツがメモリ中に在ると判定するステップと;をさらに含み得る。第一コンテンツをパッチングする必要があることを知るための様々なアプローチがあり得、例えば、通知を受信する、またはパッチ要求を直接受信する、または制御コマンドを直接受信するなどがある。また、従来技術においても、第一コンテンツがメモリ中に在ると判定するための様々な方法がある。さらに
図3aおよび3bに示された実施形態も対応する事例を提示しているが、ここでは詳記しない。
【0039】
本発明の一実施形態において、第一コンテンツは、ライブラリ・ファイルを含む。これに沿って、ステップ210で新規コンテンツと旧コンテンツとを判別するステップは、ライブラリ・ファイル・リストを修正することによって新規コンテンツと旧コンテンツとを判別するステップを含む。様々な実装があり、例えば、ライブラリ・ファイル・リスト中の旧コンテンツに関する項目を修正することができ、またはライブラリ・ファイル・リスト中の新規コンテンツに関する項目を修正することができる。
【0040】
本発明の一実施形態において、
図2に示された方法には、全ての旧プロセスが終了された後で旧コンテンツに関する項目を削除するステップをさらに含めることが可能で、これら旧プロセスは、新規コンテンツがメモリにロードされる前に旧コンテンツにマッピングされていたプロセスを含む。具体的には、ライブラリ・ファイル・リスト中の旧コンテンツに関する項目を削除することができ、コンテンツ中の旧コンテンツを消去することができ、あるいは、ライブラリ・ファイル・リスト中の旧コンテンツに関する項目を削除し且つ諸コンテンツ中の旧コンテンツを消去することの両方を行うことが可能である。
【0041】
本発明の一実施形態において、
図2に示された方法は、ライブラリ・ファイル・マネージャによって実装することができる。
図3aに示されるように、ステップ310で、ライブラリ・ファイル・マネージャは通知を受信し、この通知は、ライブラリ・ファイル・マネージャに、第一ライブラリ・ファイルに対するパッチが在ることを告知するためのものである。この通知は、例えばパッチ・エージェンシによって送信される。ステップ320で、ライブラリ・ファイル・マネージャは、第一ライブラリ・ファイルが、メモリ中に既に存在するかどうかを判断する。存在する場合、本方法はステップ330に進み、存在しない場合は、ステップ340に進む。ステップ330で、ライブラリ・ファイル・マネージャは、パッチング済み第一ライブラリ・ファイルとパッチング前の第一ライブラリ・ファイルとを判別する。以下の説明をし易くするために、パッチング済み第一ライブラリ・ファイルを新規ライブラリ・ファイルと呼び、パッチング前の第一ライブラリ・ファイルを旧ライブラリ・ファイルと呼ぶことにする。ステップ350で、新規プロセスが開始されるときに、当該新規プロセスが新規ライブラリ・ファイルにマッピングされる。この新規プロセスは、新規ライブラリ・ファイルがメモリにロードされた後に開始されるプロセスであり、旧プロセスは、新規ライブラリ・ファイルがメモリにロードされる以前に旧ライブラリ・ファイルにマッピングされているプロセスである。ステップ360で、旧ライブラリ・ファイルにマッピングされている全てのプロセスが終了したときに、旧ライブラリ・ファイルに関する項目が削除される。ステップ340で、本方法はそのまま終了するか、または他の手段に、メモリ中に第一ライブラリ・ファイルが存在しないことが告知される。この実施形態において、メモリに新規ライブラリ・ファイルをロードするステップは、ステップ320の後で且つステップ350の前でありさえすれば、ステップ330の前、同時またはその後に、オペレーティング・システムまたは他の手段によって実行することができる。
【0042】
本発明の別の実施形態において、
図3bに示されるように、ステップ310で受信される通知は、例えば、メモリ・アドレス、新規ライブラリ・ファイルの名前などを含む新規ライブラリ・ファイルに関する情報を、ライブラリ・ファイル・マネージャに告知するための通知とすればよい。この通知は、例えば、オペレーティング・システムまたは他の手段によって送信することが可能である。この実施形態において、ライブラリ・ファイルがメモリ中に存在するかどうかの判断は、ステップ310の前に、具体的にはライブラリ・ファイル・マネージャまたはオペレーティング・システムまたは他の手段によって完了している。ステップ330で、ライブラリ・ファイル・マネージャは、ライブラリ・ファイル・リストを修正することによって、新規ライブラリ・ファイルと旧ライブラリ・ファイルとを判別することができる。この実施形態において、ライブラリ・ファイル・マネージャは、ライブラリ・ファイル・リストを維持し、該リストは、ライブラリ・ファイル、およびライブラリ・ファイルとプロセスとの間の関係のマッピングに関する情報を含み、ライブラリ・ファイルに関する情報は、例えば、ライブラリ・ファイルの名前、メモリ・アドレスなどを含む。上記に換えて、ライブラリ・ファイル・マネージャは、ライブラリ・ファイル・リスト中の新規ライブラリ・ファイルの名前を修正することによって、新規ライブラリ・ファイルと旧ライブラリ・ファイルとを判別することもできる。ステップ370で、ライブラリ・ファイル・マネージャは、旧プロセスに対してその正常な実行を確実にするため、該旧プロセスを今までどおり旧ライブラリ・ファイルにマッピングする。ステップ360では、旧ライブラリ・ファイルに関する項目を削除するステップに、ライブラリ・ファイル・リスト中の旧ライブラリ・ファイルの項目の全部または少なくとも一部を削除するステップを含めることができる。上記に換えて、メモリ中の旧ライブラリ・ファイルを消去することも可能である。
図3aおよび3bに示す実施形態に見られるように、本発明の実施形態によって提供される技術ソリューションは、旧プロセスの実行に影響がないことを確実にしながら、新規プロセスがパッチング済みコンテンツを使えるようにパッチング・オペレーションを実施する、すなわち、動的なパッチングを達成することができる。この技術的ソリューションは、ユーザの実務作業を改善し、滞りのないパッチングを確実にすることを可能にする。さらに、
図3bに示される実施形態は、旧プロセスが、終了時に、新規ライブラリ・ファイルに影響を与えるのを防止することができる。加えて、この実施形態と
図3aに示された実施形態とは、相互に参照することができ、例えば、
図3aに示された実施形態にもステップ370を含めることも可能である。
【0043】
図4に示されるように、前述の実施形態が、仮想マシン環境に実装された場合、次のステップをさらに含めることが可能である。すなわち、ステップ301で、仮想マシンが第一コンテンツをパッチングする通知を受信する;ステップ302で、該通知を受信するのに応じて、仮想マシンは、第一コンテンツがメモリ中に存在すると判定する;ステップ303で、第一コンテンツがメモリ中に存在すると判定するのに応じて、仮想マシンは旧コンテンツと新規コンテンツとを判別する;ステップ304で、パッチング済み第一コンテンツを保存するため、新規メモリ空間が取得される;ステップ305で、新規コンテンツが新規メモリ空間にロードされるのに応じて、仮想マシンが、第一コンテンツを適用する必要のある新規プロセスを新規コンテンツにマッピングする;ステップ306で、第一通知が送信され、該第一通知は、新規メモリ空間のアドレスを少なくとも含む;ステップ307で、第二通知が送信され、該第二通知は、当該仮想マシンが既に第一状態にあることを示すためのものであり、第一状態は、パッチング済み第一コンテンツの新規メモリ空間へのロードから、パッチング・オペレーションの完了にいたるまでのいずれかの状態を含む。当業者は、ステップ303とステップ304との間に特定の実行順序がないこと;また、パッチング済み第一コンテンツがメモリ空間にロードされた後にステップ305およびステップ307が実行されさえすれば、ステップ305、ステップ306、およびステップ307の間に特定の実行順序がないこと;を十分理解していよう。メモリを共有する仮想マシンの具体的な技術的ソリューションについては、以下の諸実施形態に関連して説明する詳細を参照できるので、ここでは詳記しない。この実施形態によって提供されるソリューションを用いて、複数の仮想マシンが、パッチングを行う間のメモリ共有を実現し、これにより、メモリ空間を節減し、パッチの重複したダウンロードを回避することができ、さらに、実行中のプロセスを停止しない動的なパッチングが可能になる。
【0044】
図5に示されるように、本発明のこの実施形態はパッチングの方法を提供する。本方法は、仮想マシンに対しパッチング・オペレーションを実施するのに適している。本方法は、第一コンテンツをパッチングする必要のある仮想マシンの数が1より多いのに応じて、最初に該仮想マシン中のn個の仮想マシンが第一コンテンツをパッチングするオペレーションを実施するようにパッチングをスケジュールするステップ410であって、第一コンテンツをパッチングする必要のあるこれら仮想マシンは同一の物理マシン上に位置し、第一コンテンツをパッチングする必要のある仮想マシンの数はn+mであり、nおよびmの双方は自然数である、ステップ410と;通知を受信するステップ420であって、該通知は、n個の仮想マシンの少なくとも一つが既に第一状態にあることを示すためのものであり、第一状態は、パッチング済み第一コンテンツのメモリ空間へのロードから、パッチング・オペレーションの完了にいたるまでのいずれかの状態を含む、ステップ420と;該通知の受信に応じて、n個の仮想マシン以外のm個の仮想マシンの少なくとも一つが、パッチング・オペレーションのためメモリにロードされたパッチング済み第一コンテンツを用いることができるように、m個の仮想マシンの少なくとも一つが第一コンテンツをパッチングするオペレーションを実施することをスケジュールするステップ430と;を含む。
【0045】
従来技術においては、複数の仮想マシンがパッチングを実施するとき、これらの仮想マシンは相互に分離されているので、各仮想マシンは、他の仮想マシンといっさい協働することなく、単独でパッチング・オペレーションを実施する。その結果、パッチが繰り返しダウンロードされ、ネットワークの送信負荷が増加し、ネットワークの送信状態を悪化させ、またはI/Oインターフェースの応答を減速する。さらに、複数の仮想マシンが単独でパッチング・オペレーションを実施するので、これらは、同一のパッチング済みコンテンツを保存するためいくつものメモリ空間を占有することがあり、これはメモリ空間を浪費する。本実施形態によって提供される方法は、パッチングを必要とする複数の仮想マシンが、仮想マシン間で協働するようスケジュールし、これによって、仮想マシンがパッチを繰り返しダウンロードする可能性を減らし、ネットワークの送信負担を軽減できるようにする。さらに、最初にn個の仮想マシンにパッチングを実施させ、その後、m個の仮想マシンの少なくとも一つにメモリ中のパッチング済みコンテンツを使ってパッチングを実施させることによって、後にパッチングを実施する仮想マシンが、先にパッチングを実施した仮想マシンによって占有されていたメモリ空間を用いることができ、これによりメモリ空間の浪費を回避する。すなわち、複数の仮想マシンが、パッチング済みコンテンツによって占有されたメモリを共有することができる。本実施形態によって提供されるこの方法は、動的パッチングまたは静的パッチングに適用が可能である。
【0046】
本発明の一実施形態において、上記に換えてnの値が1である。すなわち、1個の仮想マシンが最初にパッチングを実施するようスケジュールされ、その後、他の仮想マシンが、メモリにロードされているパッチング済みコンテンツを使ってパッチングを実施する。このやり方によって、仮想マシンの間でパッチング済みコンテンツを共有する利点がより大きく反映され得る。
【0047】
本発明の一実施形態において、
図5に示される方法は、第一コンテンツをパッチングする必要のある仮想マシンの数が1より大きいと判定するステップをさらに含み、第一コンテンツをパッチングする必要のある仮想マシンには、パッチング前の第一コンテンツにマッピングされたプロセスを実行中の仮想マシンも含まれる。本実施形態によって提供される方法を使って、仮想マシンは、動的なパッチングを遂行することができる。具体的な実装の詳細は、
図2、3aおよび3bに示された実施形態を参照すればよい。なお、仮想マシン環境において、パッチング対象コンテンツがメモリ中に在るか、または或る仮想マシンが、パッチング対象コンテンツにマッピングされたプロセスを実行中かどうかについての判断は、その仮想マシン上のパッチ・マネージャまたはパッチ・エージェンシによって行うことが可能である。
【0048】
本発明の一実施形態において、ステップ410および430で、いろいろな報知によって、nおよびm個の仮想マシンを、n個の仮想マシンは新規のメモリ空間を取得し、m個の仮想マシンは存在するメモリ空間を用いるように、それぞれパッチングを実施するようスケジュールすることができる。あるいは、ステップ410および430におけるスケジューリングへのアプローチは同じとし、すなわち、当該仮想マシンが、新規メモリ空間を取得するかまたは存在するメモリ空間を使用するかどうかを判断する。
【0049】
本発明の一実施形態において、第一状態は、パッチング済みコンテンツをメモリ空間にロードする;新規のクライアント・メモリ・ページを取得する;新規のクライアント・メモリ・ページを新規メモリ空間にマッピングする;および新規プロセスをパッチング済みコンテンツにマッピングする;状態のうちの一つを含む。
【0050】
本発明の一実施形態において、
図5に示された実施形態を参照すると、ステップ430におけるスケジューリングは、パッチングの通知を送信する、または直接パッチをプッシュする、または制御コマンドを直接送信することによって実行できるが、ここでは詳記しない。
【0051】
本発明の一実施形態において、
図5に示された方法は、パッチ・マネージャによって実行することができる。パッチ・マネージャは、それぞれの仮想マシンがパッチングを実施するようスケジュールするためのものである。上記に換えて、パッチ・マネージャが、パッチングの通知を当該仮想マシン中のパッチ・エージェンシに送信するようにすることも可能である。あるいは、パッチ・マネージャが、当該仮想マシン中のパッチ・エージェンシにパッチ・アドレスを直接プッシュするようにすることもできる。上記に応じ、パッチ・マネージャは、パッチングの通知を直接受信し、自分でパッチをダウンロードするか、またはパッチが保存されているアドレスを直接取得することができる。この実施形態において、このパッチ・アドレスは、ディスケット中のアドレスまたはメモリ中のアドレスとすればよい。仮想マシンのアプリケーションに対し、このメモリは、物理マシン中の物理メモリとすることができ、または仮想マシン・ハイパーバイザの物理メモリとして具現化することができる。あるいは、パッチ・マネージャを物理マシンのオペレーティング・システム中に、または物理マシン上で実行されている仮想マシン・ハイパーバイザ中に配置することも可能である。当業者は、技術の進展に伴い、パッチ・マネージャによりそれぞれの仮想マシンがパッチングを実施するようにスケジュールできさえすれば、パッチ・マネージャを他の場所にも配置できることをよく理解していよう。
【0052】
図6に示されるように、本発明の一実施形態はパッチングの方法を提供する。本方法は、仮想マシンに対するパッチング・オペレーションを実施するのに適している。本方法は、ステップ510で、現下の仮想マシンがパッチングを必要とすることを通知するための報知を受信するステップと;ステップ520で、パッチング済みの第一コンテンツを保存するために新規メモリ空間を取得するステップであって、該新規メモリ空間は、パッチング前の第一コンテンツが保存されているメモリ空間とオーバーラップのないメモリ空間を含む、該取得するステップと;ステップ530で、新規メモリ空間のアドレスを少なくとも含む第一通知を送信するステップと;ステップ540で、現下の仮想マシンが第一状態にあることを示す第二通知を送信するステップであって、第一状態は、パッチング済み第一コンテンツのメモリ空間へのロードから、パッチング・オペレーションの完了にいたるまでのいずれかの状態を含む、該送信するステップと;ステップ550で、新規メモリ空間中のパッチング済み第一コンテンツに拠って、現下の仮想マシンに対するパッチング・オペレーションを実施するステップと;を含む。
【0053】
本発明の本実施形態によって提供される方法によれば、仮想マシンがパッチング済みコンテンツをメモリにロードした後、該仮想マシンは、パッチ・マネージャが、他の仮想マシンがパッチングを実施するようスケジュールできるように、パッチ・マネージャに通知を行う。これは、複数の仮想マシンの間での協働パッチングの実現を促進し、これにより、メモリの共有を達成し、パッチの重複したダウンロードを回避しさらに過大なメモリ空間の占有を回避する。
【0054】
本発明の一実施形態において、
図5に示される実施形態に対応して、ステップ510で受信された報知は、現下の仮想マシンが新規のメモリ空間を取得する必要があることを示してもよく、あるいは、現下の仮想マシンが第一コンテンツのパッチングを必要としていることだけを示し、その仮想マシンに、新規メモリ空間を取得するかどうかを自分で判断させてもよい。
【0055】
本発明の一実施形態において、ステップ510で受信される報知は、第一手段によって送信される報知である。ステップ530で送信される第一通知は、第二手段に送信される。ステップ540で送信される第二通知は、第三手段に送信される。第一手段および第三手段の双方は、仮想マシンがパッチングを実施するようにスケジュールするためのパッチ・マネージャであり、第二手段は、新規メモリ空間を管理するためのパッチ・コントローラである。上記に換えて、このパッチ・コントローラを新規メモリ空間のアドレスの保存のために用いることも可能である。当該仮想マシン、特にその仮想マシン中のパッチ・エージェンシは、該パッチ・コントローラにアクセスすることによって、新規メモリ空間のアドレスを得ることができる。他の方法として、仮想マシンとの通信、および新規メモリ空間のアドレスの管理にパッチ・コントローラを用いてもよい。このように、パッチ・コントローラが複数の新規メモリ空間のアドレスを管理し、様々な要求に応答することができる。当業者は、パッチ・マネージャとパッチ・コントローラとを同一の装置に位置させること、もしくは2つの別個の手段とすることができるのをよく理解していよう。あるいは、パッチ・コントローラをハイパーバイザ中に配置してもよく、これはメモリ空間の管理を容易にする。
【0056】
本発明の一実施形態において、ステップ520には、例えば、第一コンテンツがメモリ空間中に在るのに応じて、パッチング済み第一コンテンツを保存するための新規メモリ空間を取得するステップを含めることができる。この実施形態では、メモリ中に第一コンテンツが存在する場合に新規メモリ空間の取得が可能である。本発明の別の実施形態において、パッチをダウンロードする前に、メモリ空間中に第一コンテンツが在るかどうかの判定が行われ、しかして、メモリ空間中に第一コンテンツが不在なのに応じて、パッチをディスケットに直接ダウンロードすることができる。本発明の別の実施形態では、パッチをディスケットにダウンロードした後でメモリ空間中に第一コンテンツが在るかどうかの判定が行われ、しかして、メモリ空間中に第一コンテンツが不在なのに応じて、プロセスをコンテンツにマッピングすることが必要になってパッチング済みコンテンツを保存するためのメモリ空間が取得されるまで、すなわち、パッチング済みコンテンツがディスケットからメモリに直接ロードされるときまでは、当面、オペレーションは実施されない。ステップ550には、新規クライアント・メモリ・ページを取得するステップと;新規メモリ空間に該新規クライアント・メモリ・ページをマッピングするステップと;第一コンテンツを適用する必要のある新規プロセスを、パッチング済み第一コンテンツにマッピングするプロセスと;を含めることができ、新規プロセスは、新規クライアント・メモリ・ページを新規メモリ空間にマッピングした後に開始されるプロセスを含む。新規クライアント・メモリ・ページを取得するステップは、新規メモリ空間を割り当てるステップ、または現下の仮想マシンに割り当てられた新規メモリ空間を習得するステップとすることができる。この実施形態において、クライアント・メモリ・ページは、仮想マシンのメモリと仮想マシン・ハイパーバイザによって管理される物理アドレスとの間の関係のマッピングが維持されている表の形で実装することが可能である。この実施形態によって提供される方法を使って、仮想マシンがパッチング済みコンテンツにマッピングされたプロセスを実行しているときにでも、そのコンテンツをパッチングすることが可能で、パッチング済みコンテンツはメモリにロードされ、新規プロセスがそのパッチング済みコンテンツを使用することができ、旧プロセスは今までどおり旧コンテンツを用いる。このような仕方で、旧プロセスの実行に影響することなく、動的パッチングが達成される。
【0057】
本発明の一実施形態において、
図6に示された方法は、全ての旧プロセスが終了した後で第一コンテンツに関する項目を削除するステップをさらに含み、これら旧プロセスは、新規クライアント・メモリ・ページを新規メモリ空間にマッピングする以前に、パッチング前の第一コンテンツにマッピングされていたプロセスを含む。この実施形態によって提供される方法を使い、旧プロセスが終了した後、旧コンテンツに関する項目を、新規コンテンツに影響を与えることなく時宜よく消去することができる。
【0058】
本発明の一実施形態において、
図6に示された方法は、当該仮想マシン中に展開されたパッチ・エージェンシによって実行される。当業者は、機能の一部が、例えばパッチ・マネージャなど他の手段によっても遂行が可能なことをよく理解していよう。
【0059】
図7に示されるように、本発明のこれら実施形態はパッチングの方法を提供する。本方法は、仮想マシンに対するパッチングを実施するのに適している。本方法は、ステップ610で、現下の仮想マシンがパッチングを必要とすることを告知するための報知を受信するステップと;ステップ620で、パッチング済みの第一コンテンツを保存するメモリ空間を習得するステップであって、習得されるメモリ空間は、現下の仮想マシンと同じ物理マシン上に位置する別の仮想マシンに割り当てられているメモリ空間である、該習得するステップと;ステップ630で、習得されたメモリ空間中に保存されたパッチング済み第一コンテンツに拠って、現下の仮想マシンに対してパッチングを実施するステップと;を含む。
【0060】
この実施形態によって提供される方法を使い、この方法を適用する仮想マシンは、パッチング済みの仮想マシンと共に、パッチが位置するメモリ空間を共有でき、これにより、パッチの重複したダウンロードを回避し、また過大なメモリ空間の占有を回避する。
【0061】
本発明の一実施形態において、
図5に示される実施形態に対応し、ステップ610で受信された報知は、現下の仮想マシンが存在するメモリ空間を使う必要があることを示してもよく、あるいは、現下の仮想マシンが第一コンテンツのパッチングを必要としていることだけを示し、当該仮想マシンに存在するメモリ空間を使うかどうかを自分で判断させてもよい。
【0062】
本発明の一実施形態において、ステップ610で受信される報知は第一手段によって送信される。ステップ620で習得されるメモリ空間は、パッチング済み第一コンテンツを保存するための第二手段から習得されたメモリ空間である。第一手段および第二手段の双方をパッチ・マネージャとしてもよい。本発明の別の実施形態では、第一手段はパッチ・マネージャであり、第二手段はパッチ・コントローラである。
【0063】
本発明の一実施形態において、ステップ630には、例えば、新規クライアント・メモリ・ページを取得するステップと;該新規クライアント・メモリ・ページを習得されたメモリ空間にマッピングするステップと;第一コンテンツを適用する必要のある新規プロセスをパッチング済み第一コンテンツにマッピングするステップと;を含めることができ、該新規プロセスは、新規クライアント・メモリ・ページを習得されたメモリ空間にマッピングした後に開始されるプロセスを含む。
【0064】
前述の方法の諸実施形態は、相互に参照し、相互に組み合わせてさらなる実施形態を得ることができる。例えば、
図5と
図2とに示された実施形態を組み合わせて、メモリを共有する仮想マシンに対してパッチ・マネージャによって実行される動的なパッチングの方法を得ることが可能である。別の例として、
図7と
図2とに示された実施形態を組み合わせて、メモリを共有する仮想マシンに対してパッチ・エージェンシによって実行される動的なパッチングの方法を得ることができる。
【0065】
図8を参照しながら、本発明の実施形態に対する詳細な説明を以下に提示する。物理マシンA上に、実行中の仮想マシン1、仮想マシン2、仮想マシン3および仮想マシン4が在る。物理マシンAのオペレーティング・システム中に配置されたパッチ・マネージャは、アプリケーション「a」がマッピングされているdll1がパッチングを必要としていることを知る。ステップ710で、パッチ・マネージャは、dll1のパッチをディスケットにダウンロードする。ステップ720で、パッチ・マネージャは、アプリケーション「a」が仮想マシン1、2、および3上で現在実行中であるが、仮想マシン4上では実行されていないと判定する。アプリケーション「a」は、dll1にマッピングされたアプリケーションである。ステップ730で、パッチ・マネージャは、パッチングの通知を、仮想マシン1上に配置されたパッチ・エージェンシ1に送信する。ステップ740で、パッチング通知の受信に応じて、パッチ・エージェンシ1は、新規物理メモリ空間を取得する。ステップ750で、パッチ・エージェンシ1は、新規クライアント・メモリ・ページを取得し、それを新規物理メモリ空間にマッピングする。ステップ760で、パッチング済みdll1が新規物理メモリ空間にロードされるのに応じて、パッチ・エージェンシ1は、パッチ・マネージャに通知を送信する。ステップ770で、パッチング済みdll1が新規物理メモリ空間にロードされるのに応じて、新規プロセスが、新規クライアント・メモリ・ページに、次いでパッチング済みdll1にマッピングされる。ステップ780で、パッチ・エージェンシ1は、パッチ・コントローラに、新規物理メモリ空間のアドレス、すなわち、物理メモリ中のパッチング済みdll1のアドレスを通知する。ステップ790で、パッチ・エージェンシ1からの通知の受信に応じて、パッチ・マネージャは、パッチングの通知を、仮想マシン2上に配置されたパッチ・エージェンシ2および仮想マシン3上に配置されたパッチ・エージェンシ3にそれぞれ送信する。ステップ7010で、パッチ・マネージャから送信されたパッチング通知の受信に応じて、パッチ・エージェンシ2および3は、各々、新規クライアント・メモリ・ページを取得する。ステップ7011で、パッチ・マネージャから送信されたパッチングの通知の受信に応じて、パッチ・エージェンシ2および3は、各々、パッチ・コントローラから、物理メモリ中のパッチング済みdll1のアドレスを取得する。ステップ7012で、パッチ・エージェンシ2および3は、それぞれ、新規クライアント・メモリ・ページを、パッチング済みdll1が占有する物理メモリ空間にマッピングする。ステップ7013で、パッチ・エージェンシ2および3は、新規プロセスを、それらそれぞれの新規クライアント・メモリ・ページにマッピングし次いでパッチング済みdll1にマッピングする。
【0066】
この実施形態において、パッチング済みのコンテンツを新規物理メモリ空間にロードするステップは、そのステップが新規物理メモリ空間を割り当てた後で且つステップ770の前に実行されさえすれば、パッチ・エージェンシ1が新規物理メモリ空間を得た後でも、得る前でも、得ている間でも実行することが可能である。この実施形態では、ステップ760とステップ770との間に特定の実行順序はない。ステップ780は、ステップ740の後で且つステップ7011の前に実行される。また、ステップ7010とステップ7011との間にも特定の実行順序はない。この実施形態において、パッチ・マネージャおよびパッチ・コントローラは、一緒に、または別々の場所に配置することができる。この実施形態において、ステップ720は、パッチ・マネージャ自体によって判定してもよく、または仮想マシンによって判定を通知してもよい。仮想マシンによって通知される場合は、その仮想マシン自体が、dll1が物理メモリ中に在るかどうか、そしてそれがライブラリ・ファイル・マネージャによって実行可能かどうかを判断することになる。さらに、ステップ770は、例えば、ライブラリ・ファイル・マネージャによって実行することが可能で、ライブラリ・ファイル・マネージャは、ステップ770を実行する前に、旧dll1と新規dll1とを判別することができる。具体的な実装については、
図2に示された実施形態を参照することができる。
図8での便宜上、ライブラリ・ファイル・マネージャが独立に示されていないが、ライブラリ・ファイル・マネージャとパッチ・エージェンシとが一体として表されている。この実施形態において、アプリケーション「a」が実行されている場合、このことは、必然的に、パッチング対象コンテンツ1が物理メモリ中に在ることを意味する。しかして、パッチング対象コンテンツが物理メモリ中に在るかどうかは、アプリケーション「a」が実行されているかどうかを判断することによって決めることができる。当業者は、パッチング対象コンテンツが物理メモリ中に在るかどうか判定するために、他のアプローチを取るのも可能なことをよく理解していよう。また、この実施形態の他の実装の詳細についても、前述した諸実施形態を参照することができる。この実施形態によって提供される技術的ソリューションを使って、同一の物理マシン上の仮想マシン群は、同じコンテンツをパッチングするオペレーションにおいて相互に協働することができ、実行中のアプリケーションがマッピングされているコンテンツでも、旧プロセスに影響することなくパッチングすることが可能で、パッチング済みコンテンツを新規プロセスに対し適用でき、これによってユーザの実務作業が改善され、セキュリティが向上する。さらに、仮想マシンが物理メモリを共有できるので、これらマシンが同じパッチを繰り返しダウンロードしたり、または過大に物理メモリを占有したりすることはなくなる。
【0067】
図9に示されるように、本発明の実施形態は、パッチングのための装置800を提供する。装置800は、物理マシン環境または仮想マシン環境中に配置される。装置800は、第一コンテンツをパッチングする必要があり且つ第一コンテンツがメモリ中に存在するのに応じて、新規コンテンツと旧コンテンツとを判別するよう構成された判別モジュール810であって、新規コンテンツはパッチング済み第一コンテンツであり、旧コンテンツはメモリ中に存在する第一コンテンツである、該判別モジュール810と;新規コンテンツがメモリにロードされるのに応じて、第一コンテンツを適用する必要のある新規プロセスを、新規コンテンツにマッピングするよう構成されたマッピング・モジュール820と;を含み、新規プロセスは、新規コンテンツがメモリにロードされた後に開始されるプロセスを含む。この実施形態によって提供される技術的ソリューションは動的パッチングを達成することができる。この実施形態の具体的実装の詳細については、対応する方法の実施形態を参照することができ、ここでは詳記しない。上記に換えて、装置800は、例えば、ライブラリ・ファイル・マネージャとして実装することができる。
【0068】
本発明の一実施形態において、装置800は、第一コンテンツをパッチングする必要があることを知るよう構成された習得モジュール830と;第一コンテンツがメモリ中に存在するのかを判定するよう構成された判定モジュール840と;をさらに含む。
【0069】
本発明の一実施形態において、第一コンテンツは、例えば、ライブラリ・ファイルを含む。それに応じ、判別モジュール810は、ライブラリ・ファイル・リストを修正することによって、新規コンテンと旧コンテンツとを判別するよう構成される。
【0070】
本発明の一実施形態において、装置800には、全ての旧プロセスが終了した後に、旧コンテンツに関する項目を削除するよう構成された削除モジュール850をさらに含めることができ、これら旧プロセスは、新規コンテンツをメモリにロードする以前に旧コンテンツにマッピングされていたプロセスを含む。
【0071】
図10に示されるように、本発明の実施形態はパッチングのための装置900を提供する。装置900は仮想マシン環境中に配置することができる。装置900は、第一コンテンツをパッチングする必要がある仮想マシンの数が1より多いのに応じて、最初にn個の仮想マシンが第一コンテンツをパッチングするオペレーションを実施するようにパッチングをスケジュールするよう構成された第一スケジューリング・モジュール910であって、第一コンテンツをパッチングする必要のあるこれら仮想マシンは同一の物理マシン上に位置し、第一コンテンツをパッチングする必要のある仮想マシンの数はn+mであり、nおよびmの双方は自然数である、モジュール910と;n個の仮想マシンの少なくとも一つが既に第一状態にあることを告知するための通知を受信するよう構成された受信モジュール920であって、第一状態は、パッチング済み第一コンテンツのメモリへのロードから、パッチング・オペレーションの完了にいたるまでのいずれかの状態を含む、モジュール920と;該通知の受信に応じて、n個の仮想マシン以外のm個の仮想マシンの少なくとも一つが、メモリにロードされたパッチング済み第一コンテンツを用いてパッチング・オペレーションを実施することができるように、m個の仮想マシンの少なくとも一つが第一コンテンツをパッチングするオペレーションを実施することをスケジュールするよう構成された第二スケジューリング・モジュール930と;を含む。上記に換えて、装置900はパッチ・マネージャとして実装されてもよい。あるいは、装置900は、装置900の場所が、装置900を同一の物理マシン上に位置する複数の仮想マシンと交信させることができる場所でありさえすれば、仮想マシン・ハイパーバイザ中にまたは物理マシンのオペレーティング・システム中に位置することも可能である。当業者は、装置900がさらに、パッチのダウンローディング機能、パッチング強制の機能などもっと多くの機能を満たすためのもっと多くのモジュールを含むことが可能なのをよく理解していようが、ここでは詳記はしない。この実施形態によって提供される技術的ソリューションを使って、複数のパッチング対象仮想マシンが、協働でのオペレーションを実現しメモリを共有して、パッチを繰り返しダウンロードすることおよび過大にメモリを占有することを回避することができる。
【0072】
本発明の一実施形態において、例として、nの値は1である。
【0073】
本発明の一実施形態において、装置900は判定モジュール940をさらに含む。判定モジュール940は、第一コンテンツのパッチングを必要とする仮想マシンの数が1より多いのかを判定するよう構成され、この第一コンテンツをパッチングする必要のある仮想マシンの数には、パッチング前の第一コンテンツにマッピングされたプロセスを実行している仮想マシンも含まれる。この実施形態によって提供される技術的ソリューションを使って、仮想マシンに対する動的なパッチングを実装することができ、具体的な実装の詳細については
図2、3a、および3bに示された実施形態を参照することができる。
【0074】
図11に示されるように、本発明の実施形態はパッチングのための装置1000を提供する。装置1000は、仮想マシン環境に配置することができる。装置1000は、現下の仮想マシンがパッチングを必要としていることを示すための報知を受信するよう構成された受信モジュール1010と;パッチング済み第一コンテンツを保存するための新規メモリ空間を取得するよう構成された取得モジュール1020であって、該新規メモリ空間は、パッチング前の第一コンテンツを保存しているメモリ空間とオーバーラップしないメモリ空間を含む、モジュール1020と;新規メモリ空間のアドレスを少なくとも含む第一通知を送信し、現下の仮想マシンが既に第一状態にあることを告知するための第二通知を送信するよう構成された送信モジュール1030であって、第一状態は、パッチング済み第一コンテンツのメモリ空間へのロードから、パッチング・オペレーションの完了にいたるまでのいずれかの状態を含む、モジュール1030と;新規メモリ空間中のパッチング済み第一コンテンツに拠って、現下の仮想マシン上でパッチング・オペレーションを実施するよう構成されたパッチング・モジュール1040と;を含む。上記に換えて、装置1000は、例えば、パッチ・エージェンシとして実装することも可能で、該パッチ・エージェンシは、例えば仮想マシン中に配置することができる。この実施形態によって提供される技術的ソリューションを使って、複数のパッチング対象仮想マシンが、協働でのオペレーションを実現しメモリを共有して、パッチを繰り返しダウンロードすることおよび過大にメモリを占有することを回避することができる。
【0075】
本発明の一実施形態において、受信モジュール1010は、例えば、第一手段から報知を受信し、送信モジュール1030は、例えば、第一通知を第二手段に送信し、第二通知を第三手段に送信するよう構成することができる。第一手段および第三手段の双方は、仮想マシンがパッチング・オペレーションを実施することをスケジュールするためのパッチ・マネージャであり、第二手段は、新規メモリ空間を管理するためのパッチ・コントローラである。方法の実施形態の説明で示したように、パッチ・マネージャおよびパッチ・コントローラは、一緒に配置することも、または、例えば、パッチ・マネージャは物理マシンのオペレーティング・システム中に配置し、一方でパッチ・コントローラはハイパーバイザ中に配置するなど、別々の場所に配置することも可能である。
【0076】
本発明の一実施形態において、取得モジュール1020は、第一コンテンツがメモリ中に存在するのに応じて、パッチング済み第一コンテンツを保存するための新規メモリ空間を取得するよう構成される。パッチング・モジュール1040は、新規クライアント・メモリ・ページを取得するよう構成されたクライアント・メモリ・ページ・サブモジュールと;新規クライアント・メモリ・ページを新規メモリ空間にマッピングするよう構成された第一マッピング・サブモジュールと;第一コンテンツを適用することが必要な新規プロセスをパッチング済み第一コンテンツにマッピングするよう構成された第二マッピング・サブモジュールと;を含み、新規プロセスは、新規クライアント・メモリ・ページを新規メモリ空間にマッピングした後に開始されるプロセスを含む。この実施形態によって提供される技術的ソリューションを使って、仮想マシンの間でのメモリ共有に基づいて、動的なパッチングを実現することができる。
図10に示された実施形態に関連して、当業者は、パッチング前のコンテンツにマッピングされたプロセスが仮想マシン上で実行されているかどうかは、当該仮想マシン上のパッチ・エージェンシによって、またはパッチ・マネージャによって判断できることをよく理解していよう。
【0077】
本発明の一実施形態において、装置1000は、全ての旧プロセスが終了した後、第一コンテンツに関する項目を削除するよう構成された削除モジュール1050をさらに含み、これら旧プロセスは、新規クライアント・メモリ・ページを新規メモリ空間にマッピングする前に、パッチング前の第一コンテンツにマッピングされていたプロセスを含む。
【0078】
図12に示されるように、本発明の実施形態は、パッチングのための装置1100を提供する。装置1100は、仮想マシン環境中に配置することができる。装置1100は、現下の仮想マシンがパッチングを必要としていることを示すための報知を受信するよう構成された受信モジュール1110と;パッチング済み第一コンテンツを保存するメモリ空間を習得するよう構成された習得モジュール1120であって、習得されるメモリ空間は、現下の仮想マシンと同じ物理マシン上に位置する別の仮想マシンに割り当てられているメモリ空間である、モジュール1120と;習得されたメモリ空間中のパッチング済み第一コンテンツに拠って、現下の仮想マシン上でパッチング・オペレーションを実施するよう構成されたパッチング・モジュール1130と、を含む。あるいは、装置1100は、例えば、パッチ・エージェンシとして実装することも可能で、このパッチ・エージェンシを、例として仮想マシンに配置することができる。この実施形態によって提供される技術的ソリューションを使って、複数のパッチング対象仮想マシンが、協働でのオペレーションを実現しメモリを共有して、パッチを繰り返しダウンロードすることおよび過大にメモリを占有することを回避することができる。
【0079】
本発明の一実施形態において、パッチング・モジュール1130は、例えば、新規クライアント・メモリ・ページを取得するよう構成されたクライアント・メモリ・ページ・サブモジュールと;新規クライアント・メモリ・ページを習得されたメモリ空間にマッピングするよう構成された第一マッピング・サブモジュールと;第一コンテンツを適用することが必要な新規プロセスをパッチング済み第一コンテンツにマッピングするよう構成された第二マッピング・サブモジュールと;を含み、該新規プロセスは、新規クライアント・メモリ・ページを、習得されたメモリ空間にマッピングした後に開始されるプロセスを含む。
【0080】
上記の装置の諸実施形態は、相互に参照し、相互に組み合わせてさらなる実施形態を得ることができる。例えば、
図11と
図12とに示された実施形態を組み合わせて、
図13に示されたようなパッチングのための装置1200を得ることができ、この装置1200は、例えば、仮想マシン中に配置することが可能である。装置1200は、現下の仮想マシンが、第一コンテンツのパッチングのため新規メモリ空間を取得する必要があることを示す第一報知を受信し、現下の仮想マシンが、第二コンテンツのパッチングのため既存のメモリ空間を使う必要があることを告知する第二通知を受信するよう構成された受信モジュール1210と、第一報知の受信に応じて、パッチング済み第一コンテンツを保存するための新規メモリ空間を取得するよう構成された取得モジュール1220であって、該新規メモリ空間は、パッチング前の第一コンテンツが保存されているメモリ空間とオーバーラップしないメモリ空間を含む、モジュール1220と;新規メモリ空間のアドレスを少なくとも含む第一通知を送信し、現下の仮想マシンが既に第一状態にあることを示す第二通知を送信するよう構成された送信モジュール1230であって、第一状態は、パッチング済み第一コンテンツのメモリ空間へのロードから、パッチング・オペレーションの完了にいたるまでのいずれかの状態を含む、モジュール1230と;第二報知の受信に応じて、パッチング済み第一コンテンツを保存するメモリ空間を習得するよう構成された習得モジュール1240であって、習得されるメモリ空間は、現下の仮想マシンと同じ物理マシン上に位置する別の仮想マシンに割り当てられているメモリ空間である、モジュール1240と;取得モジュール1220によって取得されたメモリ空間中の、または習得モジュール1240によって習得されたメモリ空間中のパッチング済み第一コンテンツに拠って、現下の仮想マシン上でパッチング・オペレーションを実施するよう構成されたパッチング・モジュール1250と;を含む。
【0081】
前述の装置の諸実施形態の実装の詳細については、対応する方法の実施形態を参照すればよい。
【0082】
図面のフローチャートおよびブロック図は、本発明のさまざまな実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、およびオペレーションを示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、特定の論理機能(群)を実装するための一つ以上の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表し得る。また、一部の別の実装においては、ブロック中に記載された機能が、図面に記載された順序を外れて行われ得ることに留意すべきである。例えば、連続して示された2つのブロックが、関与する機能によって、実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロック群の組み合わせは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステム、または特殊用途ハードウェアとコンピュータ命令との組み合わせによって実装可能なことにも留意すべきである。
【0083】
本発明の様々な実施形態の説明は、例示目的で提示されたもので、網羅的であることも、または開示された実施形態に限定することも意図されていない。当業者には、記載された実施形態の範囲および趣旨から逸脱することのない多くの修改および変形が明白であろう。本明細書で用いた用語は、諸実施形態の原理、実際上の応用、または市販の技術と比べた技術的な改良を最善に説明し、あるいは他の当業者が本明細書に開示された諸実施形態を理解できるように選択されたものである。