(57)【要約】本発明は、ハイバネーションイメージを利用しているパソコン（ＰＣ）等の、１つまたは複数のクライアント装置（２）のオペレーティングシステム（Ｏ／Ｓ）のネットワークブートのためのステップ及び方法を提供する。１つまたは複数のクライアント装置のリモートブーティングは仮想ディスクエミュレーションを利用することによって、また、特定の好まれる実施例において、１つまたは複数のクライアント装置を適切にブートし、初期設定するために必要なネットワークサーバー（４）に存在するハイバネーション（２０）、Ｏ／Ｓ（２８）、及びアプリケーションフィルを含むデータをブロードキャスティングまたはマルチキャスティングすることによって達成される。
2005523523.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上のサーバーから１つまたは複数のクライアントコンピューターのオペレーティングシステム（Ｏ／Ｓ）をブートするための方法であって、前記サーバーがハイバネーションイメージを格納し、１つまたは複数のクライアントインターフェースを介して前記１つまたは複数のクライアントコンピューターと通信し、前記ハイバネーションイメージが前記クライアントコンピューターのためのＯ／Ｓファイルを有し：
前記サーバー上に存在するセクターの第１の組をダウンロードするために１つまたは複数の要求の第１の組を前記サーバーに発行するステップであって：
前記セクターの第１の組がハイバネーションイメージを含むハイバネーションファイルを集合的に格納し；さらに、
前記ハイバネーションファイルの個々のセクターのコンテントが予め決められた様式で前記サーバーに関連したディスクドライブからアクセスされ、前記ネットワークを介してダウンロードの要求を発行している前記１つまたは複数のクライアントコンピューターに送信されるように、前記サーバーが前記１つまたは複数の要求の第１の組への応答で、前記１つまたは複数のクライアントコンピューターのディスクドライブの挙動をエミュレートすることを特徴とし、要求の第１の組を発行するステップがさらに：
前記１つまたは複数のクライアントコンピューターがサーバーからブートファイルを受信するように前記ブートファイルを集合的に構成するセクターの第２の組をダウンロードするために、前記１つまたは複数のクライアントコンピューター上に存在するエミュレーションコード及びクライアントディスクアクセス割り込みハンドラープロシジャーを実行することによって前記サーバーに対して１つまたは複数の要求の第２の組を生成すること；
前記サーバーに対して１つまたは複数の要求の第３の組を生成して、Ｏ／Ｓドライバーを含むＯ／Ｓブートファイルを集合的に格納しているセクターの第３の組をダウンロードするために、前記１つまたは複数のクライアントコンピューターの各々で前記ブートファイル及び前記クライアントディスクアクセス割り込みハンドラープロシジャーを実行することであって、そこにおいて、前記セクターの第３の組の個々のセクターのコンテントが予め決められた様式で前記サーバーに関連したディスクドライブからアクセスされ、前記ネットワークを介してダウンロードの要求を発行している前記１つまたは複数のクライアントコンピューターに送信されるように前記サーバーが前記１つまたは複数のクライアントコンピューターのディスクドライブの挙動をエミュレートすること；及び、
前記Ｏ／Ｓブートファイルがダウンロードされた後、前記１つまたは複数のクライアントコンピューターがハイバネーションイメージファイルを集合的に構成する、送信される前記セクターの第１の組のコンテントを前記サーバーからセクターベースで受信するように、前記１つまたは複数の要求の第１の組を生成するために前記Ｏ／Ｓブートファイルを実行することを特徴とするステップ；
前記サーバーから受信した前記セクターの各々の前記コンテントを前記１つまたは複数のクライアントコンピューター上に格納するステップ；及び、
前記クライアントコンピューターの各々で前記１つまたは複数のクライアントコンピューターの前記Ｏ／Ｓの動作を使用可能な状態に再開するステップであって：
前記ハイバネーションイメージをクライアントのメモリー内に回復すること；及び、
Ｏ／Ｓに関連したドライバー、データストラクチャー、及びアプリケーションを初期化することを含むステップを含む方法。
【請求項２】
クライアントコンピューターをローカルにブートすること；
１つまたは複数の初期化ファイルをクライアントコンピューターのメモリーに保存すること；
前記クライアントコンピューターを所望の状態に初期設定すること；
前記初期設定されたコンピューターをハイバネーティングし、それによってハイバネーションファイルを生成すること；及び、
前記ハイバネーションファイル前記サーバーに格納することのステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記エミュレーションコードが各クライアントコンピューターのネットワークインターフェースに存在するＰＸＥコードである、請求項１に記載の方法。
【請求項４】
前記Ｏ／Ｓブートファイルを集合的に格納する前記セクターの第３の組を送信するステップが：
勧誘期間中にＯ／Ｓブートファイルのダウンロードを要求している１つまたは複数のクライアントコンピューターを登録すること；及び、
前記セクターの第３の組の全てのセクターがマルチキャストされるまで、各ラウンドにおいて前記サーバーが受け取る要求を発行する、異なった登録されたクライアントを指定しながら、１つまたは複数の登録されたクライアントコンピューターにセクターベースでセクターをマルチキャストすることをさらに含む、請求項１に記載の方法。
【請求項５】
前記Ｏ／Ｓブートファイルを集合的に格納する前記セクターの第３の組を送信するステップが：
勧誘期間中にＯ／Ｓブートファイルのダウンロードを要求している１つまたは複数のクライアントコンピューターを登録すること；及び、
前記セクターの第３の組の全てのセクターがブロードキャストされるまで、各ラウンドにおいて前記サーバーが受け取る要求を発行する、異なった登録されたクライアントを指定しながら、１つまたは複数の登録されたクライアントコンピューターにセクターベースでセクターをブロードキャストすることをさらに含む、請求項１に記載の方法。
【請求項６】
各クライアントが、セクターの第３の組の全ての受信されなかったセクターの再送信を個々に要求する、請求項４に記載の方法。
【請求項７】
前記Ｏ／Ｓブートファイルを集合的に格納する前記セクターの第１の組を送信するステップが：
勧誘期間中にハイバネーションファイルのダウンロードを要求している１つまたは複数のクライアントコンピューターを登録すること；及び、
前記セクターの第１の組の全てのセクターがマルチキャストされるまで、各ラウンドにおいて前記サーバーが受け取る要求を発行する、異なった登録されたクライアントを指定しながら、前記サーバーから１つまたは複数の登録されたクライアントコンピューターにセクターベースでセクターをマルチキャストすることをさらに含む、請求項１に記載の方法。
【請求項８】
前記Ｏ／Ｓブートファイルを集合的に格納する前記セクターの第１の組を送信するステップが：
勧誘期間中にハイバネーションファイルのダウンロードを要求している１つまたは複数のクライアントコンピューターを登録すること；及び、
前記セクターの第１の組の全てのセクターがマルチキャストされるまで、各ラウンドにおいて前記サーバーが受け取る要求を発行する、異なった登録されたクライアントを指定しながら、前記サーバーから１つまたは複数の登録されたクライアントコンピューターにセクターベースでセクターをマルチキャストすることをさらに含む、請求項１に記載の方法。
【請求項９】
各クライアントが前記ハイバネーションファイルに集合的に格納された前記セクターの各々の受信をアクノリッジすることまたは、セクターの第１の組の全ての受信されなかったセクターの再送信を個々に要求することのステップをさらに含む、請求項７に記載の方法。
【請求項１０】
前記サーバーにセクターシーケンスファイルが記録されている場合、記録された前記セクターシーケンスファイルに従って前記登録されたクライアントコンピューターに前記マルチキャストセクターがマルチキャストされ；
前記サーバーに前記セクターシーケンスファイルが存在しない場合、単一の登録されたクライアントを選択し、前記選択されたクライアントをブートするともに、前記ブート中に前記選択されたクライアントによって要求されたセクターの順序付けられたリスト前記セクターシーケンスファイルに記録することによって前記セクターシーケンスファイルを学習し、選択されていない登録されたクライアントに複数のセクターをマルチキャストするために前記学習したセクターシーケンスファイルを使用する、請求項４または７に記載の方法。
【請求項１１】
前記サーバーにセクターシーケンスファイルが記録されている場合、記録された前記セクターシーケンスファイルに従って前記登録されたクライアントコンピューターに前記ブロードキャストセクターがブロードキャストされ；
前記サーバーに前記セクターシーケンスファイルが存在しない場合、単一の登録されたクライアントを選択し、前記選択されたクライアントをブートするともに、前記ブート中に前記選択されたクライアントによって要求されたセクターの順序付けられたリスト前記セクターシーケンスファイルに記録することによって前記セクターシーケンスファイルを学習し、選択されていない登録されたクライアントに複数のセクターをブロードキャストするために前記学習したセクターシーケンスファイルを使用する、請求項５または８に記載の方法。
【請求項１２】
前記Ｏ／Ｓドライバーがサーバーのエミュレーションを可能にするネットワークフィルタードライバー及びストレージドライバーを含む、請求項１に記載の方法。
【請求項１３】
前記初期化のステップが：
前記ストレージドライバーによってクライアントの全てのリード及びライト要求を予めアロケートされたメモリーにキュー登録すること；
クライアントメモリーから前記ハイバネーションファイルに含まれている１つまたは複数の初期化ファイルまたはシステムファイルをリードすること；
クライアントのリード及びライト要求を受諾するためにネットワークフィルタードライバーまたは他の必要なドライバーを初期化すること；及び、
ストレージドライバーによってクライアントの全てのリード及びライト要求をキュー解除することをさらに含む、請求項１２に記載の方法。
【請求項１４】
ネットワークから１つまたは複数のクライアントコンピューターのオペレーティングシステム（Ｏ／Ｓ）をブートするための方法であって、前記ネットワークが第１サーバー上に前記クライアントコンピューターのためのＯ／Ｓファイルを有するハイバネーションイメージを格納し：
第１サーバー上に存在する複数のセクターのコンテントをダウンロードするために１つまたは複数の要求を発行するステップであって：
前記複数のセクターがハイバネーションイメージを含むハイバネーションイメージファイルを集合的に格納し；さらに、
前記ハイバネーションイメージファイルの個々のセクターのコンテントが予め決められた様式で第１サーバーに関連したディスクドライブからアクセスされ、前記ネットワークを介してダウンロードの要求を発行している前記１つまたは複数のクライアントコンピューターに送信されるように、第１サーバーが前記１つまたは複数の要求への応答で、前記１つまたは複数のクライアントコンピューターのディスクドライブの挙動をエミュレートすることを特徴とし、１つまたは複数の要求を発行するステップがさらに：
前記ハイバネーションイメージファイルに含まれているブートセクターをダウンロードするために、第１サーバーに要求を生成すること；及び、
前記ブートセクターが第１サーバーからダウンロードされた後、前記１つまたは複数のクライアントコンピューターがハイバネーションイメージファイルを集合的に構成する個々の物理的セクターの送信されたコンテントを第１サーバーからセクターベースで受信するように、前記１つまたは複数の要求を生成するために前記ブートセクターを実行することを特徴とするステップ；
第１サーバーから受信した前記セクターの各々の前記コンテントを前記１つまたは複数のクライアントコンピューター上に格納するステップ；及び、
前記１つまたは複数のクライアントコンピューターの各々で前記１つまたは複数のクライアントコンピューターの前記Ｏ／Ｓの動作を使用可能な状態に再開するステップであって：
前記ハイバネーションイメージを前記１つまたは複数のクライアントクライアントＰＣの各々のメモリー内に回復すること；及び、
前記Ｏ／Ｓに関連したドライバーを初期化することを含むステップを含む方法。
【請求項１５】
前記要求を発行するステップがさらに：
第２サーバーから第１サーバーに格納されている前記ハイバネーションファイルのアドレスを取得することを含む、請求項１または１４に記載の方法。
【請求項１６】
第１サーバー及び第２サーバーがネットワーク上で接続された同一のサーバーまたは異なったサーバーである、請求項１５に記載の方法。
【請求項１７】
ネットワークから１つまたは複数のクライアントコンピューターのオペレーティングシステム（Ｏ／Ｓ）をブートするための方法であって、前記ネットワークが第１サーバー上に前記クライアントコンピューターのためのＯ／Ｓファイルを有するハイバネーションイメージを格納し：
エミュレーションコードファイルをダウンロードするために、割り込みハンドラープロシジャーを介してクライアントディスクアクセスオペレーションを操作する前記１つまたは複数のクライアントコンピューター上に存在するエミュレーションコードの実行を介して１つまたは複数の要求の第１の組を発行するステップであって、そこにおいて、前記エミュレーションコードファイルが第１サーバーによって第１サーバーに関連したディスクドライブからアクセスされ、前記ネットワークを介して前記エミュレーションコードファイルを要求している前記１つまたは複数のクライアントコンピューターに送信されるように、第１サーバーが前記１つまたは複数のクライアントコンピューターのディスクドライブの挙動をエミュレートするステップ；
前記１つまたは複数のクライアントコンピューターの各々の第１ブートセクターを実行し、それによって：
第１サーバー上に存在する第１の複数のセクターのコンテントをダウンロードするために第１サーバーに１つまたは複数の要求の第２の組を発行することであって、そこにおいて、第１の複数のセクターがＯ／Ｓブートファイルを集合的に格納し；さらに、
前記第１の複数のセクターが第１サーバーによって第１サーバーに関連したディスクドライブからアクセスされ、前記ネットワークを介して前記第１の複数のセクターを要求している前記１つまたは複数のクライアントコンピューターに送信されるように、第１サーバーが前記１つまたは複数の要求の第２の組への応答で、前記１つまたは複数のクライアントコンピューターのディスクドライブの挙動をエミュレートすることを可能にするステップ；
前記１つまたは複数のクライアントコンピューターの各々で前記Ｏ／Ｓブートファイルを実行し、それによって：
Ｏ／Ｓローダーをロードし；
第１サーバーに存在する第２の複数のセクターのコンテントをダウンロードするために、第１サーバーに１つまたは複数の要求の第３の組を発行することであって、そこにおいて、第２の複数のセクターが前記ハイバネーションイメージを集合的に格納し；さらに、
前記第２の複数のセクターが第１サーバーによって第１サーバーに関連したディスクドライブからアクセスされ、前記ネットワークを介して前記第２の複数のセクターを要求している前記１つまたは複数のクライアントコンピューターに送信されるように、第１サーバーが前記１つまたは複数の要求の第３の組への応答で、前記１つまたは複数のクライアントコンピューターのディスクドライブの挙動をエミュレートすることを可能にするステップ；
第１サーバーから受信した前記セクターの各々の前記コンテントを前記１つまたは複数のクライアントコンピューター上に格納するステップ；
前記ハイバネーションイメージを前記１つまたは複数のクライアントクライアントＰＣの各々のメモリー内に回復するステップ；及び、
前記１つまたは複数のクライアントコンピューターの前記Ｏ／Ｓの動作を使用可能な状態に再開するステップを含む方法。
【請求項１８】
ネットワーク上のサーバーから１つまたは複数のクライアントコンピューターの１つまたは複数のオペレーティングシステム（Ｏ／Ｓ）をブートするための方法であって、前記サーバーが１つまたは複数のハイバネーションイメージを格納し、１つまたは複数のクライアントインターフェースを介して前記１つまたは複数のクライアントコンピューターと通信し、前記ハイバネーションイメージが前記クライアントコンピューターのためのＯ／Ｓファイルを有し：
第１ハイバネーションイメージを所望しているクライアントコンピューターの第１の組のために、前記サーバー上に存在するセクターの第１の組をダウンロードするために１つまたは複数の要求の第１の組を発行するステップであって：
前記セクターの第１の組がハイバネーションイメージを含む第１ハイバネーションファイルを集合的に格納し；さらに、
前記ハイバネーションファイルの個々のセクターのコンテントが予め決められた様式で前記サーバーに関連したディスクドライブからアクセスされ、前記ネットワークを介してダウンロードの要求を発行している前記クライアントコンピューターの第１の組に送信されるように、前記サーバーが前記１つまたは複数の要求の第１の組への応答で、前記クライアントコンピューターの第１の組のディスクドライブの挙動をエミュレートすることを特徴とし、要求の第１の組を発行するステップがさらに：
前記クライアントコンピューターの第１の組がサーバーからブートファイルを受信するように、前記ブートファイルを集合的に構成するセクターの第２の組をダウンロードするために、前記クライアントコンピューターの第１の組に存在するエミュレーションコード及びクライアントディスクアクセス割り込みハンドラープロシジャーを実行することによってサーバーに１つまたは複数の要求の第２の組を生成すること；
前記サーバーに対して１つまたは複数の要求の第３の組を生成して、Ｏ／Ｓドライバーを含むＯ／Ｓブートファイルを集合的に格納しているセクターの第３の組をダウンロードするために、前記クライアントコンピューターの第１の組の各々で前記ブートファイル及び前記クライアントディスクアクセス割り込みハンドラープロシジャーを実行することであって、そこにおいて、前記セクターの第３の組の個々のセクターのコンテントが予め決められた様式で前記サーバーに関連したディスクドライブからアクセスされ、前記ネットワークを介してダウンロードの要求を発行している前記クライアントコンピューターの第１の組に送信されるように、前記サーバーが前記クライアントコンピューターの第１の組の各々のディスクドライブの挙動をエミュレートすること；及び、
前記Ｏ／Ｓブートファイルがダウンロードされた後、前記クライアントコンピューターの第１の組の各々が第１ハイバネーションイメージファイルを集合的に構成する、送信される前記セクターの第１の組のコンテントを前記サーバーからセクターベースで受信するように前記１つまたは複数の要求の第１の組を生成するために前記Ｏ／Ｓブートファイルを実行することを特徴とするステップ；
先行のステップと同様に、第２のハイバネーションイメージを所望しているクライアントコンピューターの第２の組のために要求を発行するステップ；
前記サーバーから受信した前記セクターの各々の前記コンテントを前記クライアントコンピューターの第１の組及び第２の組の各コンピューターに格納するステップ；及び、
前記クライアントコンピューターの第１の組及び第２の組の各コンピューターの前記Ｏ／Ｓの動作を使用可能な状態に再開するステップであって：
前記所望のハイバネーションイメージをクライアントのメモリー内に回復すること；及び、
前記Ｏ／Ｓに関連したドライバー、データストラクチャー、及びアプリケーションを初期化することを含むステップを含む方法。
【請求項１９】
ネットワーク上のサーバーから１つまたは複数のクライアントコンピューターのオペレーティングシステム（Ｏ／Ｓ）をブートするための装置であって、前記サーバーがハイバネーションイメージを格納し、１つまたは複数のクライアントインターフェースを介して前記１つまたは複数のクライアントコンピューターと通信し、前記ハイバネーションイメージが前記クライアントコンピューターのためのＯ／Ｓファイルを有し：
１つまたは複数のクライアントコンピューターであって：
プロセッサー；及び、
実行可能なインストラクションを格納するための、前記プロセッサーと通信可能なメモリーを備え：
前記プロセッサーが前記インストラクションへの応答で：
第１サーバー上に存在するセクターの第１の組をダウンロードするために１つまたは複数の要求の第１の組を第１サーバーに発行することであって：
前記セクターの第１の組がハイバネーションイメージを含むハイバネーションファイルを集合的に格納し；さらに、
前記サーバーが前記１つまたは複数の要求の第１の組への応答で、前記１つまたは複数のクライアントコンピューターのディスクドライブの挙動をエミュレートすることを特徴とし、要求の第１の組の発行がさらに：
前記ブートファイルを集合的に構成するセクターの第２の組をダウンロードするために、前記１つまたは複数のクライアントコンピューター上に存在するエミュレーションコード及びクライアントディスクアクセス割り込みハンドラープロシジャーを実行することによってサーバーに１つまたは複数の要求の第２の組を生成し；
前記サーバーに対して１つまたは複数の要求の第３の組を生成して、Ｏ／Ｓドライバーを含むＯ／Ｓブートファイルを集合的に格納しているセクターの第３の組をダウンロードするために、前記１つまたは複数のクライアントコンピューターの各々で前記ブートファイル及び前記クライアントディスクアクセス割り込みハンドラープロシジャーを実行することであって、そこにおいて、前記サーバーが前記１つまたは複数のクライアントコンピューターのディスクドライブの挙動をエミュレートし；さらに、
前記Ｏ／Ｓブートファイルがダウンロードされた後、前記１つまたは複数のクライアントコンピューターがハイバネーションイメージファイルを集合的に構成する、送信される前記セクターの第１の組のコンテントを前記サーバーからセクターベースで受信するように、前記１つまたは複数の要求の第１の組を生成するために前記Ｏ／Ｓブートファイルを実行することを特徴とし；
前記サーバーから受信した前記セクターの各々の前記コンテントを格納し；さらに、
前記クライアントコンピューターの各々で前記Ｏ／Ｓの動作を使用可能な状態に再開することであって、前記ハイバネーションイメージをクライアントのメモリー内に回復し、さらに、Ｏ／Ｓに関連したドライバー、データストラクチャー、及びアプリケーションを初期化することを特徴とする１つまたは複数のクライアントコンピューター；及び、
サーバーであって：
サーバープロセッサー；及び、
実行可能なインストラクションを格納するための、前記サーバープロセッサーと通信可能なサーバーメモリーを備え：
前記サーバープロセッサーが前記インストラクションへの応答で：
前記サーバーに関連したディスクドライブから予め決められた様式でセクターの第１の組にアクセスし；
セクターの実際のソースが前記１つまたは複数のクライアントコンピューターに対して透明になるように、予め決められた勧誘期間の後、前記ネットワークを介して、セクターの第１の組のダウンロードを要求している前記１つまたは複数のクライアントコンピューターに前記セクターの第１の組を送信し；
前記サーバーに関連したディスクドライブから予め決められた様式でセクターの第２の組にアクセスし；
前記ネットワークを介して、セクターの第２の組のダウンロードを要求している前記１つまたは複数のクライアントコンピューターに前記セクターの第２の組を送信し、
前記サーバーに関連したディスクドライブから予め決められた様式でセクターの第３の組にアクセスし；さらに、
セクターの実際のソースが前記１つまたは複数のクライアントコンピューターに対して透明になるように、予め決められた勧誘期間の後、前記ネットワークを介して、セクターの第３の組のダウンロードを要求している前記１つまたは複数のクライアントコンピューターに前記セクターの第３の組を送信することを特徴とするサーバーを備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はハイバネーションイメージを利用したパソコン（ＰＣ）等の、１つまたは複数のクライアント装置上のオペレーティングシステムＯ／Ｓのネットワークブーティング（または、ブート処理）に関する。詳細に述べると、本発明は仮想ディスクエミュレーションを利用することによって、また、特定の実施例において、１つまたは複数のクライアント装置を適切にブートし、初期設定するために必要なネットワークサーバー上に存在するハイバネーション、Ｏ／Ｓ、及びアプリケーションフィルを含むデータをブロードキャスティングまたはマルチキャスティングすることによってクライアント装置の遠隔ブーティングを促進する。
【背景技術】
【０００２】
コンピューターネットワークはオフィスや企業の他の環境においてパソコン（ＰＣ）を相互接続するために使用されている。ＰＣの使用の拡大とともに、コンピューターファイルの共有化及びインストール後の各ＰＣの管理の促進に対する要求が増している。多数のＰＣから成るネットワークにおいて、組織が、各ＰＣを実際に訪問及びサービスするためのＩＴ用人員を保有することは非常にコストがかかることである。このようなコストを抑えるために、ソフトウェア及びコンピューターの製造業者はソフトウェア製品をネットワークサーバーで集中的に維持し、ネットワークを介して各クライアントＰＣに所望のソフトウェアをダウンロードするための技術を開発している。
【０００３】
組み込み型のインテリジェント接続された装置の設計者及び製造者はコストを削減し、管理性及び信頼性を向上させ、展開を促進し、装置内の知的財産を保護するための方法を模索している。これらを達成する１つの方法はクライアントＰＣがネットワークからブート（または、起動）される能力を導入することである。ＰＣのブートプロセスの目的は必要なオペレーティングシステム要素をロードし、ハードウェア装置を初期化し、ユーザーにアプリケーションを提示すことである。これは長い処理であり、通常の条件下において、ハードウェアまたはソフトウェアの初期設定の変化及び認可されたユーザーの変化を考慮する必要がある。ネットワークブートは、ＰＣに関連した（または、ＰＣに直接接続した）ハードウェアが固定的であり、クライアントＰＣの役割がたびたび変化しない状況により適している。ネットワークブートはＰＣのハードディスクの除去を可能にし、ソフトウェアコンテントの中央管理を促進する。現状のネットワークの帯域（10/100Mbs及び1Gbs）はクライアントＰＣのローカルハードディスクの速度に達していないので、クライアントＰＣのオペレーティングシステム（Ｏ／Ｓ）の遠隔的な「コールドブート」は効率的ではなく、非常に時間がかかる。さらに、ネットワークの有効な帯域幅及びネットワークサーバーのリソースは多数のクライアント装置を同時にブート（「ブートストーム」）しようとしたときにさらに悪化する可能性がある。「コールドブート」のために必要な長い時間は通常の組み込み型装置の認知及び挙動の魅力を奪う。したがって、ネットワーク上のローディングサーバー（または、ロード用サーバー）からの複数のクライアント装置のブーティングをスピードアップするスケーラブルな（または、拡張及び縮小が容易な）方法が要求されている。
【０００４】
基本入出力システム（ＢＩＯＳ）、ＰＣ、及びＯ／Ｓの製造者は「ハイバネーション」と呼ばれる技術を導入した。ハイバネーションにおいて、全てのＰＣのメモリー及び状態はディスクにセーブされ、その後、特定の時間後に回復される。ハイバネーションはバッテリーの電力を節約するために、主に、ノート型パソコンで使用されている。例えば、「ハイバーネートモード」に設定されたノート型パソコンは、それの蓋が閉じられたときに、または特定の無活動時間が経過した後に、それの状態をそれのローカルハードディスクにセーブし、電源をオフし、蓋が開けられたときにそれ自体を回復する。ハイバネーションの本来の目的はバッテリーを節約することであるが、それはＰＣが完全な「コールドブート」を実施したときよりも素早く、ハイバネーション前のＰＣの状態に戻ることを可能にする。ノート型パソコンに電力が再印加されたとき、パソコンはＯ／Ｓの非常に少ない部分だけをロードすればよい。Ｏ／Ｓはハイバネーションイメージが有効であるかをチェックする。ハイバネーションイメージが存在する場合、Ｏ／Ｓはハイバネーションファイルに保存されたメモリーのコンテント（または、内容）をＰＣのメモリーにコピーし直す。ハイバネーションイメージが存在しない場合は、通常の「コールドブート」処理が開始される。ここでハイバネーションイメージを使用したハイバネーションの「再開（または、回復）」がより少ないデータの初期化を必要とし、それにより、ＰＣが「コールドブート」を実施されるよりも素早く所望の状態に戻れるとうい長所を持つことに注意する必要がある。
【０００５】
従来技術のシステムは、ネットワーク上のブートイメージからクライアント装置を遠隔的にブートすることに関連した長いブート時間を解決するための手法を提示している（例えば、特許文献１参照）。しかしながら、この特許は各クライアントＰＣのローカル格納媒体に格納されたハイバネーションイメージから再生し、一種のリセットにしたがうことを教授している。この手法はクライアントＰＣがハイバネーションの前にＰＣの所望の状態の全ての再設定を実施することを必要とし、サーバーが多数のクライアントＰＣが接続されたネットワーク上で、対応する複数のクライアントＰＣに複数のハイバネーションイメージを個々に転送するのでネットワークの衝突を引き起こす可能性がある。
【０００６】
従来のシステムには、サーバーへのネットワーク接続を介してクライアントコンピューター上の３２ビットＰＣオペレーティングシステム（Ｏ／Ｓ）をブートするためにディスクエミュレーションを使用する装置及び方法を使用しているものもある（例えば、特許文献２参照）。詳細に述べると、この特許はクライアントのＯ／Ｓがそれ自体でネットワーク処理を実施することができるようになるまで、「ガタピシモード（thunking）」と呼ばれる、ウィンドウズ９ｘＯ／Ｓの３２ビット保護モード処理とＢＩＯＳによって使用される１６ビットリアルモードとの間での（各ディスクＩ／Ｏコールでの）スイッチングの方法を教授している。この方法及び装置はＯ／Ｓを含むクライアントＰＣ上で望まれるソフトウェアアプリケーションの完全なイメージのダウンロードによる、サーバーからのウィンドウズ９５等のＯ／Ｓのブートに特に適している。しかしながら、この特許はMicrosoft Corporationの最近のＯ／Ｓのバージョン、すなわち、保護モードで動作するウィンドウズ２０００及びウィンドウズＸＰで有効なハイバネーション機能の長所を考えに入れていない。また、この特許は本発明の特徴の１つである、特定の好まれる実施例においてハイバネーションファイルを含む、所望のデータの、ネットワーク上の複数のクライアントＰＣへのマルチキャスティングの使用を考えに入れていない。
【０００７】
【特許文献１】米国特許第６１０１６０１号明細書
【特許文献２】米国特許第５９７４５４７号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は仮想ディスクエミュレーションを利用してネットワークサーバー上に格納されたハイバネーションイメージからの１つまたは複数のクライアントＰＣ上のＯ／Ｓのブーティング（または、ブート処理）のためのシステム及び方法を提供する。
【課題を解決するための手段】
【０００９】
本発明の特定の好まれる実施例において、ハイバネーションイメージ及びいくつかのＯ／Ｓファイルを含むハイバネーションファイル等の、ブート処理を進めるために必要なデータは後で説明されるように（また、本出願人のもう１つの特許出願である国際公開第０３／０９００７３号「System for and Method of Streaming Data to a Computer in a Network」に説明されているように）、ネットワークサーバーから同期的に（または、同時的に）ストリームされる（または、データ転送される）。（上述の出願の内容はその全体が本願に参照として組み込まれるものとする。）
【００１０】
１つまたは複数のＰＣは各々マイクロソフトウィンドウズ２０００及びＸＰ等の、ハイバネーションをサポートするＯ／Ｓを動作させる。独創的なソフトウェアドライバーは少なくとも部分的にネットワークサーバーから、ハイバネーションファイルを集合的に（または、共同的に）構成する複数のセクター（データパケット）を受諾（または、受信）することによって、各クライアントＰＣを使用可能な状態に回復（または、再開）することを援助するように動作する。ブート処理の初期の段階でのディスクアクセスのための要求（または、リクエスト）は初めに、ＰＸＥサービスを使用して各クライアントからネットワークにリダイレクトされる（または、向け直される）。ＰＸＥコードは各クライアントとサーバーとの間に初期の仮想接続を確立し、サーバーがクライアントのもう１つのドライブとして認識されることを可能にするだろう。ＰＸＥコードは付加的なエミュレーションコードのダウンロードを援助し、それ（すなわち、ダウンロードされたエミュレーションコード）は次に、ハイバネーションファイルのダウンロードを援助するＯ／Ｓコードをダウンロードする。ブート処理の初期段階中、クライアントＯ／Ｓにサポートされたネットワークアクセスを与えるために不十分なＯ／Ｓ要素がロード及び起動される。結果として、クライアントのハードディスクアクセス要求はInt 13hハンドラー及びダウンロードされたエミュレーションコードを介して操作される。Ｏ／Ｓのブートの約２５％において、Ｏ／Ｓは独創的なドライバーを使用してサーバーとの通信の制御を引き受け、ＢＩＯＳInt 13hサービスに対する必要性を効果的に回避する。
【００１１】
もう１つの実施例において、ネットワークサーバーからダウンロードされたデータはネットワークサーバーに関連した（または、サーバーに直接接続した）格納装置の複数のセクターから予め決められた様式で回復（または、検索）されてもよい。動作中、１つまたは複数のクライアントＰＣは複数のセクターのダウンロードに対する複数の要求（または、リクエスト）を発行する。要求は一時的にクライアントＰＣの各々のローカルディスクの動作をエミュレートするサーバーに転送（または、送信）される。１つの実施例において、ネットワークサーバーはサーバーに関連した仮想ハードディスクから所望のデータを、要求を発行しているクライアントの各々にブロードキャストする。もう１つの実施例において、ネットワークサーバーはサーバーに関連した（または、サーバーに直接接続した）仮想ハードディスクから所望のデータを、要求しているクライアントの各々に同時的にマルチキャストする。サーバーは好まれるものとして、マルチキャスティングの前の、予め決められた勧誘期間中（または、インビテーション期間中）にダウンロード要求を受諾（または、受信）する。
【００１２】
特定の実施例において、エミュレーションはクライアントＰＣの各々に存在するエミュレーションコードを実行することによって達成される。好まれるものとして、エミュレーションコードは各クライアントＰＣのネットワークインターフェースカード（ＮＩＣ）上に存在する実行時前ブート環境（ＰＸＥ（pre-execution boot environment））コードである。代替的な実施例において、エミュレーションは実行されたときに割り込み操作プロシジャー（Int 13h）によってディスクアクセス制御を引き受け、所望のデータを要求する、ネットワークサーバーからダウンロードされた独創的なブートコードの結果である。もう１つの実施例において、エミュレーションは（好まれるものとして、ウィンドウズ２０００、ＮＴ、またはＸＰである）Ｏ／Ｓの一部、及び、同様にクライアントのネットワークインターフェースの制御を引き受け、所望のデータを要求する、ネットワークサーバーからダウンロードされた２つの独創的なドライバーを実行することによって各クライアントＰＣで達成される。ストリームされるデータ（または、転送されるデータ）はネットワークサーバーからダウンロードを要求しているクライアントＰＣへの、バーストモードでのマルチキャストまたはブロードキャストであってもよい。それゆえ、データは各クライアントＰＣに冗長的に送信されるのではなく、一度だけ送信されればよい。データセクターは各クライアントで受信されるので、それらは独創的なドライバーによって予めアロケートされたデータキャッシュにキュー登録（または、キューイング）される。これは各クライアントがＯ／Ｓデータストラクチャー、ドライバー、及び（または）アプリケーションを初期化する等の、他の動作に専念することを可能にする。
【発明の効果】
【００１３】
本発明はクライアント装置がハードディスクとともに構成されなくてもよいので、必要とするハードウェアが少ない。本発明はまた、クライアントＰＣが同一のハイバネーションイメージをブートすることを可能にする。これは各クライアントが同一のＯ／Ｓやアプリケーションの複製を実行する必要がないので、各クライアント装置の維持を容易にする。例えば、ソフトウェアのアップグレードはクライアントＰＣの数にかかわらず、単一のハイバネーションイメージでのみ実施されることを必要とする。ハイバネーションイメージは複数のクライアントにマルチキャストされるので、例えば、多数のクライアントが同時にブートしようとしたとき等の、トラフィックのピーク時に、ネットワークのトラフィックが大幅に減少される。したがって本発明の解決法は増大する数のクライアントＰＣをブートするために必要なリソースが少ないので、非常にスケーラブル（または、拡張及び縮小が容易）である。
【発明を実施するための最良の形態】
【００１４】
以下に、本発明の特定の好まれる実施例を図面とともに説明する。
本願において用語「ハイバネーション」はＰＣが「ポーズ（または、休止）」した状態でＰＣの電力がオフにされることを意味する。ＰＣがオフにされている間、電力はそれの全てまたはほとんどの構成要素から除去される。そして、ＰＣがオンに戻されると、または「再開（または、回復）」されると、ＰＣはそれがオフされたときと同じ状態の通常の動作に戻る。Microsoft Corpの米国特許No.6,209,088等に記載されている「ハイバネーション機能」はＰＣがオフされる直前に呼び出され、全てのプログラム実行を中断し、ＰＣの全ての状態情報を非揮発性の格納装置に「ハイバネーションイメージ」としてセーブする。「再開機能」は揮発性メモリーから実行され、通常、Ｏ／Ｓ及び（または）Ｏ／Ｓによって始動されるアプリケーションプログラムによって使用されるのと同じ実行可能アドレス空間から実行されるコードによって実施される。以下に説明する本発明の特定の環境において、「ハイバネーションファイル」はＯ／Ｓドライバー等のＯ／Ｓファイル及び、ハイバネーション機能の始動の前にＰＣの揮発性メモリーに読み込まれる初期化ファイルを含む。
【００１５】
本願で使用される用語「ＭＢＲ（Master Boot Record）（または、マスターブートレコード）」、「ストレージドライバー（または、格納装置ドライバー）」、及び「ネットワークフィルタードライバー」は出願人によって開発されたブートストラッピングソフトウェアモジュールを意味する。出願人以外の人によって開発されたソフトウェアモジュールを差別化するために、「Ｏ／Ｓ」等の従来の慣例的なモジュール名を採用する。また、用語「仮想ドライブ」、「ブートドライブ」及び「サーバードライブ」は以下の記述において同義的に使用される。
【００１６】
図１に示されているネットワークコンピューター環境は企業のネットワークまたはクライアント／サーバーコンフィグレーションであってもよく、そこにおいて、ＰＣ２のいずれかがファイルサーバーまたはネットワークサーバー４として機能してもよい。ネットワークサーバー４は比較的小さいＰＣから大きなメインフレームを含む、通常のタイプのシステムであってもよい。以下に説明する特定の実施例において、サーバー４は１つまたは複数のバス１６によって接続された１つまたは複数の中央処理ユニット（ＣＰＵ）６、ハードディスク８、それ自体のＢＩＯＳ１８を備えたリードオンリーメモリー（ＲＯＭ）１０、ランダムアクセスメモリー（ＲＡＭ）１２、及びネットワークアダプター１４を備える中間的なコンピューターである。当業者にとって明白であるだろうが、ＢＩＯＳ１８はネットワークサーバー内の構成要素間の情報の伝達を援助する基本的なルーチンの組である。以下に説明する特定の実施例において、ネットワークサーバーのハードディスク８はハイバネーションイメージ及び特定のＯ／Ｓファイル等から成るハイバネーションファイル２０、セクターシーケンスファイル２２、ＭＢＲ２４等の多様なマイクロインストラクションコード、ストリーミングモジュール２６、及び、少なくともネットワークフィルタードライバー３０及びストレージドライバー（または、格納装置ドライバー）３２を含むＯ／ＳＭＢＲ２８等のＯ／Ｓファイルを格納する。
【００１７】
選択的に、１つまたは複数の付加的なサーバー３４がネットワークに接続され、第１サーバー４及びクライアントＰＣ２と通信してもよい。マルチサーバーネットワークの場合、クライアントモジュール３６（例えば、ＨＰＰＣ）が第１サーバー４内に存在し、クライアント装置からの要求への応答で、どの付加的なサーバー３４がクライアントアドレッシング情報及びダウンロード情報を含むかを指定してもよい。
【００１８】
１つまたは複数のクライアント装置２はネットワーク上のネットワークルーターまたはネットワークスイッチ３８を介してサーバー４に接続される。物理的な接続はケーブル、スイッチ式電話線、無線及び赤外線スペクトルで動作するワイヤレス装置、及び他の手段を含む多様な形式のいずれであってもよい。クライアント装置及びサーバーは標準的な通信プロトコルを使用して互いにデータを伝送する。マイクロソフトウィンドウズ２０００及びウィンドウズＸＰ等のマイクロソフトハイバネーション機能をサポートするＯ／Ｓ４０は適当な数のＯ／Ｓモジュール及びＯ／Ｓドライバーが起動したとき、各クライアント装置の物理的な機能または設備を管理する。各クライアント装置はインテルコーポレイションによって製造されているｘ８６ファミリーマイクロプロセッサー等の、ＣＰＵ４２を備えている。各クライアントはまた、ＢＩＯＳ４８を格納しているＲＯＭ４６及びＲＡＭ５０を含むローカルメモリー４４、ローカル格納装置（または、ローカルストレージ）５２、及びシステムバス５６によってＣＰＵに接続しているネットワークアダプター５４を含む。
【００１９】
図１はまた、適当な数のセクターがダウンロードされ、それらが含むコードが実行された後の、クライアントのＲＡＭ５０の一部を図示している。示されているように、ＲＡＭ５０はダウンロードされたＯ／Ｓ４０、Ｏ／Ｓドライバー７６、Ｏ／Ｓローダー７８、ネットワークフィルタードライバー３０、ストレージドライバー（または、格納装置ドライバー）３２、及びＯ／Ｓネットワークスタック６８を含んでもよい。いくつかの実施例において、ＲＡＭ５０はまた、ハイバネーションファイル２０及びWIN32.SYS７２等の、システムユーティリティー機能を与えるカーネルバイナリー（kernel binary）のコピーを含む。図２を参照すると、各クライアントのネットワークアダプター５４は好まれるものとして、クライアントのハードウェアとネットワークとの間にデータリンクを与えるネットワークインターフェースカード（ＮＩＣ）である。各ＮＩＣ５４はクライアントシステムバス５６に接続するためのバスインターフェース５８、ネットワークに接続するための１つまたは複数のネットワークコネクター６０を含む。ネットワークコネクター６０はＬＡＮまたはＷＡＮに対応するものであってもよい。ＮＩＣ５４にはまた、ＮＩＣの固有デスティネーションアドレスを格納するためのランダムアクセスメモリー（ＲＡＭ）６２及び、ＰＸＥエミュレーションコード６６を格納するための選択的ＲＯＭ（ＯＰＲＯＭ）６４が備えられている。デスティネーションアドレスは各クライアント２がネットワーク上の他のコンピューターによって個々にアドレッシングされることを可能にする。
【００２０】
ブートＮＩＣ（BootNIC）基本アーキテクチャ
本発明は１つの側面において、ウィンドウズ２０００及びウィンドウズＸＰ等のハイバネーション機能をサポートするＯ／Ｓがネットワーク上でブート（または、起動）されることを可能にし、もう１つの側面において、ハイバネーションをサポートする、または、サポートしないＯ／Ｓのデータの同期的なストリーミング（または、データ伝送）を可能にする、ここで出願人によってブートＮＩＣ技術と呼ばれるシステム及び方法を提供する。ブートする各クライアントは初めに、ＰＸＥサービスを使用してサーバー４と通信する。ＰＸＥコード６６は各クライアントとサーバーとの間に最初にエミュレートされる「仮想ドライブ」を確立する。ＰＸＥ（実行時前ブート環境）サービスはＭＢＲ（マスターブートレコード）コード３３がリード要求をサーバーに送ることを可能にし、それによって、サーバーに存在するハイバネーションファイル２０が、各クライアントのＣＰＵ４２によって、ローカルクライアントのハードディスク５２に格納することができる複数のデータセクターとして認識されることを可能にする。ブートストラッピングの初期の段階中、ＢＩＯＳ割り込みハンドラーサービスはリアルモードでのみ動作するので、エミュレーションはＭＢＲコード３３のリアルモードの実行によって与えられる。処理の後半は、Ｏ／Ｓのカーネルコード及び（ガタピシモード（thunking）が発生しない）保護モードでのみ実行されるストレージドライバー３２及びネットワークフィルタードライバー３０によってエミュレーションが与えられる。
【００２１】
図３はネットワークフィルタードライバー３０及びストレージドライバー（または、格納装置ドライバー）３２がネットワークサーバーからダウンロードされ、実行された後の、クライアントのローカルメモリー４４の一部をブロック図で図示している。ネットワークフィルタードライバーの唯一の役割はブートＮＩＣに特有（BootNIC specific）であるデータパケットを特定するために、クライアントのＮＩＣ５４を介してネットワークからＯ／Ｓネットワークスタック６８に送られる全てのデータパケットを監視し、前記特有のデータパケットがネットワークスタック６８に送られないように遮断し、代わりにそれらのパケットをストレージドライバー３２に送ることである。ストレージドライバー３２は次に、マウントマネジャー（Mount manager）、ボリュームマネジャー（Volume manager）、及びパーティションマネジャー（Partition manager）等の、格納のための役割を持つウィンドウズの多様なマネジャー７０と通信する。ネットワークデータパケットがブートＮＩＣ特有（BootNIC specific）でない場合、データパケットは影響を受けずにＯ／Ｓネットワークスタック（Network stack）６８に送られる。当業者にとって明白であるだろうが、データパケットには以下の３つの異なった種類がある。（１）ブロードキャストパケット、ネットワーク上の全てのコンピューターにアドレッシングされるパケット。（２）マルチキャストパケット、２つ以上であるが、必ずしもネットワーク上の全てのコンピューターではない、コンピューターにアドレッシングされるパケット。（３）直接アドレス指定パケット、特定のクライアント装置だけにアドレッシングされるパケット。本発明に従うシステムはこれらのいずれのデータパケット伝達手段を利用してもよい。
【００２２】
本発明は、クライアントが（オペレーティングシステムの有無にかかわらず）事前ブート環境（ＰＸＥ）でネットワークと相互作用するための、予想可能で相互運用可能な方法を作成するための努力の結果である、事前ブート実行環境（ＰＸＥ（pre-boot execution environment））として知られている、広く利用されているスペックの長所を利用する。ＰＸＥの現在のバージョンはWired for Management（WfM）のインテル主導産業イニシアチブとして確立されたものである。ＰＸＥはインテルアーキテクチャーベースのシステムのブートファームウェアとともに事前ブート（pre-boot）サービスの共通及び首尾一貫的な組を確立する、以下の３つの技術を包含する。（ｉ）クライアント２がネットワークのＩＰアドレスのアロケートを要求し、結果的に、ネットワークブートサーバー４からブートストラッププログラム（ＭＢＲ２４及びＯ／ＳＭＢＲ２８）のダウンロードを要求するための一律的なプロトコル。（ｉｉ）ＢＩＯＳ４８またはブートストラッププログラムによって利用可能なサービスの首尾一貫的な組を構成するクライアント２のファームウェア環境の事前ブートで利用可能なＡＰＩの組。（ｉｉｉ）クライアントＰＣでＰＸＥプロトコルを実行するための事前ブートファームウェアを始動する標準的な方法。
【００２３】
ＰＸＥスペックの使用はクライアントのＮＩＣ５４がブート装置として働くことを可能にする。それはまた、ＢＩＯＳ４８がＰＯＳＴ処理前または処理中にＯＰＲＯＭ６４上に格納されたＮＩＣコードを直接的に使用することを可能にする。本発明は、特定の実施例において、選択的にブートサーバーディスカバリー（boot server discovery）のＰＸＥ特徴の長所を利用する。この特徴を使用することにより、ブートクライアント２はリモートブートの初期段階中にクライアント２に与えられる利用可能なブートサーバーのリストから適当なブートサーバー４または３４を発見（または、ディスカバリー）することができる。ブートサーバーの種類、または特定のダウンロードされるハイバネーションイメージはクライアントのシステムアーキテクチャーの種類または各クライアントの固有のＩＤに基づいてインフォメーションテクノロジーアドミニスター（information technology administrator）によって割り当て及び維持されることができる。ＰＸＥはサーバー４と通信するために動的ホスト構成プロトコル（ＤＨＣＰ）及びトリビアルファイル転送プロトコル（ＴＦＴＰ）を使用する。ＰＸＥがクライアントのブートを可能にしたとき、それはＤＨＣＰサーバー４からＩＰアドレスを取得する。そして、クライアント２はクライアントにブートサーバーのリストを与えるＤＨＣＰサーバー４を発見してもよい。図１には、ブートサーバーとして動作してもよい、付加的なサーバー３４が示されている。しかしながら、本発明の説明を容易にするために、結果としてハイバネーションファイルからのブーティング及びブロードキャストまたはマルチキャスティングとなる本発明の処理は単一のサーバー４から成るネットワークコンフィグレーションとの関連で説明される。
【００２４】
ハイバネーションイメージからのリモートブーティング
上述したように、本発明はクライアントＰＣのためのＯ／Ｓファイルを有するハイバネーションイメージ２０を格納しているサーバー４から１つまたは複数のクライアント２にＯ／Ｓをブートするための改善されたシステム及び方法を与える。各クライアントのＣＰＵ４２はＤＲＡＭまたは他の種類の揮発性電子メモリー等の、アドレス可能なメモリーからのインストラクション（または、命令）のみを実行する。このアドレス可能なメモリーを初期化するため、少量のＰＸＥコード６６がＮＩＣ５４上のＯＰＲＯＭ６４に与えられる。ＰＸＥコード６６はＭＢＲコード２４をリードするために、クライアントのローカルディスクをエミュレートするネットワークサーバー４に要求が発行されることを可能にする。ダウンロードされたＭＢＲコード３３はさらなるディスクのエミュレーションを可能にし、Ｏ／ＳＭＢＲ２８の最初の部分がサーバーからクライアントに送信され、そこで、ＤＲＡＭにロードされるように要求する。次に、Ｏ／ＳＭＢＲ２８はＯ／Ｓの残りの部分のダウンロード及び初期化を行い、そして、それらの残りの部分はハイバネーションファイル２０をダウンロードする。ここで、以下の説明は複数のクライアントにダウンロードされる単一のハイバネーションファイル２０のみを含むが、当業者にとって明白であるように、本発明の方法を使用して異なったクライアントの組に多数のハイバネーションファイルをストリームすることもできる。出願人は、本発明の方法はストリーミングがネットワーク上のＯ／Ｓ４０のブートに必要な時間を従来の標準的なＯ／Ｓのローカルブートに対して５０％以上減少させることができることを観測した。
【００２５】
ハイバネーショントランザクションプロトコルは２つの部分から成る。最初の半分はブートドライブ８にハイバネーションイメージを生成することであり、第２の半分はハイバネーションファイルからの実際の再開（または、回復）である。
【００２６】
本発明のブートアップ（boot up）の開始の前に、サーバー４に存在するハイバネーションファイル２０は直接的な様式で生成される。クライアントＰＣが所望の状態に設定された後、ハイバネーションファイル２０にハイバネーションイメージを生成するためにハイバネーション機能が利用される。ハイバネーションファイル２０は次に、サーバーのブートドライブ８に送信される。あるいは、ハイバネーション処理はハイバネーションファイルがサーバーのブートドライブに直接セーブされるように実行されてもよい。ハイバネーション機能は全てのドライバーに対してパワーダウンするように命令するが、ストレージドライバー３２だけはWIN32.SYS７２をローカルメモリー５０にキャッシュし、メモリーのコンテントをファイルHIBERFIL.SYS（Ｏ／Ｓローダーが再開時に正当性をチェックするファイル）にライトした後に、Ｏ／Ｓの要求によってパワーダウンする。ブート処理を始動する前に実施されることが好まれるもう１つのステップはブートドライブ８にＭＢＲ２４エミュレーションコードを格納することである。
【００２７】
ウィンドウズのアーキテクチャにおいて、ドライバーは「タイプ」を呈することが要求され、１つのドライバーが同時にストレージドライバーとネットワークドライバーとなることができないので、ウィンドウズのアーキテクチャはサーバーと通信するために１つのドライバーではなく、２つのドライバー、ストレージドライバー３２とネットワークフィルタードライバー３０とを必要とする。ウィンドウズ２０００及びＸＰのハイバネーションの実行は１つのＯ／Ｓドライバーだけがストレージドライバーと通信することが要求されると仮定しており、したがって、ハイバネーション処理が２つ以上のＯ／Ｓドライバーをサポートすることを可能にするためのメカニズムを与えていない。現在利用可能な標準的なＯ／Ｓドライバーはネットワーク上のファイルから再開するように記述されていないので、それらは上手く動作しないだろう。ローカルドライブからの標準的な再開において、Ｏ／Ｓストレージドライバーはローカルハードディスクとの通信方法だけを知ることが要求される（そして、実際にそうなっている）。
【００２８】
ストレージドライバー３２はＮＩＣドライバー７４の電力ハンドラー（power handler）に対するディスパッチアドレス（dispatch address）をストレージドライバー自体のハンドラーで置き換えることによってＮＩＣドライバー７４の（ディスパッチルーチンdispatch routine）に「フック（hook）」する。ストレージドライバー３２は次に、オリジナルのＮＩＣドライバー電力ハンドラールーチンを呼び出してもよい。
【００２９】
ブート処理は多くの処理から成るが、一般的に、１つのプログラムが事前のプログラムに対してより高度なプログラムを開始させることを含む。本発明の独創的な方法の主要なステップはＢＩＯＳ初期化、ＰＸＥ初期化、ＭＢＲロード及びInt 13hリダイレクション、ハイバネーションイメージのロード、及びＯ／Ｓの再開（または、回復）である。ここで、これらの解決法はウィンドウズ２０００に特化したものであるが、以下に記載されるステップはこれらの解決法を他のオペレーティングシステムに拡張するための一般的な枠組を要約したものである。
【００３０】
図５を参照すると、パワーアップ直後、クライアント２のＢＩＯＳ４８の初期化はパワーオン／セルフテスト（ＰＯＳＴ（power-on/self-test））シーケンスの実行（ステップ５０２）とともに開始される。各クライアントはそれ自体のＩＰアドレスを確認するためにＤＨＣＰディスカバリー要求をブロードキャストする。このプロトコル（及び他のプロトコル）をサポートするサーバーのＯ／Ｓは、ネットワークサーバー４であっても、そうでなくてもよい、（クライアントがそこから）ブートされるサーバーのアドレスとともにこれらのパラメーターを戻す。仮想ブートドライブ８はネットワークサーバー４（または、代替的なブートサーバー３４）に関連した（または、サーバーに直接接続した）非揮発性の格納装置を備えてもよい。ドライバーの種類はフロッピーディスク、ハードディスク、磁気テープ、ＤＶＤ、ＣＤ−ＲＯＭ、及びフラッシュＲＯＭを含む。仮想ブートドライブ８となるために、装置はＯ／Ｓファイルまたは、ダウンロードされることが意図されるマイクロインストラクションコードを含むハイバネーションファイルのコピーを保持しなければならない。
【００３１】
ＰＯＳＴ中、ＣＰＵ４２はＯＰＲＯＭ６４がクライアント２に存在するかを決定するためにバス５６上でアドレスをチェックする。ＯＰＲＯＭが見つかった場合、ＣＰＵはＯＰＲＯＭ上の全てのハードウェア初期化ルーチンを処理し、ＮＩＣ５４を使用可能な状態に初期化する（ステップ５０４）。ＯＰＲＯＭコードは次に、ＰＸＥコードを初期化する（ステップ５０６）。ＯＰＲＯＭコードはまた、ハードディスク５２のリード及びライトを制御する割り込み13hハンドラーサービスを介して、ＢＩＯＳブート処理に「フック（hook）」する。ＰＸＥコードを使用して、ＮＩＣ５４の制御を引き受けることにより、ＯＰＲＯＭ６４のコードはサーバー４と通信し、サーバーのハードディスク８がサーバーに対するディスクのリード及びライトのリダイレクションを介して、クライアント２のローカルハードディスク５２を透明にエミュレートすることを可能にする。
【００３２】
ＰＯＳＴシーケンスの終了時に、ＢＩＯＳ４８はＯ／Ｓのブートを開始するだろう。ＢＩＯＳはサーバーの仮想ドライブ８の最初のセクター（シリンダー０、ヘッド０、セクター１）をリードする（ステップ５１０）。最初のセクターはＯ／Ｓ４０をブートするための付加的なエミュレーションコードを含むＭＢＲ（マスターブートレコード）２４を格納する。ＭＢＲ２４のコードは慣例的にＯ／Ｓの製造者によって供給されるが、以下に説明するハイバネーション再開処理を容易にするために、付加的なエミュレーションコードを開発する必要がある。ＭＢＲコードはクライアントのメモリーにロードされた後に実行される（ステップ５１２）。ＭＢＲのコードはネットワークサーバーと通信するためにＰＸＥ６６を使用し続け、全ての格納装置アクセス要求を取得するために割り込み13hをフックし、ブート処理の初期の段階中にサーバーの仮想ハードディスク８へのライトを防止する（ステップ５１４）。
【００３３】
リード要求は仮想ドライブから所望のデータをブロードキャスティングすることによって履行されてもよい。しかしながら、特定の好まれる実施例において、リード要求は後で説明される同期的（または、同時的）ストリーミング法を使用することによって履行される。あるいは、リード要求はネットワークサーバーによって個々に処理されてもよい。リード要求はオリジナルのInt 13hＢＩＯＳルーチンには送られず、代わりにＰＸＥがネットワークサーバー４からデータを受信するためにＭＢＲによって使用される。リード要求はＭＢＲコードによって履行され、要求はネットワークサーバーからダウンロードされたデータとともに要求の発行元に戻される。ディスクライトは異なった様式で操作される。ＭＢＲコードはライトを実施しないが、正常なライトを示す信号をディスクライトの要求の発行元に戻す。ライトはオリジナルのInt 13hＢＩＯＳルーチンにも送られない。
【００３４】
ＭＢＲコードは次に、図１において「ウィンドウズ２０００ＭＢＲ」として示されているような、Ｏ／Ｓ製造者によって開発されたＯ／ＳＭＢＲ２８をダウンロードする。各クライアント２のＭＢＲコード３３は、ＯＰＲＯＭ６４が要求を調べるための機会を持つ前に、それのInt 13hベクトルのフッキング（hooking）を介してローカルディスクのリードに対する全ての要求を取得する。ダウンロードされたＭＢＲ８８は次に、Ｏ／ＳＭＢＲ２８をダウンロードするために、ＰＸＥ６６を使用して要求をネットワークサーバーに転送する（ステップ５１６）。
【００３５】
ステップ５１８において、ネットワークサーバー４はサーバーの仮想ドライブ８から、Ｏ／ＳＭＢＲ２８を集合的に（または、共同的に）構成するデータパケットをＯ／ＳＭＢＲのダウンロードを要求している各クライアント２にマルチキャストされるかまたは同期的にストリーム（または、データ転送）する。同期化は後で説明される同期されたストリーミング処理４００を使用することによって達成されてもよい。この実施例において、ストリーミングモジュール２６は勧誘期間中にＯ／ＳＭＢＲのダウンロードの要求を出した、全てのクライアント２へのダウンロードに対する登録を行う。勧誘期間は全てのクライアントに登録の機会を与える、予め決められた時間間隔を持つ。ストリーミングモジュール２６は次に、リード要求元として最初のクライアントを指定する。すなわち、そのクライアントだけが、全ての登録されたクライアントに次のデータセクターのコンテントがマルチキャストされるための、ストリーミングモジュール２６のリード要求を生成することを許可される。
【００３６】
ストリーミングモジュール２６は次に、登録されたクライアント２の全てにアクセスし、リード要求元の識別及びＯ／ＳＭＢＲ２８を集合的に格納する仮想ドライブ８のセクターのグループの第１のセクターのコンテントをマルチキャストする。ストリーミングモジュールは次に、Ｏ／ＳＭＢＲのセクターのグループの全てのセクターがマルチキャストされたかを決定する。さらなるセクターがマルチキャストされることが必要な場合、かつ、２つ以上の登録されたクライアントが存在する場合、ストリーミングモジュールは新規のリード要求元を指定する。次に、ストリーミングモジュールは次のセクターにアクセスし、新規のリード要求元の識別とともに、それのコンテントを登録されたクライアントの全てにマルチキャストする。新規のリード要求元を指定するステップは好まれるものとして、順繰りに実施される。すなわち、各マルチキャストのラウンド後に、登録された１つのクライアントが順番に仮想ドライブのリード要求を生成する役割を引き受け、他の指定されていないクライアントはデータのマルチキャストを単に待つ。ストリーミング処理４００はＯ／ＳＭＢＲ２８全体がマルチキャストされ各クライアントにロードされるまで繰り返され、その時点で、ダウンロードされたＯ／ＳＭＢＲはネットワークインターフェース５４の制御及び要求生成処理を引き受ける。
【００３７】
ここで、各リード要求はどの登録されたクライアントが発行したかにかかわらず、同一であることに注意しなければならない。それゆえ、ＭＢＲコードによって実施されるリード要求は密集行進法（lock-step）の様式で進行する。各クライアントは同一の仮想ドライブからリードを要求し、既に仮想ドライブからダウンロードされた同一のＭＢＲ２８を実行しているので、各リード要求は同一となるだろう。
【００３８】
図５を参照すると、ステップ５２０において、各登録されたクライアントはブロードキャストまたはマルチキャストされたＯ／ＳＭＢＲのセクターを受信及び格納する。受信したデータセクターはＲＡＭ５０の、拡張されたＢＩＯＳデータ領域のあめに確保されたメモリーの一部に格納される。各ブロードキャストセクターまたはマルチキャストセクターは連番とともに送信されてもよい。各クライアントは次に、クライアントが送信されたセクターの全てを正常に受信したかを決定してもよい（ステップ５２２）。クライアントがデータパケットを見逃している場合、クライアントはネットワークサーバーから見逃したデータセクターを非同期的に要求してもよい。しかしながら、データはそのクライアント単体だけに戻され、全ての登録されたクライアントにはブロードキャストまたはマルチキャストされない。
【００３９】
ステップ５２４において、Ｏ／ＳＭＢＲ２８（例えば、ウィンドウズ２０００ＭＢＲ）が各クライアントのメモリー５０にロードされ、実行される。次に、Ｏ／ＳＭＢＲは仮想ドライブからＯ／Ｓの製造者によって記述されたＯ／Ｓローダー７４（例えば、ＮＴＬＤＲ）をダウンロードする（ステップ５２６）。ダウンロードされたＯ／Ｓローダー７８は仮想ドライブ８に有効なハイバネーションイメージが存在するかをチェックしてもよい（ステップ５２８）。仮想ドライブは事前に有効なハイバネーションイメージ２０を含むように設定されている。Ｏ／Ｓローダー７８は次に、ＭＢＲ３３が取得かつネットワークサーバー４にリダイレクトする一連のInt 13hリード要求を介して、ハイバネーションイメージのロードを開始する（ステップ５３０）。ここで、ハイバネーションファイル２０を集合的に格納する仮想ドライブ８上の複数のセクターのコンテントにアクセスし、それをブロードキャストまたはマルチキャストするために、ストリーミング処理４００が再び利用されてもよい（ステップ５３２）。
【００４０】
ハイバネーションイメージが各クライアントのローカルメモリー４４にコピーされた後、Ｏ／Ｓローダー７８はハイバネーションイメージから回復（または、再生）されたＯ／Ｓ４０、すなわち、ウィンドウズＸＰまたは２０００に実行を渡す（ステップ５３４）。ここで、この時点以降、リード要求は同期的な様式で実施されないことに注意しなければならない。すなわち、それらは単体ベースでネットワークサーバーに送信され、ネットワークサーバーによって回答される。
【００４１】
Ｏ／Ｓ４０はこの時点で、ストレージドライバー３２等のドライバー７６を起こし、システムを使用可能な状態に戻すためにいくつかの初期化を実施する必要がある。各クライアント２が適切な順序でストレージ（または、格納装置）及びネットワークフィルタードライバーをロードするたように構成するために、既存のドライバーに対するいくつかの標準的なドライバーのレジストリは、以下の表に記載されているように、（regedit32レジストリエディターを使用する等により）予め変更しておく必要がある。
【００４２】
【表１】
2005523523.tif 000003
【００４３】
ここで発生する１つの難しい問題は、ＮＩＣドライバー７４及びネットワークフィルタードライバー３０が初期化されるまで、ストレージドライバー３２が全てのリード及びライトを防止しなければならないことである。しかしながら、ネットワークフィルタードライバーは、Ｏ／Ｓ４０が表示及び印刷のための低レベルのルーチン等の、システムユーティリティー機能を与えるファイルWIN32.SYS７２及びカーネルバイナリー（kernel binary）をリードするまで初期化されないだろう。この問題はハイバネーションイメージを生成する前にWIN32.SYSの、クライアントのメモリー５０への早めのキャッシュを行い、それによって、ファイルをこの時点でローカルメモリー５０内にリードされるハイバネーションイメージ自体の一部にすることによって解決される。これにより、ファイルWIN32K.SYSは仮想ドライブ８をアクセスする必要なく、ローカルメモリーからリードすることができる。１つの例外として、ストレージドライバー３２は全てのＯ／Ｓディスクのライト及びリード要求をハイバネーションイメージの生成中に、事前にアロケートされたキャッシュに、すなわち、この時点でクライアントシステムのメモリー５０にキュー登録する。ストレージドライバー３２は、要求の処理の許可が安全になるまで、すなわち、ＮＩＣドライバー７４及びネットワークフィルタードライバー３０が初期化されるまで、単に要求を格納する（ステップ５３６）。ファイルWIN32K.SYSはローカルクライアントメモリーからリードされ、データがＯ／Ｓに戻される（ステップ５３８）。
【００４４】
Ｏ／Ｓ４０は次に、ＮＩＣドライバー及びネットワークフィルタードライバー３０を起こす。ステップ５４２において、ネットワークフィルタードライバー３０はストレージドライバー３２に、ＮＩＣ５４が初期化され、ネットワークフィルタードライバー３０がペンディング中のリード及びライト要求を受諾する準備ができていることを知らせる。あるいは、ストレージドライバー３２は（ハイバネーションイメージの生成中に）事前に、ＮＩＣドライバー７４のディスパッチ機能に「フック」し、それの「IRP_MJ_POWER」のためのデータを監視する。これはネットワークドライバーが起きたときにストレージドライバー３２に警告を出す。Ｏ／Ｓ４０がIRP_MJ_POWERをＮＩＣドライバー７４に送信した後、要求は常にフルパワーオン状態（すなわち、ＮＩＣが完全に使用可能な状態）となる。ストレージドライバー３２はＮＩＣドライバーがIRP_MJ_POWERの処理を終了するまで、すなわち、ネットワークドライバーが完全に起きるまで待つ。
【００４５】
ステップ５４４において、ストレージドライバーはＯ／Ｓ４０が使用可能な状態に回復し、その後にユーザーが通常の様式でクライアントＰＣを使用することができるように、全てのキャッシュされたリード及びライト要求のキュー登録を解除する。ここで、この実施例において、ストレージドライバーがリードとライトを僅かに異なった様式で操作することに注意しなければならない。すなわち、ストレージドライバーはライトが仮想ドライブに対して実行されることによって、異なったクライアントが同一の仮想イメージに同時にライトしたときに、それのデータを破壊することを防止するために、全てのライトをローカル的にキャッシュする。逆に、リードは必要なセクターのコピーがクライアント上にキャッシュされないかぎり、仮想ドライブから実際のリードによって行われる。後者の場合、セクターはクライアントのメモリーからキャッシュされ、ネットワークトランザクションは一切行われない。
【００４６】
複数のクライアントへの所望のデータの同期的ストリーミング
特定の好まれる実施例においてブート処理を進めるために必要なデータは、本出願人のもう１つの特許出願である国際公開第０３／０９００７３号に説明されているように、サーバー４から１つまたは複数のクライアント２に同期的にストリームされる。この実施例に従った本発明の独創的システムは１つまたは複数のクライアント２によって発行されたリード要求への応答で、透明な（transparent）ローカルディスクエミュレーション及び、サーバーの「仮想」ドライブ８に存在するデータセクターの組のコンテント（または、内容）のブロードキャスティングまたはバーストモードのマルチキャスティングを利用する。
【００４７】
図４のフローチャートは同期的（または、同時的）データストリーミングのための処理４００を図示している。ここで、ハイバネーションファイルを使用したクライアント上のＯ／Ｓのネットワークブートを完了するために、同期的ストリーミング処理４００は（いくつかの意味のある差異とともに）基本的に２回、すなわち、Ｏ／Ｓドライバーが初期化される前と後とに１回ずつ利用される。これは、Ｏ／Ｓブート処理が仮想ドライブ８からファイルをダウンロードするために、ブート処理の初期の段階中に割り込みハンドラープロシジャー（または、割り込みハンドラー処理）を使用するのに対し、その後、それらが初期化された後にストレージドライバー３２及びネットワークフィルタードライバー３０を使用するためである。これは実質的に同等なタスクを実行するために２つの解決法を必要とすることを意味する。
【００４８】
特定のデータのダウンロードを所望する各クライアントは最初の要求を発行する。所望されるデータはブートプログラム、ハイバネーションファイル、Ｏ／Ｓファイル、または、サーバーの仮想ドライブ８上に存在するアプリケーションファイルを含んでもよい。これらの要求がサーバー４に発行されるとともに、サーバーはＰＸＥコード６６及びダウンロードされたＭＢＲ３３のコードの実行を介して、または、ネットワークフィルター及びストレージドライバーと共にＯ／ＳＭＢＲ２８のコードの実行を介して、ブートアップ（boot up）の多様な段階中に、クライアントのローカルディスク５２をエミュレートする。（ステップ４０２）
【００４９】
ステップ４０４において、サーバーのストリーミングモジュール２６は予め決められた勧誘期間中に初期要求を発行している各クライアントを登録する。登録された各クライアントはストリーミングモジュール２６からのデータパケットを待つ。
【００５０】
ステップ４０６において、ストリーミングモジュールはサーバー４上でセクターシーケンスファイル２２を探す。セクターシーケンスファイル２２は所望のデータを含んでいるデータセクターへのアクセス及びデータセクターのブロードキャストまたはマルチキャストの順序（オーダー）を決定する。セクターシーケンスファイル２２が見つからない場合、プログラムフローは後で説明されるセクターシーケンスファイルを記録するためのラーニング処理（または、学習処理）４５０に進む。
【００５１】
ステップ４０８において、セクターシーケンスファイル２２が見つかった場合、ストリーミングモジュール２６は所望のデータを登録されたクライアントにブロードキャストまたはマルチキャストする。データパケットは好まれるものとして固定速度でブロードキャストまたはマルチキャストされる。
【００５２】
登録された各クライアント２において、受信されたデータパケットはブロードキャストまたはマルチキャストのレート及びクライアントのブート処理速度の差を補正するために固定長のキューに格納される（ステップ４１０）。ネットワーク及びストレージドライバーは初期のＭＢＲ／Int 13hフッキング処理（MBR/Int 13h hooking process）とは異なった様式でストリーミングを操作する。ドライバーはデータを各クライアント内に予めアロケートされた、メモリー上の大型の一時的区分（「データキャッシュ」）にロードする。登録された各クライアントは、それが正常に受信したデータパケットを追跡する（または、場所を記録する）。選択的に、登録された各クライアントはサーバーに、最も最近のＮ個のパケットが正常に受信されるように試みられたことを示す、アクノリッジメント（または、受け取り信号）を送信する（ステップ４１２）。クライアントのアクノリッジメントの目的はローカルクライアントのバッファーがオバーランされていないことを確実にすることである。
【００５３】
ステップ４１４において、ストリーミングモジュール２６は所望のデータが全てアクセスされ、それらのコンテント（または、内容）が送信されたことを確認する。これらの処理が完了していない場合、ステップ４０８及びステップ４１０は完了するまで繰り返される。所望のデータが全てブロードキャストまたはマルチキャストされている場合、ストリーミングモジュールは送信が完了したことを示すメッセージを送信する（ステップ４１６）。しかしながら、この時点において、全てのクライアントが情報の全てのブロックを問題なく受信していなくてもよい。すなわち、いくつかのパケットがなんらかの理由によって欠落していてもよい。また、いくつかのクライアントが送信の開始を見逃してもよい。ステップ４１８において、クライアント２の各々は送信が成功したことを示すメッセージ、または、見逃されたパケットの再送信に対する必要性を示すメッセージによって、ストリーミングモジュール２６に応答してもよい。ストリーミングモジュール２６はパケットの再送信のリストを編集し、効果的に順序付ける（ステップ４２０）。あるいは、パケットの再送信のリストは（ステップ４１４の前に）データパケットの送信中に、決められた数のバイト数ごとに繰り返し編集されてもよい。再送信はストリーミングを行っているモジュールとクライアントとの間で個々に行われてもよい（ステップ４２２）。この時点で、ほとんどのクライアントは受信したデータパケットの処理をしているので、ネットワークの帯域幅は大きく、それゆえ、個々の再送信はブート時間またはネットワークのトラフィックに対して認識可能な程度の影響を与えないだろう。
【００５４】
ステップ４２４において、ダウンロードされたデータが正常に処理された後、キャッシュのために事前に確保されたメモリーのアロケートが解除される。
【００５５】
上述したように、ストリーミング処理４００の長所は、各クライアントにおいて、クライアントのＯ／ＳがＯ／Ｓのデータストラクチャー、ドライバー、またはアプリケーションの初期化に専念している間、Ｏ／Ｓがデータを必要とする前にデータパケットをメモリーに予めロードすることによって将来必要となるＯ／Ｓのデータが既に準備されているだろうということである。ストリーミングモジュール２６はクライアントがパケットを利用できる状態になる前に、クライアントにパケットをブロードキャスト及び（または）マルチキャストし、ブートアップ時間の依存性をパケットの送信時間からクライアントのブート処理時間に移す。特定の実施例において、ストリーミングモジュール２６は送信されるべき仮想ドライブセクターのコンテントの順序を決定するためにセクターシーケンスファイル２２を利用する。セクターシーケンスファイル２２は同期性のストリーミング処理を着手する前に、サーバー４上に格納されることが予期されるが、これが行われない場合、セクターシーケンスファイル２２は以下に説明されるラーニング処理（または、学習処理）中に生成されてもよい。
【００５６】
ストリーミングモジュール２６がセクターシーケンスファイル２２を見つけられない場合、ラーニング処理４５０が実行される。セクターシーケンスファイルはＯ／Ｓがブート処理を完了するためにリードしなければならない、セクターのリストから成る。ステップ４２６において、ストリーミングモジュール２６は１つの登録されたクライアントを選択する。選択されたクライアントが独創的なＭＢＲ２４及びドライバー（３０及び３２）を使用して、慣例的にブートすることが許可されるとともに、ストリーミングモジュールは新規のセクターシーケンスファイルに、選択されたクライアントがブート中に生成した全てのセクターアクセス要求を記録する（ステップ４２８）。ステップ４３０において、ブートするクライアントは、それがブートを完了したことをストリーミングモジュールに知らせる。この時点で、新規のセクターシーケンスファイルは仮想ドライブ８に格納され、ステップ４０８でストリーミング処理が再開される。上述の本発明の特徴及び実施から当業者にとっては本発明の他の実施例が明白であるだろう。例えば、いくつかの実施例において、同期的ストリーミング処理４００は割り込みハンドラープロシジャー（または、割り込みハンドラー処理）によって要求されたデータのダウンロードのみに使用されたり、サーバーの保護モードアクセスでのみ使用されたりしてもよい。または、同期的ストリーミング処理４００はクライアントへのアプリケーションの事前ロードに使用されてもよい。同様に、他の実施例において、データパケットの要求及び受信を同期させるためのＭＢＲコードを使用しない、ハイバネーションイメージのネットワークコピーからのブートも本発明の範囲に含まれる。それゆえ、上述の説明及び実施例は例としてだけのものであり、本発明の本来の範囲及び意図は付随する請求の範囲によって規定される。
【図面の簡単な説明】
【００５７】
【図１】本発明が実施されるクライアント／サーバーネットワーク環境を図示しているブロック図である。
【図２】本発明の１つの実施例に従ったネットワークアダプターを図示しているブロック図である。
【図３】独創的なドライバーがネットワークサーバーからダウンロードされ実行された後の、クライアントのローカルメモリーの一部の実施例を図示しているブロック図である。
【図４】本発明によって与えられる同期性ストリーミング処理の１つの実施例を図示しているフローチャートである。
【図５】ハイバネーションイメージファイルを利用している遠隔ネットワークブート処理の１つの実施例を図示しているフローチャートである。
【符号の説明】
【００５８】
２      クライアント
４      第１サーバー
６      ＣＰＵ
８      ハードディスク（仮想ドライブ）
１０    ＲＯＭ
１２    ＲＡＭ
１４    通信インターフェース（ネットワークアダプター）
１６    バス
１８    ＢＩＯＳ
２０    ハイバネーションファイル
２２    セクターシーケンスファイル
２４    ＭＢＲ
２６    ストリーミングモジュール
２８    Ｏ／ＳＭＢＲ
３０    ネットワークフィルタードライバー
３２    ストレージドライバー
３３    ＭＢＲ
３４    第２サーバー
３６    クライアントモジュール
３８    ネットワークルーター／スイッチ
４０    Ｏ／Ｓ
４２    ＣＰＵ
４４    メモリー
４６    ＲＯＭ
４８    ＢＩＯＳ
５０    メモリー（ＲＡＭ）
５２    ハードディスク
５４    ネットワークアダプター（ＮＩＣ）
５６    システムバス
５８    バスインターフェース
６０    ネットワークコネクター
６２    ＲＡＭ
６４    ＯＰＲＯＭ
６６    ＰＸＥ
６８    ＯＳネットワークスタック
７０    ウィンドウズの多様なマネジャー
７２    初期化ファイル
７４    ＮＩＣドライバー
７６    ＯＳドライバー
７８    ＯＳローダー
【図１】
2005523523.tif 000004
【図２】
2005523523.tif 000005
【図３】
2005523523.tif 000006
【図４】
2005523523.tif 000007
【図５】
2005523523.tif 000008
【国際調査報告】
2005523523.tif 000009