データ処理エンティティ100を、前記データ処理エンティティの大容量メモリ130上にインストールされたソースソフトウェアイメージ205sから、外部ソース225上に格納されたターゲットソフトウェアイメージにマイグレートするための方法300であって、前記ソフトウェアイメージの各々は複数のメモリブロックを含み、前記メモリブロックの各々は前記ソフトウェアイメージ内に対応するイメージアドレスを有し、前記大容量メモリは、各々が前記メモリブロックを格納するための複数のメモリ位置を含み、前記メモリ位置は前記大容量メモリ内に対応するメモリアドレスを有する、方法において、前記大容量メモリの部分を解放する306ステップと、前記ターゲットソフトウェアイメージのブート位置に格納された前記メモリブロックを前記解放された部分内に再配置する310ステップであって、前記ブート位置は、前記データ処理エンティティをブートして、前記外部ソースから前記ターゲットソフトウェアイメージをダウンロードするように適合されたストリーミング機能215をロードするのに必要とされる前記メモリブロックを含む、前記ターゲットソフトウェアイメージのブートブロックの前記イメージアドレスと等しいメモリアドレスを有する前記メモリ位置である、ステップと、前記対応するブート位置に前記ブートブロックを格納する314ステップと、前記対応するブート位置における前記ブートブロックから前記データ処理エンティティをブートし316、それにより、前記ストリーミング機能をロードするステップと、前記ストリーミング機能によって、前記ターゲットソフトウェアイメージの選択されたメモリブロックを読み出す各要求を実行する330-350ステップであって、前記ストリーミング機能は、前記大容量メモリにおいて前記選択されたメモリブロックが利用可能でない場合には、前記外部ソースから前記選択されたメモリブロックをダウンロードし336、かつ、前記解放された部分内に前記選択されたメモリブロックを格納し338-346、又は、他の場合には、前記大容量メモリから前記選択されたメモリブロックを取り出す348、ステップと、を含む方法。前記ストリーミング機能215により、前記ターゲットソフトウェアイメージの更に別の選択されたメモリブロックを書き込む各々の要求を実行する352-368ステップであって、前記ストリーミング機能は、前記更に別の選択されたメモリブロックが前記ブートブロックの1つである場合には、前記更に別の選択されたメモリブロックを前記対応するブート位置に格納し354-368、又は、他の場合には、前記解放された部分内に格納する、ステップをさらに含む、請求項1に記載の方法300。前記方法は、前記データ処理エンティティを前記ブートした316後に、前記ソースソフトウェアイメージから構成情報を収集する318-326ステップと、対応するメモリブロックを前記解放された部分内に格納することにより、前記構成情報を前記ターゲットソフトウェアイメージに適用する328ステップと、をさらに含む、請求項1又は請求項2に記載の方法300。前記ソースソフトウェアイメージから前記構成情報を収集する318-326ステップは、前記ソースソフトウェアイメージの構成メモリブロックの組を取り出す320-324ステップであって、前記構成メモリブロックの各々は、内部に再配置された場合には前記解放された部分から取り出され、又は、他の場合には前記対応するメモリ位置から取り出される、ステップを含む、請求項3に記載の方法300。前記方法は、前記マイグレーションを前記ターゲットソフトウェアイメージにコミットする要求370に応答して、前記ブートブロックとは異なる前記ターゲットソフトウェアイメージの前記メモリブロックの全てを、前記対応するイメージアドレスと等しい前記メモリアドレスを有するメモリ位置にコピーする372-386ステップをさらに含む、請求項1から請求項4までのいずれかに記載の方法300。前記ターゲットソフトウェアイメージの前記メモリブロックの全てをコピーする374-386ステップは、前記解放された部分において現在のメモリブロックが利用可能でない場合には前記外部ソースから前記現在のメモリブロックをダウンロードし378、又は、他の場合には前記解放された部分から前記現在のメモリブロックを取り出す382こと、及び、前記現在のメモリブロックを、前記対応するイメージアドレスと等しい前記メモリアドレスを有する前記メモリ位置に格納する384こと、によって、前記ターゲットソフトウェアイメージの少なくとも1つの現在のメモリブロックをコピーする374-384ステップを繰り返すことを含む、請求項5に記載の方法300。前記ターゲットソフトウェアイメージの前記メモリブロックの全てをコピーする374-386ステップは、データ処理エンティティの作業負荷を監視する374ステップを含み、前記ターゲットソフトウェアイメージの前記少なくとも1つの現在のメモリブロックをコピーする374-384ステップは、前記作業負荷が閾値を下回ったときに実施される、請求項6に記載の方法300。前記マイグレーションを前記ターゲットソフトウェアイメージにコミットする前記要求370の後、前記ストリーミング機能は、前記大容量メモリにおいて利用可能な前記選択されたメモリブロックを、前記選択されたメモリブロックが内部にコピーされた後で前記対応するイメージアドレスと等しい前記メモリアドレスを有する前記メモリ位置から、又は、他の場合には前記解放された部分から取り出し348、かつ、前記更に別の選択されたメモリブロックが内部にコピーされた後で前記対応するイメージアドレスと等しい前記メモリアドレスを有する前記メモリ位置に、又は、他の場合には前記解放された位置に格納する366、請求項5から請求項7までのいずれかに記載の方法300。前記ターゲットソフトウェアイメージの前記メモリブロックの全てをコピーした372-386後で、前記ストリーミング機能をディスエーブルにする388ステップをさらに含む、請求項5から請求項8までのいずれかに記載の方法300。前記ターゲットソフトウェアイメージへのロールバック要求392に応答して、前記再配置されたメモリブロックを前記ターゲットソフトウェアイメージのブート位置に復元する394ステップと、前記大容量メモリの前記解放された部分を復元する396ステップと、をさらに含む、請求項1から請求項9までのいずれかに記載の方法300。前記大容量メモリの部分を解放する306ステップは、前記ソースソフトウェアイメージを縮小する306ステップを含む、請求項1から請求項10までのいずれかに記載の方法300。前記解放された部分230は、前記ターゲットソフトウェアイメージ225の前記メモリブロックの全てを格納するのに十分なサイズを有し、前記選択されたメモリブロックを格納する338-346ステップ及び前記更に別の選択されたメモリブロックを格納する354-368ステップは、前記選択されたメモリブロック又は前記更に別の選択されたメモリブロックを、前記対応するイメージアドレスに前記大容量メモリ内の前記解放された部分のオフセットを加えたものに等しい前記メモリアドレスを有する、前記解放された部分のメモリ位置に格納することを含む、請求項1から請求項11までのいずれかに記載の方法300。前記解放された部分230は、前記ターゲットソフトウェアイメージの前記メモリブロックの部分のみを格納するのに十分なサイズを有し、前記選択されたメモリブロックを格納する338-346ステップ及び前記更に別の選択されたメモリブロックを格納する354-368ステップは、前記選択されたメモリブロック又は前記更に別の選択されたメモリブロックを格納するために、前記解放された部分において利用可能な空きメモリ位置を探す340;360ステップと、前記空きメモリ位置が見つからなかった場合、前記解放された部分の選択されたメモリ位置を削除することによって、前記空きメモリ位置を作成する344;364ステップであって、前記選択されたメモリ位置は、前記ダウンロード後に書き込まれないメモリブロックを格納する前記解放された部分の前記メモリ位置の中で選択される、ステップと、前記空きメモリ位置に、前記選択されたメモリブロック又は前記更に別の選択されたメモリブロックを格納する346;366ステップと、を含む、請求項1から請求項12までのいずれかに記載の方法300。コンピュータプログラムがデータ処理システム100上で実行されるときに、データ処理システムに、請求項1から請求項13までのいずれかに記載の方法300のステップを実施させるためのコード手段を含むコンピュータプログラム200。請求項1から請求項13までのいずれかに記載の方法300のステップを実施するための手段200を含むシステム100。データ処理エンティティを、データ処理エンティティの大容量メモリ上にインストールされたソースソフトウェアイメージから、外部ソース上に格納されたターゲットソフトウェアイメージにマイグレートするための方法を提供する。大まかに言えば、本発明の1つ又は複数の実施形態による解決法は、マイグレーションプロセスの際に大容量メモリの元のコンテンツを保持するという考えに基づいている。特定的には、本発明の特定の実施形態による解決法の1つ又は複数の態様は独立請求項において示されており、同じ解決法の有利な特徴が従属請求項に示されており、その表現は、本明細書において一語一句たがわず引用により組み込まれる本発明の実施形態による解決法の特定の態様を参照して提供されるあらゆる有利な特徴は、そのあらゆる他の態様に準用して適用される。より具体的には、本発明の実施形態による解決法の一態様は、データ処理エンティティ例えば、コンピュータなどを、データ処理エンティティの大容量メモリmassmemory上にインストールされたソースソフトウェアイメージから、外部ソース例えば、遠隔イメージリポジトリ上に格納されたターゲットソフトウェアイメージにマイグレートするための方法を提供する。各々のソフトウェアイメージは複数のメモリブロックを含み、各々のメモリブロックは、ソフトウェアイメージ内に対応するイメージアドレスを有する。大容量メモリは、各々がメモリブロックを格納するための複数のメモリ位置を含み、メモリ位置は、大容量メモリ内に対応するメモリアドレスを有する。本方法は、以下のステップを含む。大容量メモリの部分を解放する例えば、ソースソフトウェアイメージを縮小することによって。ターゲットソフトウェアイメージのブート位置に格納されたメモリブロックを解放された部分内に再配置し、ブート位置は、データ処理エンティティをブートして、外部ソースからターゲットソフトウェアイメージをダウンロードするように適合されたストリーミング機能をロードするために必要とされるメモリブロックを含む、ターゲットソフトウェアイメージのブートブロックのイメージアドレスと等しいメモリアドレスを有するメモリ位置である。ブートブロックが、対応するブート位置に格納される。データ処理エンティティは、対応するブート位置におけるブートブロックからブートされるそれにより、ストリーミング機能がロードされる。ストリーミング機能によって、ターゲットソフトウェアイメージの選択されたメモリブロックを読み出す各要求を実行し、ストリーミング機能は、大容量メモリにおいて選択されたメモリブロックが利用可能でない場合には、外部ソースから選択されたメモリブロックをダウンロードし、かつ、解放された部分内に選択されたメモリブロックを格納し、又は、他の場合には、大容量メモリから選択されたメモリブロックを取り出す。本発明の実施形態による解決法の更に別の態様は、コンピュータプログラムがデータ処理システム上で実行されるときに、データ処理システムに、本方法のステップを実施させるためのコード手段を含む、コンピュータプログラムを提供し、本発明の実施形態による解決法の更に別の態様は、コンピュータプログラムを具体化する、非一時的コンピュータ可読媒体を含む、コンピュータプログラム製品を提供し、このコンピュータプログラムは、データ処理システムの作業メモリ内に直接ロード可能なコード手段を含むことにより、本方法を実施するようにデータ処理システムを構成する。本発明の実施形態による解決法の別の態様は、上述の方法のステップを実施するための手段を含むシステムを提供する。本発明の1つ又は複数の実施形態による解決法、並びにその更なる特徴及び利点は、添付図面と共に読まれるべき、純粋に非制限的な表示によって与えられる、以下の詳細な説明を参照することによって最も良く理解されるであろうここでは、簡単にするために、対応する要素は同一又は類似の参照記号により示され、その説明は繰り返されず、さらに各エンティティの名前はそのタイプ及び属性の両方、例えば、その値、コンテンツ及び表現などを示すために一般的に用いられる。特に図1を参照すると、本発明の実施形態による解決法が適用可能な、コンピュータ100の概略的なブロック図が示される。コンピュータ100例えば、PCは、システムバス105に並列接続された幾つかのユニットにより形成される。詳細には、1つ又は複数のマイクロプロセッサμP110はコンピュータ100の動作を制御し、RAM115は、マイクロプロセッサ110によって作業メモリとして用いられ、ROM120は、コンピュータ100の基本コードを格納する。ローカルバス125の周りにそれぞれのインターフェースによって幾つかの周辺ユニットが集まっている。特定的には、大容量メモリは、1つ又は複数のハードディスク130と、光ディスク140例えば、DVD又はCDを読み出すためのドライブ135とを含む。さらに、コンピュータ100は、入力ユニット145例えば、キーボード及びマウスなどと、出力ユニット150例えば、モニタ及びプリンタなどとを含む。アダプタ155は、コンピュータ100をネットワーク図には示されないと接続するために用いられる。ブリッジユニット160は、システムバス105をローカルバス125とインターフェース接続する。各マイクロプロセッサ110及びブリッジユニット160は、情報を伝送するためにシステムバス105へのアクセスを要求するマスターエージェントとして機能することができる。仲裁手段arbiter165が、システムバス105に対する相互排除mutualexclusionによりアクセスの許可を管理する。本発明の実施形態による解決法は、コンピュータ100上にインストールされたソフトウェアイメージをマイグレートするために用いられる例えば、そのオペレーティングシステムを新しいバージョンにアップグレードするために。一般に、各々のソフトウェアイメージは、1つ又は複数のソフトウェアモジュール例えば、オペレーティングシステム、アプリケーションプログラム、及び/又はデータを含み、ソフトウェアイメージは、ソフトウェアイメージ内の対応するアドレスイメージアドレスと呼ばれるを有するメモリブロック例えば、各々が1-10MBのの組により形成される。より具体的には、本発明の実施形態による解決法の例示的なアプリケーションの一般的な概要を表す協調図が、図2-図8に示される。協調図は、関与する主要ソフトウェアコンポーネントの役割を示し、特定的には、その全体が参照記号200によって示されるその静的構造及び記号Aで始まる連続的なシーケンス番号によって示される、各々が対応する動作を表す一連の交換メッセージによって動的挙動を示すものである。図2から始めると、ソースソフトウェアイメージ205sがハードディスク130上にインストールされ、ソースソフトウェアイメージ205sは、図示されないハードディスク130の1つ又は複数の論理パーティション例えば、1次ブート可能パーティション及び可能な付加的パーティションを含む。ハードディスク130は、各々がメモリブロックを格納するための、ハードディスク130内にメモリアドレスと呼ばれる対応するアドレスを有するメモリ位置の組に編成される。ソースソフトウェアイメージ205sは、ソースオペレーティングシステム210sと、配置deploymentエージェント215以下に説明されるとを含み、これらは、少なくとも部分的に作業メモリ115内にロードされる。コンピュータ100のユーザ220は、コンピュータ100を、例えば遠隔イメージリポジトリなどの外部ソース上で利用可能なターゲットソフトウェアイメージ225にマイグレートする要求を配置エージェント215に提出する動作A1:マイグレート。これに応答して、配置エージェント215は、例えばソースオペレーティングシステム210sの組み込み関数を利用することにより、ソースソフトウェアイメージ205sを縮小する動作A2:縮小。その結果、図3に示されるように、ハードディスク130の部分230が解放される。この時点で、配置エージェント215は、ブートアドレスと呼ばれる、対応するイメージアドレスによって識別されるターゲットソフトウェアイメージ225のブートブロックの組をダウンロードし、ターゲットソフトウェアイメージ225のブートブロックは、以下に述べられる、配置エージェントのストリーミングドライバをロードしようとして、ターゲットソフトウェアイメージ225のブートシーケンスを始動させるのに必要とされるメモリブロックを含む動作A3:ダウンロード。次いで、配置エージェント215は、ターゲットソフトウェアイメージ225のブートアドレスと等しいメモリアドレスを有するターゲットソフトウェアイメージ225のブート位置に格納される、ソースソフトウェアイメージ205sのメモリブロックを、再配置されたメモリ位置235sと呼ばれる、解放された部分230の対応するメモリ位置に再配置する動作A4:再配置。ここで、配置エージェント215は、暗灰色で識別され、かつ、参照記号240tで示されるターゲットソフトウェアイメージ225のブートブロックを、そのブート位置に格納することができる。このように、ハードディスク130において、ブートブロック240tは、ターゲットソフトウェアイメージ225のブートシーケンスの際に見出されることが期待されるまさにその場所に配置される。それにも関わらず、オーバーライドされる対応するメモリブロックは再配置されたメモリ位置235s内に保存されているため、このことはソースソフトウェアイメージ205sにおけるいかなる情報の損失ももたらさない。動作A5:格納。この時点で、配置エージェント215は、コンピュータ100の電源をオフにしてからオンにし、コンピュータ100を、そのブート位置におけるターゲットソフトウェアイメージ225のブートブロック240tから再ブートする動作A6:再ブート。従って、図4に示されるように、そのブートブロック240tに対応する、ターゲットソフトウェアイメージ225のターゲットオペレーティングシステム210tの部分、及び、配置エージェント215のストリーミングドライバが、作業メモリ115内にロードされる。次いで、配置エージェント215は、ソースソフトウェアイメージ205sのユーザの構成を、コンピュータ100上にインストールされているターゲットソフトウェアイメージ225に転送し、例えば、ソースソフトウェアイメージ205sの構成情報を、ターゲットオペレーティングシステム210t内にマウントされたハードディスク130から収集し、次いで、ターゲットソフトウェアイメージ225のローカルバージョンに適用する、即ち、対応するメモリブロックにおいて、解放された部分230に書き込む動作A7:転送。ここで、コターゲットソフトウェアイメージ225のローカルバージョンを実行するンピュータ100は、ストリーミングドライバによるストリーミングの際に提供されたターゲットソフトウェアイメージ225のあらゆるメモリブロックと共に、正常に使用することができ、この目的のために、以下に詳細に説明されるように、ストリーミングドライバは、メモリブロックを、利用可能な場合はハードディスク130から取り出すこと、又は、他の場合には外部ソースからダウンロードする同時に、これを解放された部分230に格納することにより読み出し、いずれの場合にも、メモリブロックを解放された部分230に格納することにより、これに書き込む。次いで、ユーザ220は、コンピュータ100が正しく動作するかどうかを検証するために、ターゲットソフトウェアイメージ225のローカルバージョンによりコンピュータ100を広範にテストすることができる動作A8:ストリーミング。ここで図5を参照すると、ユーザ220がターゲットソフトウェアイメージ225のローカルバージョンによるコンピュータ100の動作に満足すると、ユーザ220は、対応する要求を配置エージェント215に提出することにより、マイグレーションをコミットする動作A9:コミット。これに応答して、配置エージェント215は、利用可能な場合は解放された部分230から、又は、他の場合には外部ソースからターゲットソフトウェアイメージ225のローカルバージョンの全てのメモリブロックを、対応するイメージアドレスと等しいメモリアドレスを有する、ハードディスク130内の実際のメモリ位置にコピーする動作A10:コピー。従って、図6に示されるように、ここで、参照記号205tで示されるターゲットソフトウェアイメージのローカルバージョンが、ソースソフトウェアイメージをオーバーライドすることにより、ハードディスク130上に完全にインストールされる。ここで、コンピュータ100は、ターゲットソフトウェアイメージ205tから再ブートし、正常に動作することができる動作A11:再ブート。逆に、図7に示されるように、ユーザが、ターゲットソフトウェアイメージ225のローカルバージョンによるコンピュータ100の動作に満足しない場合、ユーザは、対応する要求を配置エージェント215に提出することにより、ソースソフトウェアイメージ205sにロールバックすることができる動作A12:ロールバック。これに応答して、配置エージェント215は、再配置された位置235sから、ソースソフトウェアイメージ205sのメモリブロックをターゲットソフトウェアイメージ225のブート位置に復元する動作A13:復元。次いで、配置エージェント215は、ソースソフトウェアイメージ205sを拡大して、その元のサイズに復元し、これにより、解放された部分230に格納されたターゲットソフトウェアイメージ225のメモリブロックをオーバーライドする動作A14:拡大。この時点で、配置エージェント215は、コンピュータ100の電源をオフにしてからオンにする。従って、図8に示されるように、コンピュータ100はソースソフトウェアイメージ205sから再ブートし、これにより、再びソースオペレーティングシステム210sをロードする動作A15:再ブート。上述した解決法により、コンピュータは、非常に短時間のうちに、即ち、ブートブロックがハードディスク内に格納された直後に例えば、10-200メガバイトの典型的なサイズのブートブロックについては1-2分後、ターゲットソフトウェアイメージと共に使用可能状態になり、その後、ハードディスクにおけるターゲットソフトウェアイメージの他のメモリブロックが利用可能かどうかに関係なく、コンピュータの動作は完全に正常であり通常通りハードディスクから直接ブートされる、依然として外部ソースからダウンロードされるメモリブロックにコンピュータがアクセスする際、コンピュータの性能が僅かに低下するだけである性能の低下は、一度メモリブロックにアクセスできると、ますます多くのメモリブロックが既にハードディスク上で利用可能であるため、時間の経過と共に低減する。さらに、コンピュータを使用可能状態にするのに必要とされる時間は、ターゲットソフトウェアイメージのサイズに依存しない。このマイグレーション手順は、いずれの付加的なストレージ空間も必要としない。実際は、ソースソフトウェアイメージは、ハードディスク上に留まるので、ターゲットソフトウェアイメージへの適用のために、その構成情報を直接ハードディスクから収集することができる。さらに、ソースソフトウェアイメージは、ユーザがターゲットソフトウェアイメージへのマイグレーションのコミットを決定するまで、そのままの形で保持される。従って、ターゲットソフトウェアイメージは、依然として、ソースソフトウェアイメージの構成情報にアクセス可能であるマイグレーションがコミットされるまで。このように、開始時に忘れられていた場合でもターゲットソフトウェアイメージを用いたコンピュータのテストの際のいずれかの時点で、何らかの構成情報をソースソフトウェアイメージから収集し、ターゲットソフトウェアイメージに適用することが可能であり、これにより、マイグレーションプロセスの際に何らかの構成情報が失われるリスクが回避されるか又は少なくとも実質的に低減される。上述した解決法はまた、ソースオペレーティングシステムが依然としてハードディスク上で利用可能であるため、必要な場合にソースオペレーティングシステムを非常に短時間で復元することを可能にし、実際に、この操作は、ターゲットソフトウェアイメージのブートブロックを格納するために再配置されたソースソフトウェアイメージのメモリブロックを復元することしか必要としない。さらに、この解決法は、問題が起こった場合に復元するために、前もってソースソフトウェアイメージの何らかのスナップショットを取っておく必要がないこれに対応して、時間が節約される。ここで図9-図11を参照すると、マイグレーションプロセスが方法300により表される、本発明の実施形態によるマイグレーションプロセスに関連するアクティビティの流れを説明するアクティビティ図が示される。方法300は、開始黒丸302で開始し、次いで、ユーザが、コンピュータをターゲットソフトウェアイメージにマイグレートする要求を配置エージェントに提出するとすぐに、ブロック304に移る。これに応答して、ブロック306において、配置エージェントは、ソースソフトウェアイメージを縮小し、ハードディスクの部分を解放し、例えば、この結果は、まだいずれのファイルにも割り当てられていない未使用のストレージ空間を復旧することにより、又は、一時ファイルを削除することにより、ソースオペレーティングシステムの組み込み関数を用いて達成することができる。ブロック308に進むと、配置エージェントは、ターゲットソフトウェアイメージと関連して内部に指定されたように外部ソースから、ターゲットソフトウェアイメージのブートブロックをダウンロードする。例えば、MicrosoftWindowsにおいて、ブートブロックは、ストリーミングドライバに加えてマスターブート記録MasterBootRecord、MBRと、ブートセクタと、bootmgr.exeファイルと、boot\bcdファイルと、システムレジストリと、winload.exeファイルと、システムレジストリにおいて指定されるドライバファイルとを含む。この目的のために、ターゲットソフトウェアイメージが遠隔サーバのイメージリポジトリ内に格納されている場合、配置エージェントは、InternetSmallComputerSystemInterfaceiSCSIプロトコルなどに基づいて、遠隔サーバの遠隔アクセスサーバと対話する遠隔アクセスイニシエータとして働くことができる。ここでブロック310を参照すると、配置エージェントは、ターゲットソフトウェアイメージのブート位置に格納されたソースソフトウェアイメージのメモリブロックを、解放された部分内に再配置する。特定的には、ターゲットソフトウェアイメージのブート位置に格納されたメモリブロックを連続的に読み出し、解放された部分の最初のメモリ位置に、同じ順序でコピーする。引き続きブロック312に進むと、配置エージェントは、ストリーミングドライバのための制御構造で、解放された部分を初期化する。この目的のために、配置エージェントはブロックマップを作成し、このブロックマップは、ターゲットソフトウェアイメージの各メモリブロックを、それが格納されるハードディスクにおけるメモリ位置最初に、ターゲットソフトウェアイメージのメモリブロックがハードディスクにおいて利用可能でないことを示すと関連付けるために用いられる。特定的には、解放された部分より正確には、メモリ位置及び制御構造の再配置後の有用な部分が、ターゲットソフトウェアイメージ全体を格納できるサイズを有する場合、これは、ターゲットソフトウェアイメージのためのローカルリポジトリとして機能することができる。この場合、ブロックマップはビットマップとすることができ、ビットマップは、ターゲットソフトウェアイメージの各イメージアドレスについてのエントリを有し、このエントリは、対応するメモリブロックが、解放された部分内の同じ位置即ち、イメージアドレスに、ハードディスク内の解放された部分の有用な部分のオフセットを加えたものと等しいメモリアドレスを有するメモリ位置に格納されているかどうかを示す可用性フラグを含み、最初に、全ての可用性フラグは、対応するメモリブロックが解放された部分内に格納されていないことを示すようにデアサートされている。逆に、解放された部分が、ソフトウェアイメージ全体を格納することができないサイズを有する場合、これは、ターゲットソフトウェアイメージのためのローカルキャッシュとして機能することができる。この場合、ブロックマップは、ルックアップテーブルとすることができ、このルックアップテーブルは、解放された部分の有用な部分の各メモリ位置のメモリアドレスについてのエントリを有し、このエントリは、内部に格納されたターゲットソフトウェアイメージのメモリブロックのイメージアドレスと、メモリブロックが外部ソースにおける元のバージョンに対して更新されたかどうかを示す更新フラグとを含み、最初に、ルックアップテーブルの全てのエントリは、解放された部分内にメモリブロックが格納されていないことを示すためのヌルnull値と等しいイメージアドレスを有する。さらに、配置エージェントは、ターゲットソフトウェアイメージのブートアドレスを指定する、ブートリストを作成する。配置エージェントはまた、以下に説明されるような最初はゼロに設定されているコピーカウンタも作成し、このコピーカウンタは、マイグレーションがコミットされた後にハードディスク内の正しい位置にコピーされたターゲットソフトウェアイメージの最後のメモリブロックのイメージアドレスを指定する。ここでブロック314に移ると、配置エージェントは、ターゲットソフトウェアイメージのブートブロックを、そのブート位置に格納するブートリスト内に示されるように。ブロック316において、配置エージェントはコンピュータの電源をオフにしてからオンにし、コンピュータが、そのブート位置におけるターゲットソフトウェアイメージのブートブロックから再ブートするようにする。実際に、電源オンのときに実行される、コンピュータのファームウェア内に格納されるブートローダ、例えば基本入力/出力システムBasicInputOutputSystem、BIOSなどが、ハードディスクをブート可能なデバイスとして識別し、従って、BIOSはMBRをロードし、MBRはブートセクタをロードし、ブートセクタはbootmgr.exeファイルを見つけて始動し、bootmgr.exeファイルはboot\bcdを見つけて読み出し、システムレジストリ、winload.exeファイル、及びシステムレジスタにおいて指定されたドライバファイルのメモリ位置を判断し、次にこれらをロードし、次いで、winload.exeファイルは、配置エージェントのストリーミングドライバを始動し、以下に説明されるように、ターゲットソフトウェアイメージのいずれかのメモリブロックにアクセスするあらゆる要求に応えるためにターゲットオペレーティングシステムの標準的なファイルシステムドライバをオーバーライドする。引き続きブロック318に進むと、配置エージェントは、ハードディスクにアクセスし、次いでソースソフトウェアイメージにアクセスするのを可能にするようにターゲットオペレーティングシステムからコンピュータ上にハードディスクをマウントする。この時点で、配置エージェントは、ソースソフトウェアイメージのユーザの構成をターゲットソフトウェアイメージに転送し、例えば、ソースソフトウェアイメージのユーザの構成は、設定オペレーティングシステム又はアプリケーションプログラムの外観及び挙動に関するものなど、及び/又はデータ周辺ドライバ、クッキー、及びアドレス帳などを含む。この目的のために、ブロック320において、配置エージェントは、適切なマイグレーションツール、例えばWindowsにおけるUserStateMigrationToolUSMTのScanState.exeプログラムを実行することにより、ソースソフトウェアイメージの構成情報を収集する。この場合、対応するイメージアドレスにおいてソースソフトウェアイメージのメモリブロックそれぞれ、構成メモリブロック及び構成イメージアドレスと呼ばれるを読み出すマイグレーションツールによる各要求について、ブロック322において、ストリーミングドライバは、構成メモリブロックが解放された部分内に再配置されているかどうかを検証する即ち、構成イメージアドレスが、そのブートリスト内に示される、ターゲットソフトウェアイメージのブートアドレスの1つと等しい場合。再配置されている場合、ブロック324において、ストリーミングドライバは、対応する再配置されたメモリ位置を指し示すように、構成イメージアドレスを更新する。次いで、方法300は、ブロック326に下り、構成メモリ位置が再配置されていない場合には、ブロック322からも直接同じ時点に到達する。この時点で、ストリーミングドライバは、更新された可能性がある構成イメージアドレスと等しいメモリアドレスを有するメモリ位置から、構成メモリブロックを取り出す。引き続きブロック328に進むと、ストリーミングドライバは、問題となっている例におけるUSMTのLoadState.exeプログラムを実行することにより収集した構成情報をターゲットソフトウェアイメージに適用し、この目的のために、ストリーミングドライバは、ターゲットソフトウェアイメージの対応するメモリブロックをハードディスク内に書き込む以下に説明されるように。ここで、ターゲットソフトウェアイメージを実行してコンピュータ100を正常に使用することができる。特定的には、方法300は、対応する選択されたイメージアドレスにおけるターゲットソフトウェアイメージの選択されたメモリブロックを読み出す要求が例えば、アプリケーションプログラムからターゲットオペレーティングシステムに提出されるとすぐに、ブロック330に下る。読み出し要求は、選択されたメモリブロックがハードディスク上で既に利用可能になっているかどうかを検証するブロック332において、ストリーミングドライバに渡される。この目的のために、ストリーミングドライバは、最初に、選択されたイメージアドレスをブートリスト内に示されるようなターゲットソフトウェアイメージのブートアドレスと比較して、選択されたメモリブロックがブートブロックであるかどうか、そして、常に対応するブート位置に格納されているかどうかを判断する。ブートブロックでない場合、ストリーミングドライバは、選択されたイメージアドレスをコピーカウンタと比較して、選択されたイメージアドレスがコピーカウンタと等しいか又はこれを上回るかどうかを判断し、次に、選択されたメモリブロックが既にハードディスク内の正しい位置にコピーされている以下に説明されるように、マイグレーションがコミットされた後で。逆に、異なる操作が、解放された部分の動作モードに従って実施される。特定的には、解放された部分がローカルリポジトリとして動作する場合、ストリーミングドライバは、ビットマップ内の対応する可用性フラグを取り出し、選択されたメモリブロックが解放された部分内に格納されているか又は格納されていないかを判断しそれぞれ、可用性フラグがアサートされる場合又はデアサートされる場合、一方、解放された部分がローカルキャッシュとして動作する場合は、ストリーミングドライバは、ルックアップテーブルにおいて選択されたイメージアドレスを探し、選択されたメモリブロックが解放された部分内に格納されているか又は格納されていないかを判断するそれぞれ、選択されたイメージアドレスが見つかった場合又は見つからない場合。次いで、アクティビティの流れは、検証の結果に従ってブロック334で分岐する。選択されたメモリブロックがハードディスクにおいて利用可能でない場合、ブロック336において、ストリーミングドライバは、選択されたメモリブロックを外部ソースからダウンロードする。方法300は、ここで、解放された部分の動作モードに従って、代替的に実行される2つの分岐に分かれる。特定的には、解放された部分がローカルリポジトリとして動作する場合、ブロック338において、ストリーミングドライバは、選択されたメモリブロックを、解放された部分の対応するメモリ位置選択されたイメージアドレスにそのオフセットを加えたものに等しいメモリアドレスを有するに格納し、同時に、ビットマップにおける対応する可用性フラグがアサートされる選択されたメモリブロックが、今やハードディスクにおいて利用可能であることを示すために。逆に、解放された部分がローカルキャッシュとして動作する場合、ブロック340において、ストリーミングドライバは、解放された部分内の空きメモリ位置即ち、ヌル値と等しい、ルックアップテーブルにおける対応するイメージアドレスを有するを探す。ブロック342に下り、空きメモリ位置が利用可能でない場合、ブロック344において、ストリーミングドライバは、解放された部分のメモリ位置を削除evictし、削除されることになるメモリ位置は、情報のいかなる損失も回避するように、外部ソースからダウンロードされた後に更新されていないメモリブロックを格納するもの対応する更新フラグのデアサートにより示されるようなの中からのみ、例えば、最長時間未使用LeastRecentlyUsed、LRUアルゴリズムに従って選択される。次いで、方法300は、ブロック346に下り、空きメモリ位置が見つかった場合には、ブロック342からも直接同じ時点に到達する。この時点で、ストリーミングドライバは、選択されたメモリブロックを、解放された部分の最初の空きメモリ位置に格納し、同時に、ルックアップテーブルにおいて、対応するエントリが、選択されたイメージアドレスに設定され今や選択されたメモリブロックが内部で利用可能であることを示すために、対応する更新フラグがデアサートされる選択されたメモリブロックが更新されていないことを示すために。ブロック334に戻ると、代わりに、選択されたメモリブロックがハードディスクにおいて対応するブートブロックにおいて、ハードディスク内の正しい位置において、又は解放された部分において利用可能である場合、方法は、ブロック348に下る。この段階において、ストリーミングドライバは、選択されたメモリブロックをハードディスクから取り出す。特定的には、選択されたメモリブロックがブートブロックである即ち、選択されたイメージアドレスが、ブートリスト内に示されるブートアドレスの1つである場合、選択されたメモリブロックは、選択されたイメージアドレスと等しいメモリアドレスを有する対応するブート位置から取り出される。同様に、選択されたメモリブロックが既にハードディスク内の正しい位置にコピーされている即ち、選択されたイメージアドレスがコピーカウンタを下回る場合、選択されたメモリブロックは、選択されたイメージアドレスと等しいメモリアドレスを有するその正しい位置から取り出される。代わりに、選択されたメモリが解放された部分内に格納されている場合、選択されたメモリブロックは、選択されたイメージアドレスに解放された部分のオフセットを加えたものに等しいメモリアドレスを有する、解放された部分におけるメモリ位置から取り出される解放された部分がローカルリポジトリとして動作する場合か、又は、選択されたイメージアドレスを格納するルックアップテーブルのエントリと関連したメモリアドレスを有するメモリ位置から取り出される解放された部分がローカルキャッシュとして動作する場合。いずれの場合も、アクティビティの流れは、ブロック338、ブロック346、又はブロック348から、ブロック350において合流し、この時点で、ストリーミングドライバは、選択されたメモリブロックをファイルシステムドライバに戻し、ファイルシステムドライバは、次にそれをアプリケーションプログラムに戻す。方法300は、代わりに、対応する選択されたイメージアドレスにおけるターゲットソフトウェアイメージの選択されたメモリブロックを書き込む要求が、例えば、アプリケーションプログラムからターゲットオペレーティングシステムに提出されるとすぐに、ブロック352に下る。ブロック354において、書き込み要求は、ストリーミングドライバに渡され、ストリーミングドライバは、選択されたメモリブロックが、上記のようにハードディスク上で既に利用可能であるかどうかを検証する。次いで、ブロック356において、アクティビティの流れは、検証の結果に従って分岐する。選択されたメモリブロックがハードディスクにおいて利用可能でない場合、ストリーミングドライバは、上述した同じ操作を繰り返すことにより、選択されたメモリブロックをハードディスク内に格納する。特定的には、解放された部分がローカルリポジトリとして動作する場合、ブロック358において、ストリーミングドライバは、選択されたメモリブロックを、選択されたイメージアドレスにそのオフセットを加えたものに等しいメモリアドレスを有する解放された部分の対応するメモリ位置に格納し、同時に、ビットマップにおける対応する可用性フラグがアサートされる。逆に、解放された部分がローカルキャッシュとして動作する場合、ブロック360において、ストリーミングドライバは、解放された部分における空きメモリ位置を探す。ブロック362に下り、空きメモリ位置が見つからない場合、ブロック364において、ストリーミングドライバは、更新されていないメモリブロックを格納するものの中で解放された部分のメモリ位置を削除する。次いで、方法300は、ブロック366に下り、空きメモリ位置が見つからない場合、ブロック362からも直接同じ時点に到達する。この時点で、ストリーミングドライバは、選択されたメモリブロックを解放された部分の最初の空きメモリ位置に格納し、同時に、ルックアップテーブルにおいて、対応するエントリが選択されたイメージアドレスに設定され、対応する更新フラグがデアサートされる。ブロック356に戻ると、代わりに、選択されたメモリブロックがハードディスクにおいて利用可能である場合、方法は、ブロック368に下る。この段階において、ストリーミングドライバは、選択されたメモリブロックを対応するメモリ位置に格納する。特定的には、選択されたメモリブロックがブートブロックである即ち、選択されたイメージアドレスが、ブートリスト内に示されるブートアドレスの1つである場合、選択されたメモリブロックは、選択されたイメージアドレスと等しいメモリアドレスを有する対応するブート位置に格納される。同様に、選択されたメモリブロックが既にハードディスク内の正しい位置にコピーされている即ち、選択されたイメージアドレスがコピーカウンタを下回る場合、選択されたメモリブロックは、選択されたイメージアドレスと等しいメモリアドレスを有するその正しい位置に格納される。代わりに、選択されたメモリが解放された部分内に格納されている場合、選択されたメモリブロックは、選択されたイメージアドレスに解放された部分のオフセットを加えたものに等しいメモリアドレスを有する、解放された部分におけるメモリ位置に格納される解放された部分がローカルリポジトリとして動作する場合か、又は、選択されたイメージアドレスを格納するルックアップテーブルのエントリと関連したメモリアドレスを有するメモリ位置に格納される解放された部分がローカルキャッシュとして動作する場合。次いで、即時使用のためにのみコンピュータ上にダウンロードされる、ソフトウェアイメージをオンデマンドで提供するための当技術分野において周知のストリーミング技術とは違ってこのストリーミング技術は、可能な限り多くのターゲットソフトウェアイメージのメモリブロックをハードディスク上に格納することに向けられる。さらに、解放された部分がローカルリポジトリとして動作する場合、ダウンロードされたメモリブロックは、それらの使用後、コンピュータの電源がオフにされたときにも消滅することなくハードディスク上に永続的に格納されるため、次に使用するためにそれらを再びダウンロードする必要はない。ここで、ターゲットソフトウェアイメージへのマイグレーションをコミットする要求が配置エージェントに提出されると、方法300は、ブロック358、ブロック366、又はブロック368から合流することにより、ブロック370に下る。これに応答して、ブロック372において、配置エージェントは、例えば、バックアップのためにソースソフトウェアイメージのスナップショットを取ることができる。この目的のために、ソースソフトウェアイメージのあらゆるメモリブロックがハードディスクから取り出され、特定的には、メモリブロックが再配置されていない場合は対応するメモリ位置から、又は、他の場合には対応する再配置されたメモリ位置から、メモリブロックが取り出される。次いで、メモリブロックは、外部デバイス例えば、取り外し可能ディスク上に格納される。従って、この場合、実際に必要とされ得る場合にのみ、ソースソフトウェアイメージのスナップショットを取ることが可能である。次いで、ターゲットソフトウェアイメージの各メモリブロックについて、ループが実施される。ループは、上述のようなストリーミングドライバは、対応する現在のイメージアドレスコピーカウンタに1を加えたものに等しいにおけるターゲットソフトウェアイメージの現在のメモリブロックが、ハードディスク上でこの場合は、ブート位置又は解放された部分においてのみ既に利用可能であるかどうかを検証する、ブロック374で開始する。次いで、ブロック376において、アクティビティの流れは、検証の結果に従って分岐する。現在のメモリブロックがハードディスクにおいて利用可能でない場合、ブロック378において、ストリーミングドライバは、外部ソースから現在のメモリブロックをダウンロードする。逆に、アクティビティの流れは、ブロック376からブロック380に下る。この時点で、現在のメモリブロックがブートブロックでない場合、ブロック382において、ストリーミングドライバは、それを解放された部分から取り出し、特定的には、現在のメモリブロックは、現在のイメージアドレスに解放された部分のオフセットを加えたものに等しいメモリアドレスを有するメモリ位置から取り出される解放された部分がローカルリポジトリとして動作する場合か、又は、現在のイメージアドレスを格納するルックアップテーブルのエントリと関連したメモリアドレスを有するメモリ位置から取り出される解放された部分がローカルキャッシュとして動作する場合。次いで、方法300は、ブロック378又はブロック382から、ブロック384に下る。この段階において、現在のメモリブロックは、現在のイメージアドレスと等しいメモリアドレスを有する正しいメモリ位置にコピーされ、次いで、コピーカウンタが1だけ増加され、同時に、解放された部分がローカルキャッシュとして動作する場合、そのイメージアドレスをヌル値に設定することによりルックアップテーブルにおける対応するエントリが削除される。ここで、アクティビティの流れはブロック386に移り、現在のメモリブロックがブートブロックである場合、いずれの操作も実施することなく、ブロック380からも直接同じ時点に到達するこれが正しい位置に既に格納されているので。ここで、ターゲットソフトウェアイメージの全てのメモリブロックが処理されたかどうかを検証するために、テストが行われる。処理されていない場合、アクティビティの流れはブロック372に戻り、ターゲットソフトウェアイメージの次のメモリブロックに対して同じ操作を繰り返す。逆に、配置エージェントがストリーミングドライバをディスエーブルにする同じく、これをターゲットソフトウェアイメージのブートシーケンスから取り除く、ブロック388に下ることによってループが終了する。この時点で、ブロック390において、配置エージェントはコンピュータの電源をオフにしてからオンにし、もはや外部ソースを必要とせずにコンピュータを、その正常な動作のために、ターゲットソフトウェアイメージから再ブートする。このコピー手順は、コンピュータの動作に対して実質的に不透明であるように、バックグラウンドで実施することができ、このようにして、コンピュータは、ターゲットソフトウェアイメージのあらゆるメモリブロックが内部にコピーされた後、今やその正しい位置においてメモリブロックにアクセスされるという相違点だけを有した状態で、正常に作業を継続することができる。より具体的には、ターゲットソフトウェアイメージの選択されたメモリブロック対応する選択されたイメージアドレスにおけるにアクセスする読み出す又は書き込む要求がオペレーティングシステムに提出されると、そのアクセス要求は、再びストリーミングドライバに渡され、ストリーミングドライバは、選択されたメモリブロックが既にコピーされている即ち、選択されたイメージアドレスがコピーカウンタを下回るか又はこれと等しいかどうかを検証する。コピーされている場合には選択されたイメージアドレスと等しいメモリアドレスを有するメモリ位置において、選択されたメモリブロックにアクセスされ、他の場合には上述したものと同じ操作を繰り返すことにより、選択されたメモリブロックが読み出される又は書き込まれる。例えば、コンピュータの作業負荷に応じて、コピー手順の操作を繰り返すことができる。この目的のために、コンピュータの作業負荷が監視され例えば、10-100msごとに、例えば、現在のところ、いずれの操作も実施されていないためにコンピュータの作業負荷が所定の閾値を下回る場合、上述した操作を繰り返すことにより、ターゲットソフトウェアイメージの1つ又は複数のメモリブロックがコピーされる。このように、コンピュータの操作に与えるコピー手順の影響を最小にすることが可能である。その結果、コンピュータの再ブートしか必要としないためターゲットソフトウェアイメージへの実際の切り換えが非常に高速になる。代替的に、方法300は、代わりに、ひとたびソースソフトウェアイメージをロールバックする要求が配置エージェントに提出されると、ブロック358、ブロック366、又はブロック368からブロック392に下る。これに応答して、ブロック394において、配置エージェントは、再配置されたメモリ位置からこれらを連続的に読み出し、かつ、ブートリスト内に示されるように、ターゲットソフトウェアイメージの対応するブート位置に同じ順序でコピーすることによりソースソフトウェアイメージのメモリブロックを、再配置された位置からターゲットソフトウェアイメージのブート位置に復元する。次いで、ブロック396において、配置エージェントは、例えば、再び、ソースオペレーティングシステムの組み込み関数を利用することによりソースソフトウェアイメージを拡大してその元のサイズに復元し、次いで、ターゲットソフトウェアイメージのいずれかのメモリブロックをオーバーライドする。この時点で、ブロック398において、配置エージェントはコンピュータの電源をオフにしてからオンにし、コンピュータを、その正常な動作のためにソースソフトウェアイメージから再ブートするようにする。どちらの場合も、方法300は、ブロック390又はブロック398のいずれかから到達する同心の白色及び黒色の停止円399で終了する。上述した解決法は、あらゆるソフトウェアイメージのブートブロックの知識を必要とする。この目的のために、例えば、これに応じて、ソフトウェアイメージを準備することが可能である。この点に関して、本発明の実施形態による解決法に用いられる一般的なソフトウェアイメージの準備プロセスを実施するのに用いることができる主要ソフトウェアコンポーネント全体に参照記号400として示されるの役割を表す協調図を示す、図12への参照がなされる。準備プロセスは、それぞれ、参照記号415s及び430sにより示される、その作業メモリ及び大容量メモリを有するサーバコンピュータ405sを含むシステムにおいて実施される。サーバコンピュータ405sは、配置マネージャ435、例えば、IBMコーポレーションによるIBMTivoliProvisioningManagerforOSDevelopment又は、TPMforOSDのIBMTivoliProvisioningManagerforImages又はTPMfIなどを実行するIBM及びTivoliは、IBMコーポレーションの商標である。配置マネージャ435は、マスターソフトウェアイメージ又は単にマスターイメージ440のリポジトリを管理し、各々のマスターイメージ440は、対応するソフトウェアイメージの基本バージョン例えば、以前にインストールされている、ドナーコンピュータのハードディスクのコンテンツを捕捉することにより作成されたを提供し、ここで、ドナーコンピュータのいずれかの構成に関する特定のコンテンツは取り除かれている例えば、ドライバ及びレジストリ設定。サーバコンピュータ405sはまた、モデル445のリポジトリを含み、各々のモデル445は、代わりに、ソフトウェアイメージを配置する必要があるコンピュータの対応する構成についての特定のコンテンツを含む。さらに、配置マネージャ435は、データの遠隔アクセスを可能にするために、例えば、iSCSIプロトコルに基づいて遠隔アクセスサーバ450と対話する。操作者455は、対応する補助コンピュータ405aにより表される、コンピュータの特定のタイプに対するソフトウェアイメージ選択されたマスターイメージ440及び選択されたモデル445を含むを選択する動作B1:選択。補助コンピュータ405aそれぞれ、参照記号415a及び430aで示される、その作業メモリ及び大容量メモリを有するは、配置マネージャ435との対話のために、配置エージェント460を実行する。これに応答して、配置マネージャ435は、選択されたソフトウェアイメージの識別子を送ることにより、補助コンピュータ405a上の配置エージェント460をウェークアップする動作B2:ウェークアップ。その結果、配置エージェント460は、遠隔アクセスサーバ450を通じて遠隔的にアクセスするための遠隔ディスクとして即ち、問題となる例におけるiSCSIイニシエータとして働くことによって、選択されたソフトウェアイメージをマウントする。その結果、補助コンピュータ405aによる排他的アクセスのための一時的ソフトウェアイメージ又は、単に一時的イメージ465が作成され、一時的イメージ465は、単に選択されたマスターイメージ440及び選択されたモデル445のメモリブロックを指し示すインデックス構造によって、つまり、そのコピーを作成することなく、定められる。一時的イメージ465は、イネーブルにされたブロック追跡機能とともにマウントされ、アクセスされる一時的イメージ465のあらゆるメモリブロックのイメージアドレスを追跡する動作B3:マウント。この時点で、配置エージェント460は、配置エージェントのロードまでの一時的イメージ465上の補助コンピュータ405aのブートシーケンスをシミュレートする。例えば、MicrosoftWindowsにおいて、配置エージェント460は、MBRと、ブートセクタと、bootmgr.exeファイルと、boot\bcdファイルと、システムレジストリと、winload.exeファイルと、システムレジストリにおいて指定されるドライバファイルと、ストリーミングドライバとを読み出す動作B4:シミュレートされたブート。シミュレートされたブートシーケンスが完了すると、配置エージェント460は、一時的イメージ465をアンマウントする動作B5:アンマウント。次いで、配置エージェント460は、一時的イメージ465を配置マネージャ435にコミットする動作B6:コミット。これに応答して、配置マネージャ435は、単にそのインデックス構造によって定められる一時的イメージ465から新しいソフトウェアイメージ又は単に新しいイメージ470を構築する。さらに、新しいイメージ470は、シミュレートされたブート手順の間にアクセスされたメモリブロックのリストと関連付けられ、このメモリブロックは対応するブートブロックを定める動作B7:構築。当然ながら、ローカル及び特定の要求を満たすために、当業者は、上述の解決法に多くの論理的及び/又は物理的な修正及び改変を適用することができる。より具体的には、この解決法は、その1つ又は複数の実施形態を参照して、ある程度詳細に説明されているが、例えば数値に関してその形及び細部における様々な省略、置換及び変更、並びに他の実施形態が可能であることを理解すべきである。特に、本発明のより完全な理解を提供するために先の記載に示されている特定の詳細なしに、本発明の異なる実施形態が実施されてもよい。反対に、不必要な詳細によって説明を分かりにくくしないために、周知の特徴が省略又は簡略化されていることがある。さらに、開示される解決法のあらゆる実施形態と関連して記載される特定の要素及び/又は方法ステップは、一般的な設計選択の問題として、他のいずれの実施形態にも組み込まれてもよいことが明確に意図されている。例えばより多くのステップ若しくはその部分と同じ機能を有する類似のステップを用いること、必須でない幾つかのステップを除去すること、又はさらなる随意的なステップを付加することによって同じ解決法が同等の方法によって実施される場合も、類似の考察が適用される。さらに、これらのステップは少なくとも部分的に異なる順序で行われても、同時に又は交互に行われてもよい。ソフトウェアイメージは、あらゆるソフトウェアプログラム例えば、何らかのアプリケーションプログラムを有さないオペレーティングシステムのみを含むことができる。同様に、メモリブロックは、いずれの種類の情報例えば、1つ又は複数のセクタ、ファイル、ライブラリ、ディレクトリ、それらの組み合わせ又はそれらの部分を含むことができる。さらに、ターゲットソフトウェアイメージは、いずれかの同等の外部ソース例えば、取り外し可能なストレージデバイスから提供することができる。いずれの場合も、提案される技術は、異なるオペレーティングシステムをインストールするため、コンピュータを同じオペレーティングシステムの旧バージョンにダウングレードするため、災害復旧のためにコンピュータのスナップショットを復元するため、又は他のいずれかの理由のために用いることができる。同じ技術を、いずれかのブートシーケンスを有する、他のいずれかのオペレーティングシステムに適用することもできる。例えば、LinuxLinusTorvaldsの商標であるにおいて、ブートブロックは、GRBUブートローダを含むMBRと、カーネル及びinitrdファイルシステムを含む/bootディレクトリとを含む。この場合、ブートシーケンスの際に、BIOSがGRBUを含むMBRをロードし、GRBUは/bootディレクトリを見出して、カーネル及びinitrdファイルシステムをロードし、GRBUはカーネルをブートし、カーネルはinitrdファイルシステムを始動し、initrdファイルシステムはストリーミングドライバを始動する。いずれの場合にも、上述したストリーミング機能は、いずれの配置エージェントがない場合でもあらゆる同等の構造により実装することができる。さらに、例えば、補助コンピュータを実際にブートし、ブートシーケンスの間にアクセスされるメモリブロックを追跡することによってそのブートブロックを識別することによってソフトウェアイメージを異なる方法で準備することができる。提案される技術はまた、外部ソースにより提供された通りのターゲットソフトウェアイメージをインストールするために例えば、コンピュータの以前のスナップショットを復元するために用いられてもよい。この場合、ソースソフトウェアイメージのいずれの構成情報の転送を回避することも可能である。いずれの場合にも、構成情報は、他のいずれのタイプの情報例えば、アプリケーションプログラム、文書などを含むこともできる。同等の技術を用いて単に幾つかのファイルをコピーすることにより、手動でも、構成情報を、ソースソフトウェアイメージから収集すること、及び/又はターゲットソフトウェアイメージに適用することも可能である。メモリブロックをハードディスク内の正しい位置にコピーすることによりターゲットソフトウェアイメージへのマイグレーションをコミットする操作は、他のいずれかの方法で実施することもできる。例えば、コンピュータのテスト中でさえ、メモリブロックを継続的にダウンロードすることができる。さらに、単一の動作で例えば、メモリブロックがダウンロードされた後で、その全てを同時にコピーすることによりターゲットソフトウェアイメージへのマイグレーションをコミットすることも可能である。作業負荷は、他のいずれかの頻度で監視されても、又は特定の期間例えば夜間にのみ監視されてもよい。コンピュータ、サーバ、ネットワーク、又はこれらのいずれかの組み合わせに対して作業負荷が監視される場合にも、同様の考察が適用される。さらに、作業負荷に対する閾値は、いずれの他の方法で例えば、異なる重みによってその寄与を重み付けすることによって定めることができる。作業負荷が閾値を下回るときには、2つ又はそれ以上のメモリブロックが同時にダウンロードされる場合にも、同様の考察が適用される。正しい位置にコピーされる間のターゲットソフトウェアイメージのメモリブロックのコヒーレンスを保証するために、同等のアルゴリズムを実装することができる。代替的に、ターゲットソフトウェアイメージが完全にダウンロードされた後でさえ、例えば、メモリブロックの最新バージョンをダウンロードするためにストリーミングドライバを常にイネーブルな状態に保持することが可能である。ソースソフトウェアイメージへのロールバックのための他の手順が考えられる場合も、同様の考察が適用される。ハードディスクの解放された部分を、例えば、幾つかのファイルを圧縮することなどによりいずれかの他の方法で得ることも可能である。いずれの場合にも、ハードディスクの一部分例えば、その幾つかのパーティションのみを縮小することができる。ストリーミングドライバにより用いられるいずれの同等の制御構造を実装することもできる解放された部分が、ローカルリポジトリ又はローカルキャッシュとして動作する場合。本発明の各々の実施形態を実施するために用いられ得るプログラムが異なる方法で構築される場合又は付加的なモジュール若しくは機能が与えられる場合にも、類似の考察が適用される。同様に、メモリ構造は他のタイプのものとすることができ、又は、同等のエンティティ必ずしも物理的ストレージ媒体からなっていなくてもよいによって置換することができる。プログラムは、いずれかのデータ処理システムによって又はそれと関連して例えば、仮想マシン内で用いられるのに適したいずれの形を取ることもできる。特に、プログラムは、外部若しくは常駐のソフトウェア、ファームウェア、又はマイクロコード例えば、コンパイル又は解釈されるオブジェクトコード又はソースコードの形とすることができる。さらに、いずれのコンピュータ使用可能媒体において実装される製造物品としてプログラムを提供することが可能である。媒体は、プログラムを収容し、格納し、通信し、伝搬し、又は転送するのに適したいずれの要素とすることもできる。例えば、媒体は、電子、磁気、光学、電磁気、赤外線若しくは半導体のタイプのものとすることができる。このような媒体の例は、プログラムを予めロードすることができる固定ディスク、取り外し可能ディスク、テープ、カード、配線、ファイバ、無線接続、ネットワーク、放送波などである。いずれの場合にも、本発明の実施形態による解決法は、ハードウェア構造例えば、半導体材料のチップに集積されたもの、又は他の方法で構成されたものに好適にプログラムされたソフトウェア及びハードウェアの組み合わせによる実施にも適する。代替的に、このシステムは、異なる構造を有するか、又は同等の構成要素を含むか、又は他の動作特徴を有する。いずれの場合にも、そのあらゆる構成要素がさらに多くの要素に分けられてもよく、又は、2つ又はそれ以上の構成要素を組み合わせて単一の要素にしてもよい。さらに、対応する動作の並行実行をサポートために、各々の構成要素を複製することができる。異なる構成要素間のあらゆる対話は他に特に規定がない限り一般的に継続的である必要はなく、対話は直接的なものであっても、又は1つ又は複数の仲介物を通じた間接的なものであってもよいことも指摘される。特に、このシステムは、異なるアーキテクチャ例えば、広域ネットワーク、グローバルネットワーク、セルラーネットワーク、又は衛星ネットワークなどに基づくことができ、あらゆるタイプの有線及び/又は無線の接続を利用することができる。いずれの場合にも、各々のコンピュータは、別の構造を有することができ、又は類似の要素フラッシュメモリに基づく、いずれの他の大容量メモリなどを含むことができる。さらに、コンピュータを、物理マシン若しくは仮想マシンに基づくいずれかのデータ処理エンティティ例えば、PDA、携帯電話等又は複数のエンティティの組み合わせによって置換することが可能である。