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