(57)【特許請求の範囲】
【請求項１】
第一コンテンツをパッチングする必要があり且つ前記第一コンテンツがメモリ中に存在するのに応じて、新規コンテンツと旧コンテンツとを判別可能とする処理を実行するステップであって、前記新規コンテンツはパッチング済み第一コンテンツであり、前記旧コンテンツは前記メモリ中に存在する前記第一コンテンツである、前記実行するステップと、
前記新規コンテンツが前記メモリにロードされるのに応じて、旧プロセスは判別された前記旧コンテンツを用いる一方で、前記第一コンテンツを適用する必要のある新規プロセスを前記新規コンテンツにマッピングするステップであって、前記新規プロセスは、前記新規コンテンツが前記メモリにロードされた後に開始されるプロセスを含む、前記マッピングするステップと、を含み、
これらのステップをコンピュータに実行させる、パッチングの方法。
【請求項２】
前記方法が、
前記第一コンテンツをパッチングする必要があるのを知るステップと、
前記第一コンテンツが前記メモリ中に存在すると判定するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記第一コンテンツがライブラリ・ファイルを含み、
新規コンテンツと旧コンテンツとを判別可能とする処理を実行する前記ステップが、ライブラリ・ファイル・リスト中の新規ライブラリ・ファイルの名前を修正することによって前記新規コンテンツと前記旧コンテンツとを判別可能とするステップを含む、
請求項１に記載の方法。
【請求項４】
前記方法が、
全ての旧プロセスが終了した後に、前記旧コンテンツに関する項目を前記ライブラリ・ファイル・リストから削除するステップをさらに含み、前記旧プロセスは、前記新規コンテンツを前記メモリにロードする以前に前記旧コンテンツにマッピングされていたプロセスを含む、
請求項３に記載の方法。
【請求項５】
第一コンテンツをパッチングする必要のある仮想マシンの数が１より多いのに応じて、最初にｎ個の前記仮想マシンが前記第一コンテンツをパッチングするオペレーションを実施するようにパッチングをスケジュールするステップであって、前記第一コンテンツをパッチングする必要のある前記仮想マシンは同一の物理マシン上に位置し、前記第一コンテンツをパッチングする必要のある前記仮想マシンの個数はｎ＋ｍであり、ｎおよびｍの双方は自然数である、前記スケジュールするステップと、
ｎ個の仮想マシンの少なくとも一つが既に第一状態にあることを告知するための通知を受信するステップであって、前記第一状態は、パッチング済み第一コンテンツのメモリへのロードから、前記パッチングするオペレーションの完了にいたるまでのいずれかの状態を含む、前記受信するステップと、
前記通知の受信に応じ、ｎ個の仮想マシン以外のｍ個の仮想マシンの少なくとも一つが、前記メモリにロードされた前記パッチング済み第一コンテンツを用いて前記パッチングするオペレーションを実施するように、前記ｍ個の仮想マシンの前記少なくとも一つが前記第一コンテンツをパッチングする前記オペレーションを実施することをスケジュールするステップと、
を含み、これらのステップをコンピュータに実行させる、パッチングの方法。
【請求項６】
ｎが１に等しい、請求項５に記載の方法。
【請求項７】
前記方法が、
前記第一コンテンツをパッチングする必要のある仮想マシンの前記数が１より多いと判定するステップであって、前記第一コンテンツをパッチングする必要のある前記仮想マシンには、パッチング前の前記第一コンテンツにマッピングされたプロセスを実行中の仮想マシンが含まれる、前記判定するステップ、
をさらに含む、請求項５に記載の方法。
【請求項８】
現下の仮想マシンがパッチングを必要としていることを示すための報知を受信するステップと、
パッチング済み第一コンテンツを保存するための新規メモリ空間を取得するステップであって、前記新規メモリ空間は、パッチング前の第一コンテンツを保存するためのメモリ空間とオーバーラップしないメモリ空間を含む、前記取得するステップと、
前記新規メモリ空間のアドレスを少なくとも含む第一通知を送信するステップと、
前記現下の仮想マシンが既に第一状態にあることを告知するための第二通知を送信するステップであって、前記第一状態は、前記パッチング済み第一コンテンツの前記メモリ空間へのロードから、パッチング・オペレーションの完了にいたるまでのいずれかの状態を含む、前記送信するステップと、
前記新規メモリ空間中の前記パッチング済み第一コンテンツに拠って、前記現下の仮想マシン上で前記パッチング・オペレーションを実施するステップと、
を含み、これらのステップをコンピュータに実行させる、パッチングの方法。
【請求項９】
前記パッチング済み第一コンテンツを保存するための前記新規メモリ空間を前記取得するステップは、前記第一コンテンツが前記メモリ中に存在するのに応じて、前記パッチング済み第一コンテンツを保存するための新規メモリ空間を取得するステップを含み、
前記新規メモリ空間中の前記パッチング済み第一コンテンツに拠って、前記現下の仮想マシン上で前記パッチング・オペレーションを前記実施するステップは、新規クライアント・メモリ・ページを取得するステップと、前記新規クライアント・メモリ・ページを前記新規メモリ空間にマッピングするステップと、前記パッチング済み第一コンテンツに、前記第一コンテンツを適用する必要のある新規プロセスをマッピングするステップと、を含み、前記新規プロセスが、前記新規クライアント・メモリ・ページを前記新規メモリ空間にマッピングした後に開始されるプロセスを含む、
請求項８に記載の方法。
【請求項１０】
前記方法が、
全ての旧プロセスが終了した後に、前記第一コンテンツに関する項目を、旧コンテンツと新規コンテンツを判別するために使用されるリストから削除するステップをさらに含み、前記旧プロセスは、前記新規クライアント・メモリ・ページを前記新規メモリ空間にマッピングする以前に、パッチング前の第一コンテンツにマッピングされていたプロセスを含む、
請求項９に記載の方法。
【請求項１１】
現下の仮想マシンがパッチングを必要としていることを示すための報知を受信するステップと、
パッチング済み第一コンテンツを保存するメモリ空間を習得するステップであって、前記習得されるメモリ空間は、前記現下の仮想マシンと同じ物理マシン上に位置し、前記現下の仮想マシンと相互に分離されている別の仮想マシンに割り当てられているメモリ空間である、前記習得するステップと、
前記習得されたメモリ空間中の前記パッチング済み第一コンテンツに拠って、前記現下の仮想マシン上でパッチング・オペレーションを実施するステップと、
を含み、これらのステップをコンピュータに実行させる、パッチングの方法。
【請求項１２】
前記習得されたメモリ空間中の前記パッチング済み第一コンテンツに拠って、前記現下の仮想マシン上で前記パッチング・オペレーションを前記実施するステップが、
新規クライアント・メモリ・ページを取得するステップと、
前記新規クライアント・メモリ・ページを前記習得されたメモリ空間にマッピングするステップと、
前記パッチング済み第一コンテンツに、前記第一コンテンツを適用する必要のある新規プロセスをマッピングするステップであって、前記新規プロセスは、前記新規クライアント・メモリ・ページを前記習得されたメモリ空間にマッピングした後に開始されるプロセスを含む、前記マッピングするステップと、
を含む、請求項１１に記載の方法。
【請求項１３】
第一コンテンツをパッチングする必要があり且つ前記第一コンテンツがメモリ中に存在するのに応じて、新規コンテンツと旧コンテンツとを判別可能とする処理を実行するよう構成された判別モジュールであって、前記新規コンテンツはパッチング済み第一コンテンツであり、前記旧コンテンツは前記メモリ中に存在する前記第一コンテンツである、前記判別モジュールと、
前記新規コンテンツが前記メモリにロードされるのに応じて、旧プロセスは判別された前記旧コンテンツを用いる一方で、前記第一コンテンツを適用する必要のある新規プロセスを前記新規コンテンツにマッピングするよう構成されたマッピング・モジュールであって、前記新規プロセスは、前記新規コンテンツが前記メモリにロードされた後に開始されるプロセスを含む、前記マッピング・モジュールと、
を含む、パッチングのための装置。
【請求項１４】
前記装置が、
前記第一コンテンツをパッチングする必要があることを知るよう構成された習得モジュールと、
前記第一コンテンツが前記メモリ中に存在するのかを判定するよう構成された判定モジュールと、
をさらに含む、請求項１３に記載の装置。
【請求項１５】
前記第一コンテンツがライブラリ・ファイルを含み、前記判別モジュールが、ライブラリ・ファイル・リスト中の新規ライブラリ・ファイルの名前を修正することによって前記新規コンテンツと前記旧コンテンツとを判別可能とするよう構成される、請求項１３に記載の装置。
【請求項１６】
前記装置が、
全ての旧プロセスが終了した後に、前記旧コンテンツに関する項目を前記ライブラリ・ファイル・リストから削除するよう構成された削除モジュールであって、前記旧プロセスは、前記新規コンテンツを前記メモリにロードする以前に前記旧コンテンツにマッピングされていたプロセスを含む、前記削除モジュール、
をさらに含む、請求項１５に記載の装置。
【請求項１７】
第一コンテンツをパッチングする必要のある仮想マシンの数が１より多いのに応じて、最初にｎ個の前記仮想マシンが前記第一コンテンツをパッチングするオペレーションを実施するようにパッチングをスケジュールするよう構成された第一スケジューリング・モジュールであって、前記第一コンテンツをパッチングする必要のある前記仮想マシンは同一の物理マシン上に位置し、前記第一コンテンツをパッチングする必要のある前記仮想マシンの個数はｎ＋ｍであり、ｎおよびｍの双方は自然数である、前記第一スケジューリング・モジュールと、
ｎ個の仮想マシンの少なくとも一つが既に第一状態にあることを告知するための通知を受信するよう構成された受信モジュールであって、前記第一状態は、パッチング済み第一コンテンツのメモリへのロードから、前記パッチングするオペレーションの完了にいたるまでのいずれかの状態を含む、前記受信モジュールと、
前記通知の受信に応じて、ｎ個の仮想マシン以外のｍ個の仮想マシンの少なくとも一つが、前記メモリにロードされた前記パッチング済み第一コンテンツを用いて前記パッチングするオペレーションを実施するように、前記ｍ個の仮想マシンの前記少なくとも一つが前記第一コンテンツをパッチングする前記オペレーションを実施することをスケジュールするよう構成された第二スケジューリング・モジュールと、
を含む、パッチングのための装置。
【請求項１８】
ｎが１に等しい、請求項１７に記載の装置。
【請求項１９】
前記装置が、
前記第一コンテンツをパッチングする必要のある仮想マシンの前記数が１より多いのかを判定するよう構成された判定モジュールであって、前記第一コンテンツをパッチングする必要のある前記仮想マシンには、パッチング前の前記第一コンテンツにマッピングされたプロセスを実行している仮想マシンが含まれる、前記判定モジュール、
をさらに含む、請求項１７に記載の装置。
【請求項２０】
現下の仮想マシンがパッチングを必要としていることを示すための報知を受信するよう構成された受信モジュールと、
パッチング済み第一コンテンツを保存するための新規メモリ空間を取得するよう構成された取得モジュールであって、前記新規メモリ空間は、パッチング前の第一コンテンツを保存しているメモリ空間とオーバーラップしないメモリ空間を含む、前記取得モジュールと、
前記新規メモリ空間のアドレスを少なくとも含む第一通知を送信し、前記現下の仮想マシンが既に第一状態にあることを告知するための第二通知を送信するよう構成された送信モジュールであって、前記第一状態は、前記パッチング済み第一コンテンツの前記メモリ空間へのロードから、パッチング・オペレーションの完了にいたるまでのいずれかの状態を含む、前記送信モジュールと、
前記新規メモリ空間中の前記パッチング済み第一コンテンツに拠って、前記現下の仮想マシン上で前記パッチング・オペレーションを実施するよう構成されたパッチング・モジュールと、
を含む、パッチングのための装置。
【請求項２１】
前記取得モジュールが、前記第一コンテンツが前記メモリ中に存在するのに応じて、前記パッチング済み第一コンテンツを保存するための新規メモリ空間を取得するよう構成され、
前記パッチング・モジュールが、新規クライアント・メモリ・ページを取得するよう構成されたクライアント・メモリ・ページ・サブモジュールと、前記新規クライアント・メモリ・ページを前記新規メモリ空間にマッピングするよう構成された第一マッピング・サブモジュールと、前記第一コンテンツを適用することが必要な新規プロセスを前記パッチング済み第一コンテンツにマッピングするよう構成された第二マッピング・サブモジュールとを含み、前記新規プロセスは、前記新規クライアント・メモリ・ページを前記新規メモリ空間にマッピングした後に開始されるプロセスを含む、
請求項２０に記載の装置。
【請求項２２】
前記装置が、
全ての旧プロセスが終了した後に前記第一コンテンツに関する項目を、旧コンテンツと新規コンテンツを判別するために使用されるリストから削除するよう構成された削除モジュールをさらに含み、前記旧プロセスは、前記新規クライアント・メモリ・ページを前記新規メモリ空間にマッピングする以前に前記パッチング前の第一コンテンツにマッピングされていたプロセスを含む、
請求項２１に記載の装置。
【請求項２３】
現下の仮想マシンがパッチングを必要としていることを示すための報知を受信するよう構成された受信モジュールと、
パッチング済み第一コンテンツを保存するメモリ空間を習得するよう構成された習得モジュールであって、前記習得されるメモリ空間は、前記現下の仮想マシンと同じ物理マシン上に位置し、前記現下の仮想マシンと相互に分離されている別の仮想マシンに割り当てられたメモリ空間である、前記習得モジュールと、
前記習得されたメモリ空間中の前記パッチング済み第一コンテンツに拠って、前記現下の仮想マシン上でパッチング・オペレーションを実施するよう構成されたパッチング・モジュールと、
を含む、パッチングのための装置。
【請求項２４】
前記パッチング・モジュールが、
新規クライアント・メモリ・ページを取得するよう構成されたクライアント・メモリ・ページ・サブモジュールと、
前記新規クライアント・メモリ・ページを前記習得されたメモリ空間にマッピングするよう構成された第一マッピング・サブモジュールと、
前記第一コンテンツを適用することが必要な新規プロセスを前記パッチング済み第一コンテンツにマッピングするよう構成された第二マッピング・サブモジュールであって、前記新規プロセスは、前記新規クライアント・メモリ・ページを前記習得されたメモリ空間にマッピングした後に開始されるプロセスを含む、前記第二マッピング・サブモジュールと、
を含む、請求項２３に記載の装置。
【請求項２５】
コンピュータ上でコンピュータ・プログラムが実行されたとき、請求項１〜１２のいずれかに記載の前記方法のステップを実施するようになされたプログラム・コードを含む、前記コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータの分野に関し、さらに具体的にはパッチングのための方法および装置に関する。
【背景技術】
【０００２】
ソフトウェア・アプリケーションの絶え間ない拡充にともなって、ソフトウェア・アプリケーションをパッチングする必要性が増大している。ソフトウェア・アプリケーションにセキュリティの脆弱性または機能不全が生ずることは避けられないので、ソフトウェア・アプリケーションは改善のためパッチングを必要とする。
【０００３】
ソフトウェア・アプリケーションばかりでなく、オペレーティング・システムも、セキュリティ・バグを修正しまたは機能を向上させるため継続的にパッチングする必要がある。さらに、ウイルスは一般に極めて急速且つ広範に拡散する。ウイルス感染を避けるために、オペレーティング・システムまたはソフトウェア・アプリケーションを時宜を得てパッチングする必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、現行のパッチング・アプローチは、実行中のアプリケーションを停止する必要があり、使用上の不便が生ずることになる。実行中のアプリケーションを停止しなければそれらを時宜よくパッチングすることができない。
【課題を解決するための手段】
【０００５】
本発明の諸実施形態は、アプリケーションを停止することなくパッチングするためのパッチングの方法および装置を提供する。
【０００６】
本発明の一態様によってパッチングのための方法が提供され、本方法は、第一コンテンツをパッチングする必要があり且つ第一コンテンツがメモリ中に存在するのに応じて、新規コンテンツと旧コンテンツとを判別するステップであって、新規コンテンツはパッチング済みの第一コンテンツであり、旧コンテンツはメモリ中に存在する第一コンテンツである、該判別するステップと；新規コンテンツがメモリにロードされるのに応じて、第一コンテンツを適用する必要のある新規プロセスを新規コンテンツにマッピングするステップであって、新規プロセスは、新規コンテンツをメモリにロードした後に開始されるプロセスを含む、該マッピングするステップと；を含む。
【０００７】
本発明の別の態様によってパッチングのための方法が提供され、本方法は、第一コンテンツをパッチングする必要のある仮想マシンの数が１より多いのに応じて、最初にｎ個の仮想マシンが第一コンテンツをパッチングするオペレーションを実施するようにパッチングをスケジュールするステップであって、第一コンテンツをパッチングする必要のあるこれら仮想マシンは同一の物理マシン上に位置し、第一コンテンツをパッチングする必要のある仮想マシンの数はｎ＋ｍであり、ｎおよびｍの双方は自然数である、該スケジュールするステップと；ｎ個の仮想マシンの少なくとも一つが既に第一状態にあることを告知するための通知を受信するステップであって、第一状態は、パッチング済みの第一コンテンツのメモリへのロードから、パッチング・オペレーションの完了にいたるまでのいずれかの状態を含む、該受信するステップと；該通知の受信に応じて、ｎ個の仮想マシン以外のｍ個の仮想マシンの少なくとも一つが、メモリにロードされたパッチング済み第一コンテンツを用いてパッチング・オペレーションを実施するように、ｍ個の仮想マシンの少なくとも一つが第一コンテンツをパッチングするオペレーションを実施することをスケジュールするステップと；を含む。
【０００８】
本発明の別の態様によってパッチングのための方法が提供され、本方法は、現下の仮想マシンがパッチングを必要としていることを示す報知（ｉｎｄｉｃａｔｉｏｎ）を受信するステップと；パッチング済み第一コンテンツを保存するための新規メモリ空間を取得するステップであって、該新規メモリ空間は、パッチング前の第一コンテンツを保存するためのメモリ空間とオーバーラップしないメモリ空間を含む、該取得するステップと；新規メモリ空間のアドレスを少なくとも含む第一通知を送信するステップと；現下の仮想マシンが既に第一状態にあることを告知するための第二通知を送信するステップであって、第一状態は、パッチング済み第一コンテンツのメモリ空間へのロードから、パッチング・オペレーションの完了にいたるまでのいずれかの状態を含む、該送信するステップと；新規メモリ空間中のパッチング済み第一コンテンツに拠って、現下の仮想マシン上でパッチング・オペレーションを実施するステップと；を含む。
【０００９】
本発明の別の態様によってパッチングのための方法が提供され、本方法は、現下の仮想マシンがパッチングを必要としていることを示すための報知を受信するステップと；パッチング済み第一コンテンツを保存するメモリ空間を習得（ｌｅａｒｎ）するステップであって、習得されるメモリ空間は、現下の仮想マシンと同じ物理マシン上に位置する別の仮想マシンに割り当てられているメモリ空間である、該習得するステップと；習得されたメモリ空間中のパッチング済み第一コンテンツに拠って、現下の仮想マシン上でパッチング・オペレーションを実施するステップと；を含む。
【００１０】
本発明の別の態様によってパッチングための装置が提供され、本装置は、第一コンテンツをパッチングする必要があり且つ第一コンテンツがメモリ中に存在するのに応じて、新規コンテンツと旧コンテンツとを判別するよう構成された判別モジュールであって、新規コンテンツはパッチング済み第一コンテンツであり、旧コンテンツはメモリ中に存在する第一コンテンツである、該判別モジュールと；新規コンテンツがメモリにロードされるのに応じて、第一コンテンツを適用する必要のある新規プロセスを新規コンテンツにマッピングするよう構成されたマッピング・モジュールであって、新規プロセスは、新規コンテンツがメモリにロードされた後に開始されるプロセスを含む、該マッピング・モジュールと；を含む。
【００１１】
本発明の別の態様によってパッチングのための装置が提供され、本装置は、第一コンテンツをパッチングする必要のある仮想マシンの数が１より多いのに応じて、最初にｎ個の仮想マシンが第一コンテンツをパッチングするオペレーションを実施するように、パッチングをスケジュールするよう構成された第一スケジューリング・モジュールであって、第一コンテンツをパッチングする必要のあるこれら仮想マシンは同一の物理マシン上に位置し、第一コンテンツをパッチングする必要のある仮想マシンの数はｎ＋ｍであり、ｎおよびｍの双方は自然数である、該第一スケジューリング・モジュールと；ｎ個の仮想マシンの少なくとも一つが既に第一状態にあることを告知するための通知を受信するよう構成された受信モジュールであって、第一状態は、パッチング済み第一コンテンツのメモリへのロードから、パッチング・オペレーションの完了にいたるまでのいずれかの状態を含む、該受信モジュールと；該通知の受信に応じて、ｎ個の仮想マシン以外のｍ個の仮想マシンの少なくとも一つが、メモリにロードされたパッチング済み第一コンテンツを用いてパッチング・オペレーションを実施するように、ｍ個の仮想マシンの少なくとも一つが第一コンテンツをパッチングするオペレーションを実施することをスケジュールするよう構成された第二スケジューリング・モジュールと；を含む。
【００１２】
本発明の別の態様によってパッチングのための装置が提供され、本装置は、現下の仮想マシンがパッチングを必要としていることを示すための報知を受信するよう構成された受信モジュールと；パッチング済み第一コンテンツを保存するための新規メモリ空間を取得するよう構成された取得モジュールであって、該新規メモリ空間は、パッチング前の第一コンテンツを保存しているメモリ空間とオーバーラップしないメモリ空間を含む、該取得モジュールと；新規メモリ空間のアドレスを少なくとも含む第一通知を送信し、現下の仮想マシンが既に第一状態にあることを告知するための第二通知を送信するよう構成された送信モジュールであって、第一状態は、パッチング済み第一コンテンツのメモリ空間へのロードから、パッチング・オペレーションの完了にいたるまでのいずれかの状態を含む、該送信モジュールと；新規メモリ空間中のパッチング済み第一コンテンツに拠って、現下の仮想マシン上でパッチング・オペレーションを実施するよう構成されたパッチング・モジュールと；を含む。
【００１３】
本発明の別の態様によってパッチングのための装置が提供され、本装置は、現下の仮想マシンがパッチングを必要としていることを示すための報知を受信するよう構成された受信モジュールと；パッチング済み第一コンテンツを保存するメモリ空間を習得するよう構成された習得モジュールであって、習得されるメモリ空間は、現下の仮想マシンと同じ物理マシン上に位置する別の仮想マシンに割り当てられているメモリ空間である、該習得モジュールと；習得されたメモリ空間中のパッチング済み第一コンテンツに拠って、現下の仮想マシン上でパッチング・オペレーションを実施するよう構成されたパッチング・モジュールと；を含む。
【００１４】
本発明により提供される技術的ソリューションは、実行中のアプリケーションを停止することなく動的なパッチングを実施することができる。
【００１５】
添付の図面中の、本開示のいくつかの実施形態のさらに詳細な説明を通して、本開示の前述のおよび他の目的、特徴および利点がより明らかになろう。本開示の諸実施形態中の同じ参照記号は一般に同一のコンポーネントを指す。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態を実装するのに適用できる、例示的なコンピュータ・システム／サーバ１２を示す。
【図２】本発明の実施形態による、パッチングの方法の概略フローチャートを示す。
【図３】図３ａは、本発明の実施形態による、ライブラリ・ファイル・マネージャによって実行されるパッチングの方法の概略フローチャートを示し、図３ｂは、本発明の実施形態による、ライブラリ・ファイル・マネージャによって実施されるパッチングの別方法の概略フローチャートを示す。
【図４】本発明の実施形態による、仮想マシン環境で適用されるパッチングの方法の概略フローチャートを示す。
【図５】本発明の実施形態による、仮想マシンに適用されるパッチングの方法の概略フローチャートを示す。
【図６】本発明の実施形態による、仮想マシンに適用されるパッチングの別方法の概略フローチャートを示す。
【図７】本発明の実施形態による、仮想マシンに適用されるパッチングのさらなる方法の概略フローチャートを示す。
【図８】本発明の実施形態による、仮想マシンに適用されるパッチングのまださらなる方法の概略フローチャートを示す。
【図９】本発明の一実施形態による、パッチングのための装置の概略図を示す。
【図１０】本発明の実施形態による、パッチングのための別の装置の概略図を示す。
【図１１】本発明の実施形態による、パッチングのためのさらなる装置の概略図を示す。
【図１２】本発明の実施形態による、パッチングのためのまださらなる装置の概略図を示す。
【図１３】本発明の実施形態による、パッチングのためのまださらなる装置の概略図を示す。
【発明を実施するための形態】
【００１７】
いくつかの好適な実施形態を、添付の図面を参照しながらさらに詳しく説明するものとし、これらの図面には本開示の好適な実施形態が示されている。但し、本開示は、様々な仕方で実装することが可能で、しかして本明細書で開示する実施形態に限定されると解釈されるべきではない。上記に替えて、これらの実施形態は、本開示の徹底的で完全な理解のためおよび当業者に本開示の範囲を完全に伝えるために提示されるものである。
【００１８】
当業者には当然のことながら、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、あるいはソフトウェア態様およびハードウェア態様を組み合わせた実施形態の形を取ることができ、これらは一般に本明細書では全て「回路」、「モジュール」、または「システム」と称することがある。さらに、本発明の態様は、コンピュータ可読プログラム・コードが具現化されている一つ以上のコンピュータ可読媒体（群）中に具体化されたコンピュータ・プログラム製品の形を取ることも可能である。
【００１９】
一つ以上のコンピュータ可読媒体（群）の任意の組み合わせを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的、または半導体の、システム、装置、またはデバイス、あるいはこれらの任意の適切な組み合わせであり得る。コンピュータ可読ストレージ媒体のさらに具体的な例（非包括的リスト）には、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ：ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙまたはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述の任意の適切な組み合わせが含まれよう。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体であり得る。
【００２０】
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現化されたコンピュータ可読プログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の適切な組み合わせを含め、さまざまな形態の任意の形を取ることが可能である。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではないが、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムの通信、伝播、または伝送が可能な任意のコンピュータ可読媒体であり得る。
【００２１】
コンピュータ可読媒体上に具現化されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、ＲＦなど、または前述の任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。
【００２２】
本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、“Ｃ”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合わせで記述することができる。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することもできる。後者の場合は、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）または広域ネットワーク（ＷＡＮ：ｗｉｄｅａｒｅａ ｎｅｔｗｏｒｋ）を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは（例えばインターネット・サービス・プロバイダを使いインターネットを介し）外部のコンピュータへの接続を行うこともできる。
【００２３】
本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、本発明の態様を以下に説明する。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することが可能である。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群／動作群を実装するための手段を生成するようにすることができる。
【００２４】
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令することができるコンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能／動作を実装する命令群を包含する製造品を作り出せるようにすることができる。
【００２５】
さらに、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上、他のプログラム可能装置上、または他のデバイス上で一連のオペレーション・ステップを実行させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上もしくは他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群／動作群を実装するためのプロセスを提供するようにすることも可能である。
【００２６】
ここで図１を参照すると、本発明の実施形態を実装するのに適用できる、例示的なコンピュータ・システム／サーバ１２が示されている。コンピュータ・システム／サーバ１２は単なる例示であって、本明細書に記載の本発明実施形態の使用または機能の範囲に関しいかなる限定をも示唆することは意図はされていない。
【００２７】
図１に示されるように、コンピュータ・システム／サーバ１２は、汎用コンピューティング・デバイスの形で表されている。コンピュータ・システム／サーバ１２のコンポーネントには、以下に限らないが、一つ以上のプロセッサまたは処理装置１６と、システム・メモリ２８と、システム・メモリ２８のプロセッサ１６への連結を含め様々なシステム・コンポーネントを連結するバス１８とを含めることができる。
【００２８】
バス１８は、メモリ・バスまたはメモリ・コントローラ、周辺機器用バス、アクセラレイティッド・グラフィックス・ポート、および様々なバス・アーキテクチャの任意のものを用いたプロセッサまたはローカル・バスを含め、いくつかの種類のバス構造体の任意の一つ以上を表している。限定でなく例として、かかるアーキテクチャには、業界標準アーキテクチャ（ＩＳＡ：Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ：Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、拡張ＩＳＡ（ＥＩＳＡ：Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（ＶＥＳＡ：Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカル・バス、および周辺コンポーネント相互接続（ＰＣＩ：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスが含まれる。
【００２９】
コンピュータ・システム／サーバ１２は、通常、様々なコンピュータ・システム可読媒体を含む。かかる媒体は、コンピュータ・システム／サーバ１２がアクセス可能な任意の利用可能な媒体とすることができ、これには、揮発性および不揮発性媒体、リムーバブルおよびノンリムーバブル媒体の両方が含まれる。
【００３０】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）３０もしくはキャッシュ・メモリ３２またはその両方など揮発性メモリの形で、コンピュータ・システム可読の媒体を含むことができる。コンピュータ・システム／サーバ１２には、他のリムーバブル／ノンリムーバブル、揮発性／不揮発性コンピュータ・システム・ストレージ媒体をさらに含めることが可能である。単なる例として、ノンリムーバブル、不揮発性の磁気媒体（図示せず、通常「ハード・ドライブ」と呼ばれる）との読み取り／書き込みのために、ストレージ・システム３４を設けることができる。図示されていないが、リムーバブル、不揮発性磁気ディスク（例えば「フレキシブル・ディスク」）との読み取り／書き込みのための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭまたは他の光媒体などリムーバブル、不揮発性の光ディスクとの読み取り／書き込みのための光ディスク・ドライブを設けることも可能である。このような場合、一つ以上のデータ媒体インターフェースによってこれらの各々をバス１８に接続することができる。以下にさらに提示し説明するように、メモリ２８には、本発明の実施形態の機能を実行するよう構成されたプログラム・モジュールの（例えば、少なくとも一モジュールの）セットを有する少なくとも一つのプログラム製品を含めることが可能である。
【００３１】
限定でなく例として、メモリ２８には、オペレーティング・システム、一つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと共に、プログラム・モジュール４２の（少なくとも一モジュールの）セットを有するプログラム／ユーティリティ４０を格納することができる。オペレーティング・システム、一つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データの各々、またはこれらの何らかの組み合わせには、ネットワーク環境の実装を含めることが可能である。プログラム・モジュール４２は、本明細書で説明するように、一般に本発明の実施形態の機能もしくは方法またはその両方を遂行する。
【００３２】
また、コンピュータ・システム／サーバ１２は、キーボード、ポインティング・デバイス、ディスプレイ２４など一つ以上の外部デバイス１４；ユーザがコンピュータ・システム／サーバ１２と対話することを可能にする一つ以上のデバイス；もしくはコンピュータ・システム／サーバ１２が一つ以上の他のコンピューティング・デバイスと交信することを可能にする任意のデバイス（例えば、ネットワーク・カード、モデムなど）；またはこれらの組合せと通信することができる。かかる通信は、入力／出力（Ｉ／Ｏ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）インターフェース２２を介して行うことが可能である。さらにまた、コンピュータ・システム／サーバ１２は、ネットワーク・アダプタ２０を介して、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、一般広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）、もしくは公衆ネットワーク（例えばインターネット）またはこれらの組合せなどの一つ以上のネットワークと通信することができる。図示のように、ネットワーク・アダプタ２０は、バス１８を介してコンピュータ・システム／サーバ１２の他のコンポーネントと通信する。当然ながら、図示はされていないが、コンピュータ・システム／サーバ１２と連結して、他のハードウェアもしくはソフトウェア・コンポーネントまたはその両方を用いることができよう。これらの例には、以下に限らないが、マイクロコード、デバイス・ドライバ、冗長処理装置、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ記録ストレージ・システムなどが含まれる。
【００３３】
ここで図２を参照すると、この図は、本発明の実施形態によって提供されるパッチングの方法を示す。本方法は、第一コンテンツをパッチングする必要があり且つ第一コンテンツがメモリ中に存在するのに応じて、新規コンテンツと旧コンテンツとを判別するステップ２１０であって、新規コンテンツはパッチング済み第一コンテンツであり、旧コンテンツはメモリ中に存在する第一コンテンツである、ステップ２１０と；新規コンテンツがメモリにロードされるのに応じて、第一コンテンツを適用する必要のある新規プロセスを該新規コンテンツにマッピングするステップ２２０であって、新規プロセスは、新規コンテンツがメモリにロードされた後に開始されるプロセスを含む、ステップ２２０と；を含む。
【００３４】
従来技術においては、メモリ中のコンテンツを直接修正するとそのコンテンツにマッピングされたプロセスに異常が生じるので、パッチング対象のコンテンツがメモリにロードされている場合には、該コンテンツにマッピングされた全プロセスが停止されることになる。パッチング済みコンテンツをメモリにロードした後、そのコンテンツにマッピングされたプロセスを再スタートさせることにより該プロセスをパッチング済みメモリにマッピングすることができる。従来技術によって提供されるソリューションは、パッチング・オペレーションを実施するために諸プロセスを停止させる必要があるのは明白で、ユーザに使用上の不便をもたらし得る。プロセスが一時停止できなければパッチング・オペレーションは実施できない。すなわち、新規プロセスが開始されるときにまだ旧コンテンツが使われていることになり、パッチングによって機能を追加することまたはセキュリティの抜け道を埋めることができないことになる。本実施形態によって提供される技術的ソリューションを使えば、パッチング対象となるコンテンツがメモリにロードされている場合、新規コンテンツと旧コンテンツとを判別することによって、パッチング済みコンテンツも同じくメモリにロードされ、新規プロセスは新規コンテンツにマッピングされ、旧プロセスは今までどおり旧コンテンツを用いる。このようにして、プロセスが新しく開始されるときに、実行中のプロセスを強制停止することなく、パッチング済みコンテンツを用いて第一コンテンツをパッチングするオペレーションを完了することができる。
【００３５】
本発明の一実施形態において、第一コンテンツにはライブラリ・ファイルを含めることができる。例えば、このライブラリ・ファイルには、動的リンク・ライブラリ（ＤＬＬ：Ｄｙｎａｍｉｃ  Ｌｉｎｋ  Ｌｉｂｒａｒｙ）または静的リンク・ライブラリの少なくとも一つを含めることが可能である。本発明の別の実施形態において、第一コンテンツには、クラス・ファイルなど他のプログラム・ファイルも含めることができる。便宜上、以下の実施形態では、ライブラリ・ファイルである第一コンテンツを例として用い説明することとする。
【００３６】
本発明の一実施形態において、該メモリは物理メモリである。しかしながら、当業者は、技術の発展によってメモリがもっと多くの意味を持ち得ることをよく理解していよう。本発明のこれら実施形態において、メモリにロードされるコンテンツとは、主として、パッチングされるとプロセスの実行に影響を与えることになるコンテンツを言う。本発明の一実施形態において、パッング対象のコンテンツがメモリ中に在るかどうかは、パッチング対象のコンテンツにマッピングされることになるアプリケーションが実行されているかどうかを判断することによって判断することができる。
【００３７】
本発明の一実施形態において、図２に示された方法は、物理マシンに適用することができる。本発明の別の実施形態では、図２に示された方法は仮想マシンに適用することが可能である。
【００３８】
本発明の一実施形態において、図２に示された方法は、第一コンテンツをパッチングする必要があることを知るステップと；その第一コンテンツがメモリ中に在ると判定するステップと；をさらに含み得る。第一コンテンツをパッチングする必要があることを知るための様々なアプローチがあり得、例えば、通知を受信する、またはパッチ要求を直接受信する、または制御コマンドを直接受信するなどがある。また、従来技術においても、第一コンテンツがメモリ中に在ると判定するための様々な方法がある。さらに図３ａおよび３ｂに示された実施形態も対応する事例を提示しているが、ここでは詳記しない。
【００３９】
本発明の一実施形態において、第一コンテンツは、ライブラリ・ファイルを含む。これに沿って、ステップ２１０で新規コンテンツと旧コンテンツとを判別するステップは、ライブラリ・ファイル・リストを修正することによって新規コンテンツと旧コンテンツとを判別するステップを含む。様々な実装があり、例えば、ライブラリ・ファイル・リスト中の旧コンテンツに関する項目を修正することができ、またはライブラリ・ファイル・リスト中の新規コンテンツに関する項目を修正することができる。
【００４０】
本発明の一実施形態において、図２に示された方法には、全ての旧プロセスが終了された後で旧コンテンツに関する項目を削除するステップをさらに含めることが可能で、これら旧プロセスは、新規コンテンツがメモリにロードされる前に旧コンテンツにマッピングされていたプロセスを含む。具体的には、ライブラリ・ファイル・リスト中の旧コンテンツに関する項目を削除することができ、コンテンツ中の旧コンテンツを消去することができ、あるいは、ライブラリ・ファイル・リスト中の旧コンテンツに関する項目を削除し且つ諸コンテンツ中の旧コンテンツを消去することの両方を行うことが可能である。
【００４１】
本発明の一実施形態において、図２に示された方法は、ライブラリ・ファイル・マネージャによって実装することができる。図３ａに示されるように、ステップ３１０で、ライブラリ・ファイル・マネージャは通知を受信し、この通知は、ライブラリ・ファイル・マネージャに、第一ライブラリ・ファイルに対するパッチが在ることを告知するためのものである。この通知は、例えばパッチ・エージェンシによって送信される。ステップ３２０で、ライブラリ・ファイル・マネージャは、第一ライブラリ・ファイルが、メモリ中に既に存在するかどうかを判断する。存在する場合、本方法はステップ３３０に進み、存在しない場合は、ステップ３４０に進む。ステップ３３０で、ライブラリ・ファイル・マネージャは、パッチング済み第一ライブラリ・ファイルとパッチング前の第一ライブラリ・ファイルとを判別する。以下の説明をし易くするために、パッチング済み第一ライブラリ・ファイルを新規ライブラリ・ファイルと呼び、パッチング前の第一ライブラリ・ファイルを旧ライブラリ・ファイルと呼ぶことにする。ステップ３５０で、新規プロセスが開始されるときに、当該新規プロセスが新規ライブラリ・ファイルにマッピングされる。この新規プロセスは、新規ライブラリ・ファイルがメモリにロードされた後に開始されるプロセスであり、旧プロセスは、新規ライブラリ・ファイルがメモリにロードされる以前に旧ライブラリ・ファイルにマッピングされているプロセスである。ステップ３６０で、旧ライブラリ・ファイルにマッピングされている全てのプロセスが終了したときに、旧ライブラリ・ファイルに関する項目が削除される。ステップ３４０で、本方法はそのまま終了するか、または他の手段に、メモリ中に第一ライブラリ・ファイルが存在しないことが告知される。この実施形態において、メモリに新規ライブラリ・ファイルをロードするステップは、ステップ３２０の後で且つステップ３５０の前でありさえすれば、ステップ３３０の前、同時またはその後に、オペレーティング・システムまたは他の手段によって実行することができる。
【００４２】
本発明の別の実施形態において、図３ｂに示されるように、ステップ３１０で受信される通知は、例えば、メモリ・アドレス、新規ライブラリ・ファイルの名前などを含む新規ライブラリ・ファイルに関する情報を、ライブラリ・ファイル・マネージャに告知するための通知とすればよい。この通知は、例えば、オペレーティング・システムまたは他の手段によって送信することが可能である。この実施形態において、ライブラリ・ファイルがメモリ中に存在するかどうかの判断は、ステップ３１０の前に、具体的にはライブラリ・ファイル・マネージャまたはオペレーティング・システムまたは他の手段によって完了している。ステップ３３０で、ライブラリ・ファイル・マネージャは、ライブラリ・ファイル・リストを修正することによって、新規ライブラリ・ファイルと旧ライブラリ・ファイルとを判別することができる。この実施形態において、ライブラリ・ファイル・マネージャは、ライブラリ・ファイル・リストを維持し、該リストは、ライブラリ・ファイル、およびライブラリ・ファイルとプロセスとの間の関係のマッピングに関する情報を含み、ライブラリ・ファイルに関する情報は、例えば、ライブラリ・ファイルの名前、メモリ・アドレスなどを含む。上記に換えて、ライブラリ・ファイル・マネージャは、ライブラリ・ファイル・リスト中の新規ライブラリ・ファイルの名前を修正することによって、新規ライブラリ・ファイルと旧ライブラリ・ファイルとを判別することもできる。ステップ３７０で、ライブラリ・ファイル・マネージャは、旧プロセスに対してその正常な実行を確実にするため、該旧プロセスを今までどおり旧ライブラリ・ファイルにマッピングする。ステップ３６０では、旧ライブラリ・ファイルに関する項目を削除するステップに、ライブラリ・ファイル・リスト中の旧ライブラリ・ファイルの項目の全部または少なくとも一部を削除するステップを含めることができる。上記に換えて、メモリ中の旧ライブラリ・ファイルを消去することも可能である。図３ａおよび３ｂに示す実施形態に見られるように、本発明の実施形態によって提供される技術ソリューションは、旧プロセスの実行に影響がないことを確実にしながら、新規プロセスがパッチング済みコンテンツを使えるようにパッチング・オペレーションを実施する、すなわち、動的なパッチングを達成することができる。この技術的ソリューションは、ユーザの実務作業を改善し、滞りのないパッチングを確実にすることを可能にする。さらに、図３ｂに示される実施形態は、旧プロセスが、終了時に、新規ライブラリ・ファイルに影響を与えるのを防止することができる。加えて、この実施形態と図３ａに示された実施形態とは、相互に参照することができ、例えば、図３ａに示された実施形態にもステップ３７０を含めることも可能である。
【００４３】
図４に示されるように、前述の実施形態が、仮想マシン環境に実装された場合、次のステップをさらに含めることが可能である。すなわち、ステップ３０１で、仮想マシンが第一コンテンツをパッチングする通知を受信する；ステップ３０２で、該通知を受信するのに応じて、仮想マシンは、第一コンテンツがメモリ中に存在すると判定する；ステップ３０３で、第一コンテンツがメモリ中に存在すると判定するのに応じて、仮想マシンは旧コンテンツと新規コンテンツとを判別する；ステップ３０４で、パッチング済み第一コンテンツを保存するため、新規メモリ空間が取得される；ステップ３０５で、新規コンテンツが新規メモリ空間にロードされるのに応じて、仮想マシンが、第一コンテンツを適用する必要のある新規プロセスを新規コンテンツにマッピングする；ステップ３０６で、第一通知が送信され、該第一通知は、新規メモリ空間のアドレスを少なくとも含む；ステップ３０７で、第二通知が送信され、該第二通知は、当該仮想マシンが既に第一状態にあることを示すためのものであり、第一状態は、パッチング済み第一コンテンツの新規メモリ空間へのロードから、パッチング・オペレーションの完了にいたるまでのいずれかの状態を含む。当業者は、ステップ３０３とステップ３０４との間に特定の実行順序がないこと；また、パッチング済み第一コンテンツがメモリ空間にロードされた後にステップ３０５およびステップ３０７が実行されさえすれば、ステップ３０５、ステップ３０６、およびステップ３０７の間に特定の実行順序がないこと；を十分理解していよう。メモリを共有する仮想マシンの具体的な技術的ソリューションについては、以下の諸実施形態に関連して説明する詳細を参照できるので、ここでは詳記しない。この実施形態によって提供されるソリューションを用いて、複数の仮想マシンが、パッチングを行う間のメモリ共有を実現し、これにより、メモリ空間を節減し、パッチの重複したダウンロードを回避することができ、さらに、実行中のプロセスを停止しない動的なパッチングが可能になる。
【００４４】
図５に示されるように、本発明のこの実施形態はパッチングの方法を提供する。本方法は、仮想マシンに対しパッチング・オペレーションを実施するのに適している。本方法は、第一コンテンツをパッチングする必要のある仮想マシンの数が１より多いのに応じて、最初に該仮想マシン中のｎ個の仮想マシンが第一コンテンツをパッチングするオペレーションを実施するようにパッチングをスケジュールするステップ４１０であって、第一コンテンツをパッチングする必要のあるこれら仮想マシンは同一の物理マシン上に位置し、第一コンテンツをパッチングする必要のある仮想マシンの数はｎ＋ｍであり、ｎおよびｍの双方は自然数である、ステップ４１０と；通知を受信するステップ４２０であって、該通知は、ｎ個の仮想マシンの少なくとも一つが既に第一状態にあることを示すためのものであり、第一状態は、パッチング済み第一コンテンツのメモリ空間へのロードから、パッチング・オペレーションの完了にいたるまでのいずれかの状態を含む、ステップ４２０と；該通知の受信に応じて、ｎ個の仮想マシン以外のｍ個の仮想マシンの少なくとも一つが、パッチング・オペレーションのためメモリにロードされたパッチング済み第一コンテンツを用いることができるように、ｍ個の仮想マシンの少なくとも一つが第一コンテンツをパッチングするオペレーションを実施することをスケジュールするステップ４３０と；を含む。
【００４５】
従来技術においては、複数の仮想マシンがパッチングを実施するとき、これらの仮想マシンは相互に分離されているので、各仮想マシンは、他の仮想マシンといっさい協働することなく、単独でパッチング・オペレーションを実施する。その結果、パッチが繰り返しダウンロードされ、ネットワークの送信負荷が増加し、ネットワークの送信状態を悪化させ、またはＩ／Ｏインターフェースの応答を減速する。さらに、複数の仮想マシンが単独でパッチング・オペレーションを実施するので、これらは、同一のパッチング済みコンテンツを保存するためいくつものメモリ空間を占有することがあり、これはメモリ空間を浪費する。本実施形態によって提供される方法は、パッチングを必要とする複数の仮想マシンが、仮想マシン間で協働するようスケジュールし、これによって、仮想マシンがパッチを繰り返しダウンロードする可能性を減らし、ネットワークの送信負担を軽減できるようにする。さらに、最初にｎ個の仮想マシンにパッチングを実施させ、その後、ｍ個の仮想マシンの少なくとも一つにメモリ中のパッチング済みコンテンツを使ってパッチングを実施させることによって、後にパッチングを実施する仮想マシンが、先にパッチングを実施した仮想マシンによって占有されていたメモリ空間を用いることができ、これによりメモリ空間の浪費を回避する。すなわち、複数の仮想マシンが、パッチング済みコンテンツによって占有されたメモリを共有することができる。本実施形態によって提供されるこの方法は、動的パッチングまたは静的パッチングに適用が可能である。
【００４６】
本発明の一実施形態において、上記に換えてｎの値が１である。すなわち、１個の仮想マシンが最初にパッチングを実施するようスケジュールされ、その後、他の仮想マシンが、メモリにロードされているパッチング済みコンテンツを使ってパッチングを実施する。このやり方によって、仮想マシンの間でパッチング済みコンテンツを共有する利点がより大きく反映され得る。
【００４７】
本発明の一実施形態において、図５に示される方法は、第一コンテンツをパッチングする必要のある仮想マシンの数が１より大きいと判定するステップをさらに含み、第一コンテンツをパッチングする必要のある仮想マシンには、パッチング前の第一コンテンツにマッピングされたプロセスを実行中の仮想マシンも含まれる。本実施形態によって提供される方法を使って、仮想マシンは、動的なパッチングを遂行することができる。具体的な実装の詳細は、図２、３ａおよび３ｂに示された実施形態を参照すればよい。なお、仮想マシン環境において、パッチング対象コンテンツがメモリ中に在るか、または或る仮想マシンが、パッチング対象コンテンツにマッピングされたプロセスを実行中かどうかについての判断は、その仮想マシン上のパッチ・マネージャまたはパッチ・エージェンシによって行うことが可能である。
【００４８】
本発明の一実施形態において、ステップ４１０および４３０で、いろいろな報知によって、ｎおよびｍ個の仮想マシンを、ｎ個の仮想マシンは新規のメモリ空間を取得し、ｍ個の仮想マシンは存在するメモリ空間を用いるように、それぞれパッチングを実施するようスケジュールすることができる。あるいは、ステップ４１０および４３０におけるスケジューリングへのアプローチは同じとし、すなわち、当該仮想マシンが、新規メモリ空間を取得するかまたは存在するメモリ空間を使用するかどうかを判断する。
【００４９】
本発明の一実施形態において、第一状態は、パッチング済みコンテンツをメモリ空間にロードする；新規のクライアント・メモリ・ページを取得する；新規のクライアント・メモリ・ページを新規メモリ空間にマッピングする；および新規プロセスをパッチング済みコンテンツにマッピングする；状態のうちの一つを含む。
【００５０】
本発明の一実施形態において、図５に示された実施形態を参照すると、ステップ４３０におけるスケジューリングは、パッチングの通知を送信する、または直接パッチをプッシュする、または制御コマンドを直接送信することによって実行できるが、ここでは詳記しない。
【００５１】
本発明の一実施形態において、図５に示された方法は、パッチ・マネージャによって実行することができる。パッチ・マネージャは、それぞれの仮想マシンがパッチングを実施するようスケジュールするためのものである。上記に換えて、パッチ・マネージャが、パッチングの通知を当該仮想マシン中のパッチ・エージェンシに送信するようにすることも可能である。あるいは、パッチ・マネージャが、当該仮想マシン中のパッチ・エージェンシにパッチ・アドレスを直接プッシュするようにすることもできる。上記に応じ、パッチ・マネージャは、パッチングの通知を直接受信し、自分でパッチをダウンロードするか、またはパッチが保存されているアドレスを直接取得することができる。この実施形態において、このパッチ・アドレスは、ディスケット中のアドレスまたはメモリ中のアドレスとすればよい。仮想マシンのアプリケーションに対し、このメモリは、物理マシン中の物理メモリとすることができ、または仮想マシン・ハイパーバイザの物理メモリとして具現化することができる。あるいは、パッチ・マネージャを物理マシンのオペレーティング・システム中に、または物理マシン上で実行されている仮想マシン・ハイパーバイザ中に配置することも可能である。当業者は、技術の進展に伴い、パッチ・マネージャによりそれぞれの仮想マシンがパッチングを実施するようにスケジュールできさえすれば、パッチ・マネージャを他の場所にも配置できることをよく理解していよう。
【００５２】
図６に示されるように、本発明の一実施形態はパッチングの方法を提供する。本方法は、仮想マシンに対するパッチング・オペレーションを実施するのに適している。本方法は、ステップ５１０で、現下の仮想マシンがパッチングを必要とすることを通知するための報知を受信するステップと；ステップ５２０で、パッチング済みの第一コンテンツを保存するために新規メモリ空間を取得するステップであって、該新規メモリ空間は、パッチング前の第一コンテンツが保存されているメモリ空間とオーバーラップのないメモリ空間を含む、該取得するステップと；ステップ５３０で、新規メモリ空間のアドレスを少なくとも含む第一通知を送信するステップと；ステップ５４０で、現下の仮想マシンが第一状態にあることを示す第二通知を送信するステップであって、第一状態は、パッチング済み第一コンテンツのメモリ空間へのロードから、パッチング・オペレーションの完了にいたるまでのいずれかの状態を含む、該送信するステップと；ステップ５５０で、新規メモリ空間中のパッチング済み第一コンテンツに拠って、現下の仮想マシンに対するパッチング・オペレーションを実施するステップと；を含む。
【００５３】
本発明の本実施形態によって提供される方法によれば、仮想マシンがパッチング済みコンテンツをメモリにロードした後、該仮想マシンは、パッチ・マネージャが、他の仮想マシンがパッチングを実施するようスケジュールできるように、パッチ・マネージャに通知を行う。これは、複数の仮想マシンの間での協働パッチングの実現を促進し、これにより、メモリの共有を達成し、パッチの重複したダウンロードを回避しさらに過大なメモリ空間の占有を回避する。
【００５４】
本発明の一実施形態において、図５に示される実施形態に対応して、ステップ５１０で受信された報知は、現下の仮想マシンが新規のメモリ空間を取得する必要があることを示してもよく、あるいは、現下の仮想マシンが第一コンテンツのパッチングを必要としていることだけを示し、その仮想マシンに、新規メモリ空間を取得するかどうかを自分で判断させてもよい。
【００５５】
本発明の一実施形態において、ステップ５１０で受信される報知は、第一手段によって送信される報知である。ステップ５３０で送信される第一通知は、第二手段に送信される。ステップ５４０で送信される第二通知は、第三手段に送信される。第一手段および第三手段の双方は、仮想マシンがパッチングを実施するようにスケジュールするためのパッチ・マネージャであり、第二手段は、新規メモリ空間を管理するためのパッチ・コントローラである。上記に換えて、このパッチ・コントローラを新規メモリ空間のアドレスの保存のために用いることも可能である。当該仮想マシン、特にその仮想マシン中のパッチ・エージェンシは、該パッチ・コントローラにアクセスすることによって、新規メモリ空間のアドレスを得ることができる。他の方法として、仮想マシンとの通信、および新規メモリ空間のアドレスの管理にパッチ・コントローラを用いてもよい。このように、パッチ・コントローラが複数の新規メモリ空間のアドレスを管理し、様々な要求に応答することができる。当業者は、パッチ・マネージャとパッチ・コントローラとを同一の装置に位置させること、もしくは２つの別個の手段とすることができるのをよく理解していよう。あるいは、パッチ・コントローラをハイパーバイザ中に配置してもよく、これはメモリ空間の管理を容易にする。
【００５６】
本発明の一実施形態において、ステップ５２０には、例えば、第一コンテンツがメモリ空間中に在るのに応じて、パッチング済み第一コンテンツを保存するための新規メモリ空間を取得するステップを含めることができる。この実施形態では、メモリ中に第一コンテンツが存在する場合に新規メモリ空間の取得が可能である。本発明の別の実施形態において、パッチをダウンロードする前に、メモリ空間中に第一コンテンツが在るかどうかの判定が行われ、しかして、メモリ空間中に第一コンテンツが不在なのに応じて、パッチをディスケットに直接ダウンロードすることができる。本発明の別の実施形態では、パッチをディスケットにダウンロードした後でメモリ空間中に第一コンテンツが在るかどうかの判定が行われ、しかして、メモリ空間中に第一コンテンツが不在なのに応じて、プロセスをコンテンツにマッピングすることが必要になってパッチング済みコンテンツを保存するためのメモリ空間が取得されるまで、すなわち、パッチング済みコンテンツがディスケットからメモリに直接ロードされるときまでは、当面、オペレーションは実施されない。ステップ５５０には、新規クライアント・メモリ・ページを取得するステップと；新規メモリ空間に該新規クライアント・メモリ・ページをマッピングするステップと；第一コンテンツを適用する必要のある新規プロセスを、パッチング済み第一コンテンツにマッピングするプロセスと；を含めることができ、新規プロセスは、新規クライアント・メモリ・ページを新規メモリ空間にマッピングした後に開始されるプロセスを含む。新規クライアント・メモリ・ページを取得するステップは、新規メモリ空間を割り当てるステップ、または現下の仮想マシンに割り当てられた新規メモリ空間を習得するステップとすることができる。この実施形態において、クライアント・メモリ・ページは、仮想マシンのメモリと仮想マシン・ハイパーバイザによって管理される物理アドレスとの間の関係のマッピングが維持されている表の形で実装することが可能である。この実施形態によって提供される方法を使って、仮想マシンがパッチング済みコンテンツにマッピングされたプロセスを実行しているときにでも、そのコンテンツをパッチングすることが可能で、パッチング済みコンテンツはメモリにロードされ、新規プロセスがそのパッチング済みコンテンツを使用することができ、旧プロセスは今までどおり旧コンテンツを用いる。このような仕方で、旧プロセスの実行に影響することなく、動的パッチングが達成される。
【００５７】
本発明の一実施形態において、図６に示された方法は、全ての旧プロセスが終了した後で第一コンテンツに関する項目を削除するステップをさらに含み、これら旧プロセスは、新規クライアント・メモリ・ページを新規メモリ空間にマッピングする以前に、パッチング前の第一コンテンツにマッピングされていたプロセスを含む。この実施形態によって提供される方法を使い、旧プロセスが終了した後、旧コンテンツに関する項目を、新規コンテンツに影響を与えることなく時宜よく消去することができる。
【００５８】
本発明の一実施形態において、図６に示された方法は、当該仮想マシン中に展開されたパッチ・エージェンシによって実行される。当業者は、機能の一部が、例えばパッチ・マネージャなど他の手段によっても遂行が可能なことをよく理解していよう。
【００５９】
図７に示されるように、本発明のこれら実施形態はパッチングの方法を提供する。本方法は、仮想マシンに対するパッチングを実施するのに適している。本方法は、ステップ６１０で、現下の仮想マシンがパッチングを必要とすることを告知するための報知を受信するステップと；ステップ６２０で、パッチング済みの第一コンテンツを保存するメモリ空間を習得するステップであって、習得されるメモリ空間は、現下の仮想マシンと同じ物理マシン上に位置する別の仮想マシンに割り当てられているメモリ空間である、該習得するステップと；ステップ６３０で、習得されたメモリ空間中に保存されたパッチング済み第一コンテンツに拠って、現下の仮想マシンに対してパッチングを実施するステップと；を含む。
【００６０】
この実施形態によって提供される方法を使い、この方法を適用する仮想マシンは、パッチング済みの仮想マシンと共に、パッチが位置するメモリ空間を共有でき、これにより、パッチの重複したダウンロードを回避し、また過大なメモリ空間の占有を回避する。
【００６１】
本発明の一実施形態において、図５に示される実施形態に対応し、ステップ６１０で受信された報知は、現下の仮想マシンが存在するメモリ空間を使う必要があることを示してもよく、あるいは、現下の仮想マシンが第一コンテンツのパッチングを必要としていることだけを示し、当該仮想マシンに存在するメモリ空間を使うかどうかを自分で判断させてもよい。
【００６２】
本発明の一実施形態において、ステップ６１０で受信される報知は第一手段によって送信される。ステップ６２０で習得されるメモリ空間は、パッチング済み第一コンテンツを保存するための第二手段から習得されたメモリ空間である。第一手段および第二手段の双方をパッチ・マネージャとしてもよい。本発明の別の実施形態では、第一手段はパッチ・マネージャであり、第二手段はパッチ・コントローラである。
【００６３】
本発明の一実施形態において、ステップ６３０には、例えば、新規クライアント・メモリ・ページを取得するステップと；該新規クライアント・メモリ・ページを習得されたメモリ空間にマッピングするステップと；第一コンテンツを適用する必要のある新規プロセスをパッチング済み第一コンテンツにマッピングするステップと；を含めることができ、該新規プロセスは、新規クライアント・メモリ・ページを習得されたメモリ空間にマッピングした後に開始されるプロセスを含む。
【００６４】
前述の方法の諸実施形態は、相互に参照し、相互に組み合わせてさらなる実施形態を得ることができる。例えば、図５と図２とに示された実施形態を組み合わせて、メモリを共有する仮想マシンに対してパッチ・マネージャによって実行される動的なパッチングの方法を得ることが可能である。別の例として、図７と図２とに示された実施形態を組み合わせて、メモリを共有する仮想マシンに対してパッチ・エージェンシによって実行される動的なパッチングの方法を得ることができる。
【００６５】
図８を参照しながら、本発明の実施形態に対する詳細な説明を以下に提示する。物理マシンＡ上に、実行中の仮想マシン１、仮想マシン２、仮想マシン３および仮想マシン４が在る。物理マシンＡのオペレーティング・システム中に配置されたパッチ・マネージャは、アプリケーション「ａ」がマッピングされているｄｌｌ１がパッチングを必要としていることを知る。ステップ７１０で、パッチ・マネージャは、ｄｌｌ１のパッチをディスケットにダウンロードする。ステップ７２０で、パッチ・マネージャは、アプリケーション「ａ」が仮想マシン１、２、および３上で現在実行中であるが、仮想マシン４上では実行されていないと判定する。アプリケーション「ａ」は、ｄｌｌ１にマッピングされたアプリケーションである。ステップ７３０で、パッチ・マネージャは、パッチングの通知を、仮想マシン１上に配置されたパッチ・エージェンシ１に送信する。ステップ７４０で、パッチング通知の受信に応じて、パッチ・エージェンシ１は、新規物理メモリ空間を取得する。ステップ７５０で、パッチ・エージェンシ１は、新規クライアント・メモリ・ページを取得し、それを新規物理メモリ空間にマッピングする。ステップ７６０で、パッチング済みｄｌｌ１が新規物理メモリ空間にロードされるのに応じて、パッチ・エージェンシ１は、パッチ・マネージャに通知を送信する。ステップ７７０で、パッチング済みｄｌｌ１が新規物理メモリ空間にロードされるのに応じて、新規プロセスが、新規クライアント・メモリ・ページに、次いでパッチング済みｄｌｌ１にマッピングされる。ステップ７８０で、パッチ・エージェンシ１は、パッチ・コントローラに、新規物理メモリ空間のアドレス、すなわち、物理メモリ中のパッチング済みｄｌｌ１のアドレスを通知する。ステップ７９０で、パッチ・エージェンシ１からの通知の受信に応じて、パッチ・マネージャは、パッチングの通知を、仮想マシン２上に配置されたパッチ・エージェンシ２および仮想マシン３上に配置されたパッチ・エージェンシ３にそれぞれ送信する。ステップ７０１０で、パッチ・マネージャから送信されたパッチング通知の受信に応じて、パッチ・エージェンシ２および３は、各々、新規クライアント・メモリ・ページを取得する。ステップ７０１１で、パッチ・マネージャから送信されたパッチングの通知の受信に応じて、パッチ・エージェンシ２および３は、各々、パッチ・コントローラから、物理メモリ中のパッチング済みｄｌｌ１のアドレスを取得する。ステップ７０１２で、パッチ・エージェンシ２および３は、それぞれ、新規クライアント・メモリ・ページを、パッチング済みｄｌｌ１が占有する物理メモリ空間にマッピングする。ステップ７０１３で、パッチ・エージェンシ２および３は、新規プロセスを、それらそれぞれの新規クライアント・メモリ・ページにマッピングし次いでパッチング済みｄｌｌ１にマッピングする。
【００６６】
この実施形態において、パッチング済みのコンテンツを新規物理メモリ空間にロードするステップは、そのステップが新規物理メモリ空間を割り当てた後で且つステップ７７０の前に実行されさえすれば、パッチ・エージェンシ１が新規物理メモリ空間を得た後でも、得る前でも、得ている間でも実行することが可能である。この実施形態では、ステップ７６０とステップ７７０との間に特定の実行順序はない。ステップ７８０は、ステップ７４０の後で且つステップ７０１１の前に実行される。また、ステップ７０１０とステップ７０１１との間にも特定の実行順序はない。この実施形態において、パッチ・マネージャおよびパッチ・コントローラは、一緒に、または別々の場所に配置することができる。この実施形態において、ステップ７２０は、パッチ・マネージャ自体によって判定してもよく、または仮想マシンによって判定を通知してもよい。仮想マシンによって通知される場合は、その仮想マシン自体が、ｄｌｌ１が物理メモリ中に在るかどうか、そしてそれがライブラリ・ファイル・マネージャによって実行可能かどうかを判断することになる。さらに、ステップ７７０は、例えば、ライブラリ・ファイル・マネージャによって実行することが可能で、ライブラリ・ファイル・マネージャは、ステップ７７０を実行する前に、旧ｄｌｌ１と新規ｄｌｌ１とを判別することができる。具体的な実装については、図２に示された実施形態を参照することができる。図８での便宜上、ライブラリ・ファイル・マネージャが独立に示されていないが、ライブラリ・ファイル・マネージャとパッチ・エージェンシとが一体として表されている。この実施形態において、アプリケーション「ａ」が実行されている場合、このことは、必然的に、パッチング対象コンテンツ１が物理メモリ中に在ることを意味する。しかして、パッチング対象コンテンツが物理メモリ中に在るかどうかは、アプリケーション「ａ」が実行されているかどうかを判断することによって決めることができる。当業者は、パッチング対象コンテンツが物理メモリ中に在るかどうか判定するために、他のアプローチを取るのも可能なことをよく理解していよう。また、この実施形態の他の実装の詳細についても、前述した諸実施形態を参照することができる。この実施形態によって提供される技術的ソリューションを使って、同一の物理マシン上の仮想マシン群は、同じコンテンツをパッチングするオペレーションにおいて相互に協働することができ、実行中のアプリケーションがマッピングされているコンテンツでも、旧プロセスに影響することなくパッチングすることが可能で、パッチング済みコンテンツを新規プロセスに対し適用でき、これによってユーザの実務作業が改善され、セキュリティが向上する。さらに、仮想マシンが物理メモリを共有できるので、これらマシンが同じパッチを繰り返しダウンロードしたり、または過大に物理メモリを占有したりすることはなくなる。
【００６７】
図９に示されるように、本発明の実施形態は、パッチングのための装置８００を提供する。装置８００は、物理マシン環境または仮想マシン環境中に配置される。装置８００は、第一コンテンツをパッチングする必要があり且つ第一コンテンツがメモリ中に存在するのに応じて、新規コンテンツと旧コンテンツとを判別するよう構成された判別モジュール８１０であって、新規コンテンツはパッチング済み第一コンテンツであり、旧コンテンツはメモリ中に存在する第一コンテンツである、該判別モジュール８１０と；新規コンテンツがメモリにロードされるのに応じて、第一コンテンツを適用する必要のある新規プロセスを、新規コンテンツにマッピングするよう構成されたマッピング・モジュール８２０と；を含み、新規プロセスは、新規コンテンツがメモリにロードされた後に開始されるプロセスを含む。この実施形態によって提供される技術的ソリューションは動的パッチングを達成することができる。この実施形態の具体的実装の詳細については、対応する方法の実施形態を参照することができ、ここでは詳記しない。上記に換えて、装置８００は、例えば、ライブラリ・ファイル・マネージャとして実装することができる。
【００６８】
本発明の一実施形態において、装置８００は、第一コンテンツをパッチングする必要があることを知るよう構成された習得モジュール８３０と；第一コンテンツがメモリ中に存在するのかを判定するよう構成された判定モジュール８４０と；をさらに含む。
【００６９】
本発明の一実施形態において、第一コンテンツは、例えば、ライブラリ・ファイルを含む。それに応じ、判別モジュール８１０は、ライブラリ・ファイル・リストを修正することによって、新規コンテンと旧コンテンツとを判別するよう構成される。
【００７０】
本発明の一実施形態において、装置８００には、全ての旧プロセスが終了した後に、旧コンテンツに関する項目を削除するよう構成された削除モジュール８５０をさらに含めることができ、これら旧プロセスは、新規コンテンツをメモリにロードする以前に旧コンテンツにマッピングされていたプロセスを含む。
【００７１】
図１０に示されるように、本発明の実施形態はパッチングのための装置９００を提供する。装置９００は仮想マシン環境中に配置することができる。装置９００は、第一コンテンツをパッチングする必要がある仮想マシンの数が１より多いのに応じて、最初にｎ個の仮想マシンが第一コンテンツをパッチングするオペレーションを実施するようにパッチングをスケジュールするよう構成された第一スケジューリング・モジュール９１０であって、第一コンテンツをパッチングする必要のあるこれら仮想マシンは同一の物理マシン上に位置し、第一コンテンツをパッチングする必要のある仮想マシンの数はｎ＋ｍであり、ｎおよびｍの双方は自然数である、モジュール９１０と；ｎ個の仮想マシンの少なくとも一つが既に第一状態にあることを告知するための通知を受信するよう構成された受信モジュール９２０であって、第一状態は、パッチング済み第一コンテンツのメモリへのロードから、パッチング・オペレーションの完了にいたるまでのいずれかの状態を含む、モジュール９２０と；該通知の受信に応じて、ｎ個の仮想マシン以外のｍ個の仮想マシンの少なくとも一つが、メモリにロードされたパッチング済み第一コンテンツを用いてパッチング・オペレーションを実施することができるように、ｍ個の仮想マシンの少なくとも一つが第一コンテンツをパッチングするオペレーションを実施することをスケジュールするよう構成された第二スケジューリング・モジュール９３０と；を含む。上記に換えて、装置９００はパッチ・マネージャとして実装されてもよい。あるいは、装置９００は、装置９００の場所が、装置９００を同一の物理マシン上に位置する複数の仮想マシンと交信させることができる場所でありさえすれば、仮想マシン・ハイパーバイザ中にまたは物理マシンのオペレーティング・システム中に位置することも可能である。当業者は、装置９００がさらに、パッチのダウンローディング機能、パッチング強制の機能などもっと多くの機能を満たすためのもっと多くのモジュールを含むことが可能なのをよく理解していようが、ここでは詳記はしない。この実施形態によって提供される技術的ソリューションを使って、複数のパッチング対象仮想マシンが、協働でのオペレーションを実現しメモリを共有して、パッチを繰り返しダウンロードすることおよび過大にメモリを占有することを回避することができる。
【００７２】
本発明の一実施形態において、例として、ｎの値は１である。
【００７３】
本発明の一実施形態において、装置９００は判定モジュール９４０をさらに含む。判定モジュール９４０は、第一コンテンツのパッチングを必要とする仮想マシンの数が１より多いのかを判定するよう構成され、この第一コンテンツをパッチングする必要のある仮想マシンの数には、パッチング前の第一コンテンツにマッピングされたプロセスを実行している仮想マシンも含まれる。この実施形態によって提供される技術的ソリューションを使って、仮想マシンに対する動的なパッチングを実装することができ、具体的な実装の詳細については図２、３ａ、および３ｂに示された実施形態を参照することができる。
【００７４】
図１１に示されるように、本発明の実施形態はパッチングのための装置１０００を提供する。装置１０００は、仮想マシン環境に配置することができる。装置１０００は、現下の仮想マシンがパッチングを必要としていることを示すための報知を受信するよう構成された受信モジュール１０１０と；パッチング済み第一コンテンツを保存するための新規メモリ空間を取得するよう構成された取得モジュール１０２０であって、該新規メモリ空間は、パッチング前の第一コンテンツを保存しているメモリ空間とオーバーラップしないメモリ空間を含む、モジュール１０２０と；新規メモリ空間のアドレスを少なくとも含む第一通知を送信し、現下の仮想マシンが既に第一状態にあることを告知するための第二通知を送信するよう構成された送信モジュール１０３０であって、第一状態は、パッチング済み第一コンテンツのメモリ空間へのロードから、パッチング・オペレーションの完了にいたるまでのいずれかの状態を含む、モジュール１０３０と；新規メモリ空間中のパッチング済み第一コンテンツに拠って、現下の仮想マシン上でパッチング・オペレーションを実施するよう構成されたパッチング・モジュール１０４０と；を含む。上記に換えて、装置１０００は、例えば、パッチ・エージェンシとして実装することも可能で、該パッチ・エージェンシは、例えば仮想マシン中に配置することができる。この実施形態によって提供される技術的ソリューションを使って、複数のパッチング対象仮想マシンが、協働でのオペレーションを実現しメモリを共有して、パッチを繰り返しダウンロードすることおよび過大にメモリを占有することを回避することができる。
【００７５】
本発明の一実施形態において、受信モジュール１０１０は、例えば、第一手段から報知を受信し、送信モジュール１０３０は、例えば、第一通知を第二手段に送信し、第二通知を第三手段に送信するよう構成することができる。第一手段および第三手段の双方は、仮想マシンがパッチング・オペレーションを実施することをスケジュールするためのパッチ・マネージャであり、第二手段は、新規メモリ空間を管理するためのパッチ・コントローラである。方法の実施形態の説明で示したように、パッチ・マネージャおよびパッチ・コントローラは、一緒に配置することも、または、例えば、パッチ・マネージャは物理マシンのオペレーティング・システム中に配置し、一方でパッチ・コントローラはハイパーバイザ中に配置するなど、別々の場所に配置することも可能である。
【００７６】
本発明の一実施形態において、取得モジュール１０２０は、第一コンテンツがメモリ中に存在するのに応じて、パッチング済み第一コンテンツを保存するための新規メモリ空間を取得するよう構成される。パッチング・モジュール１０４０は、新規クライアント・メモリ・ページを取得するよう構成されたクライアント・メモリ・ページ・サブモジュールと；新規クライアント・メモリ・ページを新規メモリ空間にマッピングするよう構成された第一マッピング・サブモジュールと；第一コンテンツを適用することが必要な新規プロセスをパッチング済み第一コンテンツにマッピングするよう構成された第二マッピング・サブモジュールと；を含み、新規プロセスは、新規クライアント・メモリ・ページを新規メモリ空間にマッピングした後に開始されるプロセスを含む。この実施形態によって提供される技術的ソリューションを使って、仮想マシンの間でのメモリ共有に基づいて、動的なパッチングを実現することができる。図１０に示された実施形態に関連して、当業者は、パッチング前のコンテンツにマッピングされたプロセスが仮想マシン上で実行されているかどうかは、当該仮想マシン上のパッチ・エージェンシによって、またはパッチ・マネージャによって判断できることをよく理解していよう。
【００７７】
本発明の一実施形態において、装置１０００は、全ての旧プロセスが終了した後、第一コンテンツに関する項目を削除するよう構成された削除モジュール１０５０をさらに含み、これら旧プロセスは、新規クライアント・メモリ・ページを新規メモリ空間にマッピングする前に、パッチング前の第一コンテンツにマッピングされていたプロセスを含む。
【００７８】
図１２に示されるように、本発明の実施形態は、パッチングのための装置１１００を提供する。装置１１００は、仮想マシン環境中に配置することができる。装置１１００は、現下の仮想マシンがパッチングを必要としていることを示すための報知を受信するよう構成された受信モジュール１１１０と；パッチング済み第一コンテンツを保存するメモリ空間を習得するよう構成された習得モジュール１１２０であって、習得されるメモリ空間は、現下の仮想マシンと同じ物理マシン上に位置する別の仮想マシンに割り当てられているメモリ空間である、モジュール１１２０と；習得されたメモリ空間中のパッチング済み第一コンテンツに拠って、現下の仮想マシン上でパッチング・オペレーションを実施するよう構成されたパッチング・モジュール１１３０と、を含む。あるいは、装置１１００は、例えば、パッチ・エージェンシとして実装することも可能で、このパッチ・エージェンシを、例として仮想マシンに配置することができる。この実施形態によって提供される技術的ソリューションを使って、複数のパッチング対象仮想マシンが、協働でのオペレーションを実現しメモリを共有して、パッチを繰り返しダウンロードすることおよび過大にメモリを占有することを回避することができる。
【００７９】
本発明の一実施形態において、パッチング・モジュール１１３０は、例えば、新規クライアント・メモリ・ページを取得するよう構成されたクライアント・メモリ・ページ・サブモジュールと；新規クライアント・メモリ・ページを習得されたメモリ空間にマッピングするよう構成された第一マッピング・サブモジュールと；第一コンテンツを適用することが必要な新規プロセスをパッチング済み第一コンテンツにマッピングするよう構成された第二マッピング・サブモジュールと；を含み、該新規プロセスは、新規クライアント・メモリ・ページを、習得されたメモリ空間にマッピングした後に開始されるプロセスを含む。
【００８０】
上記の装置の諸実施形態は、相互に参照し、相互に組み合わせてさらなる実施形態を得ることができる。例えば、図１１と図１２とに示された実施形態を組み合わせて、図１３に示されたようなパッチングのための装置１２００を得ることができ、この装置１２００は、例えば、仮想マシン中に配置することが可能である。装置１２００は、現下の仮想マシンが、第一コンテンツのパッチングのため新規メモリ空間を取得する必要があることを示す第一報知を受信し、現下の仮想マシンが、第二コンテンツのパッチングのため既存のメモリ空間を使う必要があることを告知する第二通知を受信するよう構成された受信モジュール１２１０と、第一報知の受信に応じて、パッチング済み第一コンテンツを保存するための新規メモリ空間を取得するよう構成された取得モジュール１２２０であって、該新規メモリ空間は、パッチング前の第一コンテンツが保存されているメモリ空間とオーバーラップしないメモリ空間を含む、モジュール１２２０と；新規メモリ空間のアドレスを少なくとも含む第一通知を送信し、現下の仮想マシンが既に第一状態にあることを示す第二通知を送信するよう構成された送信モジュール１２３０であって、第一状態は、パッチング済み第一コンテンツのメモリ空間へのロードから、パッチング・オペレーションの完了にいたるまでのいずれかの状態を含む、モジュール１２３０と；第二報知の受信に応じて、パッチング済み第一コンテンツを保存するメモリ空間を習得するよう構成された習得モジュール１２４０であって、習得されるメモリ空間は、現下の仮想マシンと同じ物理マシン上に位置する別の仮想マシンに割り当てられているメモリ空間である、モジュール１２４０と；取得モジュール１２２０によって取得されたメモリ空間中の、または習得モジュール１２４０によって習得されたメモリ空間中のパッチング済み第一コンテンツに拠って、現下の仮想マシン上でパッチング・オペレーションを実施するよう構成されたパッチング・モジュール１２５０と；を含む。
【００８１】
前述の装置の諸実施形態の実装の詳細については、対応する方法の実施形態を参照すればよい。
【００８２】
図面のフローチャートおよびブロック図は、本発明のさまざまな実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、およびオペレーションを示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、特定の論理機能（群）を実装するための一つ以上の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表し得る。また、一部の別の実装においては、ブロック中に記載された機能が、図面に記載された順序を外れて行われ得ることに留意すべきである。例えば、連続して示された２つのブロックが、関与する機能によって、実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロック群の組み合わせは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステム、または特殊用途ハードウェアとコンピュータ命令との組み合わせによって実装可能なことにも留意すべきである。
【００８３】
本発明の様々な実施形態の説明は、例示目的で提示されたもので、網羅的であることも、または開示された実施形態に限定することも意図されていない。当業者には、記載された実施形態の範囲および趣旨から逸脱することのない多くの修改および変形が明白であろう。本明細書で用いた用語は、諸実施形態の原理、実際上の応用、または市販の技術と比べた技術的な改良を最善に説明し、あるいは他の当業者が本明細書に開示された諸実施形態を理解できるように選択されたものである。
【図１】
0006351593.tif 000002
【図２】
0006351593.tif 000003
【図３】
0006351593.tif 000004
【図４】
0006351593.tif 000005
【図５】
0006351593.tif 000006
【図６】
0006351593.tif 000007
【図７】
0006351593.tif 000008
【図８】
0006351593.tif 000009
【図９】
0006351593.tif 000010
【図１０】
0006351593.tif 000011
【図１１】
0006351593.tif 000012
【図１２】
0006351593.tif 000013
【図１３】
0006351593.tif 000014