(57)【要約】【課題】高速なリードアクセスを効率的に行えるようにする。【解決手段】フィルタドライバ５５は、オペレーティングシステムのブートの際に生じるＨＤＤ１２１への一連のリードアクセスの内容を示すアクセスパターン６１を収集する。また、フィルタドライバ５５は、アクセスパターン６１に基づき、オペレーティングシステムの次のブートの際にリードアクセスの対象となるデータをＨＤＤ１２１から先読みしてメモリ上の先読みバッファ６３にロードし、リードアクセスにより要求されるデータが先読みバッファ６３の中に存在する場合、該当するデータをオペレーティングシステムへ送る。【選択図】      図３
2007179089.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムのブートの際に生じる記憶装置への一連のリードアクセスの内容を示すアクセスパターンを収集するパターン収集手段と、
前記アクセスパターンに基づき、前記オペレーティングシステムの次のブートの際にリードアクセスの対象となるデータを前記記憶装置から先読みしてメモリ上にロードするデータ先読み手段と、
前記リードアクセスにより要求されるデータが前記メモリ上にロードされたデータの中に存在する場合、該当するデータを前記オペレーティングシステムへ送るアクセス処理手段と
を具備することを特徴とする情報処理装置。
【請求項２】
前記収集されたアクセスパターンに基づき、前記データ先読み手段によって先読みされるべきデータ及び順序を示す先読みパターンを作成する手段を具備することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記データ先読み手段は、前記収集されたアクセスパターンに示される個々のデータの中に物理アドレスが連続するものが含まれている場合、当該連続するデータ群を一括して読み出すことを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記データ先読み手段は、過去に収集された個々のアクセスパターンに共通に示されるデータを先読みの対象とすることを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記データ先読み手段は、前記記憶装置から先読みするデータを保持するためのバッファを前記メモリ上に確保することを特徴とする請求項１記載の情報処理装置。
【請求項６】
前記アクセス処理手段は、リードアクセスの回数が過去のブートの際のリードアクセス回数に達した場合、前記バッファを前記メモリから解放することを特徴とする請求項５記載の情報処理装置。
【請求項７】
前記パターン収集手段と前記データ先読み手段と前記アクセス処理手段とは、ＨＤＤ（Hard Disk Drive）ドライバとＩＤＥ（Integrated Drive Electronics）ドライバとの間に介在するドライバとして実現されることを特徴とする請求項１記載の情報処理装置。
【請求項８】
前記パターン収集手段と前記データ先読み手段と前記アクセス処理手段とは、ＨＤＤ（Hard Disk Drive）ドライバとＩＤＥ（Integrated Drive Electronics）ドライバのいずれかに搭載されるドライバとして実現されることを特徴とする請求項１記載の情報処理装置。
【請求項９】
オペレーティングシステムのブートの際に生じる記憶装置への一連のリードアクセスの内容を示すアクセスパターンを収集し、
前記アクセスパターンに基づき、前記オペレーティングシステムの次のブートの際にリードアクセスの対象となるデータを前記記憶装置から先読みしてメモリ上にロードし、
前記リードアクセスにより要求されるデータが前記メモリ上にロードされたデータの中に存在する場合、該当するデータを前記オペレーティングシステムへ送る
ことを特徴とするアクセス制御方法。
【請求項１０】
前記収集されたアクセスパターンに基づき、前記データ先読み手段によって先読みされるべきデータ及び順序を示す先読みパターンを作成する手段を具備することを特徴とする請求項９記載のアクセス制御方法。
【請求項１１】
前記先読みにおいては、前記収集されたアクセスパターンに示される個々のデータの中に物理アドレスが連続するものが含まれている場合、当該連続するデータ群を一括して読み出すことを特徴とする請求項９記載のアクセス制御方法。
【請求項１２】
前記先読みにおいては、過去に収集された個々のアクセスパターンに共通に示されるデータを先読みの対象とすることを特徴とする請求項９記載のアクセス制御方法。
【請求項１３】
前記先読みにおいては、前記記憶装置から先読みするデータを保持するためのバッファを前記メモリ上に確保することを特徴とする請求項９記載のアクセス制御方法。
【請求項１４】
リードアクセスの回数が過去のブートの際のリードアクセス回数に達した場合、前記バッファを前記メモリから解放することを特徴とする請求項１３記載のアクセス制御方法。
【請求項１５】
オペレーティングシステムを備えたコンピュータにおいて生じるリードアクセスの制御を行うためのプログラムであって、
前記オペレーティングシステムのブートの際に生じる記憶装置への一連のリードアクセスの内容を示すアクセスパターンを収集する機能と、
前記アクセスパターンに基づき、前記オペレーティングシステムの次のブートの際にリードアクセスの対象となるデータを前記記憶装置から先読みしてメモリ上にロードする機能と、
前記リードアクセスにより要求されるデータが前記メモリ上にロードされたデータの中に存在する場合、該当するデータを前記オペレーティングシステムへ送る機能と
をコンピュータに実現させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オペレーティングシステムを備えた情報処理装置、アクセス制御方法、及びプログラムに関する。
【背景技術】
【０００２】
パーソナルコンピュータ（ＰＣ）などの情報処理装置においては、電源が投入されてオペレーティングシステム（ＯＳ）が起動（ブート）されると、ＯＳはファイルシステムや各種ドライバを通じてハードディスクドライブ（ＨＤＤ）へリードアクセスし、当該ＨＤＤから必要なデータを取得する。しかし、ＯＳのブート時におけるＨＤＤへのリードアクセスは時間がかかる。こうしたことから、アクセス時間の短縮化を図るために種々な技術が提案されている。
【０００３】
例えば、特許文献１には、記憶装置内において、計算機毎にデータ読み出し等のアクセス履歴を取得してキャッシュ制御部に格納し、そのアクセス履歴に基づいてディスク群からキャッシュメモリへのデータの先読みを行うことが開示されている。
【特許文献１】特開２００５−１５７７１１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の技術によれば、データの先読みを実現するために記憶装置内に新たなハードウェア（キャッシュ制御部、キャッシュメモリなど）を設けなければならないため、記憶装置のサイズや実装面積が増大するばかりか、製造コスト等の増大を招いてしまう。
【０００５】
本発明は上記実情に鑑みてなされたものであり、高速なリードアクセスを効率的に実現する情報処理装置、アクセス制御方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る情報処理装置は、オペレーティングシステムのブートの際に生じる記憶装置への一連のリードアクセスの内容を示すアクセスパターンを収集するパターン収集手段と、前記アクセスパターンに基づき、前記オペレーティングシステムの次のブートの際にリードアクセスの対象となるデータを前記記憶装置から先読みしてメモリ上にロードするデータ先読み手段と、前記リードアクセスにより要求されるデータが前記メモリ上にロードされたデータの中に存在する場合、該当するデータを前記オペレーティングシステムへ送るアクセス処理手段とを具備することを特徴とする。
【０００７】
本発明に係るアクセス制御方法は、オペレーティングシステムのブートの際に生じる記憶装置への一連のリードアクセスの内容を示すアクセスパターンを収集し、前記アクセスパターンに基づき、前記オペレーティングシステムの次のブートの際にリードアクセスの対象となるデータを前記記憶装置から先読みしてメモリ上にロードし、前記リードアクセスにより要求されるデータが前記メモリ上にロードされたデータの中に存在する場合、該当するデータを前記オペレーティングシステムへ送ることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、高速なリードアクセスを効率的に実現することができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照して、本発明の実施形態を説明する。  
まず、図１および図２を参照して、本発明の一実施形態に係る情報処理装置の構成について説明する。この情報処理装置は、例えば、ノートブック型パーソナルコンピュータ１０として実現されている。
【００１０】
図１はノートブック型パーソナルコンピュータ１０のディスプレイユニットを開いた状態における正面図である。本コンピュータ１０は、コンピュータ本体１１と、ディスプレイユニット１２とから構成されている。ディスプレイユニット１２にはＬＣＤ（Liquid Crystal Display）１７から構成される表示装置が組み込まれており、そのＬＣＤ１７の表示画面はディスプレイユニット１２のほぼ中央に位置されている。
【００１１】
ディスプレイユニット１２は、コンピュータ本体１１に対して開放位置と閉塞位置との間を回動自在に取り付けられている。コンピュータ本体１１は薄い箱形の筐体を有しており、その上面にはキーボード１３、本コンピュータ１を電源オン／オフするためのパワーボタン１４、入力操作パネル１５、およびタッチパッド１６などが配置されている。
【００１２】
入力操作パネル１５は、押されたボタンに対応するイベントを入力する入力装置であり、複数の機能をそれぞれ起動するための複数のボタンを備えている。これらボタン群には、ＴＶ起動ボタン１５Ａ、ＤＶＤ（Digital Versatile Disc）起動ボタン１５Ｂも含まれている。ＴＶ起動ボタン１５Ａは、デジタルＴＶ放送番組のような放送番組データの再生及び記録を行うためのＴＶ機能を起動するためのボタンである。ＴＶ起動ボタン１５Ａがユーザによって押下された時、ＴＶ機能を実行するためのアプリケーションプログラムが自動的に起動される。ＤＶＤ起動ボタン１５Ｂは、ＤＶＤに記録されたビデオコンテンツを再生するためのボタンである。ＤＶＤ起動ボタン１５Ｂがユーザによって押下された時、ビデオコンテンツを再生するためのアプリケーションプログラムが自動的に起動される。
【００１３】
次に、図２を参照して、本コンピュータ１０のシステム構成について説明する。
【００１４】
本コンピュータ１０は、図２に示されているように、ＣＰＵ１１１、ノースブリッジ１１２、主メモリ１１３、グラフィクスコントローラ１１４、サウスブリッジ１１９、ＢＩＯＳ−ＲＯＭ１２０、ハードディスクドライブ（ＨＤＤ）１２１、光ディスクドライブ（ＯＤＤ）１２２、デジタルＴＶ放送チューナ１２３、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１２４、およびネットワークコントローラ１２５等を備えている。
【００１５】
ＣＰＵ１１１は本コンピュータ１０の動作を制御するために設けられたプロセッサであり、ハードディスクドライブ（ＨＤＤ）１２１から主メモリ１１３にロードされる、オペレーティングシステム（ＯＳ）や、ファイルシステム、各種ドライバ、各種アプリケーションなどを実行する。
【００１６】
また、ＣＰＵ１１１は、ＢＩＯＳ−ＲＯＭ１２０に格納されたシステムＢＩＯＳ（Basic Input Output System）も実行する。システムＢＩＯＳはハードウェア制御のためのプログラムである。
【００１７】
ノースブリッジ１１２はＣＰＵ１１１のローカルバスとサウスブリッジ１１９との間を接続するブリッジデバイスである。ノースブリッジ１１２には、主メモリ１１３をアクセス制御するメモリコントローラも内蔵されている。また、ノースブリッジ１１２は、ＡＧＰ（Accelerated Graphics Port）バスなどを介してグラフィクスコントローラ１１４との通信を実行する機能も有している。
【００１８】
グラフィクスコントローラ１１４は本コンピュータ１０のディスプレイモニタとして使用されるＬＣＤ１７を制御する表示コントローラである。このグラフィクスコントローラ１１４はビデオメモリ（ＶＲＡＭ）１１４Ａに書き込まれた画像データからＬＣＤ１７に送出すべき表示信号を生成する。
【００１９】
サウスブリッジ１１９は、ＬＰＣ（Low Pin Count）バス上の各デバイス、およびＰＣＩ（Peripheral Component Interconnect）バス上の各デバイスを制御する。また、サウスブリッジ１１９は、ＨＤＤ１２１、ＯＤＤ１２２を制御するためのＩＤＥ（Integrated Drive Electronics）コントローラを内蔵している。さらに、サウスブリッジ１１９は、デジタルＴＶ放送チューナ１２３を制御する機能、およびＢＩＯＳ−ＲＯＭ１２０をアクセス制御するための機能も有している。
【００２０】
ＨＤＤ１２１は、各種ソフトウェア及びデータを格納する記憶装置である。光ディスクドライブ（ＯＤＤ）１２３は、ビデオコンテンツが格納されたＤＶＤなどの記憶メディアを駆動するためのドライブユニットである。デジタルＴＶ放送チューナ１２３は、デジタルＴＶ放送番組のような放送番組データを外部から受信するための受信装置である。
【００２１】
エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１２４は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１３およびタッチパッド１６を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。このエンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１２４は、ユーザによるパワーボタン１４の操作に応じて本コンピュータ１０をパワーオン／パワーオフする機能を有している。さらに、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１２４は、ユーザによるＴＶ起動ボタン１５Ａ、ＤＶＤ起動ボタン１５Ｂの操作に応じて、本コンピュータ１０をパワーオンすることもできる。ネットワークコントローラ１２５は、例えばインターネットなどの外部ネットワークとの通信を実行する通信装置である。
【００２２】
図３は、本コンピュータ１０に搭載されるＯＳがブートされた際に発生するＨＤＤ１２１へのリードアクセスを介在する各種のソフトウェアの構成を示すブロック図である。
【００２３】
本実施形態では、ＨＤＤ１２１へのリードアクセスを介在するソフトウェアとして、ＯＳカーネル５１、ファイルシステム５２、ＨＤＤドライバ５３、ＩＤＥドライバ５４のほかに、フィルタドライバ５５が備えられる。
【００２４】
ＯＳカーネル５１は、ＯＳの基本機能を実行するプログラムに相当するものである。ファイルシステム５２は、各種のデータをファイル形式で管理するプログラムである。ＨＤＤドライバ５３は、ＨＤＤ１２１を制御するためのプログラムである。ＩＤＥドライバ５４は、ＩＤＥインタフェースを通じてＨＤＤを制御するためのプログラムである。
【００２５】
フィルタドライバ５５は、例えばＨＤＤドライバ５３とＩＤＥドライバ５４との間に介在するプログラムであり、ＯＳのブートの際に生じるＨＤＤへの一連のリードアクセスの内容を示すアクセスパターン６１を収集するパターン収集機能と、アクセスパターン６１に基づき、ＯＳの次のブートの際にリードアクセスの対象となるデータをＨＤＤから先読みして先読みバッファ６２にロードするデータ先読み機能と、ＯＳカーネル５１からのリードアクセスにより要求されるデータが先読みバッファ６２内のデータの中に存在する場合、該当するデータをＯＳカーネル５１へ送るアクセス処理機能とを有する。上記パターン収集機能は、収集されたアクセスパターンに基づき、データ先読み機能によって先読みされるべきデータ及び順序を示す先読みパターン６３を作成する機能を備えていてもよい。
【００２６】
なお、上記先読みにおいては、前記収集されたアクセスパターンに示される個々のデータの中に物理アドレスが連続するものが含まれている場合、当該連続するデータ群が一括して読み出されるようになっている。また、上記先読みにおいては、過去に収集された個々のアクセスパターンに共通に示されるデータを先読みの対象とするようにしてもよい。また、リードアクセスの回数が過去のブートの際のリードアクセス回数に達した場合、先読みバッファ６２はメモリ１１３から解放されるようになっている。
【００２７】
次に、図４〜図６を参照して、フィルタドライバ５５の各種機能により実現される処理について説明する。
【００２８】
（アクセスパターンの収集）
図４は、フィルタドライバ５５のパターン収集機能により実現される処理を示す図である。
【００２９】
フィルタドライバ５５は、ＯＳのブート時に発生するＨＤＤ１２１への個々のリードアクセスの内容をファイルシステム５２およびＨＤＤドライバ５３を通じて収集し（ステップＳ１）、これらをアクセスパターンとして所定の記憶領域（メモリ１１３上）に記憶させる（ステップＳ２）。アクセスパターンには、以下の情報が含まれる。
【００３０】
・データ開始アドレス（論理ブロックアドレス（LBA: Logical Block Address））
・データサイズ（ブロック数）
・アクセス回数
・アクセス順序
なお、フィルタドライバ５５は、ＯＳブート完了後、収集したアクセスパターンを過去に収集したアクセスパターンと合わせて所定のファイルに保存する。また、ＯＳブート完了後に、次回のＯＳブート時に先読みすべきデータ及び順序を算出し、その結果を先読みパターンとして、上記アクセスパターンと組み合わせて保存しておく。作成されたファイルは、ＨＤＤ１２１などに記憶される。
【００３１】
（先読みパターンの作成）
先読みパターンは、先に読み込まれるべきデータのアクセス順序を保ちつつ、物理アドレスが連続するデータをまとめて読み込むように決定される。
【００３２】
例えば、図７（ａ）において、データ１、データ２、データ３、データ４、データ５の順に読み込みが通常行われている場合に、データ１とデータ５とが連続し、データ３とデータ４とが連続していれば、図７（ｂ）のように、データ１とデータ５とを１つにまとめて読み込むとともに、データ３とデータ４とを１つにまとめて読み込むようにする。
【００３３】
すなわち、論理ブロックアドレス「Address」から始まるデータサイズ「Size」分のデータを読み込む処理をRead(Address, Size)と表現すると、従来Read(n1,s1)、Read(n2,s2) 、Read(n3,s3) 、Read(n4,s4) 、Read(n5,s5)のように５回で読み込まれていたものを、Read(n1,s1+s5)、Read(n2,s2) 、Read(n3,s3+s4)のように３回で読み込むようにする。
【００３４】
（先読み処理）
図５は、フィルタドライバ５５のデータ先読み機能により実現される処理を示す図である。
【００３５】
フィルタドライバ５５は、ＯＳのブート時に必要なドライバの１つとしてロードされ、起動されると、先読みバッファ６３を確保し、あらかじめ先読みパターン６１に基づいて作成しておいた先読みパターン６２に従って（ステップＳ３）、先読みを開始する（ステップＳ４）。
【００３６】
従来は図８（ａ）のようにＯＳブート時の一連の処理（処理１，処理２，…）において先読みは行われていなかったため全体として時間がかかっていたが、本例では図８（ｂ）のように各処理におけるリード要求が発生する前に先読みがそれぞれ開始されるために全体としての処理時間が短縮されることになる。
【００３７】
なお、先読みバッファ６３は、過去のＯＳブート時のアクセス単位で確保される。必要なアクセス回数に達したら先読みバッファ６３をメモリ１１３から開放できるようにするためである。また、先読みバッファ６３をアクセス単位で確保せずに、連続するアドレスのデータのために一括して確保してしまうと、所定のアクセス回数に達するまでの間、全ての領域が開放できなくなってしまうからである。複数のアクセスが要求するデータを一括して読み込む必要がある場合、読み込みバッファを別に確保して、一旦その読み込みバッファに読み込み、アクセス単位に確保した先読みバッファに転送するようにすればよい。
【００３８】
（ＯＳからのリード要求に対する処理）
図６は、フィルタドライバ５５のアクセス処理機能により実現される処理を示す図である。
【００３９】
フィルタドライバ５５は、先読みパターン６２に含まれるデータに対するリード要求があったとき（ステップＳ５）、既に該当するデータが先読みバッファ６３に読み込まれていれば、先読みバッファ６３内のデータをＯＳカーネル５１側に返す（ステップＳ６）。まだ読み込みが完了していない状態であれば、読み込み完了を待ってから読み込んだデータを返し、読み込み要求を完了する。一方、先読みパターン６２に含まれないデータに対するリード要求があったときは、通常のＨＤＤアクセスシーケンスに処理を委ね、ＨＤＤ１２１から読み出されるデータをＯＳ５１側へ返す（ステップＳ７，Ｓ８）。
【００４０】
（先読みバッファの開放）
フィルタドライバ５５は、実際のアクセス回数が過去のＯＳブート時のアクセス回数に達したら、先読みバッファ６３をメモリ１１３から開放する。
【００４１】
なお、これまでの説明では先読みするデータを記憶させるために先読みバッファ６３を用いる場合を例示したが、例えば本コンピュータが図９のような不揮発性の高速な記憶装置７１（フラッシュメモリなど）を備えているのであれば、先読みバッファ６３を用いた先読みを行う代わりに、その記憶装置７１に先読みデータを保持しておき、ＯＳブート時にはその記憶装置７１からの読み込みを行うようにしてもよい。
【００４２】
また、これまでの説明ではフィルタドライバ５５がＨＤＤドライバ５３とＩＤＥドライバ５４との間に介在するものとして説明したが、この構成だけに限定されるものではない。フィルタドライバ５５は、例えば、図１０のようにＨＤＤドライバ５３に備えられるものとして構成してもよいし、図１１のようにＩＤＥドライバ５４に備えられるものとして構成してもよい。
【００４３】
次に、図１２のフローチャートを参照して、フィルタドライバ５５によるアクセスパターン収集処理の動作について説明する。
【００４４】
ＯＳが起動されると、当該ＯＳのブート処理において、ＨＤＤドライバ５３やＩＤＥドライバ５４のほかにフィルタドライバ５５がメモリ１１３上にロードされる（ステップＳ１１）。次いで、フィルタドライバ５５は、ＯＳカーネル５１から発生するアクセスのパターンを収集する（ステップＳ１２）。ＯＳブート完了後、フィルタドライバ５５は、そのアクセスパターンをＨＤＤ１２１などに保存する（ステップＳ１３）。また、フィルタドライバ５５は、次回のＯＳブート時に先読みすべきデータ及び順序を決定し（ステップＳ１４）、その結果を先読みパターンとして、上記アクセスパターンと組み合わせて保存する（ステップＳ１５）。
【００４５】
次に、図１３のフローチャートを参照して、フィルタドライバ５５による先読み処理の動作について説明する。
【００４６】
図１２の処理が行われた後、再びＯＳが起動されると、当該ＯＳのブート処理において、ＨＤＤドライバ５３やＩＤＥドライバ５４のほかにフィルタドライバ５５がメモリ１１３上にロードされる（ステップＳ２１）。次いで、フィルタドライバ５５は、先読みバッファ６３を確保し（ステップＳ２２）、あらかじめ先読みパターン６１に基づいて作成しておいた先読みパターン６２に従って先読みを実行する（ステップＳ２３）。先読みバッファ６３への全てのデータ読み込みが完了したことを確認したら（ステップＳ２４）、当該先読み処理を終了する。
【００４７】
次に、図１４のフローチャートを参照して、フィルタドライバ５５によるＯＳに対する処理の動作について説明する。
【００４８】
図１３の処理において起動されたフィルタドライバ５５は、前述の先読み処理を行うだけでなく、ＯＳカーネル５１からのリード要求に応じた処理を行う。すなわち、フィルタドライバ５５は、ファイルシステム５２およびＨＤＤドライバ５３を通じてＯＳカーネル５１からのリード要求を検出すると（ステップＳ３１）、そのリード要求に示されるアドレス範囲が先読みパターン６２に含まれるものであるか否かを判定する（ステップＳ３２）。該当しない場合は、通常のＨＤＤアクセスシーケンスに処理を委ねる（ステップＳ３３）。一方、該当する場合は、そのアドレス範囲のデータが既に先読みバッファ６３に読み込まれているか否かを判定する（ステップＳ３４）。まだ読み込みが完了していない状態であれば、直ちに先読みバッファへの読み込みを行い（ステップＳ３５）、該当するデータをＯＳカーネル５１側に送る（ステップＳ３６）。そして、フィルタドライバ５５は、実際のアクセス回数が過去のＯＳブート時のアクセス回数に達したか否かを判定する（ステップＳ３７）。該当する場合は、先読みバッファ６３をメモリ１１３から解放し（ステップＳ３８）、一方、該当しない場合は、まだ先読みバッファ６３の解放は行わない。最後に、ＯＳカーネル５１からの要求を全て処理したことを確認し（ステップＳ３９）、処理を終了する。
【００４９】
このように本実施形態では、ＯＳのブートは毎回、同じアドレスの同じデータが読み込まれる場合が多いという点に着目し、ＯＳのブート時には先読みを行うようにしている。すなわち、ＯＳからリード要求されるデータを過去のアクセスパターンに基づいて予想できるため、そのデータを先読みバッファ６３に先読みしておくことにより、ＯＳのブートに要する時間を短縮することが可能となる。
【００５０】
また、本実施形態では、ＯＳのブートにおいては物理的に連続するデータが複数回に分かれて読み込みが行われることがある点に着目し、これらの連続するデータの読み込みを１回のリード処理で一括して行うようにしているので、全体として読み込みにかかる時間を短縮することができる。
【００５１】
また、本実施形態の先読みバッファ６３は、新たに設けられたハードウェアのバッファではなく、ソフトウェアにより既存のメモリ１１３上に確保されるものであるため、コストの増大を招くことがなく、また設計変更なども行いやすい。
【００５２】
また、本実施形態では、ＯＳブートの期間中に先読みバッファ６３を確保し続けるとその記憶領域を他のドライバやアプリケーションが使用できなくなる可能性があるという点を考慮し、過去のアクセスパターンに示されるアクセス回数分アクセスされたバッファについては順次バッファを開放するようにしている。このため、ブート処理が進むにつれてドライバやアプリケーションが開始され使用される記憶領域が増えていく一方で、先読みバッファは順次開放されていくことになるので、メモリ１１３の空き容量を確保することができる。
【００５３】
上述した実施形態で述べた本発明に係る各種の処理手順は、コンピュータプログラムとして、コンピュータにより読み取り可能な記憶媒体（例えば磁気ディスク，光ディスク，半導体メモリ）に記憶させておき、必要に応じてそれをプロセッサにより読み出して実行するようにしてもよい。また、このようなコンピュータプログラムは、通信媒体を介してあるコンピュータから他のコンピュータに伝送することにより配布することも可能である。
【００５４】
本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００５５】
【図１】本発明の一実施形態に係るコンピュータのディスプレイユニットを開いた状態を示す正面図。
【図２】同コンピュータのシステム構成を示す図。
【図３】同コンピュータに搭載されるＯＳがブートされた際に発生するＨＤＤへのリードアクセスを介在する各種のソフトウェアの構成を示すブロック図。
【図４】フィルタドライバのパターン収集機能により実現される処理を示す図。
【図５】フィルタドライバのデータ先読み機能により実現される処理を示す図。
【図６】フィルタドライバのアクセス処理機能により実現される処理を示す図。
【図７】先読みパターンの構成を説明するための図。
【図８】先読み処理の効果を説明するための図。
【図９】先読みバッファの代わりに不揮発性の高速な記憶装置を使用する例を示す図。
【図１０】ＨＤＤドライバを配置する場所に関する第１の変形例を示す図。
【図１１】ＨＤＤドライバを配置する場所に関する第２の変形例を示す図。
【図１２】フィルタドライバによるアクセスパターン収集処理の動作を示す図。
【図１３】フィルタドライバによる先読み処理の動作を示す図。
【図１４】フィルタドライバによるＯＳに対する処理の動作を示す図。
【符号の説明】
【００５６】
１０…コンピュータ、５１…ＯＳカーネル、５２…ファイルシステム、５３…ＨＤＤドライバ、５４…ＩＤＥドライバ、５５…フィルタドライバ、６１…アクセスパターン、６２…先読みパターン、６３…先読みバッファ、１１１…ＣＰＵ、１２１…ＨＤＤ。
【図１】
2007179089.tif 000003
【図２】
2007179089.tif 000004
【図３】
2007179089.tif 000005
【図４】
2007179089.tif 000006
【図５】
2007179089.tif 000007
【図６】
2007179089.tif 000008
【図７】
2007179089.tif 000009
【図８】
2007179089.tif 000010
【図９】
2007179089.tif 000011
【図１０】
2007179089.tif 000012
【図１１】
2007179089.tif 000013
【図１２】
2007179089.tif 000014
【図１３】
2007179089.tif 000015
【図１４】
2007179089.tif 000016