(57)【要約】【課題】プログラムをディスクにインストールして最適化する方法を提供する。【解決手段】この方法は、（１）ディスク集中型オペレーションに関連づけられる部分を含む複数のファイルを生成し、（２）ディスク集中部がディスク集中型オペレーション中に読み出される順序を決定し、（３）ディスク集中部がディスク集中型オペレーション中に読み出される順序を示すロード・シーケンス・リストを生成し、（４）複数のファイル、ロード・シーケンス・リスト、及びインストール・プログラムをインストール・ディスク上に格納し、（５）複数のファイル及びロード・シーケンス・リストをインストール・ディスクから論理ディスクにインストールし、（６）論理ディスクにインストールした後に、論理ディスク上の連続する空きクラスタの少なくとも１つのグループを識別することと、ロード・シーケンス・リストで示された順序でディスク集中部を再配置することを実行することによってディスク集中部を最適化する。【選択図】図８
2008251018.tif 000002
【特許請求の範囲】
【請求項１】
プログラム・コードを論理ディスクにインストールして最適化する方法であって、
前記方法は、
ディスク集中型オペレーションに関連づけられる部分を含む複数のファイルを生成するステップと、
ディスク集中部が前記ディスク集中型オペレーション中に読み取られる順序を決定するステップと、
前記ディスク集中部が前記ディスク集中型オペレーション中に読み取られる順序を示すロード・シーケンス・リストを生成するステップと、
前記複数のファイル、前記ロード・シーケンス・リスト、及びインストール・プログラムをインストール・ディスク上に格納するステップと、
前記複数のファイル及び前記ロード・シーケンス・リストを前記インストール・ディスクから前記論理ディスクにインストールするステップと、
前記論理ディスクにインストールした後に、
前記論理ディスク上の連続する空きクラスタの少なくとも１つのグループを識別するステップと、
前記ロード・シーケンス・リストで示された順序で前記ディスク集中部を再配置するステップと
を実行することによって、前記ディスク集中部を最適化するステップと
を含むことを特徴とする方法。
【請求項２】
前記ロード・シーケンス・リストは複数のエントリを含み、前記エントリの各々は、前記複数のファイルのなかの１つの名前及び再配置されるファイルの部分を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ファイルの部分は、前記ファイルの開始部分からのオフセット及び前記ファイルから読み取られるデータ量によって識別されることを特徴とする請求項２に記載の方法。
【請求項４】
前記ディスク集中部を再配置するステップは、
前記複数のファイルのなかの１つと読み取られる前記ファイルの部分を識別する前記ロード・シーケンス・リストのエントリを読み取るステップと、
前記複数のファイルのなかの識別された１つのファイルから前記ファイルの部分を読み取るステップと、
前記ファイルの部分を前記論理ディスクに書き込むステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードディスク・ドライブにデータを格納する技術に関し、特に、プログラム起動中及び他のディスク集中型オペレーション中にディスクからデータを読み取るために必要な時間を短縮するやり方でデータを格納する技術に関する。
【背景技術】
【０００２】
コンピュータ・データの格納に用いる磁気ディスク・ドライブの分野において、フラグメンテーションという用語は、ディスク・パーティションまたは論理ディスク上でのファイルの不連続な配置を示すために使用される。断片ファイルは、論理ディスクの異なる領域に分散する同じディスク・ファイルの部分またはファイル全体の分散を示すので、ファイル間に未使用のスペースが存在することになる。古いファイルが論理ディスクから削除される際および新しいファイルが論理ディスクに加えられる際に、フラグメンテーションが発生することが多い。ファイルが削除されて、それまで使用されていたスペースが使用可能になると、コンピュータのオペレーティング・システムは、新しいファイルを論理ディスクの空白領域に書き込む。しかし、新しいファイルが非常に大きくて空白領域に収容できない場合、オペレーティング・システムは、ファイルの複数の部分を幾つかの空白領域に格納してファイルを断片化することができるので、そのファイルの複数の部分が論理ディスクの全体にわたって分散することになる。同様に、既存ファイルのサイズが、当該ファイルが格納されるスペースに隣接する連続する空きスペースのサイズを越えるほど大きくなると、その既存ファイルは断片化されうる。オペレーティング・システムは、ファイルの各々の部分が格納されたレコードを保守するので、ファイルを論理ディスクから読み取る時に、ファイルを適切な順序で検索することができる。
【０００３】
ファイルが最初から最後まで“線形で”読み取られる状況では、フラグメンテーションは、ディスク・アクセスを遅延させて、ディスク動作の全体的な性能を低下させる。ユーティリティ・プログラムは、断片化されたディスク上のファイルをデフラグするために使用できる。ファイルを再配置して各ファイルをディスクの連続部分に格納するほかに、ユーティリティ・プログラムは、論理ディスクの開始部分に全て格納するようにファイルを配置することが通常である。このことは、ディスク末端部の空白領域を統合することになり、効果的と考えられる。なぜならば、オペレーティング・システムは、新しいファイルを格納するための十分に使用可能なスペースを探すサーチの必要がなくなり、新しいファイルは、ディスク全体に分散する多数の小さなクラスタに格納するよりも連続するクラスタに（つまり、断片化していないクラスタに）格納しやすくなるからである。
【０００４】
デフラグは、優れた手法であり、断片化されていないファイルを最初から最後まで線形で読み取る時の性能を改善する。しかし、あるオペレーションを実行する場合、コンピュータは、各ファイルから数ブロックだけを読み取ることが多い一方で、ある予測可能なシーケンスで複数の異なるファイルからデータのブロックを読み取る。例えば、ワード処理プログラムを起動すると、主実行可能ファイルの第１の部分、ダイナミック・リンク・ライブラリーの一部、主実行可能ファイルの第２の部分、プリファレンス・ファイルなどをロードすることになる。同様なディスク・アクティビティーが、あるプログラム・コマンド（例えば“ファイル・オープン”）の選択時に生じる。この種のディスク集中型オペレーションは、ある物理クラスタから別のクラスタへの多くのディスク・ヘッドの移動をもたらす。最近のマイクロプロセッサはディスク・ドライブの平均探索時間と比べると高速であり、多くの異なるファイルを標準的なプログラムの起動のためにディスクから読み取らなければならないので、プログラムを起動するのに必要な時間の大部分が、ディスク・ヘッドがあるクラスタから別のクラスタに移動することを待っているアイドル状態にあるマイクロプロセッサに費やされることになる。
【０００５】
以上のことを鑑みて、ディスク集中型オペレーションを実行（例えば、あるコマンドに関連付けられたコード又はプログラムを起動）して、論理ディスクのパーティション上（及び物理ディスク上）でのディスク集中型オペレーション中に用いられたデータ・ブロックを、そのデータ・ブロックがそのオペレーション中にアクセスされた順序で配置すると優れた方式になる。これはプログラム・ファイルが意図的に“断片化”されることになり、論理ディスクから要求されたデータをロードするのに必要な非順次的なディスク・アクセスの数を減少させることによって、性能を改善することになる。
【０００６】
従来の技術は、アプリケーションの起動プロセスを最適化するために、この種のアプリケーション・ファイルの再構築又は断片化する方式を述べている。例えば、ＩＢＭ技術公開資料ＴＤＢ０１９６．０１１２号では、プロファイル・ガイド・ファイル・システムの再構築について述べている。ファイル参照パターンに関する静的解釈に基づいてファイルを配置する代わりに、このシステムは、プログラム実行時のファイル・アクセス・パターンを動的に定めると共に、プログラムが実行されているハードウェア／ソフトウェア構成ごとにファイル・システムの性能を最大限にするためにディスク・スペースを割り当てる。その実現のために、ファイル・システム・アクティビティーがプログラム起動中にモニタされ、アクセスされたディスクのセクタが、プロファイル・データを含むファイルにログ記録される。所定の間隔で、プロファイル・データが分析されて、更に最適なファイル・アロケーション構造が可能かどうかを決定する。その場合、オペレータは、プロファイル・データに示されたディスク・アクセス・パターンに基づいて、ファイルにディスク・スペースを割り当てる再構築プログラムを実行することができる。プログラムは、ディスク・ブロックのアクセス・アドレスをプロファイル・データからそれらのアドレスに関連するファイルにマップし、頻繁にアクセスされるブロックをディスク上で物理的に互いに近づけて配置する。最終的なディスク・ブロックの割当構造は、その特定のコンピュータ構成に適した共通のアクセス・パターン用に最適化される。
【０００７】
マイクロソフト（登録商標）社は、“ＷＩＮＤＯＷＳ（登録商標）９８”オペレーティング・システムが、起動中に用いられたデータ・ブロックが順次的な形態で配置されるように、アプリケーション・プログラム起動中にディスク・アクティビティーをモニタして、格納ファイルを再配置することを可能にする特長を備えていることも発表している。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
従来技術はプログラム起動用のファイルを最適化するプロセスについて述べているが、これらの技術は、プログラムをコンピュータにインストールして、その後ユーザによって起動された後に実施される。この方式には幾つかの欠点がある。例えば、最適化は、プログラムがインストールされて起動され、起動プロセスがモニタされるまで実施できない。プログラム起動中にディスク・アクセスをモニタするプロセスは、起動プロセスを大幅に遅らせる可能性がある。起動プロセスのモニタ後に、コンピュータは、時間のかかる最適化ルーチンを実行しなければならない。これによってユーザは最適化プロセス中にコンピュータを使用することができず、又は業務終了後に当該ルーチンを実行できるようにするためにユーザはコンピュータの電源をいれたままにしておくことを要求される。結局、この方式は、起動プロセスのモニタと最適化だけに適しており、あるコマンド（例えば、“ファイル・オープン”）に関連付けられたコードのロードなどの、他のディスク集中型オペレーションには適していない。
【０００９】
最適化の特長がオペレーティング・システム・ソフトウェアで具体化される際に、ユーザは、これらの最適化の特長を活用するために、オペレーティング・システムの適切なバージョンのコピーを入手してインストールしなければならない。多くのケースで、ユーザは、新しい特長を利用するために、それらのオペレーティング・システム・ソフトウェアのアップグレードに必要な金銭や時間を費やすことに乗り気でなく、又は、自ら進んで決断しないと思われる。このため多くのユーザは、古いバージョンのオペレーティング・システムを使用し、アプリケーションの起動時に改善した性能を体験できない。
【００１０】
従って、アプリケーション又はコマンドの起動時にアクセスする順序で論理ディスクにデータを格納する改善されたシステムと方法に対する必要性が存在する。このような方法は、アプリケーション・プログラム・ファイルを論理ディスクにインストールした後にモニタする必要性を解消すると共に、ユーザに新しいバージョンのオペレーティング・システム・ソフトウェアを入手してインストールすることも要求しない。
【課題を解決するための手段】
【００１１】
本発明は、プログラムをインストール又は後で再配置することによって、前述の必要性を満足させる。プログラムの起動時又はコマンドの実行時に読み取られる始動関連部は、通常の起動中に読み取られる順序にできるだけ近い順序で格納される。インストール中又はインストール後に用いられるソフトウェアは複数の必要なプログラム・ファイル及びロード・シーケンス・リストを含み、ロード・シーケンス・リストは、当該プログラム・ファイルの始動関連部が読み取られる順序を示す。インストール中又はインストール後の再配列中に、ファイルの始動関連部はロード・シーケンス・リストで示された順序で配置されるので、始動関連部は望ましくは論理ディスクの連続するクラスタに格納される。ファイルの残りの部分は、ディスクの他の空きスペースにインストールされる。ユーザがプログラムを実行する時に起動時間が短縮される。なぜならば、コンピュータは、論理ディスク上の連続するクラスタから適切な順序でスタートアップ・ファイルを読み取ることができるので、非連続クラスタからデータを読み取ることに関連する遅延が減少するからである。
【００１２】
本発明は、コンピュータ読み取り可能なインストール媒体を提供し、かつプログラム又は他のディスク集中型オペレーションをスタートアップ又は起動するプロセスを高速にするやり方で、プログラムをインストールすること又は後で再配置することを可能にする。インストール媒体は、ロード・シーケンス・リストと、始動関連部を有する複数のファイルとを含む。ロード・シーケンス・リストは、ファイルの始動関連部が論理ディスク上に配置される順序を示す。インストール媒体は、インストール方法又は再配列方法を実施するコンピュータ実行可能な命令も含む。インストール方法又は再配列方法は、論理ディスク上の複数の連続する空きクラスタのうちの少なくとも１つのグループを識別することも含む。複数のファイルの始動関連部は１つの連続する空きクラスタのグループにインストールされ、始動関連部は、ロード・シーケンス・リストで示された順序でハードディスク・ドライブに格納される。
【００１３】
他の実施態様では、本発明は、インストール・ディスクからハードディスク・ドライブにプログラム・コードをインストールする方法を提供する。この方法は、インストール・ディスクに格納されたロード・シーケンス・リストからエントリを読み取るステップを含む。各エントリは、プログラム・コードに関連付けられるファイル部を識別する。ロード・シーケンス・リストから読み取られたエントリごとに、エントリによって識別されたファイル部がインストール・ディスクから読み取られ、ハードディスク・ドライブ上の複数の連続する空きクラスタのグループに書き込まれる。ファイル部は、ロード・シーケンス・リストのエントリに対応する順序でハードディスク・ドライブに格納される。
【００１４】
他の実施態様では、本発明は、プログラム・コードを生成し、生成したプログラム・コードをインストール・ディスクから論理ディスクにインストールする方法を提供する。この方法は、始動関連部をもつ複数のファイルを生成し、始動関連部がプログラム起動中又は他のディスク集中型オペレーション中に読み取られる順序を決定することを含む。ロード・シーケンス・リストは、始動関連部がプログラム起動中に読み取られる順序を反映するように生成される。ファイル、ロード・シーケンス・リスト、およびインストール・プログラムが、インストール・ディスクに格納される。インストール・プログラムは、論理ディスク上の連続する空きクラスタのうちの少なくとも１つのグループを識別し、かつ連続する空きクラスタの１つ又は複数のグループに複数のファイルの始動関連部をインストールするコンピュータ実行可能命令を含む。始動関連部は、ロード・シーケンス・リストで示された順序で論理ディスクに格納される。
【００１５】
他の実施態様では、本発明は、プログラム・コードを論理ディスクにインストールして最適化する方法を提供する。この方法は、ディスク集中型オペレーションに関連付けられる部分を含む複数のファイルを生成するステップと、ディスク集中型オペレーションに関連付けられる部分がディスク集中型オペレーション中に読み取られる順序を決定するステップを含む。ロード・シーケンス・リストは、ディスク集中型オペレーションに関連付けられる部分がディスク集中型オペレーション中に読み取られる順序を示すために作成される。複数のファイルとロード・シーケンス・リストが論理ディスクにインストールされる。インストール後、ディスク集中型オペレーションに関連付けられる部分は、論理ディスク上の連続する空きクラスタのうちの少なくとも１つのグループを識別し、当該空きクラスタにディスク集中型オペレーションに関連付けられる部分を再配置することによって最適化される。ディスク集中型オペレーションに関連付けられる部分は、ロード・シーケンス・リストで示された順序で論理ディスクに格納される。
【００１６】
本発明の様々な態様は、開示された実施形態の詳細な説明の検討および添付図面と特許請求の範囲の記載の参照によって更に明確に理解できる。
【発明を実施するための最良の形態】
【００１７】
本発明は、ハードディスク・ドライブにプログラムをインストールする、改善されたシステム及び方法を対象とする。代表的な実施例では、アプリケーション関連ファイルが論理ディスクのパーティション（すなわち、物理ディスク・ドライブの論理サブセット）にインストールされ、プログラムの起動時又はコマンドの選択時に読み取られる始動関連部が起動中に読み取られる順序で格納される。インストール・ソフトウェアは複数の必要なファイル及びロード・シーケンス・リストを含み、ロード・シーケンス・リストは当該ファイルの始動関連部が起動中にロードされる順序で識別する。インストール中に、起動中に用いられる複数のファイルの複数の部分がロード・シーケンス・リストで示された順序でインストールされ、始動関連部は好ましくは論理ディスク上の連続するクラスタに格納される。残りのファイルは論理ディスクの他の空きスペースにインストールされる。また、プログラム・ファイルは従来の方式でインストール可能であり、始動関連部はロード・シーケンス・リストで示された順序で再配置される。ユーザがプログラムを起動し、又はコマンドを選択すると起動時間が短縮される。なぜなら、コンピュータは、ディスク上で連続するクラスタから適切な順序で複数の始動関連部のファイルを読み取ることができるので、非連続クラスタからのデータの読み取りに関連する遅延を低減できるからである。
【００１８】
図面の全体にわたって類似の番号が類似の構成要素を表す図面を参照し、本発明の複数の態様と代表的な動作環境について説明する。
【００１９】
＜代表的な動作環境＞
図１及び以下の説明は、本発明が実装されうる適切なコンピューティング環境の簡単な一般的な説明を提供することを意図している。本発明はパーソナル・コンピュータに関連付けられたハードディスク・ドライブにアプリケーション・プログラムをインストールするために用いられるセットアップ・プログラムの一般的なコンテキストで説明するが、当業者は、本発明が、アプリケーション・プログラム・モジュール、オペレーティング・システム・プログラム・モジュール、ユーティリティ・プログラム・モジュールなどを含む多様なプログラム・モジュールと組み合わせて実装可能であることを認識するだろう。一般的に、プログラム・モジュールは、特定のタスクを行う又は特定の抽象データ型を実装する、ルーチン、プログラム、コンポーネント、データ構造などを含む。また、当業者は、本発明が、ハンドヘルド・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベース又はプログラム可能な家庭用電化製品、ミニコンピュータ、大型汎用コンピュータなどを含む、他のコンピュータ・システム構成を用いて実現できることも認めるだろう。本発明は、通信網を経由してリンクされるリモート処理装置によってタスクが実行される分散コンピューティング環境でも実施できる。分散コンピューティング環境では、プログラム・モジュールをローカル及びリモートの両方の記憶装置に置くことができる。
【００２０】
図１を参照すると、本発明を実現する代表的なシステムは、処理装置２１と、システム・メモリ２２と、システム・メモリ２２を処理装置２１に結合するシステム・バス２３とを有する従来のパーソナル・コンピュータ２０を含む。システム・メモリ２２は、読み取り専用メモリ（ＲＯＭ）２４及びランダム・アクセス・メモリ（ＲＡＭ）２５を含む。基本入力／出力システム（ＢＩＯＳ）２６は、スタートアップ中などにパーソナル・コンピュータ２０内の構成要素間における情報の転送を支援する基本ルーチンを含み、ＲＯＭ２４に格納される。パーソナル・コンピュータ２０は、ハードディスク・ドライブ２７と、例えば、リムーバブルディスク２９に対して読み書きするためのリムーバブル磁気ディスク・ドライブ２８と、例えば、ＣＤ−ＲＯＭディスク３１を読み取るための、又は他の光記録媒体に対して読み書きするための光ディスク・ドライブ３０とをさらに含む。ハードディスク・ドライブ２７、リムーバブル磁気ディスク・ドライブ２８、及び光ディスク・ドライブ３０は、それぞれハードディスク・ドライブ・インタフェース３２、磁気ディスク・ドライブ・インタフェース３３、及び光ディスク・インタフェース３４によってシステム・バス２３に接続している。上記ドライブ及びそれらに関連するコンピュータ読み取り可能な記録媒体は、パーソナル・コンピュータ２０に不揮発性のストレージを提供する。当業者は、単一のハードディスク・ドライブ２７が、物理ドライブ装置の論理サブセットである１つ又は複数の“パーティション”又は“論理ディスク”を含むことも認めるだろう。前述のコンピュータ読み取り可能な記録媒体の説明はハードディスク・ドライブ、リムーバブル磁気ディスク、及びＣＤ−ＲＯＭディスクを示しているが、当業者は、磁気カセット、フラッシュ・メモリ・カード、デジタル・ビデオ・ディスク、ベルヌーリ・カートリッジなどの、コンピュータによって読み取ることができる他のタイプの記録媒体も代表的な動作環境において使用できることを認めるだろう。
【００２１】
数多くのプログラム・モジュールは上記ドライブ及びＲＡＭ２５に格納されるが、当該ドライブ及びＲＡＭ２５は、オペレーティング・システム３５（例えば、マイクロソフト社の“ＷＩＮＤＯＷＳ９５”オペレーティング・システム）と、一組のアプリケーション・プログラム３６（例えば、“ＭＩＣＲＯＳＯＦＴ  ＯＦＦＩＣＥ”プログラムの一組）と、１つ又は複数の他のアプリケーション・プログラム３７と、データ３８とを含む。オペレーティング・システム・ソフトウェアとアプリケーション・プログラムは、一般的にＣＤ−ＲＯＭ３１又はフロッピー（登録商標）・ディスク２９からハードディスク・ドライブ２７にインストールされる。ほとんどのケースで、インストール・プロセスは、オペレーティング・システム又はアプリケーション関連ファイルと共に当該ＣＤ−ＲＯＭ又はフロッピー・ディスクに格納されているセットアップ・プログラム又はインストール・プログラムによって制御される。
【００２２】
ユーザは、マウス４２などのポインティング・デバイスとキーボード４０とを介してコマンド及び情報をパーソナル・コンピュータ２０に入力する。他の入力装置（図示せず）としては、マイクロフォン、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、及びスキャナなどがある。これらの及び他の入力装置は、システム・バスに結合するシリアル・ポート・インタフェース４６を経由して処理装置２１に接続されることが多いが、ゲーム・ポート又はユニバーサル・シリアル・バス（ＵＳＢ）などの他のインタフェースを用いて接続することも可能である。モニタ４７又は他のタイプの表示装置も、ビデオ・アダプタ４８などのインタフェースを経由してシステム・バス２３に接続される。パーソナル・コンピュータは、モニタ以外にもスピーカやプリンタなどの他の周辺出力装置（図示せず）も含むことが一般的である。
【００２３】
パーソナル・コンピュータ２０は、リモート・コンピュータ４９などの１つ又は複数のリモート・コンピュータへの論理接続を用いるネットワーク環境において作動する。リモート・コンピュータ４９は、（１つ又は複数のメッセージ・ストアを含む）メール・サーバ、（１つ又は複数のファイル・ストアを含む）ファイル・サーバ、ルータ、ピア・デバイス、又は他の共通ネットワーク・ノードである場合があり、また図１には１つのメモリストレージデバイス５０だけを示しているが、パーソナル・コンピュータ２０に関連して述べた構成要素の大半又は全てを含むことが一般的である。図１に示す論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）５１とワイド・エリア・ネットワーク（ＷＡＮ）５２を含む。このようなネットワーク環境は、事務所、企業規模のコンピュータ・ネットワーク、イントラネット、インターネットでは一般的である。
【００２４】
ＬＡＮネットワーク環境で用いる時に、パーソナル・コンピュータ２０は、ネットワーク・インタフェース５３を経由してＬＡＮ５１に接続する。ＷＡＮネットワーク環境で用いる時に、パーソナル・コンピュータ２０は、インターネットなどのＷＡＮ５２で通信を確立するモデム５４又は他の手段を含むことが一般的である。モデム５４は、内蔵でも外付けでもよいが、シリアル・ポート・インタフェース４６を経由してシステム・バス２３に接続される。ネットワーク環境では、パーソナル・コンピュータ２０に関連して示したプログラム・モジュール又はその一部分がリモート記憶装置に格納されうる。当然のことながら、図示したネットワーク接続は代表的なものであり、コンピュータ間の通信を確立する他の手段も使用できる。
【００２５】
＜従来のディスク・ドライブのフォーマット＞
本発明の特長について述べる前に、データを従来のハードディスク・ドライブに格納する方式について説明すると役立つと思われる。
【００２６】
ハードディスク・ドライブは、格納してあるデータをコンピュータが変更することを可能にするので、データを磁気ディスクから読み取ったり、書き込んだりすることができる。物理ディスク・ドライブは、物理ドライブの論理サブセットである１つ又は複数のパーティション又は論理ディスクを含む。データは、別のファイルとして論理ディスクに格納されることが通常であり、各ファイルは独立してアクセス可能である。各ファイルが格納されているディスク上の位置が識別されて、当該識別された位置情報は、コンピュータが論理ディスクの任意のファイルに瞬時にアクセスすることができるデータ構造体に格納される。
【００２７】
ハードディスク・ドライブを使用に適したフォーマットにすると、ディスクの格納領域はトラックと呼ばれる同心円に分割される。ディスク上のトラックの数はディスクのサイズに依存する。ディスクの各トラックは同じ数のセクタに分割される。一般的に、セクタがスライス状に配置されるので、ディスクの外端のセクタはディスクの内端に近いセクタよりもトラックに沿って更に線形のスペースになる。しかし、各セクタは、同じ量のデータ、一般的に５１２バイトを格納するために用いられる。
【００２８】
各トラックのセクタは複数のクラスタにグループ化される。セクタを複数のクラスタにグループ化することはオペレーティング・システムによって行われ、物理的な制限はない。ディスク上の各トラックは同じ数のクラスタを含み、ディスクの各クラスタは同じ数のセクタを含む。クラスタは、ディスクのサイズに基づいて、１〜６４個のセクタを含むことが一般的であり、各セクタは５１２バイトのデータを格納することが普通である。各クラスタは独立的にアクセス可能である。
【００２９】
コンピュータのオペレーティング・システムは、論理ディスクの１つ又は複数のクラスタに各ファイルを格納する。大きなファイルはファイルに関連するデータの全てを保持するために幾つかのクラスタを必要とするが、極端に小さいファイルは単一のクラスタに格納できる。１つのクラスタは２つ以上のファイルからのデータを格納できないので、１つのクラスタの中の１つ又は複数のセクタは、当該ファイルがクラスタのセクタの全てを完全に満たすほど十分なデータを含んでいない場合、空の状態を維持する。従って、ディスク・スペースは、各クラスタに格納されるデータ量がほとんどのファイルのサイズと比べて明らかに小さい場合に、最も効率的に用いられる。
【００３０】
磁気ハードディスク・ドライブは、幾つかの堅固なアルミニウム・ディスクのスタック又はプラッターを含むことが普通であり、それらには磁性材料が塗布されている。各プラッターは、その最上部と底部の両方の表面にデータを格納できる。データは、ディスク表面の領域を磁化することによって各ディスクにエンコードされる。データは、読取／書込ヘッドを用いてディスクから検索され、又は追加される。磁気ディスク・ドライブの各ヘッドは回転アームに固定した小さな電磁石から成り、電磁石はディスク表面の非常に近くに位置している。このようなヘッドの１つが各プラッターの各記録面に備えられている。アームは、全体的に放射状の通路のディスク表面で前後にヘッドを回転させる。ヘッド・アクチュエータがアームを回転させてヘッドの動きを制御する。データがディスクに書き込まれると、ヘッドはデータが書き込まれるディスクの適切な領域に位置している。ヘッドに送られた電流がヘッド近くのディスクの狭い領域を磁化する磁界を生成する。この狭い磁化領域がデジタル・ビットを表す。同様に、データがディスク・ドライブから読み取られると、ヘッドがディスクの適当な磁化領域上に位置してヘッドに電流を誘導する。ヘッドに誘導された電流がデジタル・データにデコードされる。
【００３１】
ディスク・ドライブのプラッターが全て１つのスピンドルに連なっている。スピンドルは一定速度で調和してディスクを回転させるモータに連なっている。ディスクの複数のセクタは異なる量のスペースをとるが、各セクタ内に格納されたデータ量は同じである。ディスクが一定速度で回転するので、ディスク上のセクタの位置にかかわらず、同じ量のデータを検索することが可能になる。
【００３２】
ディスクの新しいクラスタにアクセスすると、ヘッドがデータの読み書きを実際に始める前に２つの機械的動作が実施されなければならない。まず、ヘッドがその現在位置から目的とするクラスタを含むトラックの位置に放射状に移動する。“探索時間”は、ヘッドを保持するアームが慣性と摩擦の影響を克服してその動きを効果的にするために必要な時間を意味する。探索時間は“整定時間（settle time）”も含むが、“整定時間”はヘッドがその移動後に固定位置に安定するために必要な時間である。第２に、ヘッドは所望のデータを含むクラスタがヘッドの下方で回転することを待機しなければならない。この時間は“回転待機時間（rotational latency）”と呼ばれる。ディスクが一定速度で回転するので、ヘッドが所望のクラスタがその下方を通過することを待機しなければならない最長時間はプラッターが１回転するために必要な時間になる。従って、新しいクラスタへの各アクセスにより、ディスクの適正領域にアクセスするという機械的要求に主として起因する固有の遅延が生じる。
【００３３】
オペレーティング・システムは論理ディスクに格納されたファイルの位置のレコードを保守しなければならない。幾つかのデータ構造はファイル・アクセスのために用いられる。論理ディスクの各セクタは論理ディスクのセクタの位置に基づく独自の識別番号を有する。同様に、各クラスタは独自のクラスタ番号を有する。識別番号は、隣接するセクタ及び隣接するクラスタが連続番号になるように割り当てられる。論理ディスクのどの部分をファイル・データの格納に用いるかについて決定するために用いる主要なデータ構造は、ファイル・アロケーション・テーブル（ＦＡＴ）である。他のファイル・システムは、ハイパフォーマンス・ファイル・システム（ＨＰＦＳ）及びＮＴファイル・システム（ＮＴＦＳ）を含む。本発明はＦＡＴファイル・システムに関連して述べているが、本発明は他のタイプのファイル・システムにも適用できる。
【００３４】
ＦＡＴファイル・システムでは、ＦＡＴは論理ディスク又はパーティションの開始部近くに格納され、論理ディスクのクラスタごとにエントリを有する。クラスタは、それらのクラスタ番号によって連続してＦＡＴにリストされている。クラスタごとのＦＡＴエントリはそのファイルの次の部分が含まれているクラスタの番号を有する。ファイルの最終データを有するクラスタのＦＡＴエントリはファイル終了（ＥＯＦ：End of File）エントリを有する。従って、論理ディスクに格納された各ファイルは、１つ又は複数のクラスタのチェーンとしてＦＡＴで表現される。ＦＡＴは、各クラスタがファイルに割り当てられているかどうかについて示すが、或るクラスタがどのファイルに属するかについて、コンピュータのオペレーティング・システムに直接指示しない。
【００３５】
前述のように、ディスク・スペースは各クラスタが明らかに小さい（例えば、４ＫＢ）場合に最も効率的に使用できる。しかし、ディスクのパーティションのＦＡＴのサイズから、論理ディスクに含めることができるクラスタの最大数、従って、クラスタのサイズが決まることになる。例えば、ＦＡＴ１６ファイル・システムでは、ＦＡＴは１６ビットの数を用いて各クラスタを表している。これが、ディスク上で最大で６５，５３６（すなわち、６４Ｋ）のクラスタを可能にする。表１に示すように、ディスクのサイズは各クラスタの最大サイズを決めるためにＦＡＴのサイズによって分割できる。
【００３６】
【表１】
2008251018.tif 000003
ＦＡＴ３２ファイル・システムは、２８ビットの数を用いて各クラスタを表し、２２８個のクラスタのトラックを保つことができるので、４Ｋバイト以下のクラスタを特に大型の論理ディスクでさえも可能にする。ＦＡＴ３２は、“ＷＩＮＤＯＷＳ９５”オペレーティング・システムのＯＳＲ２（ＯＥＭサービス・リリース２）バージョン、及び“ＷＩＮＤＯＷＳ９８”オペレーティング・システムなどの後続する“ＷＩＮＤＯＷＳ”オペレーティング・システムで使用できる。
【００３７】
ディレクトリと呼ばれるデータ構造は、論理ディスクに格納した全てのファイル及びサブディレクトリのリスト（それらの一部はディレクトリ・ビット・セットと共にレギュラー・ファイルとして格納される）を含む。ルート・ディレクトリは、ルート・ディレクトリが親ディレクトリを有しておらず、ファイル・データの格納に用いられるセクタの前の論理ディスクの開始部近くに一般的に格納される点においてサブディレクトリと異なっている。ディレクトリはクラスタ番号を有するファイルごとにエントリをもち、エントリには、そのファイルの最初の部分が格納される。各ファイルの最初のクラスタ番号を格納することにより、ディレクトリは各ファイルをＦＡＴに結びつけている。
【００３８】
論理ディスクのファイルにアクセスするために、コンピュータのオペレーティング・システムは、ファイルのディレクトリ・エントリを読み出し、ファイル・データが格納されている最初のクラスタに対応するＦＡＴエントリを決定する。オペレーティング・システムは、次に、ファイルの最初のＦＡＴエントリから始まるＦＡＴエントリの全体的なチェーンを読み取る。ＦＡＴから最初のクラスタの位置及びクラスタのチェーンを用いると、オペレーティング・システムは、ファイルに属する全てのクラスタを決定するので、各クラスタにアクセスすることができる。
【００３９】
データが論理ディスクに加えられ、又は削除されると、ディスクはフラグメント化される。フラグメント化は、論理ディスク上で隣接しないクラスタに単一ファイルの複数の部分を格納することを意味する。ファイルが論理ディスクに書き込まれると、オペレーティング・システムはＦＡＴの空きクラスタ・リストで識別した空白スペースにデータを格納する。データの格納に用いる空白スペースは幾つかの非隣接クラスタを含む。
【００４０】
＜起動時間を改善するためのプログラムのインストール又は再配置＞
図２乃至図７は、プログラムの起動時間を改善する方式においてアプリケーション関連ファイルをインストールする代表的な方法を示す。当業者は、本発明が、ワシントン州レドモンドのマイクロソフト社が発表したアプリケーション・プログラムの“ＭＩＣＲＯＳＯＦＴ・ＯＦＦＩＣＥ”の一組を含む、多種多様なアプリケーション、ユーティリティ、オペレーティング・システムに関係したプログラムとともに使用できることを認めるだろう。
【００４１】
従来技術と同様に、本発明はプログラム起動中にファイルの部分を論理ディスクから読み取る順序を決定しなければならない。しかし、ファイルが論理ディスクに既にインストールされた後にこの決定を実施してファイルを再配置する従来技術と異なって、本発明は、ファイルを論理ディスクに最初にインストールするので、ほぼ最適の順序でファイルを配置する。大まかに言えば、このことが達成されるのは、ファイルの種々の部分が起動中にアクセスされる順序を定めて、インストール・ディスクに含まれるロード・シーケンス・リストを生成し、当該ロード・シーケンス・リストが示す順序でファイルの始動関連部をインストールすることによって行われる。また、ロード・シーケンス・リストは、ファイルが論理ディスクにインストールされた後にファイルを再配置するために使用することができる。ロード・シーケンス・リストは、インターネット又は他の配布手段を介してインストール・ディスクに配布することができる。
【００４２】
図２と図３は、インストール・ディスクを生成し、ファイルが起動中にロードされる順序で論理ディスクにファイルをインストールする代表的な方法を示すフロー図である。図２のフロー図は、アプリケーション関連ファイル、１つ又は複数のロード・シーケンス・リスト、及びインストール・プログラムを有するインストール・ディスクを生成する方法２００を示す。図３のフロー図は、インストール・ディスクから論理ディスクにファイルをインストールして、当該ファイルが起動中に読み取られる順序で当該ファイルを格納する方法３００を示す。
【００４３】
図２はインストール・ディスクを生成する方法２００を示す。方法２００の第１のステップは、アプリケーション関連ファイルの生成である（ステップ２０５）。代表的な方法では、このステップは、当業者には自明の従来の方式で行われ、プログラム（例えば、アプリケーション・プログラム）に関連付けられた全てのファイルの生成を包含する。これらのファイルは、実行可能ファイル、ダイナミック・リンク・ライブラリー、データ・ファイル、プリファレンス・ファイルなどを含む。
【００４４】
ファイルが生成された後、方法２００はステップ２１０に進む。ここで、ファイルがコンピュータにインストールされ、プログラムが起動される。起動プロセスは、ファイルのどの部分が起動中にアクセスされるかについて決定できる計測コードによってモニタ又は計測される。計測コードは、どのファイル部分が読み取られたのかを示し、かつ当該ファイル部分が読み取られた順序を示すロード・シーケンス・リストを生成する。
【００４５】
図４は代表的なロード・シーケンス・リストのフォーマットを示す。当該リストの各エントリは、アクセスされたファイル、ファイルに対するオフセット、及び読み取られたデータの量を識別する。オフセットと長さは、バイト単位で測定され、ファイルの開始部に関連する。オフセットと長さによって読み取られた部分の開始部分と長さが決まる。このステップ２１０によって、プログラム起動中にアクセスされた全ファイルのリスト、読み取られた各ファイル内の位置、及びプログラム起動時にディスクから読み取られるデータの量がもたらされる。
【００４６】
方法２００はステップ２１０からステップ２２０に進む。当業者は、ステップ２１０で生成され、ブート中にアクセスされた全ファイルのレコードを含む最初のロード・シーケンス・リストが、プログラムそのものの部分でないファイルを含むことを認めるだろう。例えば、アプリケーション・プログラムが起動されると、アプリケーション・プログラムは、コンピュータに、アプリケーション・プログラムそのものとは別個に存在する種々のシステム・ファイルの部分又は他の共有ファイルを読み取ることを要求することがある。ステップ２２０で、方法２００は、最初のロード・シーケンス・リストの内容を分析し、プログラムのインストール時にユーザのコンピュータ上で最適でない又は再インストールしないファイルを除去する。除去ファイルには、インストール・プログラムで変更できない又は変更すべきでないファイルと、明らかに頻繁に変更されると思われるファイル（例えば、プリファレンス・ファイル）とが含まれる。当業者は、このステップは別の方式で実施できることを認めると思われるが、この別の方式は、最初のロード・シーケンス・リストに含まれることを防止する除外リストを用いること、又は、あるファイルを無視するためにインストール時にロード・シーケンス・リストを処理することを含む。
【００４７】
ロード・シーケンス・リストを編集して最適でないファイルを除去した後に、方法２００はステップ２２５に進み、そこで、１つ又は複数の最終的なロード・シーケンス・リストが生成される。当業者は、ファイルをロードする順番は、プログラムがインストールされるコンピュータに関連付けられる種々の要因の影響を受ける場合があることを認めるだろう。例えば、特定のバージョンのオペレーティング・システム（メジャー・リリースとマイナー・アップデートを含む）及びコンピュータに関連付けられるクラスタ・サイズは、論理ディスクにファイル部をインストールする最適な順番に関係がある。従って、これらのシナリオのそれぞれについて異なるロード・シーケンス・リストを生成できる。例えば、特定のバージョンのオペレーティング・システムで用いるロード・シーケンス・リストは、別のマシン構成の最適なロード・シーケンスに対して追加ファイルを追加するでき、又はファイルを削除できる。同様に、ロード・シーケンス・リストを種々のクラスタ・サイズで用いるために提供できる。また、小さな（例えば、４Ｋ）クラスタで用いる単一のロード・シーケンス・リストを提供可能であり、他のクラスタ・サイズについてのロード・シーケンス・リストはファイルの順序設定時に単一のロード・シーケンス・リストから導かれることが可能である。最終的なロード・シーケンス・リストは図４の例と同じフォーマットになることがある。
【００４８】
ステップ２３０で、実際のインストール・ディスク（例えば、ＣＤ−ＲＯＭ又はフロッピー・ディスク）が生成される。インストール・ディスクは、アプリケーション関連ファイル、ロード・シーケンス・リスト、及びセットアップ・プログラム又はインストール・プログラムを含む。インストール・ディスクがユーザのコンピュータのドライブに挿入されると、ユーザはインストール・プログラムを起動してファイルをコンピュータの論理ディスクにインストールする。ユーザ入力とコンピュータから読み取られた構成情報とに基づいて、インストール・プログラムは、どのファイルをインストールする必要があるのか、及びファイルのインストール順序を定め、ファイルをインストール・ディスクから読み取って適切な順序でディスクに書き込む。
【００４９】
図３は、インストール・ディスクから論理ディスクにファイルをインストールし、始動関連プログラム部をそれらがプログラム起動中に読み取られる順序で格納する方法３００を示す。代表的な実施例では、方法３００は、ディスク・ドライブ３０（図１）に挿入されたＣＤ−ＲＯＭであるインストール・ディスクに含まれるインストール・プログラムによって実行される。
【００５０】
方法３００は、ユーザがインストール・プログラムを起動すると始まり、ステップ３０５に進む。ステップ３０５では、インストール・プログラムは、コンピュータに問い合わせを行い、コンピュータにインストールされたオペレーティング・システムに関連するデータ及びハードディスク・ドライブの特性のデータなどを得る。
【００５１】
ステップ３１０では、インストール・プログラムは、ユーザを促して、特定のプログラム又はユーザがインストールを望むプログラムに関連する情報を得る。インストール・プログラムは、インストールを進める前にユーザ名及びシリアル番号を入力するようにユーザに要求する。
【００５２】
ステップ３１５で、インストール・プログラムは、ステップ３１０と３１５で得た情報を用いて、どのファイルをインストール・ディスクからハードディスク・ドライブにインストールすべきかについて決定する。
【００５３】
ステップ３２０で、インストール・プログラムは、ステップ３１０と３１５で得た情報を用いて、どのロード・シーケンス・リストを用いて、ファイルの始動関連部を論理ディスクにインストールして格納する順序を決定する。前述のように、異なるバージョンのオペレーティング・システムや異なるハードディスク・ドライブのクラスタ・サイズなどを収容するために異なるロード・シーケンス・リストを提供できる。
【００５４】
図５は、４つのアプリケーション・ファイル（ファイルＡ、Ｂ、Ｃ、Ｄ）の部分と単純なロード・シーケンス・リストの例を示すが、ロード・シーケンス・リストは、始動関連ファイル部と、始動関連ファイル部がプログラムの起動時にロードされる順序とを識別する。この例では、アプリケーション・プログラムがファイルＡ、Ｂ、Ｃ、Ｄを含むが、アプリケーション・プログラムは当然のことながら多くの追加ファイルを含むことができる。各ファイルは複数の部分（例えば、Ａ１−Ａ８、Ｂ１−Ｂ６、Ｃ１−Ｃ５、Ｄ１−Ｄ５）を含む。しかし、ファイルＡ、Ｂ、Ｃだけが、アプリケーション起動中にロードされる部分を含んでいる。これらの始動関連部は、Ａ１−Ａ４、Ｂ１−Ｂ３、Ｃ１−Ｃ３の部分を含む。ファイルＡ、Ｂ、Ｃの残りの部分とファイルＤの全体は起動中にロードされない。当業者は、各ファイルの始動関連部（例えば、Ａ１−Ａ４）が、連続する部分である必要がなく、ファイルの非始動関連部（例えば、Ａ５−Ａ８）より先行する必要もないことを認めるだろう。図５の最終行は、始動ロード・シーケンスを示しており、当該始動ロード・シーケンスは、ファイルＡ、Ｂ、Ｃの始動関連部が起動中にロードされる順序を示す。この例では、始動ロード・シーケンスは、Ａ１、Ｂ３、Ａ３、Ｂ２、Ｂ１、Ｃ２、Ｃ１、Ａ２、Ｃ３、Ａ４である。
【００５５】
残りのインストール・プロセス（ステップ３２５、３３０、３３５）の目標は、前述の始動ロード・シーケンスで論理ディスクの連続クラスタに始動関連ファイル部をインストールすることである。従って、インストール・プロセスには次の２つの目的がある。すなわち、（１）適切な順序で始動関連ファイル部を書き込むこと、及び（２）始動関連ファイル部が論理ディスクの連続するクラスタに格納されることを保証すること、である。適切な順序で始動関連ファイル部を書き込む目的は、ロード・シーケンス・リストの規定から指摘されている。ファイル部が連続するクラスタに格納されていることを保証することは、大半のパーソナル・コンピュータに用いられているＦＡＴファイル・システムの種々の特性によって行われる。
【００５６】
一般的に、ＦＡＴファイル・システムは、“クラスタ空きリスト”の順序でファイルを論理ディスクに書き込む。言い換えれば、ファイルがハードディスク・ドライブに書き込まれる時に、ファイルの最初のクラスタがＦＡＴで識別された最初の空きクラスタに書き込まれ、ファイルの第２のクラスタがＦＡＴで識別された次の空きクラスタに書き込まれ、以降、同様に書き込まれる。多くのケースにおいて、空きクラスタは連続していない。従って、プログラムをインストールする時に、プログラムの始動関連ファイル部を格納するのに十分な連続する空きクラスタを有する論理ディスクの一つの部分を識別することが望ましい。ファイルの残りの部分はクラスタ空きリストの順序で書き込み可能である。
【００５７】
ステップ３２５で、インストール・プログラムは、ファイルの始動関連部の格納に用いる（論理ディスク上の）連続する空きクラスタの複数のブロックを識別する。本発明は、始動関連ファイル部を格納するのに十分な利用可能なディスク・スペースを識別する方法を幾つか考案している。
【００５８】
第１のアプローチは、既存のファイルが論理ディスクの開始部に格納されており、十分な量の連続する空きクラスタが論理ディスクの末端に存在すると想定している。この想定は非現実的であるが、インストール・プロセス中に、従来のデフラグ・ユーティリティを用いて論理ディスクをデフラグすることを示唆することによって達成できる。ディスクのデフラグ後に、アプリケーション・プログラムをディスクの末端の空きスペースにインストールすると、ファイルの始動関連部を連続するクラスタに格納できる。当業者は、インストール前に論理ディスクのデフラグに必要な時間がかかることと、一部のユーザが示唆されたデフラグの実行を好まない又は実施できないことのために、このアプローチはそれほど望ましい方式ではないと思われるかもしれない。
【００５９】
第２のアプローチは、大きな空きスペースがディスクの末端に存在するが、非連続の空きクラスタがディスクの開始部に存在すると想定している。このアプローチでは、ロード・シーケンス・リストからの始動関連ファイル部が最後にインストールされる。このアプローチでは、アプリケーション・ファイルの残りの部分（すなわち、非始動関連部）を最初にインストールして、クラスタの空きリストの順序でディスクに格納することができる。大半のケースで、この大量のファイル・データを格納すると、非連続の空きクラスタが非始動関連ファイル部で充填され、ファイルの始動関連部がディスクの末端で使用可能な状態を維持する連続する空きクラスタにインストールされることになる。
【００６０】
十分に連続する空きクラスタを識別する第３のアプローチでは、全体的な空きクラスタのリストを読み出して、連続する空きクラスタの任意のグループのサイズをトラッキングする。当該リストは、連続する空きクラスタの最大グループを見つけるために、サイズによってソートされる。空きクラスタの最大グループが識別されて、始動関連ファイル部を格納するためにマークが付記される。起動ファイルについての宛先クラスタの識別後に、プロセスは、空きクラスタのオリジナルリストを再びソートして、データを論理ディスクに書き込み始める。宛先クラスタが当該リストの最初の空きクラスタでない場合、仮のファイルが、希望の宛先クラスタに達するために充填する必要のある空きクラスタに書き込まれる。起動ファイルが連続する宛先クラスタに書き込まれた後に、仮のファイルが削除され、当該クラスタがクラスタの自由リストに戻る。仮のファイルの使用について以下で詳述する。
【００６１】
第４のアプローチは、第３のアプローチと似ているが、仮のファイルに書き込む必要のあるデータの量を減少させる。第３のアプローチでは、大量のデータをディスクの前半にある多くのサイズの小さなクラスタのグループに書き込むことを要求できる。このアクティビティーを最小限にするために、第４のアプローチは、最も前半にある連続するクラスタのグループ又はグループのセットを用いて、プログラム起動時間を大幅に改善する。
【００６２】
十分に連続する空きクラスタが始動関連ファイル部のインストールについて識別された後に、インストール・プログラムはステップ３３０に進んで、始動関連ファイル部を空きスペースに適切な順序で書き込む。当業者は、ロード・シーケンス・リストで示された順序で空きスペースに始動関連ファイル部を書き込むために必要な特定のステップが種々の要因に依存することを認めるだろう。この要因の中で最も重要なものはコンピュータの特定のオペレーティング・システムと思われる。当該オペレーティング・システムは、ファイルを論理ディスクに書き込むためのツールと、どのようにしてファイルをハード・ドライブに書き込むかについての制約を提供する。“ＷＩＮＤＯＷＳ９５”オペレーティング・システムでの使用に適した２つのアプローチについて次に説明する。
【００６３】
当業者は、論理ディスクに起動ファイルを書き込む最も単純なシナリオは、空きスペースが全て連続すると共に論理ディスクの末端部分に位置し、オペレーティング・システムが強制的にファイルを連続状態にしようとしない時に現れることを認めるだろう。この単純で恐らく非現実的なシナリオで、論理ディスクにファイルを書き込むプロセスは、次のように実施できる。最初に、インストール・プログラムはＣＤ−ＲＯＭ（読取用）及び論理ディスク（書込用）上の必要なファイルを開く。次に、ロード・シーケンス・リストにリストしてある最初のクラスタをＣＤ−ＲＯＭから読み取って、ハードディスク・ドライブに書き込む。ある場合には、データがディスクに実際に書き込まれることを保証するために出力ファイルをフラッシュする必要がある。これらのステップは、ロード・シーケンス・リストのクラスタの全てが論理ディスクに書き込まれるまで繰り返される。そこで、インストール・プログラムはステップ３３５に進み、ファイルの残りの部分（すなわち、非始動関連ファイル部）がＣＤ−ＲＯＭから読み取られて論理ディスクに書き込まれる。全てのファイルが書き込まれると、読取ファイルと書込ファイルがクローズして、オペレーティング・システムはＦＡＴファイル・システムを更新する。方法３００がステップ３４０で終了して、インストールが完了する。
【００６４】
個々のファイルを非連続のクラスタに書き込む特定の方法（ステップ３３０）を“ＷＩＮＤＯＷＳ９５”オペレーティング・システムに関連して説明する。“ＷＩＮＤＯＷＳ”９５オペレーティング・システムは、ファイルを連続するクラスタに保持するように試みる。単一ファイルを複数のクラスタに書き込むと、オペレーティング・システムは、それらを連続クラスタにしようと試みる。本発明の実施例では、このオペレーティング・システムの特長は、仮のファイルを用いて、ハードディスク・ドライブ上にスペースをとり、各ファイルの始動関連部を非連続のクラスタに希望の順序で強制的に書き込むことによって達成している。当業者は、オペレーティング・システムとファイル・システムが、ファイルを書き込む順序に関して、ある要件を課すことを認めると思われる。最も重要なことは、１つのファイルの複数のクラスタが単調に増加する順序で割り当てられることである。言い換えれば、ファイルの第１のクラスタは、情報がファイルに書き込まれる順序にかかわらず、ファイルの第２のクラスタの前に割り当てられる。
【００６５】
仮のファイルを用いる例が図６に示されており、この例はインストール・プロセスの異なる段階における論理ディスクの１２個のクラスタの内容を示す。本例では、図５の１０個のファイル部が、図６に示した１２個のクラスタに書き込まれる。インストールが始まる前に、１２個のクラスタ（任意に、０〜１１の参照番号が付いている）が空きクラスタ・リストの連続クラスタになる。連続するクラスタ０〜１１が空きクラスタ・リストの第１のクラスタではない場合、インストール・プログラムは、仮のファイルをクラスタ０の前のクラスタに書き込む。これによってクラスタ０が空きクラスタ・リストの第１の空きクラスタになる。
【００６６】
インストール・プログラムは、希望したクラスタの順序を適切なロード・シーケンス・リストから読み取り、クラスタをＣＤ−ＲＯＭから読み取って、読み取られたクラスタを論理ディスクのクラスタ０〜９に書き込む。オペレーティング・システムは各ファイルのクラスタが単調に増加する順序で書き込まれることを要求するので、ファイルを論理ディスクに書き込むプロセスは、空きスペースを介して複数のパスを要求すると共にデータが希望したクラスタに書き込まれることを保証するために仮のファイルを用いることも含む。
【００６７】
図６を見ると、第１のパスでは、インストール・プログラムは、ロード・シーケンス・リストを読み取り、クラスタＡ１を最初にロードすると決定している。クラスタＡ１はファイルＡの第１のクラスタなので、クラスタ０に直ちに書き込まれる。
【００６８】
次に、インストール・プログラムは、クラスタＢ３をクラスタ１に書き込むと決定する。しかし、クラスタＢ３は、クラスタＢ１とＢ２がハードディスク・ドライブに未だに書き込まれていないので格納できない。従って、インストール・プログラムは、仮のファイルｔ１をクラスタ１に書き込む。
【００６９】
仮のファイルｔ１が書き込まれた後に、インストール・プログラムは、クラスタＡ３を書き込むと決定する。しかし、クラスタＡ３は、クラスタＡ２が未だにハードディスク・ドライブに書き込まれていないので格納できない。従って、インストール・プログラムは、仮のファイルｔ２をクラスタ２に書き込む。
【００７０】
クラスタＢ２は、クラスタＢ１がハードディスク・ドライブに書き込まれるまで格納できないため、仮のファイルｔ３がクラスタ３に書き込まれる。
【００７１】
仮のファイルｔ３が書き込まれた後に、インストール・プログラムはクラスタＢ１をクラスタ４に書き込むと決定する。クラスタＢ１はファイルＢの第１のクラスタなので、ハードディスク・ドライブのクラスタ４に書き込まれる。
【００７２】
クラスタＢ１の後、クラスタＣ２はクラスタＣ１が格納されるまで格納できないため、インストール・プログラムは仮のファイルｔ４をクラスタ５に書き込む。
【００７３】
次に、インストール・プログラムはクラスタＣ１をクラスタ６に書き込むと決定する。クラスタＣ１はファイルＣの第１のクラスタなので、クラスタ６に書き込まれる。
【００７４】
次に、インストール・プログラムはクラスタＡ２をクラスタ７に書き込むと決定する。クラスタＡ１が既に書き込まれているので、クラスタＡ２はクラスタ７に書き込まれる。
【００７５】
クラスタＡ２がハードディスク・ドライブに書き込まれた後に、インストール・プログラムは、クラスタＣ３をクラスタ８に書き込むと決定する。しかし、クラスタＣ３は、クラスタＣ２がまだ格納されていないので書き込むことができない。インストール・プログラムは、仮のファイルｔ５をクラスタ８に書き込む。
【００７６】
次に、インストール・プログラムは、クラスタＡ４をクラスタ９に書き込むと決定する。しかし、クラスタＡ３が未だにハードディスク・ドライブに書き込まれていないので、インストール・プログラムは、仮のファイルｔ６をクラスタ９に書き込む。
【００７７】
インストール・プログラムが、始動関連ファイル部を格納するために用いられるクラスタの全てにデータを書き込んだ後に、インストール・プログラムは大きな仮のファイルｔ７をディスクの残りの空きスペースに書き込む。
【００７８】
第２のパス中において、インストール・プログラムは、始動関連ファイルをハードディスク・ドライブに単調に増加する順序で書き込むプロセスを継続する。
【００７９】
第２のパス中において、クラスタＢ２が格納されていないので、クラスタＢ３をハードディスク・ドライブに書き込むことができない。
【００８０】
クラスタＡ１とＡ２が既に格納されてあるのでクラスタＡ３をクラスタ２に書き込むことができる。従って、インストール・プログラムは、仮のファイルｔ２を削除して、クラスタＡ３をクラスタ２に書き込む。
【００８１】
クラスタＢ１が既に格納されてあるので、クラスタＢ２をクラスタ３に書き込むことができる。インストール・プログラムは、仮のファイルｔ３を削除して、クラスタＢ２をクラスタ３に書き込む。
【００８２】
クラスタＣ１が既に格納されてあるので、クラスタＣ２をクラスタ５に書き込むことができる。インストール・プログラムは、仮のファイルｔ５を削除して、クラスタＣ２をクラスタ５に書き込む。
【００８３】
クラスタＣ１とＣ２が既に格納されてあるので、クラスタＣ３をクラスタ８に書き込むことができる。インストール・プログラムは、仮のファイルｔ５を削除して、クラスタＣ３をクラスタ８に書き込む。
【００８４】
最後に、クラスタＡ１〜Ａ３が既に格納されてあるので、クラスタＡ４をクラスタ９に書き込むことができる。インストール・プログラムは、仮のファイルｔ６を削除して、クラスタＡ４をクラスタ９に書き込む。
【００８５】
パス３において、クラスタＢ１とＢ２が既に格納されてあるので、クラスタＢ３をクラスタ１に最終的に書き込むことができる。インストール・プログラムは、仮のファイルｔ１を削除して、クラスタＢ３をクラスタ１に書き込む。
【００８６】
始動関連ファイル部の全てが書き込まれた後に、インストール・プログラムは、仮のファイルｔ７と、クラスタ０の前のクラスタに書き込まれていた任意の仮のファイルを削除する。そのため、この未使用のクラスタが空きクラスタ・リストに戻ることになる。この時に、残りのプログラムの部分（すなわち、非始動関連ファイル部）がＣＤ−ＲＯＭから読み取られて、ハードディスク・ドライブに書き込まれる。当該ファイルは、クラスタ空きリストの順序でハードディスク・ドライブに格納される。
【００８７】
あるバージョンの“ＷＩＮＤＯＷＳ９５”オペレーティング・システムはファイル・アロケーション・ストラテジーを採用しており、当該ストラテジーは、２つのファイルが開いていて、プログラムが両方に書き込まれる場合に、プログラムがファイル間にある空きスペースを望むと想定している。図７は、このオペレーティング・システムの特長にもかかわらず、ハードディスクのクラスタ０〜９に始動ファイル部を書き込む第２の方法を示す。この第２のアプローチは、図６に示したアプローチと非常に似ているが、空きクラスタのそれぞれに仮のファイルを生成するために、空きクラスタを介する更なるパスを必要としている。
【００８８】
図７の例の場合、図５の１０個のファイル部が、ハード・ドライブのクラスタ０〜９に書き込まれる。インストールが始まる前に、１２個のクラスタ（番号０〜１１が付いている）が空きクラスタ・リストで連続するクラスタになる。連続するクラスタ０〜１１が空きクラスタ・リストの第１のクラスタではない場合、インストール・プログラムは、クラスタ０の前のクラスタに仮のファイルを書き込む。その結果、クラスタ０が空きクラスタ・リストの第１の空きクラスタになる。
【００８９】
パス１中に、インストール・プログラムは、ロード・シーケンス・リストで識別したファイル・クラスタを格納するために用いる各クラスタに、別個の仮のファイル（ｔ１〜ｔ１０）を書き込む。別の仮のファイルｔ１１が、クラスタ９に続く空きクラスタの全てに書き込まれる。このことが、オペレーティング・システムがインストール・プログラムによって書き込まれるクラスタ間にスペースを残すことができないことを保証する。
【００９０】
パス２〜４は、図６のパス１〜３と同じように進んで、単調に増加する順序でファイル・クラスタを書き込むために用いられる。しかし、パス２において、クラスタＡ１、Ｂ１、Ｃ１、Ａ２がクラスタ１、４、６、７にそれぞれ書き込まれるので、仮のファイルｔ１、ｔ５、ｔ７、ｔ８は削除しなければならない。
【００９１】
始動関連ファイル部の全てが論理ディスクに書き込まれた後に、インストール・プログラムは、クラスタ０の前のクラスタに書き込まれていた任意の仮のファイルと仮のファイルｔ１１とを削除する。これにより、未使用のクラスタが空きクラスタ・リストに戻ることになる。その時に、残りのファイル部（すなわち、非始動関連ファイル部）が、ＣＤ−ＲＯＭから読み取られて、論理ディスクに書き込まれる。当該ファイルは、クラスタ空きリストの順序で論理ディスクに格納される。
【００９２】
今までの説明では、本発明について幾つかの実施例に関係して述べてきた。概して、これらの実施例は、論理ディスク上の連続するクラスタにインストールすべき始動関連ファイル部を識別するロード・シーケンス・リストと、十分な数の連続する空きクラスタを識別する方法と、希望の順序で連続するクラスタにプログラム部を書き込む方法とを含む。
【００９３】
本発明は、本発明の実施形態に組み込むことが可能ないくつかの追加の特長を考案している。
【００９４】
本発明の方法は、新しいファイルの始動関連部だけでなく、論理ディスク上の既存ファイルと新しいプログラムの追加部も含むように拡張できる。
【００９５】
例えば、本発明は、システム・ファイルと他のインストール済みのファイルがロード・シーケンス・リストに含まれている場合、それらのファイルの最適化に使用できる。この最適化を実現するために、インストール・プロセスは、前述のように進むが、読取用の既存のファイル及び書込用の新しい仮のファイルを開くことを含む。既存ファイルに関連するクラスタが他の始動関連ファイル部と共に連続する空きクラスタに書き込まれる。始動関連ファイル部が論理ディスクの連続クラスタに全て書き込まれた後に、元の既存ファイルが削除され、仮のファイルは削除された元のファイルと同じ名前になるようにリネームされる。
【００９６】
前述のように、本発明の原理はプログラムの他の共通するディスク集中部の検出とインストール（又は再配置）に使用できる。例えば、ＯＰＥＮ、ＳＡＶＥ、ＬＯＡＤ、ＰＲＩＮＴなどのルーチンを実行するコードが検出できて、その結果がインストール・ディスクのロード・シーケンス・リストに含められる。インストール・プログラムは、新しいプログラムのインストール時にこの情報を用いてコードの当該部分を論理ディスクの連続部分に書き込み、又は、インストール後にコードの関連する部分を再配置することができる。
【００９７】
前述のように、仮のファイルはインストール・プロセスのある段階中に論理ディスクの殆ど全ての空きスペースを埋めるために使用できる。一般的に、当該仮のファイルはインストール・プロセスの完了時にインストール・プログラムによって削除される。しかし、仮のファイルが削除され、未使用のスペースがコンピュータに使用できることを保証するために、オペレーティング・システムが実施するポスト・リブート又は“チューンアップ”プロセスをプログラム設定すると、１つ又は複数の仮のファイルの存在についてチェックし、もし見つかると削除することができる。セットアップ・プロセスのポスト・リブート部は、インストール・プロセス中に使用状態だったので、削除又はリネームできなかった任意の最適化システム・ファイルを削除してリネームするために使用できる。
【００９８】
図８は、コードが論理ドライブにインストールされた後に、セットアップ及び他のディスク集中型オペレーションに関連するコード部を最適化するために本発明の原理を用いる別の方法８００を示すフロー図である。図３の方法と同様に、方法８００は、１つ又は複数のロード・シーケンス・リスト及びプログラム・ファイルを含むインストール・ディスクを使用する。しかし、この実施例では、プログラム・ファイルが、ロード・シーケンス・リストのコピーと共に従来の方式で論理ドライブに最初にインストールされる。インストール後のある時点で、チューンアップ・プログラムはロード・シーケンス・リストを用いてディスク集中型データを最適な形態で再配置することができる。
【００９９】
ステップ８０５で、方法８００は、従来の方式で論理ドライブにプログラム・ファイルをインストールするステップを含んでいる。この時に、ロード・シーケンス・リストのコピーも論理ドライブにコピーされる。
【０１００】
プログラムのインストール後に、別のプログラムを用いて、プログラムのスタートアップなどのディスク集中型オペレーションに関連付けられるプログラム部を再配置できる。この“チューンアップ”又は再配置プログラムは、様々な時に実行できる。例えば、コンピュータがプログラムのインストール後に最初にリスタートする時にチューンアップ・プログラムを自動的に実行できる。チューンアップ・プログラムは、ユーザが自らのコンピュータの保守点検を選択することを選んだ時はいつでも手動で実行できる。
【０１０１】
ステップ８１０は、チューンアップ又は再配置プロセスの第１のステップである。ステップ８１０で、チューンアップ・プログラムはコンピュータに問い合わせを行い、コンピュータにインストールされているオペレーティング・システムやハードディスク・ドライブの特性などのデータを入手する。
【０１０２】
ステップ８１５で、チューンアップ・プログラムは、ステップ８１０で得た情報を用いて、ファイルのディスク集中部を論理ディスク上に再配置する際の順序を決定するためにどのロード・シーケンス・リストを用いるかを決定する。前述のように、オペレーティング・システムの異なるバージョンや異なるハードディスク・ドライブのクラスタ・サイズなどを収容するために異なるロード・シーケンス・リストを提供できる。
【０１０３】
当業者は、プログラムのＭＩＣＲＯＳＯＦＴ  ＯＦＦＩＣＥの一組などのプログラムの一組が２つ以上のアプリケーション・プログラムを有することを認めるだろう。本発明は、アプリケーション・プログラムごとにロード・シーケンス・リストを提供することにより、一組のプログラムのインストールに適用できる。複数のバージョンのオペレーティング・システムがサポートされている場合、本発明は、サポートされているオペレーティング・システムごとにアプリケーション・プログラムごとにロード・シーケンス・リストを提供する。プログラムが（インストール中又はインストール後に）“最適化”される場合、適用可能なロード・シーケンス・リストは所定の順序で互いに連結できる。１つの始動関連ファイル部が２つ以上のロード・シーケンス・リストに存在する場合に、当該部分が第１のロード・シーケンス・リストを除いて全てのロード・シーケンス・リストから除去されて１つの始動関連ファイル部を含むようになる。最適化は、マージされたロード・シーケンス・リストに準じて進行する。
【０１０４】
ステップ８２０で、チューンアップ・プログラムは、ファイルのディスク集中部を格納するために用いられる（論理ディスクの）連続する空きクラスタのブロックを識別する。前述のように、本発明は、始動関連ファイル部を十分に格納できるディスク・スペースを識別する方法を幾つか考案している。
【０１０５】
十分に連続する空きクラスタが始動関連ファイル部のインストールに対して識別された後に、インストール・プログラムはステップ８２５に進んで、適切な順序で空きスペースにディスク集中型ファイル部を再配置する。
【０１０６】
要約すると、図８の方法は、インストール時（又はインストール直後）にファイルの再配置を可能にすると共に、当該ファイルをインストール後の任意の時にチューンアップ又は固定することも可能にする。ロード・シーケンス・リストを用いると、このチューンアップは、従来技術で用いたモニタ機能なしで実施できる。
【０１０７】
最後に、前述のプロセスは、オペレーティング・システムが提供する読み取り機能と書き込み機能を用いる。このアプローチは非常に堅固なので、インストール・プロセスがユーザのハードディスク・ドライブのデータを損傷させる可能性は、事実上解消される。しかし、当業者は、クラスタ・レベルでデータを書き込む低レベルの機能を用いることによってハードディスク・ドライブにデータを書き込むことができることを認めるだろう。このアプローチは、インストール・プログラムに、ファイル部を適切なクラスタに書き込んだ後に、戻ってＦＡＴをパッチすることを要求する。このアプローチは本発明に関連して使用できるが、ハードディスク・ドライブのデータがある状態で損傷される大きなリスクも提供する。
【０１０８】
＜詳細な説明の考察＞
前述の説明から、本発明は、プログラムの起動時間を改善する方法で、ファイルをインストール又は再配置する改善されたシステムと方法を提供することが分かる。本発明の主な長所は、プログラムが１つ又は複数のロード・シーケンス・リストを提供することによってインストールされた後に、スタートアップ・プロセスをモニタする必要性を不要にしたことにある。
【０１０９】
前述の実施例では、プログラムのスタートアップ・プロセスをモニタし、プログラムの起動又はあるプログラム・コマンドの選択などのディスク集中型オペレーション中にファイル部がディスクから読み取られる順序を決定する。このデータは、ファイルの種々の部分が起動中に読み取られる順序を示すロード・シーケンス・リストの生成に用いられる。インストール中に、インストール・プログラムは、ロード・シーケンス・リストからデータを読み取り、論理ディスク上の連続するクラスタに読み取られたデータの順番で始動関連ファイル部を書き込む。あるいは、ファイルの始動関連部はプログラムのインストール後にロード・シーケンス・リストにしたがって再配置される。この後に、コンピュータは起動関連データを論理ディスクから連続ディスク・クラスタの適切な順序で読み取ることができるので、ディスク・ヘッドが起動データを読み取るために非連続クラスタ間で移動しなければならない場合のディスク・アクセスから生じる無駄な時間を最小限に又は解消することができる。
【０１１０】
本発明は、図２〜８に示した特長に基づき実装された１つ又は複数のプログラム・モジュールにおいて具体的に実現される。前述の種々の手順を実施する特定のプログラミング言語について説明しなかったのは、上記の説明及び添付図面で説明したオペレーション、ステップ、および手順について、当業者が本発明を実施できるように十分に開示してあると考えるからである。更に、本発明を実施する際に使用できるコンピュータとオペレーティング・システムが多くあるので、これらの多くの異なるシステムの全てに適用できるコンピュータ・プログラムについて詳細に述べていない。特定のコンピュータの各ユーザは自らが必要とし意図するものに最も効果的なツールと言語とを認識していると考えるからである。
【０１１１】
そのうえ、本発明は“ＷＩＮＤＯＷＳ９５”オペレーティング・システムのもとでアプリケーション・プログラムをインストールするアプリケーション・プログラムに関係して主として述べてきたが、当業者は、本発明が、種々のタイプのプログラム・モジュールに適用でき、並びに多種多様なオペレーティング・システムを実行し、かつ多種多様なファイル・システムを用いるシステムに適用できることを認めるだろう。例えば、本発明は、アプリケーション・プログラム、ユーティリティ・プログラム、オペレーティング・システム・プログラム・モジュールなどをインストールするために使用できる。前述のように、本発明は、アプリケーション・プログラムの起動やプログラム・コマンド（例えば、ＦＩＬＥ  ＯＰＥＮ）に関連付けられるコードの起動などを含む、多様なディスク集中型オペレーションに関連付けられるプログラム・データを再配置するためにも使用できる。
【０１１２】
本発明は、限定するよりもむしろ図示される全ての点において意図される特定の実施例に関連して述べてきた。本発明の要旨と範囲から逸脱せずに関連する代替的な実施例も当業者には自明のことと思われる。従って、本発明の範囲は、前述の説明よりもむしろ添付する特許請求の範囲から定められる。
【図面の簡単な説明】
【０１１３】
【図１】本発明の一実施形態の動作環境を提供するパーソナル・コンピュータのブロック図である。
【図２】プログラム起動中にロードされる順序で論理ディスクにファイルをインストールするインストール・ディスクを生成する代表的な方法を示すフロー図である。
【図３】インストール・ディスクから論理ディスクにファイルをインストールして、ファイルがプログラム起動中にロードされる順序で格納する代表的な方法を示すフロー図である。
【図４】代表的なロード・シーケンス・ファイルの内容を示すテーブルである。
【図５】３つのファイルのスタートアップ関連の要素と、当該要素の代表的なロード順序を示すテーブルである。
【図６】ファイル要素を論理ディスク上の空きクラスタに書き込む代表的な方法を示すテーブルである。
【図７】ファイル要素を論理ディスクの空きクラスタに書き込む代表的な方法を示すテーブルである。
【図８】ファイルの部分を論理ディスクにインストールした後に、それらを最適化する代替方法を示すフロー図である。
【符号の説明】
【０１１４】
２１  処理装置
２２  システム・メモリ
２３  システム・バス
３２  ハードディスク・ドライブ・インタフェース
３３  磁気ディスク・ドライブ・インタフェース
３４  光ディスク・インタフェース
３５  オペレーティング・システム
３６  一組のプログラム
３７  アプリケーション・プログラム
３８  アプリケーション・データ
４０  キーボード
４２  マウス
４６  シリアル・ポート・インタフェース
４７  モニタ
４８  ビデオ・アダプタ
４９  リモート・コンピュータ（サーバ）
５１  ローカル・エリア・ネットワーク
５２  ワイド・エリア・ネットワーク
５３  ネットワーク・インタフェース
【図１】
2008251018.tif 000004
【図２】
2008251018.tif 000005
【図３】
2008251018.tif 000006
【図４】
2008251018.tif 000007
【図５】
2008251018.tif 000008
【図６】
2008251018.tif 000009
【図７】
2008251018.tif 000010
【図８】
2008251018.tif 000011