(57)【要約】【課題】再利用される可能性の高いメタデータや設定ファイル等がキャッシュバッファから追い出されるのを防ぎ、効率的なファイルアクセスをアプリケーションの変更なしに提供することを目的とする。【解決手段】二次記憶装置に記憶されているファイルを扱う情報処理装置であって、アクセスするファイルが再利用される可能性の低いファイルか否かを判断する判断手段を有し、判断手段において、アクセスするファイルが再利用される可能性の低いファイルであると判断された場合には、キャッシュバッファを利用しないでファイルにアクセスし、判断手段において、アクセスするファイルが再利用される可能性の高いファイルであると判断された場合には、キャッシュバッファを利用してファイルにアクセスするアクセス手段を更に有することによって課題を解決する。【選択図】図１
2007334687.tif 000002
【特許請求の範囲】
【請求項１】
二次記憶装置に記憶されているファイルを扱う情報処理装置であって、
アクセスする前記ファイルが再利用される可能性の低いファイルか否かを判断する判断手段を有し、
前記判断手段において、アクセスする前記ファイルが再利用される可能性の低いファイルであると判断された場合には、キャッシュバッファを利用しないで前記ファイルにアクセスし、前記判断手段において、アクセスするファイルが再利用される可能性の高いファイルであると判断された場合には、前記キャッシュバッファを利用して前記ファイルにアクセスするアクセス手段を更に有することを特徴とする情報処理装置。
【請求項２】
二次記憶装置に記憶されているファイルを扱う情報処理装置であって、
アクセスする前記ファイルが再利用される可能性の低いファイルか否かを判断する判断手段を有し、
前記判断手段において、アクセスする前記ファイルが再利用される可能性の低いファイルであると判断された場合には、キャッシュバッファの一部分を利用して前記ファイルにアクセスし、前記判断手段において、アクセスするファイルが再利用される可能性の高いファイルであると判断された場合には、前記キャッシュバッファの大部分を利用して前記ファイルにアクセスするアクセス手段を更に有することを特徴とする情報処理装置。
【請求項３】
前記判断手段は、再利用される可能性が低いファイルのフォーマットの拡張子を含む拡張子情報を用いて、アクセスする、前記二次記憶装置に記憶されているファイルが再利用される可能性の低いファイルか否かを判断することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記判断手段は、再利用される可能性が低いファイルのフォーマットの先頭のバイト列を含む先頭バイト列情報を用いて、アクセスする、前記二次記憶装置に記憶されているファイルが再利用される可能性の低いファイルか否かを判断することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項５】
二次記憶装置に記憶されているファイルを扱う情報処理装置におけるファイルアクセス方法であって、
アクセスする前記ファイルが再利用される可能性の低いファイルか否かを判断する判断ステップを有し、
前記判断ステップにおいて、アクセスする前記ファイルが再利用される可能性の低いファイルであると判断された場合には、キャッシュバッファを利用しないで前記ファイルにアクセスし、前記判断ステップにおいて、アクセスするファイルが再利用される可能性の高いファイルであると判断された場合には、前記キャッシュバッファを利用して前記ファイルにアクセスするアクセスステップを更に有することを特徴とするファイルアクセス方法。
【請求項６】
二次記憶装置に記憶されているファイルを扱う情報処理装置におけるファイルアクセス方法であって、
アクセスする前記ファイルが再利用される可能性の低いファイルか否かを判断する判断ステップを有し、
前記判断ステップにおいて、アクセスする前記ファイルが再利用される可能性の低いファイルであると判断された場合には、キャッシュバッファの一部分を利用して前記ファイルにアクセスし、前記判断ステップにおいて、アクセスするファイルが再利用される可能性の高いファイルであると判断された場合には、前記キャッシュバッファの大部分を利用して前記ファイルにアクセスするアクセスステップを更に有することを特徴とするファイルアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びファイルアクセス方法に関する。
【背景技術】
【０００２】
ファイルシステムは通常キャッシュバッファと呼ばれる記憶領域を利用する。ファイルシステムはアプリケーションからのファイル読み込み要求があった場合には、該当するファイルのデータをハードディスクやメモリカード等の二次記憶装置からセクタ単位でキャッシュバッファに転送する。次にファイルシステムは要求されただけのデータをキャッシュバッファからアプリケーションの指定したメモリ領域に転送する。
【０００３】
キャッシュバッファの内容はできるだけ保持され、アプリケーションから再び同じデータの読み込み要求があった場合には、ファイルシステムは二次記憶装置からの転送を省略し、キャッシュバッファのデータからアプリの指定するメモリ領域に転送する。これによって動作の遅い二次記憶装置へのアクセスを減らすことができ、速度向上に効果的である。
【０００４】
また、アプリケーションからファイルへの書き込み要求があった場合には、ファイルシステムはアプリケーションの指定したデータをキャッシュバッファに転送し、次に二次記憶装置に転送する。ファイルシステムはキャッシュバッファから二次記憶装置への実際のデータ転送は遅らせることができる。したがって、二次記憶装置へ転送する前にアプリケーションから同じデータの上書き要求があったときは、ファイルシステムはキャッシュバッファのデータだけを変更し、最後の変更結果のみを二次記憶装置に転送する。このことによって、二次記憶装置へのアクセスを減らすことができる。
【０００５】
また、ファイルシステムにはファイルにアクセスするために必要なディレクトリエントリ・ＦＡＴ・ｉｎｏｄｅといったメタデータが存在する。ファイルシステムはメタデータを読み込んだり書き込んだりする時にも、一度キャッシュバッファにメタデータを転送し、キャッシュバッファ上のメタデータにアクセスする。
【０００６】
このようにファイルシステムはキャッシュバッファに一度転送したデータはなるべく捨てずに保持しておき、キャッシュバッファを全て使い切って足りなくなったときに初めて古いデータを捨てて、空いたキャッシュバッファの領域を新しいデータの為に使う。このことで、ファイルシステムは、ファイルアクセスを効率的に実現している。
【０００７】
【特許文献１】特開特開２００３−１２２６０６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
近年は画像・音声・動画映像といった大容量のマルチメディアデータを扱う機器が増えている。これらの機器は、データの編集ができる一部の機器を除いて、マルチメディアデータを扱う際には大容量のファイルの先頭から末尾までを連続的にアクセスする。或いは、これらの機器は、次々と別のファイルへのアクセスを繰り返すことが多い。つまり、一つのファイルの特定のデータを何度も読んだり何度も書き直したりすることは極めて少ない。また、大容量のデータを扱う機器であっても、キャッシュバッファとして使える記憶領域は小さく、一つのファイルの全てのデータがキャッシュバッファに入りきらないものも多い。
【０００９】
しかしながら、これらの機器は、このような大容量データもキャッシュバッファを経由して読み書きする。そのため、大容量マルチメディアデータにアクセスすると、限りあるキャッシュバッファが大容量マルチメディアデータに専有されてしまい、メタデータや設定ファイルの内容が追い出されてしまう問題があった。
【００１０】
本発明はこのような問題点に鑑みなされたもので、再利用される可能性の高いメタデータや設定ファイル等がキャッシュバッファから追い出されるのを防ぎ、効率的なファイルアクセスをアプリケーションの変更なしに提供することを目的とする。
【課題を解決するための手段】
【００１１】
そこで、本発明は、二次記憶装置に記憶されているファイルを扱う情報処理装置であって、アクセスする前記ファイルが再利用される可能性の低いファイルか否かを判断する判断手段を有し、前記判断手段において、アクセスする前記ファイルが再利用される可能性の低いファイルであると判断された場合には、キャッシュバッファを利用しないで前記ファイルにアクセスし、前記判断手段において、アクセスするファイルが再利用される可能性の高いファイルであると判断された場合には、前記キャッシュバッファを利用して前記ファイルにアクセスするアクセス手段を更に有することを特徴とする。
【００１２】
係る構成とすることにより、例えば、再利用される可能性の低いデータにアクセスする際にはキャッシュバッファを経由しないでアクセスすることができる。よって、再利用される可能性の高いメタデータや設定ファイル等がキャッシュバッファから追い出されるのを防ぎ、効率的なファイルアクセスをアプリケーションの変更なしに提供することができる。
【００１３】
また、本発明は、ファイルアクセス方法としてもよい。
【発明の効果】
【００１４】
本発明によれば、再利用される可能性の高いメタデータや設定ファイル等がキャッシュバッファから追い出されるのを防ぎ、効率的なファイルアクセスをアプリケーションの変更なしに提供することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施形態について図面に基づいて説明する。
【００１６】
（第１の実施形態）
図１は、本実施形態における、二次記憶装置にデータを読み書きできるシステムの一例のシステム構成図である。図１において、プロセッサ１は、主記憶装置２、拡張子リスト５、二次記憶装置６を含むシステム全体を制御する。
【００１７】
主記憶装置２は、ユーザエリア３と、キャッシュバッファ４と、ＦＤテーブル７と、を含んでいる。ユーザエリア３は、アプリケーションが指定するエリアで、二次記憶装置６に転送したいデータが含まれているエリア、或いは二次記憶装置６からデータを転送したいデータが含まれているエリアである。プロセッサ１は、通常はキャッシュバッファ４を通じて二次記憶装置６にアクセスする。
【００１８】
ＦＤテーブル７は、図２に示されるように、ファイルディスクリプタごとにＮＢと呼ばれるフラグを格納する領域を有している。図２は、ＦＤテーブルの一例を示す図である。拡張子リスト５は、図３のように再利用される可能性の低いファイルの拡張子が記録されている。図３は、拡張子リストの一例を示す図である。
【００１９】
本実施形態のシステムの動作について、図４のフローチャートを用いて説明する。図４−１は、本実施形態のシステムの動作の一例を示すフローチャート（その１）である。また、図４−２は、本実施形態のシステムの動作の一例を示すフローチャート（その２）である。なお、図４−１のフローチャートは、本実施形態のシステムで動くプログラムのうち、アプリケーションがファイルを扱う前にコールするｏｐｅｎ（）について、本実施形態の特徴的な部分のみを記述している。また、図４−２のフローチャートは、本実施形態のシステムで動くプログラムのうち、アプリケーションがファイルのデータを読み書きするときのｒｅａｄ（）／ｗｒｉｔｅ（）について、本実施形態の特徴的な部分のみを記述している。
【００２０】
アプリケーションがｏｐｅｎ（）をコールすると、Ｓ１のｏｐｅｎ処理が行われる。Ｓ１の処理は、一般のシステムで行われるｏｐｅｎ（）の処理を示しており、ｏｐｅｎ（）は、引数で指定されたファイル名に相当するファイルにアクセスするために必要な準備をし、必要であればファイルを作成する。そして、ｏｐｅｎ（）は、そのファイルにアクセスするためのファイルディスクリプタと呼ばれるＩＤを割り当てる。
【００２１】
指定されたファイルが存在しない、作成できない、アクセス権がない等の理由でエラーになったときは、ｏｐｅｎ（）は処理を終了する。
【００２２】
ｏｐｅｎ処理が成功したときはＳ２に進む。Ｓ２では、ｏｐｅｎ（）は、与えられたファイル名の拡張子が拡張子リスト５に存在するかどうかを検査する。存在すれば、Ｓ３において、ｏｐｅｎ（）は、ＦＤテーブルの与えられたファイルディスクリプタに相当するＮＢフラグを１にして処理を終了する。与えられた拡張子が拡張子リスト５に存在しない場合は、Ｓ４において、ｏｐｅｎ（）は、対応するＮＢフラグを０にして処理を終了する。
【００２３】
次にアプリケーションがファイルのデータにアクセスするためにｒｅａｄ（）／ｗｒｉｔｅ（）をコールしたときのシステムの動作について図４−２のフローチャートを用いて説明する。まず始めに、ｒｅａｄ（）／ｗｒｉｔｅ（）は、Ｓ１１で引数として与えられたファイルディスクリプタに相当するＮＢフラグを調べ、それが１であればＳ１２へ、０であればＳ１３に進む。
【００２４】
Ｓ１２ではｒｅａｄ（）／ｗｒｉｔｅ（）は、キャッシュバッファ４を使わずにｒｅａｄ／ｗｒｉｔｅ処理を行う。ここでは、ｒｅａｄ（）／ｗｒｉｔｅ（）は、可能であれば二次記憶装置６と、ユーザエリア３とで直接データを転送する。しかし、直接データ転送できない場合、ｒｅａｄ（）／ｗｒｉｔｅ（）は、キャッシュバッファ４のうち１セクタ分の領域１つだけを選択し、このキャッシュバッファエリアのみを経由してデータ転送を行う。これにより、キャッシュバッファに既に入っているデータが追い出されることが無くなるか、あったとしても１セクタ分のデータだけが追い出されるだけで済む。
【００２５】
なお、直接データ転送できない場合としては、例えば、二次記憶装置６が扱えるデータ長と、ｒｅａｄ（）／ｗｒｉｔｅ（）で指定されたデータ長と、が違う場合がある。また、直接データ転送できない場合としては、例えば、アプリケーションが要求したデータの先頭からのオフセットが、二次記憶装置６が扱えるデータの最小単位であるセクタの倍数になっていない場合等がある。
【００２６】
Ｓ１３では、ｒｅａｄ（）／ｗｒｉｔｅ（）は、キャッシュバッファ４を利用して通常のアクセスを行う。Ｓ１２かＳ１３の処理が終わるとｒｅａｄ（）／ｗｒｉｔｅ（）は、処理を終了する。
【００２７】
（第２の実施形態）
次に、拡張子リストの代わりにファイルタイプＤＢを持ち、それによって再利用される可能性の低いファイルであるかどうかを判断する実施形態を示す。ＪＰＥＧ，ＭＰＥＧ，ＭＰ３等の標準的なファイルフォーマットは、先頭の数バイトに特徴的なデータパターンが含まれている。
【００２８】
例えば画像ファイルのフォーマットとして標準的なＪＰＥＧの場合は先頭の２バイトが０ｘｆｆ，０ｘｄ８である。あｍた、動画ファイルのフォーマットとして標準的なＭＰＥＧの場合は先頭の４バイトが０ｘ００，０ｘ００，０ｘ０１，０ｘｂ３である。従って、それを調べればファイル名の拡張子が信頼できない場合でもそのデータの種類を判別することができる。
【００２９】
図５は、本実施形態における、二次記憶装置にデータを読み書きできるシステムの一例のシステム構成図である。図５において、プロセッサ１１は、主記憶装置１２、ファイルタイプＤＢ１５、二次記憶装置１２を含むシステム全体を制御する。
【００３０】
主記憶装置１２は、ユーザエリア１３と、キャッシュバッファ１４と、ＦＤテーブル１７と、を含んでいる。ユーザエリア１３は、アプリケーションが指定するエリアで、二次記憶装置１６に転送したいデータが含まれているエリア、或いは二次記憶装置１６からデータを転送したいエリアである。プロセッサ１１は、通常はキャッシュバッファ１４を通じて二次記憶装置１６にアクセスする。
【００３１】
ＦＤテーブル１７は、ファイルディスクリプタごとにＮＢと呼ばれるフラグを格納する領域を有している。ファイルタイプＤＢ１５は、図６のように再利用される可能性の低いファイルフォーマットの先頭に現れるバイト列が記録されている。図６は、ファイルタイプＤＢの一例を示す図である。
【００３２】
本実施形態のシステムの動作について、図７及び図８のフローチャートを用いて説明する。図７は、本実施形態のシステムの動作の一例を示すフローチャート（その１）である。また、図８は、本実施形態のシステムの動作の一例を示すフローチャート（その２）である。
【００３３】
なお、図７のフローチャートは、本実施形態のシステムで動くプログラムのうち、アプリケーションがファイルを扱う前にコールするｏｐｅｎ（）について、本実施形態の特徴的な部分のみを記述している。また、図８のフローチャートは、本実施形態のシステムで動くプログラムのうち、ファイルのデータを読み書きするときのｒｅａｄ（）／ｗｒｉｔｅ（）について、本実施形態の特徴的な部分のみを記述している。
【００３４】
アプリケーションがｏｐｅｎ（）をコールすると、Ｓ２１のｏｐｅｎ処理が行われる。Ｓ２１の処理は、一般のシステムで行われるｏｐｅｎ（）の処理を示しており、ｏｐｅｎ（）は、引数で指定されたファイル名に相当するファイルにアクセスするために必要な準備をし、必要であればファイルを作成する。そして、ｏｐｅｎ（）は、そのファイルにアクセスするためのファイルディスクリプタと呼ばれるＩＤを割り当てる。
【００３５】
指定されたファイルが存在しない、作成できない、アクセス権がない等の理由でエラーになったときは、ｏｐｅｎ（）は処理を終了する。
【００３６】
ｏｐｅｎ処理が成功したときはＳ２２に進む。Ｓ２２では、ｏｐｅｎ（）は、引数で与えられたファイルが新規ファイルか否かを調べ、新規ファイルであればＳ２４へ、既存ファイルであればＳ２３に移る。
【００３７】
Ｓ２４では、ｏｐｅｎ（）は、ＦＤテーブルの与えられたファイルディスクリプタに対応するＮＢフラグを２にした後、処理を終了する。
【００３８】
Ｓ２３では、ｏｐｅｎ（）は、ファイルの先頭のデータを読む。読み込むデータ長はファイルタイプＤＢ１５に登録されているバイト列のうちで最長のバイト数である。その後Ｓ２５に進み、ｏｐｅｎ（）は、ファイルタイプＤＢに登録されているバイト列を調べ、読み込んだファイルの先頭データと一致するものがあるか否かを調べる。
【００３９】
一致するバイト列があれば、ｏｐｅｎ（）は、Ｓ２６に進む。一致するバイト列がなければ、ｏｐｅｎ（）は、Ｓ２７に進む。Ｓ２６では、ｏｐｅｎ（）は、対応するＮＢフラグを１にして処理を終了する。Ｓ２７では、ｏｐｅｎ（）は、対応するＮＢフラグを０にして処理を終了する。
【００４０】
次にアプリケーションがファイルのデータにアクセスするためにｒｅａｄ（）／ｗｒｉｔｅ（）をコールしたときの動作について図８のフローチャートを用いて説明する。まず始めに、ｒｅａｄ（）／ｗｒｉｔｅ（）は、Ｓ３１で引数として与えられたファイルディスクリプタに相当するＮＢフラグを調べ、それが０であればＳ３５へ、１であればＳ３６へ、２であればＳ３２へ進む。
【００４１】
Ｓ３２に進んだ場合、それは新規ファイルに対するｗｒｉｔｅ（）コールであり、引数で書き込むべきデータ列が与えられている。ここでは、ｗｒｉｔｅ（）は、ファイルタイプＤＢに登録されているバイト列を調べ、書き込むべきデータ列の先頭と一致するものがあるか否かを調べる。
【００４２】
一致するバイト列があればｒｅａｄ（）／ｗｒｉｔｅ（）は、Ｓ３４に進み、一致するバイト列がなければｒｅａｄ（）／ｗｒｉｔｅ（）は、Ｓ３３に進む。Ｓ３３では、ｒｅａｄ（）／ｗｒｉｔｅ（）は、対応するＮＢフラグを０にしてＳ３５に移る。Ｓ３４では、ｒｅａｄ（）／ｗｒｉｔｅ（）は、対応するＮＢフラグを１にしてＳ３６に移る。
【００４３】
Ｓ３５では、ｒｅａｄ（）／ｗｒｉｔｅ（）は、キャッシュバッファを利用して通常のアクセスを行う。Ｓ３６では、ｒｅａｄ（）／ｗｒｉｔｅ（）は、キャッシュバッファを使わずにｒｅａｄ／ｗｒｉｔｅ処理を行う。ここでは、ｒｅａｄ（）／ｗｒｉｔｅ（）は、可能であれば二次記憶装置１６と、ユーザエリア１３とで直接データを転送する。しかし、直接データ転送できない場合、ｒｅａｄ（）／ｗｒｉｔｅ（）は、キャッシュバッファ１４のうち１セクタ分の領域１つだけを選択し、このキャッシュバッファエリアのみを経由してデータ転送を行う。これにより、キャッシュバッファに既に入っているデータが追い出されることが無くなるか、あったとしても１セクタ分のデータだけが追い出されるだけで済む。
【００４４】
なお、直接データ転送できない場合としては、例えば、二次記憶装置１６が扱えるデータ長と、ｒｅａｄ（）／ｗｒｉｔｅ（）で指定されたデータ長と、が違う場合等がある。また、直接データ転送できない場合としては、例えば、アプリケーションが要求したデータの先頭からのオフセットが、二次記憶装置１６が扱えるデータの最小単位であるセクタの倍数になっていない場合等がある。
【００４５】
Ｓ３５かＳ３６の処理が終わるとｒｅａｄ（）／ｗｒｉｔｅ（）は終了を終了する。
【００４６】
以上、上述したように各実施形態によれば、再利用される可能性の高いメタデータや設定ファイル等がキャッシュバッファから追い出されるのを防ぎ、効率的なファイルアクセスをアプリケーションの変更なしに提供することができる。
【００４７】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【００４８】
【図１】本実施形態における、二次記憶装置にデータを読み書きできるシステムの一例のシステム構成図である。
【図２】ＦＤテーブルの一例を示す図である。
【図３】拡張子リストの一例を示す図である。
【図４−１】本実施形態のシステムの動作の一例を示すフローチャート（その１）である。
【図４−２】本実施形態のシステムの動作の一例を示すフローチャート（その２）である。
【図５】本実施形態における、二次記憶装置にデータを読み書きできるシステムの一例のシステム構成図である。
【図６】ファイルタイプＤＢの一例を示す図である。
【図７】本実施形態のシステムの動作の一例を示すフローチャート（その１）である。
【図８】本実施形態のシステムの動作の一例を示すフローチャート（その２）である。
【符号の説明】
【００４９】
１  プロセッサ
２  主記憶装置
３  ユーザエリア
４  キャッシュバッファ
５  拡張子リスト
６  二次記憶装置
７  ＦＤテーブル
【図１】
2007334687.tif 000003
【図２】
2007334687.tif 000004
【図３】
2007334687.tif 000005
【図４−１】
2007334687.tif 000006
【図４−２】
2007334687.tif 000007
【図５】
2007334687.tif 000008
【図６】
2007334687.tif 000009
【図７】
2007334687.tif 000010
【図８】
2007334687.tif 000011