(57)【特許請求の範囲】
【請求項１】
データ処理エンティティ（１００）を、前記データ処理エンティティの大容量メモリ（１３０）上にインストールされたソース・ソフトウェア・イメージ（２０５ｓ）から、外部ソース（２２５）上に格納されたターゲット・ソフトウェア・イメージにマイグレートするための方法（３００）であって、前記ソフトウェア・イメージの各々は複数のメモリ・ブロックを含み、前記メモリ・ブロックの各々は前記ソフトウェア・イメージ内に対応するイメージ・アドレスを有し、前記大容量メモリは、各々が前記メモリ・ブロックを格納するための複数のメモリ位置を含み、前記メモリ位置は前記大容量メモリ内に対応するメモリ・アドレスを有する、方法において、
前記大容量メモリの部分を解放する（３０６）ステップと、
前記ターゲット・ソフトウェア・イメージのブート位置に格納された前記メモリ・ブロックを前記解放された部分内に再配置する（３１０）ステップであって、前記ブート位置は、前記データ処理エンティティをブートして、前記外部ソースから前記ターゲット・ソフトウェア・イメージをダウンロードするように適合されたストリーミング機能（２１５）をロードするのに必要とされる前記メモリ・ブロックを含む、前記ターゲット・ソフトウェア・イメージのブート・ブロックの前記イメージ・アドレスと等しいメモリ・アドレスを有する前記メモリ位置である、ステップと、
前記対応するブート位置に前記ブート・ブロックを格納する（３１４）ステップと、
前記対応するブート位置における前記ブート・ブロックから前記データ処理エンティティをブートし（３１６）、それにより、前記ストリーミング機能をロードするステップと、
前記ストリーミング機能によって、前記ターゲット・ソフトウェア・イメージの選択されたメモリ・ブロックを読み出す各要求を実行する（３３０−３５０）ステップであって、前記ストリーミング機能は、前記大容量メモリにおいて前記選択されたメモリ・ブロックが利用可能でない場合には、前記外部ソースから前記選択されたメモリ・ブロックをダウンロードし（３３６）、かつ、前記解放された部分内に前記選択されたメモリ・ブロックを格納し（３３８−３４６）、又は、他の場合には、前記大容量メモリから前記選択されたメモリ・ブロックを取り出す（３４８）、ステップと、
を含む方法。
【請求項２】
前記ストリーミング機能（２１５）により、前記ターゲット・ソフトウェア・イメージの更に別の選択されたメモリ・ブロックを書き込む各々の要求を実行する（３５２−３６８）ステップであって、前記ストリーミング機能は、前記更に別の選択されたメモリ・ブロックが前記ブート・ブロックの１つである場合には、前記更に別の選択されたメモリ・ブロックを前記対応するブート位置に格納し（３５４−３６８）、又は、他の場合には、前記解放された部分内に格納する、ステップをさらに含む、請求項１に記載の方法（３００）。
【請求項３】
前記方法は、前記データ処理エンティティを前記ブートした（３１６）後に、
前記ソース・ソフトウェア・イメージから構成情報を収集する（３１８−３２６）ステップと、
対応するメモリ・ブロックを前記解放された部分内に格納することにより、前記構成情報を前記ターゲット・ソフトウェア・イメージに適用する（３２８）ステップと、
をさらに含む、請求項項２に記載の方法（３００）。
【請求項４】
前記ソース・ソフトウェア・イメージから前記構成情報を収集する（３１８−３２６）ステップは、
前記ソース・ソフトウェア・イメージの構成メモリ・ブロックの組を取り出す（３２０−３２４）ステップであって、前記構成メモリ・ブロックの各々は、内部に再配置された場合には前記解放された部分から取り出され、又は、他の場合には前記対応するメモリ位置から取り出される、ステップを含む、請求項３に記載の方法（３００）。
【請求項５】
前記方法は、前記マイグレートを前記ターゲット・ソフトウェア・イメージにコミットする要求（３７０）に応答して、
前記ブート・ブロックとは異なる前記ターゲット・ソフトウェア・イメージの前記メモリ・ブロックの全てを、前記対応するイメージ・アドレスと等しい前記メモリ・アドレスを有するメモリ位置にコピーする（３７２−３８６）ステップをさらに含む、請求項４に記載の方法（３００）。
【請求項６】
前記ターゲット・ソフトウェア・イメージの前記メモリ・ブロックの全てをコピーする（３７４−３８６）ステップは、
前記解放された部分において現在のメモリ・ブロックが利用可能でない場合には前記外部ソースから前記現在のメモリ・ブロックをダウンロードし（３７８）、又は、他の場合には前記解放された部分から前記現在のメモリ・ブロックを取り出す（３８２）こと、及び、
前記現在のメモリ・ブロックを、前記対応するイメージ・アドレスと等しい前記メモリ・アドレスを有する前記メモリ位置に格納する（３８４）こと、
によって、前記ターゲット・ソフトウェア・イメージの少なくとも１つの現在のメモリ・ブロックをコピーする（３７４−３８４）ステップを繰り返すことを含む、請求項５に記載の方法（３００）。
【請求項７】
前記ターゲット・ソフトウェア・イメージの前記メモリ・ブロックの全てをコピーする（３７４−３８６）ステップは、
データ処理エンティティの作業負荷を監視する（３７４）ステップを含み、前記ターゲット・ソフトウェア・イメージの前記少なくとも１つの現在のメモリ・ブロックをコピーする（３７４−３８４）ステップは、前記作業負荷が閾値を下回ったときに実施される、請求項６に記載の方法（３００）。
【請求項８】
前記マイグレートを前記ターゲット・ソフトウェア・イメージにコミットする前記要求（３７０）の後、前記ストリーミング機能は、前記大容量メモリにおいて利用可能な前記選択されたメモリ・ブロックを、前記選択されたメモリ・ブロックが内部にコピーされた後で前記対応するイメージ・アドレスと等しい前記メモリ・アドレスを有する前記メモリ位置から、又は、他の場合には前記解放された部分から取り出し（３４８）、かつ、前記更に別の選択されたメモリ・ブロックが内部にコピーされた後で前記対応するイメージ・アドレスと等しい前記メモリ・アドレスを有する前記メモリ位置に、又は、他の場合には前記解放された位置に格納する（３６６）、請求項５に記載の方法（３００）。
【請求項９】
前記ターゲット・ソフトウェア・イメージの前記メモリ・ブロックの全てをコピーした（３７２−３８６）後で、前記ストリーミング機能をディスエーブルにする（３８８）ステップをさらに含む、請求項５から請求項８までのいずれかに記載の方法（３００）。
【請求項１０】
前記ターゲット・ソフトウェア・イメージへのロール・バック要求（３９２）に応答して、
前記再配置されたメモリ・ブロックを前記ターゲット・ソフトウェア・イメージのブート位置に復元する（３９４）ステップと、
前記大容量メモリの前記解放された部分を復元する（３９６）ステップと、
をさらに含む、請求項１から請求項９までのいずれかに記載の方法（３００）。
【請求項１１】
前記大容量メモリの部分を解放する（３０６）ステップは、
前記ソース・ソフトウェア・イメージを縮小する（３０６）ステップを含む、請求項１から請求項１０までのいずれかに記載の方法（３００）。
【請求項１２】
前記解放された部分（２３０）は、前記ターゲット・ソフトウェア・イメージ（２２５）の前記メモリ・ブロックの全てを格納するのに十分なサイズを有し、前記選択されたメモリ・ブロックを格納する（３３８−３４６）ステップ及び前記更に別の選択されたメモリ・ブロックを格納する（３５４−３６８）ステップは、
前記選択されたメモリ・ブロック又は前記更に別の選択されたメモリ・ブロックを、前記対応するイメージ・アドレスに前記大容量メモリ内の前記解放された部分のオフセットを加えたものに等しい前記メモリ・アドレスを有する、前記解放された部分のメモリ位置に格納することを含む、請求項２または８のいずれかに記載の方法（３００）。
【請求項１３】
前記解放された部分（２３０）は、前記ターゲット・ソフトウェア・イメージの前記メモリ・ブロックの部分のみを格納するのに十分なサイズを有し、前記選択されたメモリ・ブロックを格納する（３３８−３４６）ステップ及び前記更に別の選択されたメモリ・ブロックを格納する（３５４−３６８）ステップは、
前記選択されたメモリ・ブロック又は前記更に別の選択されたメモリ・ブロックを格納するために、前記解放された部分において利用可能な空きメモリ位置を探す（３４０；３６０）ステップと、
前記空きメモリ位置が見つからなかった場合、前記解放された部分の選択されたメモリ位置を削除することによって、前記空きメモリ位置を作成する（３４４；３６４）ステップであって、前記選択されたメモリ位置は、前記ダウンロード後に書き込まれないメモリ・ブロックを格納する前記解放された部分の前記メモリ位置の中で選択される、ステップと、
前記空きメモリ位置に、前記選択されたメモリ・ブロック又は前記更に別の選択されたメモリ・ブロックを格納する（３４６；３６６）ステップと、
を含む、請求項２、８または１２のいずれかに記載の方法（３００）。
【請求項１４】
コンピュータ・プログラムがデータ処理システム（１００）上で実行されるときに、データ処理システムに、請求項１から請求項１３までのいずれかに記載の方法（３００）のステップを実施させるためのコードを含むコンピュータ・プログラム（２００）。
【請求項１５】
請求項１から請求項１３までのいずれかに記載の方法（３００）のステップを実施するための手段（２００）を含むシステム（１００）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の１つ又は複数の実施形態による解決法は、データ処理分野に関する。より具体的には、この解決法は、ソフトウェア・イメージのマイグレーションに関する。
【背景技術】
【０００２】
ソフトウェア・イメージのマイグレーションは、現代のデータ処理システムにおいて一般的な活動であり、概して言えば、ソフトウェア・イメージとは、コンピュータの大容量メモリ（mass memory）上にインストールされたソフトウェア・モジュール（例えば、そのオペレーティング・システム、アプリケーション・プログラム、及び／又はデータ）を含む構造である。例えば、典型的なシナリオは、コンピュータをリフレッシュして、そのオペレーティング・システムを新しいバージョンにアップグレードすることである。
【０００３】
コンピュータ上に現在インストールされているオペレーティング・システム（ソース・オペレーティング・システムと呼ばれる）から、別のオペレーティング・システム（ターゲット・オペレーティング・システムと呼ばれる）への移行を目的とする標準的なマイグレーション手順は、一般に、以下のステップを要する。最初に、コンピュータのスナップショットを取り、これを外部デバイス（例えば、取り外し可能ディスク又は遠隔サーバ）に格納する。次いで、マイグレーション・ツールを実行して、コンピュータの構成情報を収集する（この構成情報もまた、外部デバイスに格納される）。この時点で、ターゲット・オペレーティング・システムをコンピュータ上にインストールすることが可能になる。次いで、マイグレーション・ツールを再び実行し、格納された構成情報をターゲット・オペレーティング・システムに適用する。ターゲット・オペレーティング・システムにおいて何らか問題に直面した場合には（例えば、コンピュータの誤操作）、ソース・オペレーティング・システムのスナップショットをコンピュータ上に復元して、その元の状態に戻す。
【０００４】
しかしながら、上述したマイグレーションの手順には、幾つかの欠点がある。
【０００５】
具体的には、マイグレーション手順は、非常に低速である。実際は、ターゲット・オペレーティング・システムのインストールには（３０−６０分のオーダーの）長い時間がかかり、この間、コンピュータは完全に利用不能となる。さらに、ソース・オペレーティング・システムの復元もまた、必要な場合には長い時間がかかる（その間、同様にコンピュータは利用不能となる）。ソース・オペレーティング・システムのスナップショットを取るためにさらなる時間も費やされ、この操作は、常に、ターゲット・オペレーティング・システムをインストールする前に実施しなければならない（問題が起こった場合にソース・オペレーティング・システムを復元できるようにするため）。
【０００６】
マイグレーション手順はまた、ソース・オペレーティング・システムを格納するために（外部デバイス上に）大規模なストレージ空間も必要とし、構成情報を格納するために更なるストレージ空間が必要である。
【０００７】
加えて、ひとたびターゲット・オペレーティング・システムがコンピュータ上にインストールされると、マイグレーション・ツールにより収集されなかった（例えば、忘れられたため）いずれの構成情報も失われる。従って、もはやこの構成情報を復旧することができない。実際は、その構成情報にアクセスする唯一の可能性は、ソース・オペレーティング・システムのスナップショットを復元することであるが、この作業には非常に時間がかかるため、実際には、ほとんど実施されていない。逆に、このようなことが起こった場合、無くなった構成情報を手作業で適用しようと試みるのが一般的な方法である。しかしながら、この作業では間違い及び／又は見落としが非常に起こりやすい。
【０００８】
特許文献１は、代わりに、イン・プレース型（in-place）マイグレーション・プロセスを記載する。この目的のために、構成情報を保存するのに必要とされるストレージ空間を推定し、構成情報を格納するのに十分になるように、コンピュータのハード・ディスク内に空きストレージ空間を作成する。次いで、ターゲット・ソフトウェア・イメージをコンピュータ上にインストールする（例えば、ブート可能なＣＤ又はネットワーク・ブート・イメージを用いて）。この時点で、構成情報を、空きストレージ空間からターゲット・ソフトウェア・イメージに復元することが可能である。
【０００９】
このことにより、例えばネットワーク・サーバ上に構成情報を格納する必要をなくすことが可能になり、このようにして、マイグレーション・プロセスを、複数のコンピュータ上で並行して進行させることができる。さらに、構成情報のマイグレーションは、ネットワーク接続なしでも実施することができる。しかしながら、本文書に説明される方法には、上記で指摘した他の全ての欠点がある。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】米国特許ＵＳ−Ｂ−６，９２０，５５５号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１１】
データ処理エンティティを、データ処理エンティティの大容量メモリ上にインストールされたソース・ソフトウェア・イメージから、外部ソース上に格納されたターゲット・ソフトウェア・イメージにマイグレートするための方法を提供する。
【課題を解決するための手段】
【００１２】
大まかに言えば、本発明の１つ又は複数の実施形態による解決法は、マイグレーション・プロセスの際に大容量メモリの元のコンテンツを保持するという考えに基づいている。
【００１３】
特定的には、本発明の特定の実施形態による解決法の１つ又は複数の態様は独立請求項において示されており、同じ解決法の有利な特徴が従属請求項に示されており、その表現は、本明細書において一語一句たがわず引用により組み込まれる（本発明の実施形態による解決法の特定の態様を参照して提供されるあらゆる有利な特徴は、そのあらゆる他の態様に準用して適用される）。
【００１４】
より具体的には、本発明の実施形態による解決法の一態様は、データ処理エンティティ（例えば、コンピュータなど）を、データ処理エンティティの大容量メモリ（mass memory）上にインストールされたソース・ソフトウェア・イメージから、外部ソース（例えば、遠隔イメージ・リポジトリ）上に格納されたターゲット・ソフトウェア・イメージにマイグレートするための方法を提供する。各々のソフトウェア・イメージは複数のメモリ・ブロックを含み、各々のメモリ・ブロックは、ソフトウェア・イメージ内に対応するイメージ・アドレスを有する。大容量メモリは、各々がメモリ・ブロックを格納するための複数のメモリ位置を含み、メモリ位置は、大容量メモリ内に対応するメモリ・アドレスを有する。本方法は、以下のステップを含む。大容量メモリの部分を解放する（例えば、ソース・ソフトウェア・イメージを縮小することによって）。ターゲット・ソフトウェア・イメージのブート位置に格納されたメモリ・ブロックを解放された部分内に再配置し、ブート位置は、データ処理エンティティをブートして、（外部ソースからターゲット・ソフトウェア・イメージをダウンロードするように適合された）ストリーミング機能をロードするために必要とされるメモリ・ブロックを含む、ターゲット・ソフトウェア・イメージのブート・ブロックのイメージ・アドレスと等しいメモリ・アドレスを有するメモリ位置である。ブート・ブロックが、対応するブート位置に格納される。データ処理エンティティは、対応するブート位置におけるブート・ブロックからブートされる（それにより、ストリーミング機能がロードされる）。ストリーミング機能によって、ターゲット・ソフトウェア・イメージの選択されたメモリ・ブロックを読み出す各要求を実行し、ストリーミング機能は、大容量メモリにおいて選択されたメモリ・ブロックが利用可能でない場合には、外部ソースから選択されたメモリ・ブロックをダウンロードし、かつ、解放された部分内に選択されたメモリ・ブロックを格納し、又は、他の場合には、大容量メモリから選択されたメモリ・ブロックを取り出す。
【００１５】
本発明の実施形態による解決法の更に別の態様は、コンピュータ・プログラムがデータ処理システム上で実行されるときに、データ処理システムに、本方法のステップを実施させるためのコード手段を含む、コンピュータ・プログラムを提供し、本発明の実施形態による解決法の更に別の態様は、コンピュータ・プログラムを具体化する、非一時的コンピュータ可読媒体を含む、コンピュータ・プログラム製品を提供し、このコンピュータ・プログラムは、データ処理システムの作業メモリ内に直接ロード可能なコード手段を含むことにより、本方法を実施するようにデータ処理システムを構成する。
【００１６】
本発明の実施形態による解決法の別の態様は、上述の方法のステップを実施するための手段を含むシステムを提供する。
【００１７】
本発明の１つ又は複数の実施形態による解決法、並びにその更なる特徴及び利点は、添付図面と共に読まれるべき、純粋に非制限的な表示によって与えられる、以下の詳細な説明を参照することによって最も良く理解されるであろう（ここでは、簡単にするために、対応する要素は同一又は類似の参照記号により示され、その説明は繰り返されず、さらに各エンティティの名前はそのタイプ及び属性の両方、例えば、その値、コンテンツ及び表現などを示すために一般的に用いられる）。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態による解決法が適用可能なコンピュータの概略的なブロック図を示す。
【図２】本発明の実施形態による解決法の例示的な適用の一般的な概要を表す協調図を示す。
【図３】本発明の実施形態による解決法の例示的な適用の一般的な概要を表す協調図を示す。
【図４】本発明の実施形態による解決法の例示的な適用の一般的な概要を表す協調図を示す。
【図５】本発明の実施形態による解決法の例示的な適用の一般的な概要を表す協調図を示す。
【図６】本発明の実施形態による解決法の例示的な適用の一般的な概要を表す協調図を示す。
【図７】本発明の実施形態による解決法の例示的な適用の一般的な概要を表す協調図を示す。
【図８】本発明の実施形態による解決法の例示的な適用の一般的な概要を表す協調図を示す。
【図９】本発明の実施形態によるマイグレーション・プロセスに関連するアクティビティの流れを説明するアクティビティ図を示す。
【図１０】本発明の実施形態によるマイグレーション・プロセスに関連するアクティビティの流れを説明するアクティビティ図を示す。
【図１１】本発明の実施形態によるマイグレーション・プロセスに関連するアクティビティの流れを説明するアクティビティ図を示す。
【図１２】本発明の実施形態による準備プロセスを実施するのに用いることができる主要ソフトウェア・コンポーネントの役割を表す協調図を示す。
【発明を実施するための形態】
【００１９】
特に図１を参照すると、本発明の実施形態による解決法が適用可能な、コンピュータ１００の概略的なブロック図が示される。コンピュータ１００（例えば、ＰＣ）は、システム・バス１０５に並列接続された幾つかのユニットにより形成される。詳細には、１つ又は複数のマイクロプロセッサ（μＰ）１１０はコンピュータ１００の動作を制御し、ＲＡＭ１１５は、マイクロプロセッサ１１０によって作業メモリとして用いられ、ＲＯＭ１２０は、コンピュータ１００の基本コードを格納する。ローカル・バス１２５の周りに（それぞれのインターフェースによって）幾つかの周辺ユニットが集まっている。特定的には、大容量メモリは、１つ又は複数のハード・ディスク１３０と、光ディスク１４０（例えば、ＤＶＤ又はＣＤ）を読み出すためのドライブ１３５とを含む。さらに、コンピュータ１００は、入力ユニット１４５（例えば、キーボード及びマウスなど）と、出力ユニット１５０（例えば、モニタ及びプリンタなど）とを含む。アダプタ１５５は、コンピュータ１００をネットワーク（図には示されない）と接続するために用いられる。ブリッジ・ユニット１６０は、システム・バス１０５をローカル・バス１２５とインターフェース接続する。各マイクロプロセッサ１１０及びブリッジ・ユニット１６０は、情報を伝送するためにシステム・バス１０５へのアクセスを要求するマスター・エージェントとして機能することができる。仲裁手段（arbiter）１６５が、システム・バス１０５に対する相互排除（mutual exclusion）によりアクセスの許可を管理する。
【００２０】
本発明の実施形態による解決法は、コンピュータ１００上にインストールされたソフトウェア・イメージをマイグレートするために用いられる（例えば、そのオペレーティング・システムを新しいバージョンにアップグレードするために）。一般に、各々のソフトウェア・イメージは、１つ又は複数のソフトウェア・モジュール（例えば、オペレーティング・システム、アプリケーション・プログラム、及び／又はデータ）を含み、ソフトウェア・イメージは、ソフトウェア・イメージ内の対応するアドレス（イメージ・アドレスと呼ばれる）を有するメモリ・ブロック（例えば、各々が１−１０ＭＢの）の組により形成される。
【００２１】
より具体的には、本発明の実施形態による解決法の例示的なアプリケーションの一般的な概要を表す協調図が、図２−図８に示される。協調図は、関与する主要ソフトウェア・コンポーネントの役割を示し、特定的には、（その全体が参照記号２００によって示される）その静的構造及び（記号「Ａ」で始まる連続的なシーケンス番号によって示される、各々が対応する動作を表す一連の交換メッセージによって）動的挙動を示すものである。
【００２２】
図２から始めると、ソース・ソフトウェア・イメージ２０５ｓがハード・ディスク１３０上にインストールされ、ソース・ソフトウェア・イメージ２０５ｓは、図示されないハード・ディスク１３０の１つ又は複数の論理パーティション（例えば、１次ブート可能パーティション及び可能な付加的パーティション）を含む。ハード・ディスク１３０は、各々がメモリ・ブロックを格納するための、ハード・ディスク１３０内に（メモリ・アドレスと呼ばれる）対応するアドレスを有するメモリ位置の組に編成される。ソース・ソフトウェア・イメージ２０５ｓは、ソース・オペレーティング・システム２１０ｓと、配置（deployment）エージェント２１５（以下に説明される）とを含み、これらは、少なくとも部分的に作業メモリ１１５内にロードされる。
【００２３】
コンピュータ１００のユーザ２２０は、コンピュータ１００を、例えば遠隔イメージ・リポジトリなどの外部ソース上で利用可能なターゲット・ソフトウェア・イメージ２２５にマイグレートする要求を配置エージェント２１５に提出する（動作「Ａ１：マイグレート」）。これに応答して、配置エージェント２１５は、例えばソース・オペレーティング・システム２１０ｓの組み込み関数を利用することにより、ソース・ソフトウェア・イメージ２０５ｓを縮小する（動作「Ａ２：縮小」）。
【００２４】
その結果、図３に示されるように、ハード・ディスク１３０の部分２３０が解放される。この時点で、配置エージェント２１５は、（ブート・アドレスと呼ばれる、対応するイメージ・アドレスによって識別される）ターゲット・ソフトウェア・イメージ２２５のブート・ブロックの組をダウンロードし、ターゲット・ソフトウェア・イメージ２２５のブート・ブロックは、以下に述べられる、配置エージェントのストリーミング・ドライバをロードしようとして、ターゲット・ソフトウェア・イメージ２２５のブート・シーケンスを始動させるのに必要とされるメモリ・ブロックを含む（動作「Ａ３：ダウンロード」）。次いで、配置エージェント２１５は、（ターゲット・ソフトウェア・イメージ２２５のブート・アドレスと等しいメモリ・アドレスを有する）ターゲット・ソフトウェア・イメージ２２５のブート位置に格納される、ソース・ソフトウェア・イメージ２０５ｓのメモリ・ブロックを、再配置されたメモリ位置２３５ｓと呼ばれる、解放された部分２３０の対応するメモリ位置に再配置する（動作「Ａ４：再配置」）。ここで、配置エージェント２１５は、暗灰色で識別され、かつ、参照記号２４０ｔで示されるターゲット・ソフトウェア・イメージ２２５のブート・ブロックを、そのブート位置に格納することができる。このように、ハード・ディスク１３０において、ブート・ブロック２４０ｔは、ターゲット・ソフトウェア・イメージ２２５のブート・シーケンスの際に見出されることが期待されるまさにその場所に配置される。それにも関わらず、オーバーライドされる対応するメモリ・ブロックは再配置されたメモリ位置２３５ｓ内に保存されているため、このことはソース・ソフトウェア・イメージ２０５ｓにおけるいかなる情報の損失ももたらさない。（動作「Ａ５：格納」）。この時点で、配置エージェント２１５は、コンピュータ１００の電源をオフにしてからオンにし、コンピュータ１００を、そのブート位置におけるターゲット・ソフトウェア・イメージ２２５のブート・ブロック２４０ｔから再ブートする（動作「Ａ６：再ブート」）。
【００２５】
従って、図４に示されるように、そのブート・ブロック２４０ｔに対応する、ターゲット・ソフトウェア・イメージ２２５のターゲット・オペレーティング・システム２１０ｔの部分、及び、配置エージェント２１５のストリーミング・ドライバが、作業メモリ１１５内にロードされる。次いで、配置エージェント２１５は、ソース・ソフトウェア・イメージ２０５ｓのユーザの構成を、コンピュータ１００上にインストールされているターゲット・ソフトウェア・イメージ２２５に転送し、例えば、ソース・ソフトウェア・イメージ２０５ｓの構成情報を、（ターゲット・オペレーティング・システム２１０ｔ内にマウントされた）ハード・ディスク１３０から収集し、次いで、ターゲット・ソフトウェア・イメージ２２５のローカル・バージョンに適用する、即ち、対応するメモリ・ブロックにおいて、解放された部分２３０に書き込む（動作「Ａ７：転送」）。ここで、コ（ターゲット・ソフトウェア・イメージ２２５のローカル・バージョンを実行する）ンピュータ１００は、ストリーミング・ドライバによるストリーミングの際に提供されたターゲット・ソフトウェア・イメージ２２５のあらゆるメモリ・ブロックと共に、正常に使用することができ、この目的のために、以下に詳細に説明されるように、ストリーミング・ドライバは、メモリ・ブロックを、利用可能な場合はハード・ディスク１３０から取り出すこと、又は、他の場合には外部ソースからダウンロードする（同時に、これを解放された部分２３０に格納する）ことにより読み出し、いずれの場合にも、メモリ・ブロックを解放された部分２３０に格納することにより、これに書き込む。次いで、ユーザ２２０は、コンピュータ１００が正しく動作するかどうかを検証するために、ターゲット・ソフトウェア・イメージ２２５のローカル・バージョンによりコンピュータ１００を広範にテストすることができる（動作「Ａ８：ストリーミング」）。
【００２６】
ここで図５を参照すると、ユーザ２２０がターゲット・ソフトウェア・イメージ２２５のローカル・バージョンによるコンピュータ１００の動作に満足すると、ユーザ２２０は、対応する要求を配置エージェント２１５に提出することにより、マイグレーションをコミットする（動作「Ａ９：コミット」）。これに応答して、配置エージェント２１５は、（利用可能な場合は解放された部分２３０から、又は、他の場合には外部ソースから）ターゲット・ソフトウェア・イメージ２２５のローカル・バージョンの全てのメモリ・ブロックを、対応するイメージ・アドレスと等しいメモリ・アドレスを有する、ハード・ディスク１３０内の実際のメモリ位置にコピーする（動作「Ａ１０：コピー」）。
【００２７】
従って、図６に示されるように、ここで、（参照記号２０５ｔで示される）ターゲット・ソフトウェア・イメージのローカル・バージョンが、ソース・ソフトウェア・イメージをオーバーライドすることにより、ハード・ディスク１３０上に完全にインストールされる。ここで、コンピュータ１００は、ターゲット・ソフトウェア・イメージ２０５ｔから再ブートし、正常に動作することができる（動作「Ａ１１：再ブート」）。
【００２８】
逆に、図７に示されるように、ユーザが、ターゲット・ソフトウェア・イメージ２２５のローカル・バージョンによるコンピュータ１００の動作に満足しない場合、ユーザは、対応する要求を配置エージェント２１５に提出することにより、ソース・ソフトウェア・イメージ２０５ｓにロール・バックすることができる（動作「Ａ１２：ロール・バック」）。これに応答して、配置エージェント２１５は、再配置された位置２３５ｓから、ソース・ソフトウェア・イメージ２０５ｓのメモリ・ブロックをターゲット・ソフトウェア・イメージ２２５のブート位置に復元する（動作「Ａ１３：復元」）。次いで、配置エージェント２１５は、ソース・ソフトウェア・イメージ２０５ｓを拡大して、その元のサイズに復元し、これにより、解放された部分２３０に格納されたターゲット・ソフトウェア・イメージ２２５のメモリ・ブロックをオーバーライドする（動作「Ａ１４：拡大」）。この時点で、配置エージェント２１５は、コンピュータ１００の電源をオフにしてからオンにする。
【００２９】
従って、図８に示されるように、コンピュータ１００はソース・ソフトウェア・イメージ２０５ｓから再ブートし、これにより、再びソース・オペレーティング・システム２１０ｓをロードする（動作「Ａ１５：再ブート」）。
【００３０】
上述した解決法により、コンピュータは、非常に短時間のうちに、即ち、ブート・ブロックがハード・ディスク内に格納された直後に（例えば、１０−２００メガバイトの典型的なサイズのブート・ブロックについては１−２分後）、ターゲット・ソフトウェア・イメージと共に使用可能状態になり、その後、ハード・ディスクにおけるターゲット・ソフトウェア・イメージの他のメモリ・ブロックが利用可能かどうかに関係なく、コンピュータの動作は完全に正常であり（通常通りハード・ディスクから直接ブートされる）、依然として外部ソースからダウンロードされるメモリ・ブロックにコンピュータがアクセスする際、コンピュータの性能が僅かに低下するだけである（性能の低下は、一度メモリ・ブロックにアクセスできると、ますます多くのメモリ・ブロックが既にハード・ディスク上で利用可能であるため、時間の経過と共に低減する）。さらに、コンピュータを使用可能状態にするのに必要とされる時間は、ターゲット・ソフトウェア・イメージのサイズに依存しない。
【００３１】
このマイグレーション手順は、いずれの付加的なストレージ空間も必要としない。実際は、ソース・ソフトウェア・イメージは、ハード・ディスク上に留まるので、ターゲット・ソフトウェア・イメージへの適用のために、その構成情報を直接ハード・ディスクから収集することができる。
【００３２】
さらに、ソース・ソフトウェア・イメージは、ユーザがターゲット・ソフトウェア・イメージへのマイグレーションのコミットを決定するまで、そのままの形で保持される。従って、ターゲット・ソフトウェア・イメージは、依然として、ソース・ソフトウェア・イメージの構成情報にアクセス可能である（マイグレーションがコミットされるまで）。このように、（開始時に忘れられていた場合でも）ターゲット・ソフトウェア・イメージを用いたコンピュータのテストの際のいずれかの時点で、何らかの構成情報を（ソース・ソフトウェア・イメージから）収集し、（ターゲット・ソフトウェア・イメージに）適用することが可能であり、これにより、マイグレーション・プロセスの際に何らかの構成情報が失われるリスクが回避されるか又は少なくとも実質的に低減される。
【００３３】
上述した解決法はまた、ソース・オペレーティング・システムが依然としてハード・ディスク上で利用可能であるため、（必要な場合に）ソース・オペレーティング・システムを非常に短時間で復元することを可能にし、実際に、この操作は、（ターゲット・ソフトウェア・イメージのブート・ブロックを格納するために）再配置されたソース・ソフトウェア・イメージのメモリ・ブロックを復元することしか必要としない。さらに、この解決法は、問題が起こった場合に復元するために、前もってソース・ソフトウェア・イメージの何らかのスナップショットを取っておく必要がない（これに対応して、時間が節約される）。
【００３４】
ここで図９−図１１を参照すると、マイグレーション・プロセスが方法３００により表される、本発明の実施形態によるマイグレーション・プロセスに関連するアクティビティの流れを説明するアクティビティ図が示される。
【００３５】
方法３００は、開始黒丸３０２で開始し、次いで、ユーザが、コンピュータをターゲット・ソフトウェア・イメージにマイグレートする要求を（配置エージェントに）提出するとすぐに、ブロック３０４に移る。これに応答して、ブロック３０６において、配置エージェントは、ソース・ソフトウェア・イメージを縮小し、ハード・ディスクの部分を解放し、例えば、この結果は、まだいずれのファイルにも割り当てられていない未使用のストレージ空間を復旧することにより、又は、一時ファイルを削除することにより、（ソース・オペレーティング・システムの組み込み関数を用いて）達成することができる。ブロック３０８に進むと、配置エージェントは、（ターゲット・ソフトウェア・イメージと関連して内部に指定されたように）外部ソースから、ターゲット・ソフトウェア・イメージのブート・ブロックをダウンロードする。例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓにおいて、ブート・ブロックは、（ストリーミング・ドライバに加えて）マスター・ブート記録（Master Boot Record、ＭＢＲ）と、ブート・セクタと、ｂｏｏｔｍｇｒ．ｅｘｅファイルと、ｂｏｏｔ＼ｂｃｄファイルと、システム・レジストリと、ｗｉｎｌｏａｄ．ｅｘｅファイルと、システム・レジストリにおいて指定されるドライバ・ファイルとを含む。この目的のために、ターゲット・ソフトウェア・イメージが遠隔サーバのイメージ・リポジトリ内に格納されている場合、配置エージェントは、Ｉｎｔｅｒｎｅｔ  Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ｉＳＣＳＩ）プロトコルなどに基づいて、遠隔サーバの遠隔アクセス・サーバと対話する遠隔アクセス・イニシエータとして働くことができる。
【００３６】
ここでブロック３１０を参照すると、配置エージェントは、ターゲット・ソフトウェア・イメージのブート位置に格納されたソース・ソフトウェア・イメージのメモリ・ブロックを、解放された部分内に再配置する。特定的には、ターゲット・ソフトウェア・イメージのブート位置に格納されたメモリ・ブロックを連続的に読み出し、解放された部分の最初のメモリ位置に、同じ順序でコピーする。
【００３７】
引き続きブロック３１２に進むと、配置エージェントは、ストリーミング・ドライバのための制御構造で、解放された部分を初期化する。この目的のために、配置エージェントはブロック・マップを作成し、このブロック・マップは、ターゲット・ソフトウェア・イメージの各メモリ・ブロックを、それが格納されるハード・ディスクにおけるメモリ位置（最初に、ターゲット・ソフトウェア・イメージのメモリ・ブロックがハード・ディスクにおいて利用可能でないことを示す）と関連付けるために用いられる。特定的には、解放された部分（より正確には、メモリ位置及び制御構造の再配置後の有用な部分）が、ターゲット・ソフトウェア・イメージ全体を格納できるサイズを有する場合、これは、ターゲット・ソフトウェア・イメージのためのローカル・リポジトリとして機能することができる。この場合、ブロック・マップはビットマップとすることができ、ビットマップは、ターゲット・ソフトウェア・イメージの各イメージ・アドレスについてのエントリを有し、このエントリは、対応するメモリ・ブロックが、解放された部分内の同じ位置（即ち、イメージ・アドレスに、ハード・ディスク内の解放された部分の有用な部分のオフセットを加えたものと等しいメモリ・アドレスを有するメモリ位置）に格納されているかどうかを示す可用性フラグを含み、最初に、全ての可用性フラグは、（対応するメモリ・ブロックが解放された部分内に格納されていないことを示すように）デアサートされている。逆に、解放された部分が、ソフトウェア・イメージ全体を格納することができないサイズを有する場合、これは、ターゲット・ソフトウェア・イメージのためのローカル・キャッシュとして機能することができる。この場合、ブロック・マップは、ルックアップ・テーブルとすることができ、このルックアップ・テーブルは、解放された部分の有用な部分の各メモリ位置のメモリ・アドレスについてのエントリを有し、このエントリは、内部に格納されたターゲット・ソフトウェア・イメージのメモリ・ブロックのイメージ・アドレスと、メモリ・ブロックが（外部ソースにおける元のバージョンに対して）更新されたかどうかを示す更新フラグとを含み、最初に、ルックアップ・テーブルの全てのエントリは、（解放された部分内にメモリ・ブロックが格納されていないことを示すための）ヌル（null）値と等しいイメージ・アドレスを有する。さらに、配置エージェントは、ターゲット・ソフトウェア・イメージのブート・アドレスを指定する、ブート・リストを作成する。配置エージェントはまた、以下に説明されるような（最初はゼロに設定されている）コピー・カウンタも作成し、このコピー・カウンタは、マイグレーションがコミットされた後にハード・ディスク内の正しい位置にコピーされたターゲット・ソフトウェア・イメージの最後のメモリ・ブロックのイメージ・アドレスを指定する。ここでブロック３１４に移ると、配置エージェントは、ターゲット・ソフトウェア・イメージのブート・ブロックを、そのブート位置に格納する（ブート・リスト内に示されるように）。
【００３８】
ブロック３１６において、配置エージェントはコンピュータの電源をオフにしてからオンにし、コンピュータが、そのブート位置におけるターゲット・ソフトウェア・イメージのブート・ブロックから再ブートするようにする。実際に、電源オンのときに実行される、コンピュータのファームウェア内に格納されるブート・ローダ、例えば基本入力／出力システム（Basic Input/Output System、ＢＩＯＳ）などが、ハード・ディスクをブート可能なデバイスとして識別し、従って、ＢＩＯＳはＭＢＲをロードし、ＭＢＲはブート・セクタをロードし、ブート・セクタはｂｏｏｔｍｇｒ．ｅｘｅファイルを見つけて始動し、ｂｏｏｔｍｇｒ．ｅｘｅファイルはｂｏｏｔ＼ｂｃｄを見つけて読み出し、システム・レジストリ、ｗｉｎｌｏａｄ．ｅｘｅファイル、及びシステム・レジスタにおいて指定されたドライバ・ファイルのメモリ位置を判断し、次にこれらをロードし、次いで、ｗｉｎｌｏａｄ．ｅｘｅファイルは、配置エージェントのストリーミング・ドライバを始動し、（以下に説明されるように、ターゲット・ソフトウェア・イメージのいずれかのメモリ・ブロックにアクセスするあらゆる要求に応えるために）ターゲット・オペレーティング・システムの標準的なファイル・システム・ドライバをオーバーライドする。引き続きブロック３１８に進むと、配置エージェントは、（ハード・ディスクにアクセスし、次いでソース・ソフトウェア・イメージにアクセスするのを可能にするように）ターゲット・オペレーティング・システムからコンピュータ上にハード・ディスクをマウントする。
【００３９】
この時点で、配置エージェントは、ソース・ソフトウェア・イメージのユーザの構成をターゲット・ソフトウェア・イメージに転送し、例えば、ソース・ソフトウェア・イメージのユーザの構成は、設定（オペレーティング・システム又はアプリケーション・プログラムの外観及び挙動に関するものなど）、及び／又はデータ（周辺ドライバ、クッキー、及びアドレス帳など）を含む。この目的のために、ブロック３２０において、配置エージェントは、適切なマイグレーション・ツール、例えばＷｉｎｄｏｗｓにおけるＵｓｅｒＳｔａｔｅ  Ｍｉｇｒａｔｉｏｎ  Ｔｏｏｌ（ＵＳＭＴ）のＳｃａｎＳｔａｔｅ．ｅｘｅプログラムを実行することにより、ソース・ソフトウェア・イメージの構成情報を収集する。この場合、対応するイメージ・アドレスにおいてソース・ソフトウェア・イメージのメモリ・ブロック（それぞれ、構成メモリ・ブロック及び構成イメージ・アドレスと呼ばれる）を読み出す（マイグレーション・ツールによる）各要求について、ブロック３２２において、ストリーミング・ドライバは、構成メモリ・ブロックが解放された部分内に再配置されているかどうかを検証する（即ち、構成イメージ・アドレスが、そのブート・リスト内に示される、ターゲット・ソフトウェア・イメージのブート・アドレスの１つと等しい場合）。再配置されている場合、ブロック３２４において、ストリーミング・ドライバは、対応する再配置されたメモリ位置を指し示すように、構成イメージ・アドレスを更新する。次いで、方法３００は、ブロック３２６に下り、構成メモリ位置が再配置されていない場合には、ブロック３２２からも直接同じ時点に到達する。この時点で、ストリーミング・ドライバは、（更新された可能性がある）構成イメージ・アドレスと等しいメモリ・アドレスを有するメモリ位置から、構成メモリ・ブロックを取り出す。引き続きブロック３２８に進むと、ストリーミング・ドライバは、（問題となっている例におけるＵＳＭＴのＬｏａｄＳｔａｔｅ．ｅｘｅプログラムを実行することにより）収集した構成情報をターゲット・ソフトウェア・イメージに適用し、この目的のために、ストリーミング・ドライバは、ターゲット・ソフトウェア・イメージの対応するメモリ・ブロックをハード・ディスク内に書き込む（以下に説明されるように）。
【００４０】
ここで、（ターゲット・ソフトウェア・イメージを実行して）コンピュータ１００を正常に使用することができる。特定的には、方法３００は、（対応する選択されたイメージ・アドレスにおける）ターゲット・ソフトウェア・イメージの選択されたメモリ・ブロックを読み出す要求が（例えば、アプリケーション・プログラムから）ターゲット・オペレーティング・システムに提出されるとすぐに、ブロック３３０に下る。読み出し要求は、選択されたメモリ・ブロックがハード・ディスク上で既に利用可能になっているかどうかを検証するブロック３３２において、ストリーミング・ドライバに渡される。この目的のために、ストリーミング・ドライバは、最初に、選択されたイメージ・アドレスを（ブート・リスト内に示されるような）ターゲット・ソフトウェア・イメージのブート・アドレスと比較して、選択されたメモリ・ブロックがブート・ブロックであるかどうか、そして、常に対応するブート位置に格納されているかどうかを判断する。ブート・ブロックでない場合、ストリーミング・ドライバは、選択されたイメージ・アドレスをコピー・カウンタと比較して、選択されたイメージ・アドレスがコピー・カウンタと等しいか又はこれを上回るかどうかを判断し、次に、選択されたメモリ・ブロックが既にハード・ディスク内の正しい位置にコピーされている（以下に説明されるように、マイグレーションがコミットされた後で）。逆に、異なる操作が、解放された部分の動作モードに従って実施される。特定的には、解放された部分がローカル・リポジトリとして動作する場合、ストリーミング・ドライバは、ビットマップ内の対応する可用性フラグを取り出し、選択されたメモリ・ブロックが解放された部分内に格納されているか又は格納されていないかを判断し（それぞれ、可用性フラグがアサートされる場合又はデアサートされる場合）、一方、解放された部分がローカル・キャッシュとして動作する場合は、ストリーミング・ドライバは、ルックアップ・テーブルにおいて選択されたイメージ・アドレスを探し、選択されたメモリ・ブロックが解放された部分内に格納されているか又は格納されていないかを判断する（それぞれ、選択されたイメージ・アドレスが見つかった場合又は見つからない場合）。次いで、アクティビティの流れは、検証の結果に従ってブロック３３４で分岐する。
【００４１】
選択されたメモリ・ブロックがハード・ディスクにおいて利用可能でない場合、ブロック３３６において、ストリーミング・ドライバは、選択されたメモリ・ブロックを外部ソースからダウンロードする。方法３００は、ここで、解放された部分の動作モードに従って、代替的に実行される２つの分岐に分かれる。特定的には、解放された部分がローカル・リポジトリとして動作する場合、ブロック３３８において、ストリーミング・ドライバは、選択されたメモリ・ブロックを、解放された部分の対応するメモリ位置（選択されたイメージ・アドレスにそのオフセットを加えたものに等しいメモリ・アドレスを有する）に格納し、同時に、ビットマップにおける対応する可用性フラグがアサートされる（選択されたメモリ・ブロックが、今やハード・ディスクにおいて利用可能であることを示すために）。逆に、解放された部分がローカル・キャッシュとして動作する場合、ブロック３４０において、ストリーミング・ドライバは、解放された部分内の空きメモリ位置（即ち、ヌル値と等しい、ルックアップ・テーブルにおける対応するイメージ・アドレスを有する）を探す。ブロック３４２に下り、空きメモリ位置が利用可能でない場合、ブロック３４４において、ストリーミング・ドライバは、解放された部分のメモリ位置を削除（evict）し、削除されることになるメモリ位置は、情報のいかなる損失も回避するように、外部ソースからダウンロードされた後に更新されていないメモリ・ブロックを格納するもの（対応する更新フラグのデアサートにより示されるような）の中からのみ、例えば、最長時間未使用（Least Recently Used、ＬＲＵ）アルゴリズムに従って選択される。次いで、方法３００は、ブロック３４６に下り、空きメモリ位置が見つかった場合には、ブロック３４２からも直接同じ時点に到達する。この時点で、ストリーミング・ドライバは、選択されたメモリ・ブロックを、解放された部分の最初の空きメモリ位置に格納し、同時に、ルックアップ・テーブルにおいて、対応するエントリが、選択されたイメージ・アドレスに設定され（今や選択されたメモリ・ブロックが内部で利用可能であることを示すために）、対応する更新フラグがデアサートされる（選択されたメモリ・ブロックが更新されていないことを示すために）。
【００４２】
ブロック３３４に戻ると、代わりに、選択されたメモリ・ブロックがハード・ディスクにおいて（対応するブート・ブロックにおいて、ハード・ディスク内の正しい位置において、又は解放された部分において）利用可能である場合、方法は、ブロック３４８に下る。この段階において、ストリーミング・ドライバは、選択されたメモリ・ブロックをハード・ディスクから取り出す。特定的には、選択されたメモリ・ブロックがブート・ブロックである（即ち、選択されたイメージ・アドレスが、ブート・リスト内に示されるブート・アドレスの１つである）場合、選択されたメモリ・ブロックは、（選択されたイメージ・アドレスと等しいメモリ・アドレスを有する）対応するブート位置から取り出される。同様に、選択されたメモリ・ブロックが既にハード・ディスク内の正しい位置にコピーされている（即ち、選択されたイメージ・アドレスがコピー・カウンタを下回る）場合、選択されたメモリ・ブロックは、（選択されたイメージ・アドレスと等しいメモリ・アドレスを有する）その正しい位置から取り出される。代わりに、選択されたメモリが解放された部分内に格納されている場合、選択されたメモリ・ブロックは、選択されたイメージ・アドレスに解放された部分のオフセットを加えたものに等しいメモリ・アドレスを有する、解放された部分におけるメモリ位置から取り出される（解放された部分がローカル・リポジトリとして動作する場合）か、又は、選択されたイメージ・アドレスを格納するルックアップ・テーブルのエントリと関連したメモリ・アドレスを有するメモリ位置から取り出される（解放された部分がローカル・キャッシュとして動作する場合）。いずれの場合も、アクティビティの流れは、ブロック３３８、ブロック３４６、又はブロック３４８から、ブロック３５０において合流し、この時点で、ストリーミング・ドライバは、選択されたメモリ・ブロックをファイル・システム・ドライバに戻し、ファイル・システム・ドライバは、次にそれをアプリケーション・プログラムに戻す。
【００４３】
方法３００は、代わりに、（対応する選択されたイメージ・アドレスにおける）ターゲット・ソフトウェア・イメージの選択されたメモリ・ブロックを書き込む要求が、（例えば、アプリケーション・プログラムから）ターゲット・オペレーティング・システムに提出されるとすぐに、ブロック３５２に下る。ブロック３５４において、書き込み要求は、ストリーミング・ドライバに渡され、ストリーミング・ドライバは、選択されたメモリ・ブロックが、上記のようにハード・ディスク上で既に利用可能であるかどうかを検証する。次いで、ブロック３５６において、アクティビティの流れは、検証の結果に従って分岐する。
【００４４】
選択されたメモリ・ブロックがハード・ディスクにおいて利用可能でない場合、ストリーミング・ドライバは、上述した同じ操作を繰り返すことにより、選択されたメモリ・ブロックをハード・ディスク内に格納する。特定的には、解放された部分がローカル・リポジトリとして動作する場合、ブロック３５８において、ストリーミング・ドライバは、選択されたメモリ・ブロックを、（選択されたイメージ・アドレスにそのオフセットを加えたものに等しいメモリ・アドレスを有する）解放された部分の対応するメモリ位置に格納し、同時に、ビットマップにおける対応する可用性フラグがアサートされる。逆に、解放された部分がローカル・キャッシュとして動作する場合、ブロック３６０において、ストリーミング・ドライバは、解放された部分における空きメモリ位置を探す。ブロック３６２に下り、空きメモリ位置が見つからない場合、ブロック３６４において、ストリーミング・ドライバは、（更新されていないメモリ・ブロックを格納するものの中で）解放された部分のメモリ位置を削除する。次いで、方法３００は、ブロック３６６に下り、空きメモリ位置が見つからない場合、ブロック３６２からも直接同じ時点に到達する。この時点で、ストリーミング・ドライバは、選択されたメモリ・ブロックを解放された部分の最初の空きメモリ位置に格納し、同時に、ルックアップ・テーブルにおいて、対応するエントリが選択されたイメージ・アドレスに設定され、対応する更新フラグがデアサートされる。
【００４５】
ブロック３５６に戻ると、代わりに、選択されたメモリ・ブロックがハード・ディスクにおいて利用可能である場合、方法は、ブロック３６８に下る。この段階において、ストリーミング・ドライバは、選択されたメモリ・ブロックを対応するメモリ位置に格納する。特定的には、選択されたメモリ・ブロックがブート・ブロックである（即ち、選択されたイメージ・アドレスが、ブート・リスト内に示されるブート・アドレスの１つである）場合、選択されたメモリ・ブロックは、（選択されたイメージ・アドレスと等しいメモリ・アドレスを有する）対応するブート位置に格納される。同様に、選択されたメモリ・ブロックが既にハード・ディスク内の正しい位置にコピーされている（即ち、選択されたイメージ・アドレスがコピー・カウンタを下回る）場合、選択されたメモリ・ブロックは、（選択されたイメージ・アドレスと等しいメモリ・アドレスを有する）その正しい位置に格納される。代わりに、選択されたメモリが解放された部分内に格納されている場合、選択されたメモリ・ブロックは、選択されたイメージ・アドレスに解放された部分のオフセットを加えたものに等しいメモリ・アドレスを有する、解放された部分におけるメモリ位置に格納される（解放された部分がローカル・リポジトリとして動作する場合）か、又は、選択されたイメージ・アドレスを格納するルックアップ・テーブルのエントリと関連したメモリ・アドレスを有するメモリ位置に格納される（解放された部分がローカル・キャッシュとして動作する場合）。
【００４６】
次いで、（即時使用のためにのみコンピュータ上にダウンロードされる、ソフトウェア・イメージをオン・デマンドで提供するための当技術分野において周知のストリーミング技術とは違って）このストリーミング技術は、可能な限り多くのターゲット・ソフトウェア・イメージのメモリ・ブロックをハード・ディスク上に格納することに向けられる。さらに、解放された部分がローカル・リポジトリとして動作する場合、ダウンロードされたメモリ・ブロックは、（それらの使用後、コンピュータの電源がオフにされたときにも消滅することなく）ハード・ディスク上に永続的に格納されるため、次に使用するためにそれらを再びダウンロードする必要はない。
【００４７】
ここで、ターゲット・ソフトウェア・イメージへのマイグレーションをコミットする要求が配置エージェントに提出されると、方法３００は、（ブロック３５８、ブロック３６６、又はブロック３６８から合流することにより）、ブロック３７０に下る。これに応答して、ブロック３７２において、配置エージェントは、（例えば、バックアップのために）ソース・ソフトウェア・イメージのスナップショットを取ることができる。この目的のために、ソース・ソフトウェア・イメージのあらゆるメモリ・ブロックがハード・ディスクから取り出され、特定的には、メモリ・ブロックが再配置されていない場合は対応するメモリ位置から、又は、他の場合には対応する再配置されたメモリ位置から、メモリ・ブロックが取り出される。次いで、メモリ・ブロックは、外部デバイス（例えば、取り外し可能ディスク）上に格納される。従って、この場合、実際に必要とされ得る場合にのみ、ソース・ソフトウェア・イメージのスナップショットを取ることが可能である。
【００４８】
次いで、ターゲット・ソフトウェア・イメージの各メモリ・ブロックについて、ループが実施される。ループは、上述のようなストリーミング・ドライバは、対応する現在のイメージ・アドレス（コピー・カウンタに１を加えたものに等しい）におけるターゲット・ソフトウェア・イメージの現在のメモリ・ブロックが、ハード・ディスク上で（この場合は、ブート位置又は解放された部分においてのみ）既に利用可能であるかどうかを検証する、ブロック３７４で開始する。次いで、ブロック３７６において、アクティビティの流れは、検証の結果に従って分岐する。
【００４９】
現在のメモリ・ブロックがハード・ディスクにおいて利用可能でない場合、ブロック３７８において、ストリーミング・ドライバは、外部ソースから現在のメモリ・ブロックをダウンロードする。逆に、アクティビティの流れは、ブロック３７６からブロック３８０に下る。この時点で、現在のメモリ・ブロックがブート・ブロックでない場合、ブロック３８２において、ストリーミング・ドライバは、それを解放された部分から取り出し、特定的には、現在のメモリ・ブロックは、現在のイメージ・アドレスに解放された部分のオフセットを加えたものに等しいメモリ・アドレスを有するメモリ位置から取り出される（解放された部分がローカル・リポジトリとして動作する場合）か、又は、現在のイメージ・アドレスを格納するルックアップ・テーブルのエントリと関連したメモリ・アドレスを有するメモリ位置から取り出される（解放された部分がローカル・キャッシュとして動作する場合）。次いで、方法３００は、ブロック３７８又はブロック３８２から、ブロック３８４に下る。この段階において、現在のメモリ・ブロックは、（現在のイメージ・アドレスと等しいメモリ・アドレスを有する）正しいメモリ位置にコピーされ、次いで、コピー・カウンタが１だけ増加され、同時に、解放された部分がローカル・キャッシュとして動作する場合、（そのイメージ・アドレスをヌル値に設定することにより）ルックアップ・テーブルにおける対応するエントリが削除される。ここで、アクティビティの流れはブロック３８６に移り、現在のメモリ・ブロックがブート・ブロックである場合、いずれの操作も実施することなく、ブロック３８０からも直接同じ時点に到達する（これが正しい位置に既に格納されているので）。ここで、ターゲット・ソフトウェア・イメージの全てのメモリ・ブロックが処理されたかどうかを検証するために、テストが行われる。処理されていない場合、アクティビティの流れはブロック３７２に戻り、ターゲット・ソフトウェア・イメージの次のメモリ・ブロックに対して同じ操作を繰り返す。逆に、配置エージェントがストリーミング・ドライバをディスエーブルにする（同じく、これをターゲット・ソフトウェア・イメージのブート・シーケンスから取り除く）、ブロック３８８に下ることによってループが終了する。この時点で、ブロック３９０において、配置エージェントはコンピュータの電源をオフにしてからオンにし、（もはや外部ソースを必要とせずに）コンピュータを、その正常な動作のために、ターゲット・ソフトウェア・イメージから再ブートする。
【００５０】
このコピー手順は、コンピュータの動作に対して実質的に不透明であるように、バックグラウンドで実施することができ、このようにして、コンピュータは、ターゲット・ソフトウェア・イメージのあらゆるメモリ・ブロックが内部にコピーされた後、今やその正しい位置においてメモリ・ブロックにアクセスされるという相違点だけを有した状態で、正常に作業を継続することができる。より具体的には、ターゲット・ソフトウェア・イメージの選択されたメモリ・ブロック（対応する選択されたイメージ・アドレスにおける）にアクセスする（読み出す又は書き込む）要求がオペレーティング・システムに提出されると、そのアクセス要求は、再びストリーミング・ドライバに渡され、ストリーミング・ドライバは、選択されたメモリ・ブロックが既にコピーされている（即ち、選択されたイメージ・アドレスがコピー・カウンタを下回るか又はこれと等しい）かどうかを検証する。コピーされている場合には選択されたイメージ・アドレスと等しいメモリ・アドレスを有するメモリ位置において、選択されたメモリ・ブロックにアクセスされ、他の場合には上述したものと同じ操作を繰り返すことにより、選択されたメモリ・ブロックが読み出される又は書き込まれる。
【００５１】
例えば、コンピュータの作業負荷に応じて、コピー手順の操作を繰り返すことができる。この目的のために、コンピュータの作業負荷が監視され（例えば、１０−１００ｍｓごとに）、（例えば、現在のところ、いずれの操作も実施されていないために）コンピュータの作業負荷が所定の閾値を下回る場合、上述した操作を繰り返すことにより、ターゲット・ソフトウェア・イメージの１つ又は複数のメモリ・ブロックがコピーされる。このように、コンピュータの操作に与えるコピー手順の影響を最小にすることが可能である。その結果、（コンピュータの再ブートしか必要としないため）ターゲット・ソフトウェア・イメージへの実際の切り換えが非常に高速になる。
【００５２】
代替的に、方法３００は、代わりに、ひとたびソース・ソフトウェア・イメージをロール・バックする要求が配置エージェントに提出されると、（ブロック３５８、ブロック３６６、又はブロック３６８から）ブロック３９２に下る。これに応答して、ブロック３９４において、配置エージェントは、（再配置されたメモリ位置からこれらを連続的に読み出し、かつ、ブート・リスト内に示されるように、ターゲット・ソフトウェア・イメージの対応するブート位置に同じ順序でコピーすることにより）ソース・ソフトウェア・イメージのメモリ・ブロックを、再配置された位置からターゲット・ソフトウェア・イメージのブート位置に復元する。次いで、ブロック３９６において、配置エージェントは、（例えば、再び、ソース・オペレーティング・システムの組み込み関数を利用することにより）ソース・ソフトウェア・イメージを拡大してその元のサイズに復元し、次いで、ターゲット・ソフトウェア・イメージのいずれかのメモリ・ブロックをオーバーライドする。この時点で、ブロック３９８において、配置エージェントはコンピュータの電源をオフにしてからオンにし、コンピュータを、その正常な動作のためにソース・ソフトウェア・イメージから再ブートするようにする。
【００５３】
どちらの場合も、方法３００は、（ブロック３９０又はブロック３９８のいずれかから到達する）同心の白色及び黒色の停止円３９９で終了する。
【００５４】
上述した解決法は、あらゆるソフトウェア・イメージのブート・ブロックの知識を必要とする。この目的のために、例えば、これに応じて、ソフトウェア・イメージを準備することが可能である。この点に関して、本発明の実施形態による解決法に用いられる一般的なソフトウェア・イメージの準備プロセスを実施するのに用いることができる主要ソフトウェア・コンポーネント（全体に参照記号４００として示される）の役割を表す協調図を示す、図１２への参照がなされる。
【００５５】
準備プロセスは、（それぞれ、参照記号４１５ｓ及び４３０ｓにより示される、その作業メモリ及び大容量メモリを有する）サーバ・コンピュータ４０５ｓを含むシステムにおいて実施される。サーバ・コンピュータ４０５ｓは、配置マネージャ４３５、例えば、ＩＢＭコーポレーションによるＩＢＭ  Ｔｉｖｏｌｉ  Ｐｒｏｖｉｓｉｏｎｉｎｇ  Ｍａｎａｇｅｒ  ｆｏｒ  ＯＳ  Ｄｅｖｅｌｏｐｍｅｎｔ（又は、ＴＰＭ  ｆｏｒ  ＯＳＤ）のＩＢＭ  Ｔｉｖｏｌｉ  Ｐｒｏｖｉｓｉｏｎｉｎｇ  Ｍａｎａｇｅｒ  ｆｏｒ  Ｉｍａｇｅｓ（又はＴＰＭｆＩ）などを実行する（ＩＢＭ及びＴｉｖｏｌｉは、ＩＢＭコーポレーションの商標である）。配置マネージャ４３５は、マスター・ソフトウェア・イメージ（又は単にマスター・イメージ）４４０のリポジトリを管理し、各々のマスター・イメージ４４０は、対応するソフトウェア・イメージの基本バージョン（例えば、以前にインストールされている、ドナー・コンピュータのハード・ディスクのコンテンツを捕捉することにより作成された）を提供し、ここで、ドナー・コンピュータのいずれかの構成に関する特定のコンテンツは取り除かれている（例えば、ドライバ及びレジストリ設定）。サーバ・コンピュータ４０５ｓはまた、モデル４４５のリポジトリを含み、各々のモデル４４５は、代わりに、ソフトウェア・イメージを配置する必要があるコンピュータの対応する構成についての特定のコンテンツを含む。さらに、配置マネージャ４３５は、データの遠隔アクセスを可能にするために、（例えば、ｉＳＣＳＩプロトコルに基づいて）遠隔アクセス・サーバ４５０と対話する。
【００５６】
操作者４５５は、対応する補助コンピュータ４０５ａにより表される、コンピュータの特定のタイプに対するソフトウェア・イメージ（選択されたマスター・イメージ４４０及び選択されたモデル４４５を含む）を選択する（動作「Ｂ１：選択」）。補助コンピュータ４０５ａ（それぞれ、参照記号４１５ａ及び４３０ａで示される、その作業メモリ及び大容量メモリを有する）は、配置マネージャ４３５との対話のために、配置エージェント４６０を実行する。これに応答して、配置マネージャ４３５は、選択されたソフトウェア・イメージの識別子を送ることにより、補助コンピュータ４０５ａ上の配置エージェント４６０をウェークアップする（動作「Ｂ２：ウェークアップ」）。その結果、配置エージェント４６０は、遠隔アクセス・サーバ４５０を通じて遠隔的にアクセスするための遠隔ディスクとして（即ち、問題となる例におけるｉＳＣＳＩイニシエータとして働くことによって）、選択されたソフトウェア・イメージをマウントする。その結果、補助コンピュータ４０５ａによる排他的アクセスのための一時的ソフトウェア・イメージ（又は、単に一時的イメージ）４６５が作成され、一時的イメージ４６５は、単に選択されたマスター・イメージ４４０及び選択されたモデル４４５のメモリ・ブロックを指し示すインデックス構造によって、つまり、そのコピーを作成することなく、定められる。一時的イメージ４６５は、イネーブルにされたブロック追跡機能とともにマウントされ、アクセスされる一時的イメージ４６５のあらゆるメモリ・ブロックのイメージ・アドレスを追跡する（動作「Ｂ３：マウント」）。
【００５７】
この時点で、配置エージェント４６０は、（配置エージェントのロードまでの）一時的イメージ４６５上の補助コンピュータ４０５ａのブート・シーケンスをシミュレートする。例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓにおいて、配置エージェント４６０は、ＭＢＲと、ブート・セクタと、ｂｏｏｔｍｇｒ．ｅｘｅファイルと、ｂｏｏｔ＼ｂｃｄファイルと、システム・レジストリと、ｗｉｎｌｏａｄ．ｅｘｅファイルと、システム・レジストリにおいて指定されるドライバ・ファイルと、ストリーミング・ドライバとを読み出す（動作「Ｂ４：シミュレートされたブート」）。シミュレートされたブート・シーケンスが完了すると、配置エージェント４６０は、一時的イメージ４６５をアンマウントする（動作「Ｂ５：アンマウント」）。次いで、配置エージェント４６０は、一時的イメージ４６５を配置マネージャ４３５にコミットする（動作「Ｂ６：コミット」）。これに応答して、配置マネージャ４３５は、（単にそのインデックス構造によって定められる）一時的イメージ４６５から新しいソフトウェア・イメージ（又は単に新しいイメージ）４７０を構築する。さらに、新しいイメージ４７０は、シミュレートされたブート手順の間にアクセスされたメモリ・ブロックのリストと関連付けられ、このメモリ・ブロックは対応するブート・ブロックを定める（動作「Ｂ７：構築」）。
【００５８】
当然ながら、ローカル及び特定の要求を満たすために、当業者は、上述の解決法に多くの論理的及び／又は物理的な修正及び改変を適用することができる。より具体的には、この解決法は、その１つ又は複数の実施形態を参照して、ある程度詳細に説明されているが、（例えば数値に関して）その形及び細部における様々な省略、置換及び変更、並びに他の実施形態が可能であることを理解すべきである。特に、本発明のより完全な理解を提供するために先の記載に示されている特定の詳細なしに、本発明の異なる実施形態が実施されてもよい。反対に、不必要な詳細によって説明を分かりにくくしないために、周知の特徴が省略又は簡略化されていることがある。さらに、開示される解決法のあらゆる実施形態と関連して記載される特定の要素及び／又は方法ステップは、一般的な設計選択の問題として、他のいずれの実施形態にも組み込まれてもよいことが明確に意図されている。
【００５９】
例えば（より多くのステップ若しくはその部分と同じ機能を有する類似のステップを用いること、必須でない幾つかのステップを除去すること、又はさらなる随意的なステップを付加することによって）同じ解決法が同等の方法によって実施される場合も、類似の考察が適用される。さらに、これらのステップは（少なくとも部分的に）異なる順序で行われても、同時に又は交互に行われてもよい。
【００６０】
ソフトウェア・イメージは、あらゆるソフトウェア・プログラム（例えば、何らかのアプリケーション・プログラムを有さないオペレーティング・システムのみ）を含むことができる。同様に、メモリ・ブロックは、いずれの種類の情報（例えば、１つ又は複数のセクタ、ファイル、ライブラリ、ディレクトリ、それらの組み合わせ又はそれらの部分）を含むことができる。さらに、ターゲット・ソフトウェア・イメージは、いずれかの同等の外部ソース（例えば、取り外し可能なストレージ・デバイス）から提供することができる。いずれの場合も、提案される技術は、異なるオペレーティング・システムをインストールするため、コンピュータを同じオペレーティング・システムの旧バージョンにダウングレードするため、災害復旧のためにコンピュータのスナップショットを復元するため、又は他のいずれかの理由のために用いることができる。
【００６１】
同じ技術を、いずれかのブート・シーケンスを有する、他のいずれかのオペレーティング・システムに適用することもできる。例えば、Ｌｉｎｕｘ（Ｌｉｎｕｓ  Ｔｏｒｖａｌｄｓの商標である）において、ブート・ブロックは、ＧＲＢＵブート・ローダを含むＭＢＲと、カーネル及びｉｎｉｔｒｄファイル・システムを含む／ｂｏｏｔディレクトリとを含む。この場合、ブート・シーケンスの際に、ＢＩＯＳがＧＲＢＵを含むＭＢＲをロードし、ＧＲＢＵは／ｂｏｏｔディレクトリを見出して、カーネル及びｉｎｉｔｒｄファイル・システムをロードし、ＧＲＢＵはカーネルをブートし、カーネルはｉｎｉｔｒｄファイル・システムを始動し、ｉｎｉｔｒｄファイル・システムはストリーミング・ドライバを始動する。
【００６２】
いずれの場合にも、上述したストリーミング機能は、（いずれの配置エージェントがない場合でも）あらゆる同等の構造により実装することができる。さらに、（例えば、補助コンピュータを実際にブートし、ブート・シーケンスの間にアクセスされるメモリ・ブロックを追跡することによってそのブート・ブロックを識別することによって）ソフトウェア・イメージを異なる方法で準備することができる。
【００６３】
提案される技術はまた、外部ソースにより提供された通りのターゲット・ソフトウェア・イメージをインストールするために（例えば、コンピュータの以前のスナップショットを復元するために）用いられてもよい。
【００６４】
この場合、ソース・ソフトウェア・イメージのいずれの構成情報の転送を回避することも可能である。
【００６５】
いずれの場合にも、構成情報は、他のいずれのタイプの情報（例えば、アプリケーション・プログラム、文書など）を含むこともできる。同等の技術を用いて（単に幾つかのファイルをコピーすることにより、手動でも）、構成情報を、ソース・ソフトウェア・イメージから収集すること、及び／又はターゲット・ソフトウェア・イメージに適用することも可能である。
【００６６】
（メモリ・ブロックをハード・ディスク内の正しい位置にコピーすることにより）ターゲット・ソフトウェア・イメージへのマイグレーションをコミットする操作は、他のいずれかの方法で実施することもできる。
【００６７】
例えば、コンピュータのテスト中でさえ、メモリ・ブロックを継続的にダウンロードすることができる。さらに、単一の動作で（例えば、メモリ・ブロックがダウンロードされた後で、その全てを同時にコピーすることにより）ターゲット・ソフトウェア・イメージへのマイグレーションをコミットすることも可能である。
【００６８】
作業負荷は、他のいずれかの頻度で監視されても、又は特定の期間（例えば夜間）にのみ監視されてもよい。コンピュータ、サーバ、ネットワーク、又はこれらのいずれかの組み合わせに対して作業負荷が監視される場合にも、同様の考察が適用される。さらに、作業負荷に対する閾値は、いずれの他の方法で（例えば、異なる重みによってその寄与を重み付けすることによって）定めることができる。作業負荷が閾値を下回るときには、２つ又はそれ以上のメモリ・ブロックが同時にダウンロードされる場合にも、同様の考察が適用される。
【００６９】
正しい位置にコピーされる間のターゲット・ソフトウェア・イメージのメモリ・ブロックのコヒーレンスを保証するために、同等のアルゴリズムを実装することができる。
【００７０】
代替的に、ターゲット・ソフトウェア・イメージが完全にダウンロードされた後でさえ、（例えば、メモリ・ブロックの最新バージョンをダウンロードするために）ストリーミング・ドライバを常にイネーブルな状態に保持することが可能である。
【００７１】
ソース・ソフトウェア・イメージへのロール・バックのための他の手順が考えられる場合も、同様の考察が適用される。
【００７２】
ハード・ディスクの解放された部分を、（例えば、幾つかのファイルを圧縮することなどにより）いずれかの他の方法で得ることも可能である。いずれの場合にも、ハード・ディスクの一部分（例えば、その幾つかのパーティション）のみを縮小することができる。
【００７３】
ストリーミング・ドライバにより用いられるいずれの同等の制御構造を実装することもできる（解放された部分が、ローカル・リポジトリ又はローカル・キャッシュとして動作する場合）。
【００７４】
（本発明の各々の実施形態を実施するために用いられ得る）プログラムが異なる方法で構築される場合又は付加的なモジュール若しくは機能が与えられる場合にも、類似の考察が適用される。同様に、メモリ構造は他のタイプのものとすることができ、又は、同等のエンティティ（必ずしも物理的ストレージ媒体からなっていなくてもよい）によって置換することができる。プログラムは、いずれかのデータ処理システムによって又はそれと関連して（例えば、仮想マシン内で）用いられるのに適したいずれの形を取ることもできる。特に、プログラムは、外部若しくは常駐のソフトウェア、ファームウェア、又はマイクロコード（例えば、コンパイル又は解釈されるオブジェクト・コード又はソース・コード）の形とすることができる。さらに、いずれのコンピュータ使用可能媒体において実装される製造物品としてプログラムを提供することが可能である。媒体は、プログラムを収容し、格納し、通信し、伝搬し、又は転送するのに適したいずれの要素とすることもできる。例えば、媒体は、電子、磁気、光学、電磁気、赤外線若しくは半導体のタイプのものとすることができる。このような媒体の例は、（プログラムを予めロードすることができる）固定ディスク、取り外し可能ディスク、テープ、カード、配線、ファイバ、無線接続、ネットワーク、放送波などである。いずれの場合にも、本発明の実施形態による解決法は、ハードウェア構造（例えば、半導体材料のチップに集積されたもの）、又は他の方法で構成されたものに好適にプログラムされたソフトウェア及びハードウェアの組み合わせによる実施にも適する。
【００７５】
代替的に、このシステムは、異なる構造を有するか、又は同等の構成要素を含むか、又は他の動作特徴を有する。いずれの場合にも、そのあらゆる構成要素がさらに多くの要素に分けられてもよく、又は、２つ又はそれ以上の構成要素を組み合わせて単一の要素にしてもよい。さらに、対応する動作の並行実行をサポートために、各々の構成要素を複製することができる。異なる構成要素間のあらゆる対話は（他に特に規定がない限り）一般的に継続的である必要はなく、対話は直接的なものであっても、又は１つ又は複数の仲介物を通じた間接的なものであってもよいことも指摘される。特に、このシステムは、異なるアーキテクチャ（例えば、広域ネットワーク、グローバル・ネットワーク、セルラー・ネットワーク、又は衛星ネットワークなど）に基づくことができ、あらゆるタイプの（有線及び／又は無線の）接続を利用することができる。いずれの場合にも、各々のコンピュータは、別の構造を有することができ、又は類似の要素（フラッシュ・メモリに基づく、いずれの他の大容量メモリなど）を含むことができる。さらに、コンピュータを、物理マシン若しくは仮想マシンに基づくいずれかのデータ処理エンティティ（例えば、ＰＤＡ、携帯電話等）又は複数のエンティティの組み合わせによって置換することが可能である。
【符号の説明】
【００７６】
１００：コンピュータ
１０５：システム・バス
１１０：マイクロプロセッサ
１１５：ＲＡＭ（作業メモリ）
１２０：ＲＯＭ
１２５：ローカル・バス
１３０：ハード・ディスク
１３５：ドライブ
１４０：光ディスク
１４５：入力ユニット
１５０：出力ユニット
１５５：アダプタ
１６０：ブリッジ・ユニット
１６５：仲裁手段
２０５ｓ：ソース・ソフトウェア・イメージ
２０５ｔ：ターゲット・ソフトウェア・イメージ
２１０ｓ：ソース・オペレーティング・システム
２１０ｔ：ターゲット・オペレーティング・システム
２１５、４６０：配置エージェント
２２０：ユーザ
２２５：ターゲット・ソフトウェア・イメージ
２３０：解放された部分
２３５ｓ：再配置されたメモリ位置
２４０ｔ：ブート・ブロック
４０５ａ：補助コンピュータ
４０５ｓ：サーバ・コンピュータ
４１５ａ、４１５ｓ：作業メモリ
４３０ａ、４３０ｓ：大容量メモリ
４３５：配置マネージャ
４４０：マスター・イメージ
４４５：モデル
４５０：遠隔アクセス・サーバ
４５５：操作者
４６５：一時的イメージ
４７０：新しいイメージ
【図１】
0005911504.tif 000002
【図２】
0005911504.tif 000003
【図３】
0005911504.tif 000004
【図４】
0005911504.tif 000005
【図５】
0005911504.tif 000006
【図６】
0005911504.tif 000007
【図７】
0005911504.tif 000008
【図８】
0005911504.tif 000009
【図９】
0005911504.tif 000010
【図１０】
0005911504.tif 000011
【図１１】
0005911504.tif 000012
【図１２】
0005911504.tif 000013