(57)【要約】【課題】システムの起動に要する時間を短縮する。【解決手段】オペレーティングシステムブートプロセス（ＯＳブートプロセス）中にアクセスされたファイルのリストを作成して、ＯＳブートプロセスをプロファイリングし、ファイルのリストを最適化して、後続するＯＳブートプロセスにおいて利用される最適化ファイルリストを作成する。最適化は、ファイルがソリッドステート媒体からアクセスされた場合は第１の最適化技術に応じて実行され、ファイルが回転式媒体からアクセスされた場合は、回転待ちの最小化や先読み技術などの第２の最適化技術に応じて実行される。【選択図】図１
2015064898.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムの起動中に使用されたファイルを識別する段階と、
前記コンピュータシステムの起動中に使用された前記ファイルを識別する段階に基づいて、ファイルのリストを作成する段階と、
前記コンピュータシステムの起動時に、前記ファイルの前記リストに基づいて、１以上のファイルの利用に先立って、前記１以上のファイルを前記コンピュータシステムのキャッシュにプリフェッチする段階と、
を有し、
前記コンピュータシステムの起動中に使用されたファイルを識別する段階は、前記コンピュータシステムの前記起動中に起動されたファイルのそれぞれに対応付けられる時間指標を決定する段階を含み、
前記リストは、最適化リストを含み、
前記最適化リストは、前記ファイルがソリッドステートドライブに格納されていることが検出されると、ソリッドステートドライブ用に最適化される、又は、前記ファイルがハードディスクドライブに格納されていることが検出されると、ハードディスクドライブ用に最適化される、
方法。
【請求項２】
前記コンピュータシステムの起動時に、前記ファイルの前記リストに基づいて、前記１以上のファイルの利用に先立って、前記１以上のファイルを前記コンピュータシステムの前記キャッシュにプリフェッチする段階は、前記１以上のファイルを実行してプログラムを開始する前に、前記１以上のファイルを、ドライブから前記キャッシュに先読みする段階を有する、
請求項１に記載の方法。
【請求項３】
前記１以上のファイルを、マルチスレッド方式により先読みする段階をさらに有する、
請求項２に記載の方法。
【請求項４】
前記１以上のファイルを実行して前記プログラムを開始する前に、前記１以上のファイルを、ドライブから前記キャッシュに先読みする段階は、
開始すべきプログラムを識別する段階と、
前記１以上のファイルを実行して前記プログラムを開始する前に、前記１以上のファイルをドライブから前記キャッシュに先読みする段階の完了を待つ段階と、
前記１以上のファイルをドライブから前記キャッシュに先読みする段階が完了すると、前記１以上のファイルを実行して、前記プログラムを開始する段階と、
を含む、
請求項２又は請求項３に記載の方法。
【請求項５】
コンピュータシステムの起動中に使用されたファイルのリストを作成する段階と、
前記コンピュータシステムの起動にソリッドステートディスクドライブが用いられることが検出されると、前記コンピュータシステムの起動中に第１の最適化技術を実施する段階と、
前記コンピュータシステムの起動にハードディスクドライブが用いられることが検出されると、前記コンピュータシステムの起動中に第２の最適化技術を実施する段階と、
を有し、
前記リストは、前記コンピュータシステムの起動中に使用されたファイルの各々の識別子及び時間指標を含み、
前記第１の最適化技術を実施する段階は、前記ファイルの前記リストに対して第１の最適化を実行して、前記ファイルの第１の最適化リストを生成する段階を含み、
前記第２の最適化技術を実施する段階は、前記ファイルの前記リストに対して第２の最適化を実行して、前記ファイルの第２の最適化リストを生成する段階を含み、
前記第２の最適化は、前記第１の最適化とは異なる、
方法。
【請求項６】
前記第１の最適化技術を実施する段階は、前記ファイルの前記リストを、前記ファイルの各々の前記時間指標によってソートする段階を含み、
前記第２の最適化技術を実施する段階は、
前記ファイルの前記リストを複数のグループに分割する段階と、
前記複数のグループのそれぞれを、前記ファイルの各々のディスク位置に応じてソートする段階と、
を含む、
請求項５に記載の方法。
【請求項７】
コンピュータシステムの起動中に使用されたファイルのリストを作成する段階と、
前記コンピュータシステムの起動にソリッドステートディスクドライブが用いられることが検出されると、前記コンピュータシステムの起動中に第１の最適化技術を実施する段階と、
前記コンピュータシステムの起動にハードディスクドライブが用いられることが検出されると、前記コンピュータシステムの起動中に第２の最適化技術を実施する段階と、
を有し、
前記リストは、前記コンピュータシステムの起動中に使用されたファイルの各々の識別子及び時間指標を含み、
前記第１の最適化技術を実施する段階は、前記ファイルの前記リストを、前記ファイルの各々の前記時間指標によってソートする段階を含み、
前記第２の最適化技術を実施する段階は、
前記ファイルの前記リストを複数のグループに分割する段階と、
前記複数のグループのそれぞれを、前記ファイルの各々のディスク位置に応じてソートする段階と、
を含む、
方法。
【請求項８】
前記ファイルの各々の前記時間指標は、前記ファイルの各々に対応付けられている前記コンピュータシステムの起動開始からの時間、前記ファイルの各々に対応付けられている前記ファイルの前記リストの順序を示すシーケンス番号、及び、前記ファイルの各々に対応付けられているタイミングの測定結果からなる群から選択される指標を含む、
請求項５から請求項７までの何れか一項に記載の方法。
【請求項９】
コンピュータに、請求項１から請求項８までの何れか一項に記載の方法を実行させるためのプログラム。
【請求項１０】
プロセッサと、
ハードディスクドライブ及びソリッドステートドライブの少なくとも一方を有するストレージシステムと、
前記ストレージシステムに格納されたコードと、
を備えるコンピュータシステムであって、
前記コードは、実行されると、前記コンピュータシステムに、
前記コンピュータシステムの起動中に使用されたファイルを識別する段階と、
前記コンピュータシステムの起動中に使用された前記ファイルを識別する段階に基づいて、ファイルのリストを作成する段階と、
前記コンピュータシステムの起動時に、前記ファイルの前記リストに基づいて、１以上のファイルの利用に先立って、前記１以上のファイルを前記コンピュータシステムのキャッシュにプリフェッチする段階と、
を実行させ、
前記コンピュータシステムの起動中に使用されたファイルを識別する段階は、前記コンピュータシステムの前記起動中に起動されたファイルのそれぞれに対応付けられる時間指標を決定する段階を含み、
前記リストは、最適化リストを含み、
前記最適化リストは、前記ファイルが前記ソリッドステートドライブに格納されていることが検出されると、前記ソリッドステートドライブ用に最適化される、又は、前記ファイルが前記ハードディスクドライブに格納されていることが検出されると、前記ハードディスクドライブ用に最適化される、
コンピュータシステム。
【請求項１１】
プロセッサと、
ハードディスクドライブ及びソリッドステートディスクドライブの少なくとも一方を有するストレージシステムと、
前記ストレージシステムに格納されたコードと、
を備えるコンピュータシステムであって、
前記コードは、実行されると、前記コンピュータシステムに、
前記コンピュータシステムの起動中に使用されたファイルのリストを作成する段階と、
前記コンピュータシステムの起動に前記ソリッドステートディスクドライブが用いられることが検出されると、前記コンピュータシステムの起動中に第１の最適化技術を実施する段階と、
前記コンピュータシステムの起動に前記ハードディスクドライブが用いられることが検出されると、前記コンピュータシステムの起動中に第２の最適化技術を実施する段階と、
を実行させ、
前記リストは、前記コンピュータシステムの起動中に使用されたファイルの各々の識別子及び時間指標を含み、
前記プロセッサは、前記ファイルの前記リストに対して第１の最適化を実行して前記ファイルの第１の最適化リストを生成することを含む、前記第１の最適化技術を実施し、
前記プロセッサは、前記ファイルの前記リストに対して第２の最適化を実行して前記ファイルの第２の最適化リストを生成することを含む、前記第２の最適化技術を実施し、
前記第２の最適化は、前記第１の最適化とは異なる、
コンピュータシステム。
【請求項１２】
前記第１の最適化技術を実施する段階は、前記ファイルの前記リストを、前記ファイルの各々の前記時間指標によってソートする段階を含み、
前記第２の最適化技術を実施する段階は、
前記ファイルの前記リストを複数のグループに分割する段階と、
前記複数のグループのそれぞれを、前記ファイルの各々のディスク位置に応じてソートする段階と、
を含む、
請求項１１に記載のコンピュータシステム。
【請求項１３】
プロセッサと、
ハードディスクドライブ及びソリッドステートディスクドライブの少なくとも一方を有するストレージシステムと、
前記ストレージシステムに格納されたコードと、
を備えるコンピュータシステムであって、
前記コードは、実行されると、前記コンピュータシステムに、
前記コンピュータシステムの起動中に使用されたファイルのリストを作成する段階と、
前記コンピュータシステムの起動に前記ソリッドステートディスクドライブが用いられることが検出されると、前記コンピュータシステムの起動中に第１の最適化技術を実施する段階と、
前記コンピュータシステムの起動に前記ハードディスクドライブが用いられることが検出されると、前記コンピュータシステムの起動中に第２の最適化技術を実施する段階と、
を実行させ、
前記リストは、前記コンピュータシステムの起動中に使用されたファイルの各々の識別子及び時間指標を含み、
前記第１の最適化技術を実施する段階は、前記ファイルの前記リストを、前記ファイルの各々の前記時間指標によってソートする段階を含み、
前記第２の最適化技術を実施する段階は、
前記ファイルの前記リストを複数のグループに分割する段階と、
前記複数のグループのそれぞれを、前記ファイルの各々のディスク位置に応じてソートする段階と、
を含む、
コンピュータシステム。
【請求項１４】
前記ファイルの各々の前記時間指標は、前記ファイルの各々に対応付けられている前記コンピュータシステムの起動開始からの時間、前記ファイルの各々に対応付けられている前記ファイルの前記リストの順序を示すシーケンス番号、及び、前記ファイルの各々に対応付けられているタイミングの測定結果からなる群から選択される指標を含む、
請求項１０から請求項１３までの何れか一項に記載のコンピュータシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータシステムは、ハードウェア、ファームウェア、およびソフトウェアの組み合わせによって形成されている。コンピュータシステムは通常、１以上のプロセッサと、メモリと、周辺機器および入出力（Ｉ／Ｏ）デバイス等とを備える。コンピュータシステム上では、オペレーティングシステム（ＯＳ）の制御の下、ＯＳのシステムサービスを利用して、さまざまなユーザアプリケーションが実行される。オペレーティングシステムの例を挙げると、Ｌｉｎｕｘ（登録商標）およびＷｉｎｄｏｗｓ（登録商標）がある。
【０００２】
ユーザがコンピュータシステムの利用を開始する前に、コンピュータシステムの電源が入れられるとブートプロセスが実行されて、オペレーティングシステムの主要機能部分であるＯＳカーネルが開始される。一般的なシステムでは、オペレーティングシステムがブートされる前に、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）ファームウェアが通常実行されてさまざまなセルフテスト等の機能を実行した後、ＯＳブートローダに制御が移される。ＯＳブートローダは、オペレーティングシステムの一部で、ユーザにログインさせるための表示を開始するためのグラフィクス機能を提供することを始めとするさまざまなシステム機能を実現するために必要な、多岐にわたるカーネルアイテムをロードするべく利用される。
【０００３】
システムの起動に要する時間は、コンピュータシステムの速度を説明する際にユーザが考慮する要因のうち１つである。ＯＳソフトウェアの一層の増加に伴い、ＯＳのブート時間にも影響が及び、遅れが生じている。このような遅れは、ユーザにとって望ましいものではない。
【図面の簡単な説明】
【０００４】
【図１】本発明の実施形態に応じたコンピュータシステムを示すブロック図である。
【０００５】
【図２】本発明の実施形態に応じたシステム起動方法の全体的な流れを示すフローチャートである。
【０００６】
【図３】本発明の一実施形態に応じた最適化プロセスを示すフローチャートである。
【０００７】
【図４】本発明の一実施形態に応じた最適化起動プロセスを示すフローチャートである。
【０００８】
【図５】本発明の実施形態に係るシステムを示すブロック図である。
【発明を実施するための形態】
【０００９】
さまざまな実施形態において、ＯＳカーネルの一部であるシステム起動マネージャは、効率良くＯＳを起動させるべくさまざまなサブ機能を持つとしてよい。一実施形態によると、システム起動マネージャは、先読みプロファイルコレクタ、プロファイルオプティマイザ、データ先読みエージェント、および、プロセスランチャを有するとしてよい。しかし、実施形態によって異なる機能部を設けるとしてよいものと理解されたい。さらに、実施例によって、それぞれのサブ機能を実行する１以上のコンポーネントは異なるものと理解されたい。また、システム起動マネージャを実行する度に、全ての機能を実行する必要はない。このため、プロファイル機能および最適化機能の実行は省略され得る。例えば、これらの機能は、システムの電源が最初に入れられた際に実行されて、ＯＳブート中に実行されるべきファイルのリストを生成および最適化するとしてよい。この後、システムの電源が入る度にこれらの機能を実行する必要はない。これに代えて、さまざまな実施形態によると、これらの機能がその後実行されるのは、システムを更新する際のみとしてもよい。さまざまなレベルの更新によって、これらの機能の実行がトリガされるとしてよい。例えば、一部の実施例においてこれらの機能がトリガされるのは、ＯＳサービスパックの更新のような大規模な更新の際のみとしてもよい。しかし、別の実施例では、セキュリティアップデート等のより小規模な更新を実行する際に、このような機能をより定期的に実行するとしてもよい。
【００１０】
上述したように、さまざまな実施形態において、システム起動マネージャはＯＳカーネルの一部であってよい。言うまでもなく、本発明の範囲はこれに限定されるものではなく、ユーザレベル空間でほかの実施例を実装するとしてもよい。図１を参照して、システム起動マネージャがどのような状況で動作するかをより詳細に説明する。図１は、本発明の実施形態に係るコンピュータシステムを示すブロック図である。
【００１１】
図１に示すように、コンピュータシステム１０は、ハードウェア２０と、ＯＳカーネル３０と、アプリケーション４０とを含む複数の層を備えるように抽象化される。アプリケーション４０は、ＯＳカーネル３０のさまざまな機能を用いてハードウェア２０上で実行されるさまざまなユーザレベルソフトウェアアプリケーションであってよい。図１から分かるように、ハードウェア２０はプロセッサ２２を有するとしてよい。プロセッサ２２は、例えば、１以上のマルチコアプロセッサであってよい。プロセッサ２２はメモリ２４に接続されるとしてよい。メモリ２４は、より詳細に後述するが、ＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）等の揮発性メモリであってよく、ＯＳディスクキャッシュとして機能するとしてよい。さらに、１以上の入出力（Ｉ／Ｏ）デバイス／周辺機器２６を有するとしてよい。Ｉ／Ｏデバイス／周辺機器２６には、例えば、ディスプレイ、ネットワークインターフェース、回転ディスク（例えば、ハードドライブ）またはＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ）等の大容量ストレージが含まれるとしてよい。上述したようなハードウェアコンポーネントを備えるものとして図示されているが、代表的なシステムはこれら以外にも多くの同様のコンポーネントを備え得るものと理解されたい。
【００１２】
ＯＳカーネル３０の制御下でハードウェア２０を用いてさまざまな処理が実行されるとしてよい。ＯＳカーネル３０は通常、システムまたはアプリケーション４０が要求するさまざまな機能を実行し得る。本発明の実施形態に応じた起動方法を可能とするべく、システム起動マネージャ３２が設けられているとしてよい。ＯＳカーネル３０にはさらに、その他のさまざまなマネージャおよび制御モジュールが設けられるとしてよい。代表的な例を挙げると、さまざまなプロセスについて生成、消去、および処理を実行するべく用いられ得るプロセス制御マネージャ３６、プロセス間通信マネージャ３４がある。さらに、ハードウェアまたはソフトウェアから受信するさまざまな割り込みに応答するべく用いられる割り込みハンドラ３８が設けられるとしてよい。言うまでもなく、ＯＳカーネル３０は、さらに多くの同様のコンポーネントを有するとしてよい。アプリケーション４０は、ＯＳカーネル３０を用いて実行されるさまざまなユーザレベルアプリケーションを有するとしてよい。図１にはこのような具体的な例を図示しているが、本発明の範囲はこれに限定されない。
【００１３】
上述したように、一実施形態によると、システム起動マネージャ３２は、プロファイルコレクタ、プロファイルオプティマイザ、先読みエージェント、および、プロセスランチャを有するとしてよい。システム起動マネージャの一般的なタスクは、システムの状態を「オペレーティングシステムカーネル開始」状態から「すべてのユーザインタラクションについて準備完了」状態へと移行させることである。例を挙げると、このようなＯＳカーネル起動には、ファイルシステムのチェックおよび実装ならびにバックグラウンドタスクおよびクリティカルタスクを実行するさまざまなプロセスの開始といったタスクを完全に理解することを含むとしてよい。ＯＳがＬｉｎｕｘ（登録商標）である場合に行われるタスクの例を挙げると、Ｘサーバ、さまざまなデーモン等を起動することを含むとしてよい。
【００１４】
図２は、本発明の実施形態に係るシステム起動方法の全体的な流れを示すフローチャートである。より具体的に説明すると、方法１００は、最初のプロファイリングを実行して、最適化処理を実行すると共に、そのような最適化処理の後にさらに起動を行うべく用いられ得る。図２から分かるように、最初に、システム起動の際に、システムの電源が入れられるのはこれが最初か否かを判断する（ひし形１０５）。例えば、この判断は、システムが以前に電源を入れられたことがあるか否かを示す指標（例えば、ファイルシステムにあるフラグ、または、以前に作成された先読みリストがないこと）を確認することによって為されるとしてよい。電源が入れられるのは最初であると判断される場合、ブロック１１０に進み、システム起動が実行され得る。この起動処理は、ディスクアクセスによってメモリからファイルを取得して、ファイルをプロセスランチャに与えて、ファイルを実行してさまざまなプロセスを起動する従来の起動処理であってよい。このシステム起動中に、ファイルのリストを生成するとしてよい（ブロック１２０）。より具体的に説明すると、このシステム起動は、ファイルのリストを作成するプロファイリングコレクションであってよい。一実施形態によると、このリストは、ファイル識別子と、各ファイルに対応付けられている時間指標とを含むとしてよい。例を挙げると、時間指標は、システム起動開始からの時間を測定した結果（例えば、ミリ秒（ｍｓ））であってもよいし、または、プロセスランチャを用いてファイルが起動された順序を示すシーケンス番号であってもよい。どちらの場合であっても、リストは、ファイル識別子と、ファイルが実行された順序を示す指標とを含む。
【００１５】
この後、プロファイル最適化を実行して、最適化ファイルリストを生成するとしてよい（ブロック１３０）。以下でさらに説明するが、このような最適化の目的は、ファイルをストレージ内の対応する位置から取得するために必要なシーク時間を短縮することにあるとしてよい。最適化ファイルリストはその後、格納媒体に格納されるとしてよい（ブロック１４０）。例えば、最適化ファイルリストは、ＯＳファイルを含む格納媒体と同じ格納媒体、例えば、ディスクドライブまたはソリッドステートディスク等の大容量ストレージデバイスに格納するとしてよい。この時点において、最適化が完了して、通常のＯＳ処理が実行されるとしてよい。
【００１６】
この後でシステムの電源が入ると、システムが更新されたか否かを判断するとしてよい（ひし形１５０）。更新の種類によってこの判断の結果が肯定的または否定的となるとしてよい。例えば、上述したように、この判断の結果が肯定的となるのは、新しいサービスパック等大規模なシステム更新が行われた場合のみとしてもよいし、別の実施例では、より小規模な更新でもこの判断の結果が肯定的となるとしてよい。更新が行われたと判断された場合、上述した内容のブロック１１０に戻る。更新が行われなかったと判断された場合、ブロック１６０に進み、先読みエージェントが最適化ファイルリストに基づき起動ファイルの先読みを実行するとしてよい。ファイルのうち所定量をＯＳディスクキャッシュ空間に先読みすることに成功すると、ブロック１７０に進み、先読みされた起動ファイルが存在する旨の通知がプロセスランチャに送られるとしてよい。この結果、プロセスランチャは、大容量ストレージに対してファイルを要求する必要がなくなり、ＯＳキャッシュから起動ファイルを直接実行できるようになる（ブロック１８０）。尚、ブロック１６０、１７０、および１８０の処理は、ＯＳカーネルが完全にブートされるまで、繰り返し且つ並行して実行されるとしてもよい。実施形態として図２には上述した具体的な実施例を図示しているが、本発明の範囲はこれに限定されない。
【００１７】
以下では、システム起動マネージャのコンポーネントが実行するさまざまな処理をさらに詳細に説明する。最初のシステム起動時（および、特定の更新の後）に行われるプロファイルコレクション実行処理において、先読みプロファイルコレクタコンポーネントがプロファイルを収集する。先読みプロファイルコレクタコンポーネントは、どのファイルが利用されたか、および、ブートプロセス中のどのタイミングにおいて利用されたかを記録する。
【００１８】
プロファイルオプティマイザが実行するプロファイル最適化フェーズにおいて、記録されたプロファイルは、その後利用されるべく、最適データセットに変換される。具体的に説明すると、プロファイルオプティマイザは、システムがソリッドステートディスク（ＳＳＤ）（シーク時間なし）を実行しているか、システムは回転式ストレージ（シーク時間が非常に長い）を有しているかを検出する。「シーク時間なし」の場合、プロファイル最適化フェーズは、プロファイルのファイルのリストを初回利用に応じてソートすることと、ファイルのどの部分が実際に利用されたかを検出することとを含む。ＳＳＤの場合、ＯＳブート中に利用されたファイルの指標と、これらのファイルの利用された部分を示す指標とを含む最適化ファイルリストを生成するとしてよい。このリストはさらに、初回利用タイミングに応じて、つまり順序に応じて、ソートされるとしてよい。
【００１９】
回転式ストレージの場合、これらの処理に加えて、回転式ストレージに関する物理的な制約、つまりシーク時間に対応するべくさらに処理を実行する。回転式ストレージの場合、プロファイルのファイルリストはまず、初回利用タイミングに応じてソートされる。つまり、元々のリストは、初回利用に応じて、順序付けられたリストに作り変えられる。ソート後のリストは、それぞれがブート中の一定期間（例えば１秒）またはディスクから読み出されるデータの一定量を表す複数のグループに分割される。そして、各グループの内容は、ファイルの先頭セクタ番号に応じて各グループのファイルをソートすることによって、シーク回数を低減するように最適化されるとしてよい。
【００２０】
尚、このプロセス中において、オプティマイザはさらに、リスト全体を走査して、ブートプロセス中にアクセスされた（が、別のグループに含まれている）ファイルの中に、最適化処理が行われている現在のグループに含まれているファイルと同位置にあるファイルがあるか否かを判断するとしてよい。このようなファイルがあれば、現在のグループに追加して、ディスクアクセス回数を低減するとしてよい。本発明の範囲はこれに限定されないが、２つのファイルが同位置にあるとみなされるか否かは、両ファイル間の距離に応じて決まるとしてよい。一部の実施形態では、同位置にあることとは、同じトラックにあること、または、隣接するセクタにあることに対応するとしてよい。このように、所与のファイルは、後続のグループのファイルと共にプロセスランチャによってアクセスされるが、上述したような同位置の条件を満たしているので、先立ってＯＳディスクキャッシュにプリフェッチされるという効果がある。
【００２１】
このように２段階でソートを行うことによって、ファイルリストは、粗ソートレベルで時間に応じてソートされるが、粗ソート後のグループ内でシーク時間を短縮するようにソートされる。この結果得られる最適化ファイルリストはさらに、ファイルに関するメタデータを含むとしてよい。例えば、最適化ファイルリストのデータ構造（ＯＳファイルが格納されている格納媒体と同様の格納媒体に格納され得る）では、グループ間の境界にマークを付けることができる。また、「重要ファイル」に特にマークを付けることもできる。このような「重要ファイル」は通常、ブート中に開始されるべきデーモンのアプリケーションバイナリファイル（つまり、実行可能（．ｅｘｅ）ファイル）である。
【００２２】
図３は、本発明の一実施形態に係る最適化プロセスを示すフローチャートである。当該最適化プロセスは、一部の実施形態において、ＯＳカーネルのシステム起動マネージャのプロファイルオプティマイザによって実行され得る。図３に示すように、方法２００は、ＯＳファイルがソリッドステートディスクに格納されているか、回転式ストレージに格納されているかを判断することから開始されるとしてよい（ブロック２１０）。ＯＳファイルがソリッドステートディスクに格納されている場合、ブロック２２０に進んで、初回利用タイミングに応じてファイルをソートすることによって、最適化を実行するとしてよい（ブロック２２０）。また、この結果得られる最適化ファイルリストは、重要ファイルのフラグ等のメタデータを含むとしてよい（ブロック２２５）。
【００２３】
回転式ストレージが設けられている場合、ブロック２３０に進む。ブロック２３０において、初回利用タイミングに応じてファイルをソートするとしてよい。しかし、図３に示すように、さらに最適化処理が実行されるとしてよい。具体的に説明すると、ファイルを複数のグループに分割するとしてよい（ブロック２４０）。グループは、上述したように、所定量の時間またはデータに対応するとしてよい。そして、それぞれのグループ内で、ディスク位置に応じてソートを実行するとしてよい（ブロック２５０）。つまり、あるグループ内で、先頭セクタ番号に応じて、ファイルを並べ替えるとしてよい。別の実施例によると、ファイル名のアルファベット順に応じて並び替えるとしてもよい。最後に、最適化リストを生成する際に、重要ファイルにフラグをつけるとしてもよい。また、グループ間の境界にもマークをつけるとしてよい（ブロック２６０）。実施形態として図３には上述した具体的な実施例を図示したが、本発明の範囲はこれに限定されない。
【００２４】
最適化後、リストは通常のシステム起動で利用されるとしてよい。起動の初期段階で、システム起動マネージャは、データ先読みエージェントサブコンポーネントをアクティブ化する。データ先読みエージェントは、格納媒体からリストを取得して、リストに記載されているファイルをオペレーティングシステムディスクキャッシュ（ＤＲＡＭであってよい）に１つずつ読み出す。一実施形態によると、ＳＳＤストレージに格納されている場合、マルチスレッド方式で読出しを行うとしてよく、回転式ストレージに格納されている場合はシングルスレッド方式で読出しを行うとしてよい。先読みエージェントは、重要ファイルを発見すると、ディスクキャッシュへの読出しの完了を、メモリに格納されている完了リストに記録する。先読みエージェントが各グループの末尾に到達する度に、当該グループ内で発見されて完了リストに記録された重要ファイルを、プロセスランチャコンポーネントに通知する。特定の実施例によると、ＳＳＤの場合、このような通知を行わないとしてよい。
【００２５】
プロセスランチャコンポーネントは、メモリに、開始すべきアプリケーションの従来のリストを格納している。プロセスランチャは、依然としてこのリストに記載されている順序でファイルを起動するが、さまざまな実施形態では、先読みエージェントがファイル（および当該ファイルが含まれるグループの残り）の先読みタスクが完了したと通知するまで、プロセスの起動を遅延させる。このような遅延を設けることによって、プロセスランチャによるプロセスの起動は、実際にはディスクＩ／Ｏを発生させない（これは、全てのデータが、プロセスが開始されるまでにはＯＳキャッシュに入っているためである）。このため、このようなディスクＩ／Ｏが、先読みエージェントが実行している、注意深くソートされたシークを低減するＩ／Ｏパターンを乱す危険性がなくなる。このような遅延を設けることによって実際には、ブートパフォーマンスを向上させることができる。これは、最適Ｉ／Ｏパターンの場合、Ｉ／Ｏパターンが乱される場合に比べて、ディスク速度が１０倍から５０倍以上高速化されるためである。
【００２６】
図４は、本発明の一実施形態に係る最適化起動プロセスを示すフローチャートである。図４に示すように、方法３００は通常、参照番号３１０で示す一連のフローに図示する先読みエージェントと、参照番号３７０で示す一連のフローに図示するプロセスランチャとを並行に実行することによって開始されるとしてよい。尚、一般的には、先読みエージェントがプロセスランチャが実行される前にファイルの読出しを開始するべく実行されるとしてよいが、本発明の範囲はこれに限定されない。
【００２７】
先読みエージェントについて、ＯＳ格納部、例えば大容量メモリから一度に１つのファイルが読み出されて、ＯＳディスクキャッシュに格納される（ブロック３２０）。読み出されてＯＳディスクキャッシュに格納されたファイル毎に、当該ファイルが重要ファイルであるか否か、または、グループの末尾であるか否かを判断するとしてよい（ブロック３３０）。重要ファイルでもグループの末尾でもなければ、ブロック３２０に戻る。重要ファイルであるか、または、グループの末尾であれば、ブロック３４０に進んで、（重要ファイルであれば）ファイル指標を完了リストに格納する。ブロック３５０においてグループの末尾であると判断されれば、ブロック３６０に進み、完了リストを（通知３６５によって）プロセスランチャに送信するとしてよい。
【００２８】
図４に示すように、プロセスランチャの一連のフローは、開始すべき次のプログラムを特定することから開始される（ブロック３７５）。プログラムの特定は、上述したように、プロセスランチャが保有しているファイルのリストまたはプロセスランチャがアクセスするファイルのリストを参照して行われるとしてよい。しかし、プロセスランチャは、次のプログラムを実行する前に、このプログラムがＯＳディスクキャッシュ空間に存在する旨の通知を先読みエージェントから受信するまで、待機状態に入るとしてよい（ブロック３８０）。したがって、（ファイルが先には存在していなかったことを前提として）この通知を受信すると、プログラムを実行するとしてよい（ブロック３９０）。実施形態として図４には具体的な実施例を図示したが、先読みエージェントとプロセスランチャとの間でのインタラクションおよび通知は他の実施形態でも可能である。このため、実施形態によれば、高効率なソート順序が提供され、プロセス／デーモンの開始を、先読みの進捗状況に対応付ける（つまり、開始されないようにする）。
【００２９】
実施形態は、多くの異なる種類のシステムにおいて実装され得る。図５は、本発明の実施形態に係るシステムを示すブロック図である。図５に示すように、マルチプロセッサシステム５００は、ポイント・ツー・ポイント・インターコネクトシステムであって、ポイント・ツー・ポイント・インターコネクト５５０によって互いに接続された第１のプロセッサ５７０および第２のプロセッサ５８０を備える。図５に示すように、プロセッサ５７０および５８０はそれぞれ、マルチコアプロセッサであってよく、第１および第２のプロセッサコア（つまり、プロセッサコア５７４ａおよび５７４ｂならびにプロセッサコア５８４ａおよび５８４ｂ）を有するが、プロセッサが備えるコアの数はこれより多くてもよい。プロセッサコアは、本発明の実施形態に応じて、大容量ストレージデバイスに格納されている１以上のＯＳを起動時にブートするとしてよい。また、プロセッサは、本発明の実施形態に応じて、ＯＳカーネルの一部分を実行して起動ファイルリストの最適化を行うとしてよい。
【００３０】
図５を参照しつつ説明を続けると、第１のプロセッサ５７０はさらに、メモリコントローラハブ（ＭＣＨ）５７２と、ポイント・ツー・ポイント（Ｐ−Ｐ）インターフェース５７６および５７８とを有する。同様に、第２のプロセッサ５８０は、ＭＣＨ５８２と、Ｐ−Ｐインターフェース５８６および５８８とを有する。図５に示すように、ＭＣＨ５７２および５８２は、プロセッサを対応するメモリ、つまりメモリ５３２およびメモリ５３４に接続する。メモリ５３２および５３４は、メインメモリ（例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ））のうち対応するプロセッサに局所的に結合されている部分であってよく、ブートプロセス中にアクセスされるべきファイルを格納するＯＳディスクキャッシュとして機能するとしてよい。第１のプロセッサ５７０および第２のプロセッサ５８０はそれぞれ、Ｐ−Ｐインターコネクト５５２および５５４によって、チップセット５９０に接続されるとしてよい。図５に示すように、チップセット５９０は、Ｐ−Ｐインターフェース５９４および５９８を含む。
【００３１】
さらに、チップセット５９０は、Ｐ−Ｐインターコネクト５３９によってチップセット５９０と高機能グラフィクスエンジン５３８とを接続するインターフェース５９２を含む。チップセット５９０はまた、インターフェース５９６によって第１のバス５１６に接続されるとしてもよい。図５に示すように、第１のバス５１６には、さまざまな入出力（Ｉ／Ｏ）デバイス５１４、および、第１のバス５１６を第２のバス５２０に接続するバスブリッジ５１８が接続されるとしてよい。第２のバス５２０に接続されるさまざまなデバイスには、例えば、キーボード／マウス５２２、通信デバイス５２６、および、コード５３０を含み得るディスクドライブ等のデータストレージユニット５２８が含まれ、一実施形態ではＯＳを含む。言うまでもなく、他の実施形態は、ＯＳが格納されるディスクドライブに代えて、または、そのようなディスクドライブに加えて、ＳＳＤを備えるシステムとして実施されるとしてもよい。また、第２のバス５２０には、オーディオＩ／Ｏ５２４が接続されるとしてもよい。
【００３２】
実施形態は、コードとして実装されて、命令を格納する格納媒体に格納されるとしてもよい。当該命令を用いて、当該命令を実行するようにシステムをプログラムし得る。格納媒体としては、これらに限定されるものではないが、フロッピー（登録商標）ディスク、光ディスク、コンパクトディスク（登録商標）リードオンリーメモリ（ＣＤ−ＲＯＭ）、書き換え可能コンパクトディスク（登録商標）（ＣＤ−ＲＷ）および光磁気ディスク等の任意の種類のディスク、リードオンリーメモリ（ＲＯＭ）等の半導体デバイス、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）等のランダムアクセスメモリ（ＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、消去可能プログラム可能リードオンリーメモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ（登録商標））、磁気カードあるいは光カード、または、電子命令を格納するのに適したその他の任意の種類の媒体、を含むとしてよい。
【００３３】
限られた数の実施形態を参照して本発明を説明したが、当業者であれば、数多くの変形例および変更例に想到するであろう。本願特許請求の範囲は、そのような変形例および変更例もすべて、本発明の真の精神および範囲に含まれるものとして扱う。
（項目１）
コンピュータシステムのプロセッサにおいて、上記コンピュータシステムのオペレーティングシステムブートプロセス（ＯＳブートプロセス）中にアクセスされたファイルのリストを作成して、上記ＯＳブートプロセスをプロファイリングする作成段階と、
上記プロセッサにおいて、上記ファイルがアクセスされたのが、ソリッドステート媒体からか、または、回転式媒体からかを判断する判断段階と、
上記ファイルのリストを最適化して、後続する上記コンピュータシステムのＯＳブートプロセスにおいて利用される最適化ファイルリストを作成する最適化段階と、
上記コンピュータシステムの格納媒体に上記最適化ファイルリストを格納する格納段階と、
を備え、
上記リストは、上記アクセスされたファイルの各々のファイル識別子と、上記アクセスされたファイルの各々がアクセスされたタイミングを示すタイミング指標とを含み、
上記最適化段階は、上記ファイルが上記ソリッドステート媒体からアクセスされた場合は第１の最適化技術に応じて実行され、上記ファイルが上記回転式媒体からアクセスされた場合は第２の最適化技術に応じて実行される、
方法。
（項目２）
上記最適化ファイルリストを用いて上記ＯＳブートプロセスを実行して、上記アクセスされたファイルを取得して上記アクセスされたファイルの第１の部分をＯＳディスクキャッシュにロードして、且つ、上記第１の部分の上記ロードの完了の通知をプロセスランチャに送る実行段階、
をさらに備え、
上記プロセスランチャは、上記通知を受け取るまで上記第１の部分の第１のファイルを実行するのを待ち、入出力アクセスが上記第１のファイルを取得しないようにする、
項目１に記載の方法。
（項目３）
上記最適化ファイルリストに含まれる第１の種類のファイルを重要性指標によって特定する特定段階、
をさらに備える項目２に記載の方法。
（項目４）
上記通知を送ることは、上記最適化ファイルリストに含まれる上記第１の種類のファイルを特定する上記特定段階を含む、
項目３に記載の方法。
（項目５）
上記第１の最適化技術は、初回利用タイミングに応じて上記アクセスされたファイルをソートして、上記最適化ファイルリストを形成することを含む、
項目１に記載の方法。
（項目６）
上記第２の最適化技術は、上記初回利用タイミングに応じて上記アクセスされたファイルをソートして、ソート後の上記アクセスされたファイルを複数のグループに分割して、上記複数のグループのそれぞれを上記回転式媒体における位置に応じて再度ソートすることを含む、
項目５に記載の方法。
（項目７）
上記最適化ファイルリストに含まれる第１の種類のファイルを重要性指標によって特定するファイル特定段階と、
上記複数のグループの間の境界を特定する境界特定段階と、
をさらに備える項目６に記載の方法。
（項目８）
第１のグループに同位置ファイルを追加する追加段階、
をさらに備え、
上記同位置ファイルは、上記回転式媒体において、上記第１のグループのファイルと略同様の位置にあり、
上記同位置ファイルは、上記ＯＳブートプロセスにおいて、別のグループのファイルと共にＯＳディスクキャッシュからアクセスされる、
項目６に記載の方法。
（項目９）
オペレーティングシステム（ＯＳ）の最適化ルーチンを実行するプロセッサと、
上記プロセッサに接続されており、上記ＯＳの少なくとも一部分を格納するＯＳディスクキャッシュと、
上記ＯＳディスクキャッシュに接続されており、上記ＯＳを格納するストレージデバイスと、
を備え、
上記最適化ルーチンは、上記ＯＳのブート中に実行されるファイルのリストをソートして最適化ファイルリストを生成して、上記ストレージデバイスから上記ファイルを取得するために必要な入出力アクセス時間を低減するルーチンであり、
ＯＳブート中に、上記最適化ファイルリストを用いて、上記ＯＳディスクキャッシュに上記ＯＳの第１の部分をロードして、上記第１の部分の上記ロードの完了の通知をプロセスランチャに送り、
上記プロセスランチャは、上記通知を受け取るまで、上記ＯＳディスクキャッシュから上記第１の部分の第１のファイルにアクセスするのを待ち、入出力アクセスが上記第１のファイルを取得しないようにする、
システム。
（項目１０）
上記最適化ルーチンは、上記最適化ファイルリストに含まれる第１の種類のファイルを重要性指標によって特定し、
上記ＯＳブート中に上記通知を送ることは、上記第１の部分に含まれる上記第１の種類のファイルを特定することを含む、
項目９に記載のシステム。
（項目１１）
上記最適化ルーチンは、上記ファイルがソリッドステート媒体からアクセスされた場合は、第１の最適化技術に応じて上記ファイルの上記リストを最適化して、上記ファイルが回転式媒体からアクセスされた場合は、第２の最適化技術に応じて上記ファイルの上記リストを最適化する、
項目９に記載のシステム。
（項目１２）
上記第１の最適化技術は、初回利用タイミングに応じて、アクセスされた上記ファイルをソートして、上記最適化ファイルリストを形成することを含み、上記第２の最適化技術は、上記初回利用タイミングに応じて上記ファイルをソートして、ソート後の上記ファイルを複数のグループに分割して、上記複数のグループのそれぞれを上記回転式媒体における位置に応じて再度ソートすることを含む、
項目１１に記載のシステム。
（項目１３）
上記第２の最適化技術は、第１のグループに同位置ファイルを入れることを含み、
上記同位置ファイルは、上記回転式媒体において、上記第１のグループのファイルと略同様の位置にあり、
上記同位置ファイルは、上記ＯＳブート中に、別のグループのファイルと共に上記ＯＳディスクキャッシュからアクセスされる、
項目１２に記載のシステム。
（項目１４）
上記最適化ルーチンは、プロファイルコレクタと、プロファイルオプティマイザと、先読みエージェントと、上記プロセスランチャとを含む、
項目９に記載のシステム。
（項目１５）
上記プロファイルコレクタおよび上記プロファイルオプティマイザは、上記システムの初回起動の際に実行され、上記初回起動の後は上記ＯＳに対してサービスパック更新が行われた後でのみ実行される、
項目１４に記載のシステム。
（項目１６）
複数の命令を格納する機械アクセス可能格納媒体を備える物品であって、上記複数の命令が実行されると、システムは、
大容量ストレージデバイスに格納されているオペレーティングシステム（ＯＳ）の所定の部分がＯＳディスクキャッシュに格納されるまで、上記ＯＳから１つのファイルを順次読み出して、上記１つのファイルを上記ＯＳディスクキャッシュに格納して、上記１つのファイルが第１の種類であれば完了リストにファイル指標を格納し、
上記ＯＳの上記所定の部分が格納されると、プロセスランチャに上記完了リストを送信し、
上記プロセスランチャがアクセスすべきファイルのリストに含まれている次のファイルを特定して、上記ＯＳディスクキャッシュから上記次のファイルにアクセスし、
上記プロセスランチャは、上記ＯＳディスクキャッシュに上記次のファイルがない場合には、上記完了リストの送信を受け取るまで、待機状態となる、
物品。
（項目１７）
さらに複数の命令を格納しており、上記複数の命令が実行されると、上記システムは、
ＯＳブート中にアクセスされたファイルのリストを作成して、上記ＯＳブートをプロファイリングし、
上記リストは、上記アクセスされたファイルの各々のファイル識別子と、上記アクセスされたファイルの各々がアクセスされたタイミングを示すタイミング指標とを含む、
項目１６に記載の物品。
（項目１８）
さらに複数の命令を格納しており、上記複数の命令が実行されると、上記システムは、
上記ファイルがアクセスされたのがソリッドステート媒体からか、または、回転式媒体からかを判断し、
上記ファイルが上記ソリッドステート媒体からアクセスされた場合は第１の最適化技術に応じて上記ファイルのリストを最適化し、上記ファイルが上記回転式媒体からアクセスされた場合は第２の最適化技術に応じて上記ファイルのリストを最適化する、
項目１７に記載の物品。
（項目１９）
上記複数の命令は、プロファイルコレクタと、プロファイルオプティマイザと、先読みエージェントと、上記プロセスランチャとを含む、
項目１７に記載の物品。
（項目２０）
上記プロファイルコレクタおよび上記プロファイルオプティマイザは、上記システムの初回起動の際に実行され、上記初回起動の後は上記ＯＳに対してサービスパック更新が行われた後でのみ実行される、
項目１９に記載の物品。
（項目１６）
大容量ストレージデバイスに格納されているオペレーティングシステム（ＯＳ）の予め定められた部分がＯＳディスクキャッシュに格納されるまで、上記ＯＳから１つのファイルを順次読み出して、上記１つのファイルを上記ＯＳディスクキャッシュに格納して、上記１つのファイルが第１の種類であれば完了リストにファイル指標を格納する手順、
上記ＯＳの上記予め定められた部分が格納されると、プロセスランチャに上記完了リストを送信する手順、および、
上記プロセスランチャがアクセスすべきファイルのリストに含まれている次のファイルを特定して、上記ＯＳディスクキャッシュから上記次のファイルにアクセスする手順、
をコンピュータに実行させ、
上記プロセスランチャは、上記ＯＳディスクキャッシュに上記次のファイルがない場合には、上記完了リストの送信を受け取るまで、待機状態となる、
プログラム。
（項目１７）
ＯＳブート中にアクセスされたファイルのリストを作成して、上記ＯＳブートをプロファイリングする手順、
をコンピュータにさらに実行させ、
上記リストは、上記アクセスされたファイルの各々のファイル識別子と、上記アクセスされたファイルの各々がアクセスされたタイミングを示すタイミング指標とを含む、
項目１６に記載のプログラム。
（項目１８）
上記ファイルがアクセスされたのがソリッドステート媒体からか、または、回転式媒体からかを判断する手順、および、
上記ファイルが上記ソリッドステート媒体からアクセスされた場合は第１の最適化技術に応じて上記ファイルのリストを最適化し、上記ファイルが上記回転式媒体からアクセスされた場合は第２の最適化技術に応じて上記ファイルのリストを最適化する手順、
をコンピュータにさらに実行させる、
項目１７に記載のプログラム。
（項目１９）
コンピュータを、プロファイルコレクタ、プロファイルオプティマイザ、先読みエージェント、および上記プロセスランチャとして機能させる、
項目１７に記載のプログラム。
（項目２０）
上記プロファイルコレクタおよび上記プロファイルオプティマイザは、上記システムの初回起動の際に実行され、上記初回起動の後は上記ＯＳに対してサービスパック更新が行われた後でのみ実行される、
項目１９に記載のプログラム。
【図１】
2015064898.tif 000003
【図２】
2015064898.tif 000004
【図３】
2015064898.tif 000005
【図４】
2015064898.tif 000006
【図５】
2015064898.tif 000007
【手続補正書】
【提出日】平成26年12月16日(2014.12.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータシステムの起動中に使用された複数のファイルを識別する段階と、
前記コンピュータシステムの起動中に使用された前記複数のファイルを識別する段階に基づいて、複数のファイルのリストを作成する段階と、
前記コンピュータシステムの起動時に、複数のファイルの前記リストに基づいて、１以上のファイルの利用に先立って、前記１以上のファイルをメモリにプリフェッチする段階と、
前記プリフェッチされたファイルの第１の部分を、先読みエージェントを介して、オペレーティングシステム（ＯＳ）ディスクキャッシュにロードし、前記第１の部分の前記ロードの完了を前記先読みエージェントからプロセスランチャに通知する段階と、
を有し、
前記プロセスランチャは、前記通知まで前記第１の部分の第１のファイルを実行するのを待つ、
方法。
【請求項２】
前記コンピュータシステムの起動中に使用された複数のファイルを識別する段階は、前記コンピュータシステムの前記起動中に起動されたファイルのそれぞれに対応付けられる時間指標を決定する段階を含む、
請求項１に記載の方法。
【請求項３】
前記リストは、最適化リストを含み、
前記最適化リストは、
前記複数のファイルがソリッドステートドライブに格納されていることが検出されると、ソリッドステートドライブ用に最適化される、又は、
前記複数のファイルがハードディスクドライブに格納されていることが検出されると、ハードディスクドライブ用に最適化される、
請求項１又は請求項２に記載の方法。
【請求項４】
前記コンピュータシステムの前記起動時に、複数のファイルの前記リストに基づいて、前記１以上のファイルの利用に先立って、前記１以上のファイルを前記メモリにプリフェッチする段階は、
前記１以上のファイルを実行してプログラムを開始する前に、前記１以上のファイルを、ドライブから前記メモリに先読みする段階を有する、
請求項１から請求項３までの何れか一項に記載の方法。
【請求項５】
前記１以上のファイルを実行して前記プログラムを開始する前に、前記１以上のファイルを、前記ドライブから前記メモリに先読みする段階は、マルチスレッド方式により実行されうる
請求項４に記載の方法。
【請求項６】
前記１以上のファイルを実行して前記プログラムを開始する前に、前記１以上のファイルを、前記ドライブから前記メモリに先読みする段階は、
開始すべき前記プログラムを識別する段階と、
前記１以上のファイルを実行して前記プログラムを開始する前に、前記１以上のファイルを前記ドライブから前記メモリに先読みする段階の完了を待つ段階と、
前記１以上のファイルを前記ドライブから前記メモリに先読みする段階が完了すると、前記１以上のファイルを実行して、前記プログラムを開始する段階と、
を含む、
請求項４又は請求項５に記載の方法。
【請求項７】
コンピュータシステムの起動中に使用された複数のファイルのリストを作成する段階と、
前記コンピュータシステムの起動にハードディスクドライブ又はソリッドステートドライブが用いられることを検出する段階と、
前記コンピュータシステムの起動に前記ソリッドステートドライブが用いられることが検出されると、前記コンピュータシステムの起動中に第１の最適化技術を実施する段階と、
前記コンピュータシステムの起動に前記ハードディスクドライブが用いられることが検出されると、前記コンピュータシステムの起動中に第２の最適化技術を実施する段階と、
を有し、
前記リストは、前記コンピュータシステムの起動中に使用されたファイルの各々の時間指標に対応付けられた、前記コンピュータシステムの起動中に使用されたファイルの各々の識別子を含む、
方法。
【請求項８】
各々のファイルの前記時間指標は、
各々のファイルに対応付けられている前記コンピュータシステムの前記起動の開始からの開始時間、
各々のファイルに対応付けられている複数のファイルの前記リストの順序を示すシーケンス番号、及び、
各々のファイルに対応付けられている時間の測定結果、
からなる群から選択される指標を含む、
請求項７に記載の方法。
【請求項９】
前記第１の最適化技術を実施する段階は、複数のファイルの前記リストに対して第１の最適化を実行して、複数のファイルの第１の最適化リストを取得する段階を含み、
前記第２の最適化技術を実施する段階は、複数のファイルの前記リストに対して、異なる第２の最適化を実行して、複数のファイルの第２の最適化リストを取得する段階を含む、
請求項７又は請求項８に記載の方法。
【請求項１０】
前記第１の最適化技術を実施する段階は、複数のファイルの前記リストを、各々のファイルの前記時間指標によってソートする段階を含み、
前記第２の最適化技術を実施する段階は、
前記リストを複数のグループに分割する段階と、
前記複数のグループを、前記複数のファイルの各々の位置に応じてソートする段階と、
を含む、
請求項７から請求項９までの何れか一項に記載の方法。
【請求項１１】
前記第１の最適化技術は、複数のファイルの前記リストから、複数のファイルをプリフェッチすることを含み、
前記第２の最適化技術は、複数のファイルの前記リストから、複数のファイルをプリフェッチすることを含まない、
請求項７から請求項９までの何れか一項に記載の方法。
【請求項１２】
コンピュータに、請求項１から請求項１１までの何れか一項に記載の方法を実行させるためのプログラム。
【請求項１３】
プロセッサと、
ハードディスクドライブ及びソリッドステートドライブの少なくとも一方を有するストレージシステムと、
前記ストレージシステムに格納されたコードと、
を備えるコンピュータシステムであって、
前記コードは、実行されると、前記プロセッサに、請求項１から請求項１１までの何れか一項に記載の方法を実行させる、
コンピュータシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３３
【補正方法】変更
【補正の内容】
【００３３】
限られた数の実施形態を参照して本発明を説明したが、当業者であれば、数多くの変形例および変更例に想到するであろう。本願特許請求の範囲は、そのような変形例および変更例もすべて、本発明の真の精神および範囲に含まれるものとして扱う。
（項目１）
コンピュータシステムのプロセッサにおいて、上記コンピュータシステムのオペレーティングシステムブートプロセス（ＯＳブートプロセス）中にアクセスされたファイルのリストを作成して、上記ＯＳブートプロセスをプロファイリングする作成段階と、
上記プロセッサにおいて、上記ファイルがアクセスされたのが、ソリッドステート媒体からか、または、回転式媒体からかを判断する判断段階と、
上記ファイルのリストを最適化して、後続する上記コンピュータシステムのＯＳブートプロセスにおいて利用される最適化ファイルリストを作成する最適化段階と、
上記コンピュータシステムの格納媒体に上記最適化ファイルリストを格納する格納段階と、
を備え、
上記リストは、上記アクセスされたファイルの各々のファイル識別子と、上記アクセスされたファイルの各々がアクセスされたタイミングを示すタイミング指標とを含み、
上記最適化段階は、上記ファイルが上記ソリッドステート媒体からアクセスされた場合は第１の最適化技術に応じて実行され、上記ファイルが上記回転式媒体からアクセスされた場合は第２の最適化技術に応じて実行される、
方法。
（項目２）
上記最適化ファイルリストを用いて上記ＯＳブートプロセスを実行して、上記アクセスされたファイルを取得して上記アクセスされたファイルの第１の部分をＯＳディスクキャッシュにロードして、且つ、上記第１の部分の上記ロードの完了の通知をプロセスランチャに送る実行段階、
をさらに備え、
上記プロセスランチャは、上記通知を受け取るまで上記第１の部分の第１のファイルを実行するのを待ち、入出力アクセスが上記第１のファイルを取得しないようにする、
項目１に記載の方法。
（項目３）
上記最適化ファイルリストに含まれる第１の種類のファイルを重要性指標によって特定する特定段階、
をさらに備える項目２に記載の方法。
（項目４）
上記通知を送ることは、上記最適化ファイルリストに含まれる上記第１の種類のファイルを特定する上記特定段階を含む、
項目３に記載の方法。
（項目５）
上記第１の最適化技術は、初回利用タイミングに応じて上記アクセスされたファイルをソートして、上記最適化ファイルリストを形成することを含む、
項目１に記載の方法。
（項目６）
上記第２の最適化技術は、上記初回利用タイミングに応じて上記アクセスされたファイルをソートして、ソート後の上記アクセスされたファイルを複数のグループに分割して、上記複数のグループのそれぞれを上記回転式媒体における位置に応じて再度ソートすることを含む、
項目５に記載の方法。
（項目７）
上記最適化ファイルリストに含まれる第１の種類のファイルを重要性指標によって特定するファイル特定段階と、
上記複数のグループの間の境界を特定する境界特定段階と、
をさらに備える項目６に記載の方法。
（項目８）
第１のグループに同位置ファイルを追加する追加段階、
をさらに備え、
上記同位置ファイルは、上記回転式媒体において、上記第１のグループのファイルと略同様の位置にあり、
上記同位置ファイルは、上記ＯＳブートプロセスにおいて、別のグループのファイルと共にＯＳディスクキャッシュからアクセスされる、
項目６に記載の方法。
（項目９）
オペレーティングシステム（ＯＳ）の最適化ルーチンを実行するプロセッサと、
上記プロセッサに接続されており、上記ＯＳの少なくとも一部分を格納するＯＳディスクキャッシュと、
上記ＯＳディスクキャッシュに接続されており、上記ＯＳを格納するストレージデバイスと、
を備え、
上記最適化ルーチンは、上記ＯＳのブート中に実行されるファイルのリストをソートして最適化ファイルリストを生成して、上記ストレージデバイスから上記ファイルを取得するために必要な入出力アクセス時間を低減するルーチンであり、
ＯＳブート中に、上記最適化ファイルリストを用いて、上記ＯＳディスクキャッシュに上記ＯＳの第１の部分をロードして、上記第１の部分の上記ロードの完了の通知をプロセスランチャに送り、
上記プロセスランチャは、上記通知を受け取るまで、上記ＯＳディスクキャッシュから上記第１の部分の第１のファイルにアクセスするのを待ち、入出力アクセスが上記第１のファイルを取得しないようにする、
システム。
（項目１０）
上記最適化ルーチンは、上記最適化ファイルリストに含まれる第１の種類のファイルを重要性指標によって特定し、
上記ＯＳブート中に上記通知を送ることは、上記第１の部分に含まれる上記第１の種類のファイルを特定することを含む、
項目９に記載のシステム。
（項目１１）
上記最適化ルーチンは、上記ファイルがソリッドステート媒体からアクセスされた場合は、第１の最適化技術に応じて上記ファイルの上記リストを最適化して、上記ファイルが回転式媒体からアクセスされた場合は、第２の最適化技術に応じて上記ファイルの上記リストを最適化する、
項目９に記載のシステム。
（項目１２）
上記第１の最適化技術は、初回利用タイミングに応じて、アクセスされた上記ファイルをソートして、上記最適化ファイルリストを形成することを含み、上記第２の最適化技術は、上記初回利用タイミングに応じて上記ファイルをソートして、ソート後の上記ファイルを複数のグループに分割して、上記複数のグループのそれぞれを上記回転式媒体における位置に応じて再度ソートすることを含む、
項目１１に記載のシステム。
（項目１３）
上記第２の最適化技術は、第１のグループに同位置ファイルを入れることを含み、
上記同位置ファイルは、上記回転式媒体において、上記第１のグループのファイルと略同様の位置にあり、
上記同位置ファイルは、上記ＯＳブート中に、別のグループのファイルと共に上記ＯＳディスクキャッシュからアクセスされる、
項目１２に記載のシステム。
（項目１４）
上記最適化ルーチンは、プロファイルコレクタと、プロファイルオプティマイザと、先読みエージェントと、上記プロセスランチャとを含む、
項目９に記載のシステム。
（項目１５）
上記プロファイルコレクタおよび上記プロファイルオプティマイザは、上記システムの初回起動の際に実行され、上記初回起動の後は上記ＯＳに対してサービスパック更新が行われた後でのみ実行される、
項目１４に記載のシステム。
（項目１６）
複数の命令を格納する機械アクセス可能格納媒体を備える物品であって、上記複数の命令が実行されると、システムは、
大容量ストレージデバイスに格納されているオペレーティングシステム（ＯＳ）の所定の部分がＯＳディスクキャッシュに格納されるまで、上記ＯＳから１つのファイルを順次読み出して、上記１つのファイルを上記ＯＳディスクキャッシュに格納して、上記１つのファイルが第１の種類であれば完了リストにファイル指標を格納し、
上記ＯＳの上記所定の部分が格納されると、プロセスランチャに上記完了リストを送信し、
上記プロセスランチャがアクセスすべきファイルのリストに含まれている次のファイルを特定して、上記ＯＳディスクキャッシュから上記次のファイルにアクセスし、
上記プロセスランチャは、上記ＯＳディスクキャッシュに上記次のファイルがない場合には、上記完了リストの送信を受け取るまで、待機状態となる、
物品。
（項目１７）
さらに複数の命令を格納しており、上記複数の命令が実行されると、上記システムは、
ＯＳブート中にアクセスされたファイルのリストを作成して、上記ＯＳブートをプロファイリングし、
上記リストは、上記アクセスされたファイルの各々のファイル識別子と、上記アクセスされたファイルの各々がアクセスされたタイミングを示すタイミング指標とを含む、
項目１６に記載の物品。
（項目１８）
さらに複数の命令を格納しており、上記複数の命令が実行されると、上記システムは、
上記ファイルがアクセスされたのがソリッドステート媒体からか、または、回転式媒体からかを判断し、
上記ファイルが上記ソリッドステート媒体からアクセスされた場合は第１の最適化技術に応じて上記ファイルのリストを最適化し、上記ファイルが上記回転式媒体からアクセスされた場合は第２の最適化技術に応じて上記ファイルのリストを最適化する、
項目１７に記載の物品。
（項目１９）
上記複数の命令は、プロファイルコレクタと、プロファイルオプティマイザと、先読みエージェントと、上記プロセスランチャとを含む、
項目１７に記載の物品。
（項目２０）
上記プロファイルコレクタおよび上記プロファイルオプティマイザは、上記システムの初回起動の際に実行され、上記初回起動の後は上記ＯＳに対してサービスパック更新が行われた後でのみ実行される、
項目１９に記載の物品。
（項目１６）
大容量ストレージデバイスに格納されているオペレーティングシステム（ＯＳ）の予め定められた部分がＯＳディスクキャッシュに格納されるまで、上記ＯＳから１つのファイルを順次読み出して、上記１つのファイルを上記ＯＳディスクキャッシュに格納して、上記１つのファイルが第１の種類であれば完了リストにファイル指標を格納する手順、
上記ＯＳの上記予め定められた部分が格納されると、プロセスランチャに上記完了リストを送信する手順、および、
上記プロセスランチャがアクセスすべきファイルのリストに含まれている次のファイルを特定して、上記ＯＳディスクキャッシュから上記次のファイルにアクセスする手順、
をコンピュータに実行させ、
上記プロセスランチャは、上記ＯＳディスクキャッシュに上記次のファイルがない場合には、上記完了リストの送信を受け取るまで、待機状態となる、
プログラム。
（項目１７）
ＯＳブート中にアクセスされたファイルのリストを作成して、上記ＯＳブートをプロファイリングする手順、
をコンピュータにさらに実行させ、
上記リストは、上記アクセスされたファイルの各々のファイル識別子と、上記アクセスされたファイルの各々がアクセスされたタイミングを示すタイミング指標とを含む、
項目１６に記載のプログラム。
（項目１８）
上記ファイルがアクセスされたのがソリッドステート媒体からか、または、回転式媒体からかを判断する手順、および、
上記ファイルが上記ソリッドステート媒体からアクセスされた場合は第１の最適化技術に応じて上記ファイルのリストを最適化し、上記ファイルが上記回転式媒体からアクセスされた場合は第２の最適化技術に応じて上記ファイルのリストを最適化する手順、
をコンピュータにさらに実行させる、
項目１７に記載のプログラム。
（項目１９）
コンピュータを、プロファイルコレクタ、プロファイルオプティマイザ、先読みエージェント、および上記プロセスランチャとして機能させる、
項目１７に記載のプログラム。
（項目２０）
上記プロファイルコレクタおよび上記プロファイルオプティマイザは、上記システムの初回起動の際に実行され、上記初回起動の後は上記ＯＳに対してサービスパック更新が行われた後でのみ実行される、
項目１９に記載のプログラム。
（項目２−１）
コンピュータシステムの起動中に使用されたファイルを識別する段階と、
上記コンピュータシステムの起動中に使用された上記ファイルを識別する段階に基づいて、ファイルのリストを作成する段階と、
上記コンピュータシステムの起動時に、上記ファイルの上記リストに基づいて、１以上のファイルの利用に先立って、上記１以上のファイルを上記コンピュータシステムのキャッシュにプリフェッチする段階と、
を有し、
上記コンピュータシステムの起動中に使用されたファイルを識別する段階は、上記コンピュータシステムの上記起動中に起動されたファイルのそれぞれに対応付けられる時間指標を決定する段階を含み、
上記リストは、最適化リストを含み、
上記最適化リストは、上記ファイルがソリッドステートドライブに格納されていることが検出されると、ソリッドステートドライブ用に最適化される、又は、上記ファイルがハードディスクドライブに格納されていることが検出されると、ハードディスクドライブ用に最適化される、
方法。
（項目２−２）
上記コンピュータシステムの起動時に、上記ファイルの上記リストに基づいて、上記１以上のファイルの利用に先立って、上記１以上のファイルを上記コンピュータシステムの上記キャッシュにプリフェッチする段階は、上記１以上のファイルを実行してプログラムを開始する前に、上記１以上のファイルを、ドライブから上記キャッシュに先読みする段階を有する、
項目２−１に記載の方法。
（項目２−３）
上記１以上のファイルを、マルチスレッド方式により先読みする段階をさらに有する、
項目２−２に記載の方法。
（項目２−４）
上記１以上のファイルを実行して上記プログラムを開始する前に、上記１以上のファイルを、ドライブから上記キャッシュに先読みする段階は、
開始すべきプログラムを識別する段階と、
上記１以上のファイルを実行して上記プログラムを開始する前に、上記１以上のファイルをドライブから上記キャッシュに先読みする段階の完了を待つ段階と、
上記１以上のファイルをドライブから上記キャッシュに先読みする段階が完了すると、上記１以上のファイルを実行して、上記プログラムを開始する段階と、
を含む、
項目２−２又は項目２−３に記載の方法。
（項目２−５）
コンピュータシステムの起動中に使用されたファイルのリストを作成する段階と、
上記コンピュータシステムの起動にソリッドステートドライブが用いられることが検出されると、上記コンピュータシステムの起動中に第１の最適化技術を実施する段階と、
上記コンピュータシステムの起動にハードディスクドライブが用いられることが検出されると、上記コンピュータシステムの起動中に第２の最適化技術を実施する段階と、
を有し、
上記リストは、上記コンピュータシステムの起動中に使用されたファイルの各々の識別子及び時間指標を含み、
上記第１の最適化技術を実施する段階は、上記ファイルの上記リストに対して第１の最適化を実行して、上記ファイルの第１の最適化リストを生成する段階を含み、
上記第２の最適化技術を実施する段階は、上記ファイルの上記リストに対して第２の最適化を実行して、上記ファイルの第２の最適化リストを生成する段階を含み、
上記第２の最適化は、上記第１の最適化とは異なる、
方法。
（項目２−６）
上記第１の最適化技術を実施する段階は、上記ファイルの上記リストを、上記ファイルの各々の上記時間指標によってソートする段階を含み、
上記第２の最適化技術を実施する段階は、
上記ファイルの上記リストを複数のグループに分割する段階と、
上記複数のグループのそれぞれを、上記ファイルの各々のディスク位置に応じてソートする段階と、
を含む、
項目２−５に記載の方法。
（項目２−７）
コンピュータシステムの起動中に使用されたファイルのリストを作成する段階と、
上記コンピュータシステムの起動にソリッドステートドライブが用いられることが検出されると、上記コンピュータシステムの起動中に第１の最適化技術を実施する段階と、
上記コンピュータシステムの起動にハードディスクドライブが用いられることが検出されると、上記コンピュータシステムの起動中に第２の最適化技術を実施する段階と、
を有し、
上記リストは、上記コンピュータシステムの起動中に使用されたファイルの各々の識別子及び時間指標を含み、
上記第１の最適化技術を実施する段階は、上記ファイルの上記リストを、上記ファイルの各々の上記時間指標によってソートする段階を含み、
上記第２の最適化技術を実施する段階は、
上記ファイルの上記リストを複数のグループに分割する段階と、
上記複数のグループのそれぞれを、上記ファイルの各々のディスク位置に応じてソートする段階と、
を含む、
方法。
（項目２−８）
上記ファイルの各々の上記時間指標は、上記ファイルの各々に対応付けられている上記コンピュータシステムの起動開始からの時間、上記ファイルの各々に対応付けられている上記ファイルの上記リストの順序を示すシーケンス番号、及び、上記ファイルの各々に対応付けられているタイミングの測定結果からなる群から選択される指標を含む、
項目２−５から項目２−７までの何れか一項に記載の方法。
（項目２−９）
コンピュータに、項目２−１から項目２−８までの何れか一項に記載の方法を実行させるためのプログラム。
（項目２−１０）
プロセッサと、
ハードディスクドライブ及びソリッドステートドライブの少なくとも一方を有するストレージシステムと、
上記ストレージシステムに格納されたコードと、
を備えるコンピュータシステムであって、
上記コードは、実行されると、上記コンピュータシステムに、
上記コンピュータシステムの起動中に使用されたファイルを識別する段階と、
上記コンピュータシステムの起動中に使用された上記ファイルを識別する段階に基づいて、ファイルのリストを作成する段階と、
上記コンピュータシステムの起動時に、上記ファイルの上記リストに基づいて、１以上のファイルの利用に先立って、上記１以上のファイルを上記コンピュータシステムのキャッシュにプリフェッチする段階と、
を実行させ、
上記コンピュータシステムの起動中に使用されたファイルを識別する段階は、上記コンピュータシステムの上記起動中に起動されたファイルのそれぞれに対応付けられる時間指標を決定する段階を含み、
上記リストは、最適化リストを含み、
上記最適化リストは、上記ファイルが上記ソリッドステートドライブに格納されていることが検出されると、上記ソリッドステートドライブ用に最適化される、又は、上記ファイルが上記ハードディスクドライブに格納されていることが検出されると、上記ハードディスクドライブ用に最適化される、
コンピュータシステム。
（項目２−１１）
プロセッサと、
ハードディスクドライブ及びソリッドステートドライブの少なくとも一方を有するストレージシステムと、
上記ストレージシステムに格納されたコードと、
を備えるコンピュータシステムであって、
上記コードは、実行されると、上記コンピュータシステムに、
上記コンピュータシステムの起動中に使用されたファイルのリストを作成する段階と、
上記コンピュータシステムの起動に上記ソリッドステートドライブが用いられることが検出されると、上記コンピュータシステムの起動中に第１の最適化技術を実施する段階と、
上記コンピュータシステムの起動に上記ハードディスクドライブが用いられることが検出されると、上記コンピュータシステムの起動中に第２の最適化技術を実施する段階と、
を実行させ、
上記リストは、上記コンピュータシステムの起動中に使用されたファイルの各々の識別子及び時間指標を含み、
上記プロセッサは、上記ファイルの上記リストに対して第１の最適化を実行して上記ファイルの第１の最適化リストを生成することを含む、上記第１の最適化技術を実施し、
上記プロセッサは、上記ファイルの上記リストに対して第２の最適化を実行して上記ファイルの第２の最適化リストを生成することを含む、上記第２の最適化技術を実施し、
上記第２の最適化は、上記第１の最適化とは異なる、
コンピュータシステム。
（項目２−１２）
上記第１の最適化技術を実施する段階は、上記ファイルの上記リストを、上記ファイルの各々の上記時間指標によってソートする段階を含み、
上記第２の最適化技術を実施する段階は、
上記ファイルの上記リストを複数のグループに分割する段階と、
上記複数のグループのそれぞれを、上記ファイルの各々のディスク位置に応じてソートする段階と、
を含む、
項目２−１１に記載のコンピュータシステム。
（項目２−１３）
プロセッサと、
ハードディスクドライブ及びソリッドステートドライブの少なくとも一方を有するストレージシステムと、
上記ストレージシステムに格納されたコードと、
を備えるコンピュータシステムであって、
上記コードは、実行されると、上記コンピュータシステムに、
上記コンピュータシステムの起動中に使用されたファイルのリストを作成する段階と、
上記コンピュータシステムの起動に上記ソリッドステートドライブが用いられることが検出されると、上記コンピュータシステムの起動中に第１の最適化技術を実施する段階と、
上記コンピュータシステムの起動に上記ハードディスクドライブが用いられることが検出されると、上記コンピュータシステムの起動中に第２の最適化技術を実施する段階と、
を実行させ、
上記リストは、上記コンピュータシステムの起動中に使用されたファイルの各々の識別子及び時間指標を含み、
上記第１の最適化技術を実施する段階は、上記ファイルの上記リストを、上記ファイルの各々の上記時間指標によってソートする段階を含み、
上記第２の最適化技術を実施する段階は、
上記ファイルの上記リストを複数のグループに分割する段階と、
上記複数のグループのそれぞれを、上記ファイルの各々のディスク位置に応じてソートする段階と、
を含む、
コンピュータシステム。
（項目２−１４）
上記ファイルの各々の上記時間指標は、上記ファイルの各々に対応付けられている上記コンピュータシステムの起動開始からの時間、上記ファイルの各々に対応付けられている上記ファイルの上記リストの順序を示すシーケンス番号、及び、上記ファイルの各々に対応付けられているタイミングの測定結果からなる群から選択される指標を含む、
項目２−１０から項目２−１３までの何れか一項に記載のコンピュータシステム。