(57)【要約】【課題】データの書き込み性能の低下を回避する。【解決手段】記憶部は、データをクラスタごとに記憶し、書き込み処理部は、所定数のクラスタで構成されるユニットを基準としてファイル単位のデータを書き込む処理を行う。そして、書き込み処理部は、記憶部に既に記憶されているファイルにデータを追記する際に、追記の対象となるファイルに割り当てられているユニットに、データの書き込まれていないクラスタがある場合には、そのクラスタにデータを書き込む。一方、書き込み処理部は、追記の対象となるファイルに割り当てられているユニットに、データの書き込まれていないクラスタがない場合には、追記の対象となるファイルにユニットを新たに割り当てて、そのユニットのクラスタにデータを書き込む。本技術は、例えば、フラッシュメモリを記憶部として用いる情報処理装置に適用できる。【選択図】図１
2013250831.tif 000002
【特許請求の範囲】
【請求項１】
データをクラスタごとに記憶する記憶部と、
前記記憶部に対し、所定数の前記クラスタで構成されるユニットを基準としてファイル単位のデータを書き込む処理を行う書き込み処理部と
を備える情報処理装置。
【請求項２】
前記書き込み処理部は、前記記憶部に既に記憶されているファイルにデータを追記する際に、
追記の対象となるファイルに割り当てられている前記ユニットに、データの書き込まれていない前記クラスタがある場合には、そのクラスタからデータの書き込みを行い、
追記の対象となるファイルに割り当てられている前記ユニットに、データの書き込まれていない前記クラスタがない場合には、追記の対象となるファイルに前記ユニットを新たに割り当てて、そのユニットの前記クラスタからデータの書き込みを行う
請求項１に記載の情報処理装置。
【請求項３】
前記記憶部に記憶されている更新日時が一定以上の古いファイルを検索するファイル検索部と、
前記ファイル検索部が検出したファイルが割り当てられている前記ユニットのうちの、データの書き込まれていない前記クラスタを有する前記ユニットが登録されるリストを保持するリスト保持部と
をさらに備える請求項１に記載の情報処理装置。
【請求項４】
前記ファイル検索部は、前記記憶部の全ての前記クラスタにファイルが割り当てられている場合、所定数の前記ユニットが登録された前記リストの中から所望の前記ユニットを、新たにデータを書き込む対象として選択する
請求項３に記載の情報処理装置。
【請求項５】
前記ファイル検索部は、所定数の前記ユニットが登録された前記リストの中から、データの書き込まれていない前記クラスタの個数が最も多い前記ユニットを選択する
請求項４に記載の情報処理装置。
【請求項６】
前記ファイル検索部は、所定数の前記ユニットが登録された前記リストの中から、更新日時が古いファイルが割り当てられている前記ユニットから順番に前記ユニットを選択する
請求項４に記載の情報処理装置。
【請求項７】
前記書き込み処理部がデータを書き込む起点となる前記クラスタを示す情報を管理情報として保持する管理情報保持部
をさらに備える請求項１に記載の情報処理装置。
【請求項８】
前記管理情報保持部は、前記記憶部に既に記憶されているファイルが割り当てられたユニットを示す情報を管理情報として保持する
請求項７に記載の情報処理装置。
【請求項９】
前記管理情報保持部は、ファイルにデータを追記する際の起点として、先頭の前記クラスタから順番にデータが書き込まれている前記ユニットの前記クラスタのうちの、データの書き込まれていない先頭の前記クラスタを示す情報を管理情報として保持する
請求項７に記載の情報処理装置。
【請求項１０】
前記管理情報保持部は、前記ユニットにファイルを新たに割り当ててデータを書き込む際の起点として、最後に書き込まれたファイルが割り当てられた前記ユニットの次の前記ユニットであって、かつ、ファイルの割り当てられていない前記ユニットの先頭のクラスタを示す情報を管理情報として保持する
請求項７に記載の情報処理装置。
【請求項１１】
前記記憶部が、所定の記憶領域ごとにデータを一括で消去するように構成されているとき、一括でデータを消去する所定の記憶領域と一致するように前記ユニットが設定されている
請求項１に記載の情報処理装置。
【請求項１２】
所定サイズ以下のデータからなる複数のファイルを、１つのユニットに割り当てて統合する処理を行う統合処理部
をさらに備える請求項１に記載の情報処理装置。
【請求項１３】
前記統合処理部は、更新日時が一定期間経過しているファイルを処理の対象とする
請求項１２に記載の情報処理装置。
【請求項１４】
前記書き込み処理部は、前記記憶部に記憶されているファイルの管理に使用する所定のデータの記憶に使用するために設けられた前記ユニットでは、前記クラスタごとにデータの書き込みを行う
請求項１に記載の情報処理装置。
【請求項１５】
記憶部にデータをクラスタごとに記憶させ、
前記記憶部に対し、所定数の前記クラスタで構成されるユニットを基準としてファイル単位のデータを書き込む
ステップを含む情報処理方法。
【請求項１６】
記憶部にデータをクラスタごとに記憶させ、
前記記憶部に対し、所定数の前記クラスタで構成されるユニットを基準としてファイル単位のデータを書き込む
ステップを含む処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理装置および情報処理方法、並びにプログラムに関し、特に、データの書き込み性能の低下を回避することができるようにした情報処理装置および情報処理方法、並びにプログラムに関する。
【背景技術】
【０００２】
従来、コンピュータを制御するＯＳ（Operating System）は、データをハードディスクなどの記憶装置に保存する際に、記憶装置に保存されるデータの物理的位置を管理するファイルシステム、例えば、FAT（File Allocation Tables）を利用する。一般的に、ファイルシステムでは、データは、クラスタと称される単位で管理される。そして、FATの通常のアロケーションアルゴリズムでは、直前にデータが割り当てられているクラスタを起点として、次に空いているクラスタを、新たに書き込むデータに割り当てるように規定されている。
【０００３】
ところが、従来のファイルシステムは、ファイルの書き込みと削除とが繰り返されることによってフラグメントが発生し易くなっていた。そして、フラグメントが発生した場合には、フラグメントが発生していない場合と比較して、即ち、クラスタに連続的にデータを書き込むことができる場合と比較して、データの書き込み速度が低下してしまうなど、性能が低下することが想定される。従って、性能低下を回避するために、フラグメントの発生を防止する対策を講じる必要がある。
【０００４】
例えば、特許文献１には、ファイルの書き込み処理時に、ファイルサイズとあらかじめ設定しておいた複数の閾値とを比較して、ファイルサイズに応じた予約サイズで予約を行うフラグメント防止ファイルシステムが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１３５１２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、上述の特許文献１で開示されているフラグメント防止ファイルシステムでは、ファイルのサイズを予め把握する必要があるため、管理テーブルが複雑になっていた。そこで、より簡易的な構成でフラグメントの発生を抑制して、データの書き込み性能の低下を回避することが求められている。
【０００７】
本開示は、このような状況に鑑みてなされたものであり、データの書き込み性能の低下を回避することができるようにするものである。
【課題を解決するための手段】
【０００８】
本開示の一側面の情報処理装置は、データをクラスタごとに記憶する記憶部と、前記記憶部に対し、所定数の前記クラスタで構成されるユニットを基準としてファイル単位のデータを書き込む処理を行う書き込み処理部とを備える。
【０００９】
本開示の一側面の情報処理方法またはプログラムは、記憶部にデータをクラスタごとに記憶させ、前記記憶部に対し、所定数の前記クラスタで構成されるユニットを基準としてファイル単位のデータを書き込むステップを含む。
【００１０】
本開示の一側面においては、データをクラスタごとに記憶する記憶部に対し、所定数のクラスタで構成されるユニットを基準としてファイル単位のデータが書き込まれる。
【発明の効果】
【００１１】
本開示の一側面によれば、データの書き込み性能の低下を回避することができる。
【図面の簡単な説明】
【００１２】
【図１】従来のファイルシステムに基づいたデータの書き込みを説明する図である。
【図２】従来のファイルシステムに基づいたデータの書き込みを説明する図である。
【図３】本技術を適用した情報処理装置の一実施の形態の構成例を示すブロック図である。
【図４】ファイル管理部が記憶部にデータを書き込む処理を説明する図である。
【図５】ファイル管理部が記憶部にデータを書き込む処理を説明する図である。
【図６】ファイル管理部が記憶部にデータを書き込む処理を説明するフローチャートである。
【図７】ファイルの統合処理を説明する図である。
【図８】本技術を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
【発明を実施するための形態】
【００１３】
まず、本技術を適用した具体的な実施の形態を説明する前に、図１および図２を参照して、従来のファイルシステムに基づいたファイルの書き込みについて説明する。
【００１４】
図１および図２には、アドレス0x00により識別される１６個のクラスタ、アドレス0x10により識別される１６個のクラスタ、および、アドレス0x20により識別される１６個のクラスタからなる記憶領域が示されている。また、図１および図２では、データを書き込む起点とされるクラスタに対して矢印が標記されている。
【００１５】
まず、図１の最も上側に示すように、記憶領域にデータが記憶されていない状態では、アドレス0x00の１番目のクラスタが、データを書き込む起点とされる。そして、ファイル１の書き込みが発生すると、アドレス0x00の１番目のクラスタから順番にファイル１が割り当てられる。例えば、６クラスタ分のデータからなるファイル１が記憶領域に書き込まれると、次に空いているアドレス0x00の７番目のクラスタが、次のデータを書き込む起点とされる。
【００１６】
その後、ファイル２の書き込みが発生すると、アドレス0x00の７番目のクラスタから順番にファイル２が割り当てられる。例えば、７クラスタ分のデータからなるファイル２が記憶領域に書き込まれると、次に空いているアドレス0x00の１４番目のクラスタが、次のデータを書き込む起点とされる。このとき、ファイル１に対して追記する書き込みが発生すると、アドレス0x00の１４番目のクラスタから順番にファイル１が割り当てられて、図１に示すように、次に空いているアドレス0x10の５番目のクラスタが、次のデータを書き込む起点とされる。
【００１７】
ここで、図２の最も上側に示すようにファイル２が削除されると、次のデータを書き込む起点は、ファイル２が記憶されていた先頭のクラスタ、即ち、アドレス0x00の７番目のクラスタとされる。
【００１８】
そして、ファイル３の書き込みが発生すると、アドレス0x00の７番目のクラスタから順番にファイル３が割り当てられる。例えば、３クラスタ分のデータからなるファイル３が記憶領域に書き込まれると、次に空いているアドレス0x00の１０番目のクラスタが、次のデータを書き込む起点とされる。
【００１９】
このとき、アドレス0x00の１０番目から１３番目まで４つのクラスタが連続的に空いているが、例えば、５クラスタ分のデータからなるファイル４の書き込みが発生すると、ファイル４には、非連続的にクラスタが割り当てられることになる。即ち、ファイル４は、アドレス0x00の１０番目から１３番目までの連続した４つのクラスタと、アドレス0x10の５番目の１つのクラスタとに、断片的に書き込まれる。このように、ファイルが断片的に記憶されるフラグメントが発生する。
【００２０】
その後、ファイル３を追記するデータの書き込みが発生すると、アドレス0x10の６番目のクラスタから、データの書き込みが行われる。
【００２１】
このように、従来のファイルシステムでは、ファイルの書き込みと削除とが繰り返されることによってフラグメントが発生し易くなっていた。
【００２２】
以下、本技術を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００２３】
図３は、本技術を適用した情報処理装置の一実施の形態の構成例を示すブロック図である。
【００２４】
図３において、情報処理装置１１は、ファイル管理部１２および記憶部１３を備えて構成されており、情報処理装置１１には、図示しない外部のブロックから、記憶部１３に記憶させるデータが供給される。
【００２５】
ファイル管理部１２は、例えば、CPU（Central Processing Unit）およびメモリを有して構成されており、CPUがメモリに記憶されているプログラムを実行することにより、記憶部１３に書き込むデータのファイル管理を行う。
【００２６】
記憶部１３は、例えば、ハードディスクドライブやフラッシュメモリ（例えば、EEPROM（Electronically Erasable and Programmable Read Only Memory））などを有して構成されており、クラスタ単位でデータを記憶する。
【００２７】
ここで、情報処理装置１１では、所定数のクラスタで構成されるユニットが予め定義されており、ユニットを基準としてファイル単位のデータの書き込みを行うように規定されている。例えば、記憶部１３が、所定の記憶領域ごとにデータを一括で消去するように構成されているフラッシュメモリである場合、情報処理装置１１では、データを消去するサイズ（消去ブロックサイズ）と同一の大きさとなるようにユニットを設定することができる。このとき、消去ブロックサイズの先頭となるクラスタと、ユニットの先頭となるクラスタとが一致するように、ユニットが設定される。
【００２８】
ファイル管理部１２は、書き込み処理部２１、管理情報保持部２２、ファイル検索部２３、リスト保持部２４、およびデフラグ処理部２５を備えて構成される。
【００２９】
書き込み処理部２１は、図示しない外部のブロックから記憶部１３に書き込むデータが供給されると、管理情報保持部２２に保持されている管理情報を参照して、どのクラスタにデータを書き込むかを判定し、記憶部１３にデータを書き込む処理を行う。
【００３０】
管理情報保持部２２には、例えば、既に記憶されているファイルが割り当てられたユニットを示す情報や、ファイルにデータを追記する際の起点となるクラスタを示す情報、ユニットにファイルを新たに割り当ててデータを書き込む際の起点となるクラスタを示す情報などが、管理情報として記憶されている。
【００３１】
例えば、書き込み処理部２１は、記憶部１３に既に記憶されているファイルに対して追記するデータが供給されると、そのファイルが割り当てられたユニットにデータの書き込まれていないクラスタ（以下、適宜、空クラスタと称する）があるか否かを判定する。ユニットに空クラスタがある場合には、そのファイルにデータを追記する際の起点となるクラスタを示す情報が管理情報として管理情報保持部２２に保持されている。従って、書き込み処理部２１は、供給されたデータのファイルについて、ファイルにデータを追記する際の起点となるクラスタを示す情報が管理情報保持部２２に保持されている場合には、そのファイルが割り当てられたユニットに空クラスタがあると判定する。そして、書き込み処理部２１は、その起点とされている空クラスタからデータを書き込む処理を行う。
【００３２】
一方、書き込み処理部２１は、供給されたデータのファイルについて、ファイルにデータを追記する際の起点となるクラスタを示す情報が管理情報保持部２２に保持されていない場合には、そのファイルが割り当てられたユニットに空クラスタがないと判定する。この場合、書き込み処理部２１は、供給されたデータのファイルに対し、全てのクラスタにデータが書き込まれていないユニット（以下、適宜、空ユニットと称する）を新たに割り当てる。このとき、書き込み処理部２１は、ユニットにファイルを新たに割り当ててデータを書き込む際の起点となるクラスタを示す情報に基づいて、そのクラスタが設定されているユニットを、供給されたデータのファイルに割り当てる。そして、書き込み処理部２１は、ユニットにファイルを新たに割り当ててデータを書き込む際の起点となるクラスタからデータを書き込む処理を行う。
【００３３】
また、書き込み処理部２１は、例えば、空ユニットがない場合には、ファイル検索部２３に対して、記憶部１３に記憶されているファイルを検索するように指示を行う。
【００３４】
ファイル検索部２３は、書き込み処理部２１からの指示に従って記憶部１３に記憶されているファイルを検索する。例えば、ファイル検索部２３は、更新日時が一定以上古いファイルを検索して、そのファイルが割り当てられているユニットに空クラスタがある場合には、そのユニットを、リスト保持部２４に保持されているリストに登録する。そして、ファイル検索部２３は、一定数以上の空クラスタを有するユニットがリストに登録されると、その中から所望のユニットを選択し、検索結果として書き込み処理部２１に通知する。
【００３５】
これに応じて、書き込み処理部２１は、ファイル検索部２３により選択されたファイルが記憶されているユニットの空クラスタにデータを書き込む処理を行う。
【００３６】
リスト保持部２４は、ファイル検索部２３が作成したリスト、即ち、更新日時が一定以上古いファイルが割り当てられているユニットであって、空クラスタを有するユニットが登録されたリストを保持する。また、リスト保持部２４が保持するリストには、ユニットに対応付けて、そのユニットが有する空クラスタの個数が登録される。
【００３７】
デフラグ処理部２５は、図示しない外部のブロックから、ユーザの操作に従ってデフラグを実行するコマンドが供給されると、記憶部１３で発生しているデータの断片化を解消するデフラグ処理を行う。また、デフラグ処理部２５は、デフラグ処理を行う際に、図７を参照して後述するように、複数のファイルを纏めて１つのユニットに割り当てる統合処理を行う。
【００３８】
このように、ファイル管理部１２では、ユニットを基準としてファイル単位のデータの書き込みが管理される。
【００３９】
次に、図４および図５を参照して、ファイル管理部１２が記憶部１３にデータを書き込む処理について説明する。
【００４０】
図４および図５には、アドレス0x00により識別される１６個のクラスタ、アドレス0x10により識別される１６個のクラスタ、および、アドレス0x20により識別される１６個のクラスタからなる記憶領域が示されている。また、図４および図５では、データを書き込む起点とされるクラスタに対して矢印が標記されている。
【００４１】
さらに、ファイル管理部１２では、上述したように、ファイル単位のデータの書き込みを行う際の基準となるユニットが設定されている。図４および図５の例では、８個のクラスタで構成されるユニットが使用され、それぞれのアドレスにおいて、１番目から８番目までのクラスタから構成される第１のユニットと、９番目から１６番目までのクラスタから構成される第２のユニットとが設定されている。
【００４２】
まず、図４の最も上側に示すように、記憶領域にデータが記憶されていない状態では、アドレス0x00の１番目のクラスタが、データを書き込む起点とされる。そして、ファイル１のデータが供給されると、書き込み処理部２１は、アドレス0x00の１番目のクラスタから順番にファイル１を割り当てる。
【００４３】
例えば、６クラスタ分のデータからなるファイル１が供給されると、書き込み処理部２１は、アドレス0x00の第１のユニットをファイル１に割り当てて、アドレス0x00の１番目から６番目のクラスタにデータを書き込む。その後、書き込み処理部２１は、アドレス0x00の第１のユニットにおける先頭の空クラスタであるアドレス0x00の７番目のクラスタを、ファイル１にデータを追記する際の起点として、管理情報保持部２２の管理情報を更新する。また、このとき、書き込み処理部２１は、ファイル１が割り当てられたユニットの次の空ユニットの先頭のクラスタを、ユニットにファイルを新たに割り当ててデータを書き込む際の起点として、管理情報保持部２２の管理情報を更新する。即ち、図４の例では、アドレス0x00の第２のユニットにおける先頭のクラスタである９番目のクラスタが、ユニットにファイルを新たに割り当ててデータを書き込む際の起点とされる。
【００４４】
そして、次のデータがファイル管理部１２に供給されると、書き込み処理部２１は、そのデータが、ファイル１に対して追記するデータであるか否かを判定する。例えば、次のデータがファイル１とは異なるファイル２のものである場合には、書き込み処理部２１は、アドレス0x00の第２のユニットにファイル２を割り当てて、起点として設定されているアドレス0x00の９番目のクラスタからデータを書き込む処理を行う。
【００４５】
図４の例では、アドレス0x00の９番目のクラスタから、７クラスタ分のデータからなるファイル２が書き込まれている。その後、書き込み処理部２１は、アドレス0x00の第２のユニットにおける先頭の空クラスタであるアドレス0x00の１６番目のクラスタを、ファイル２にデータを追記する際の起点として、管理情報保持部２２の管理情報を更新する。また、このとき、書き込み処理部２１は、ファイル２が割り当てられたユニットの次の空ユニットにおける先頭のクラスタ（図４の例では、アドレス0x10の１番目のクラスタ）を、ユニットにファイルを新たに割り当ててデータを書き込む際の起点として、管理情報保持部２２の管理情報を更新する。
【００４６】
そして、次のデータがファイル管理部１２に供給されると、書き込み処理部２１は、そのデータが、ファイル１または２に対して追記するデータであるか否かを判定する。例えば、次のデータがファイル１に対して追記するものである場合には、書き込み処理部２１は、ファイル１に追記するデータを書き込む起点として設定されているアドレス0x00の７番目のクラスタからデータを書き込む処理を行う。
【００４７】
このとき、ファイル１が割り当てられたアドレス0x00の第１のユニットにおいて、空クラスタは、0x00の７番目および８番目のクラスタだけである。従って、書き込み処理部２１は、２クラスタ分のデータ以上が追記される場合には、アドレス0x00の７番目および８番目のクラスタにデータを書き込んだ後、ユニットにファイルを新たに割り当ててデータを書き込む際の起点となるクラスタに基づいて、アドレス0x10の第１のユニットをファイル１に割り当てる。つまり、ファイル１が割り当てられたアドレス0x00の第１のユニットの全てのクラスタにデータが書き込まれると、書き込み処理部２１は、アドレス0x10の１番目のクラスタから、残りの５クラスタ分のデータを書き込む処理を行う。
【００４８】
その後、書き込み処理部２１は、アドレス0x10の第１のユニットの先頭の空クラスタである６番目のクラスタを、ファイル１にデータを追記する際の起点として、管理情報保持部２２の管理情報を更新する。また、このとき、書き込み処理部２１は、ファイル１が割り当てられたユニットの次の空ユニットの先頭のクラスタ（図５の例では、アドレス0x10の９番目のクラスタ）を、ユニットにファイルを新たに割り当ててデータを書き込む際の起点として管理情報を更新する。
【００４９】
また、図５に示すように、ファイル２が消去されると、ファイル２が割り当てられていたアドレス0x00の第２のユニットが空ユニットとなる。このとき、ユニットにファイルを新たに割り当ててデータを書き込む際の起点となるクラスタは変更されず、アドレス0x10の９番目のクラスタのままとされる。
【００５０】
さらに、次のデータがファイル管理部１２に供給されると、書き込み処理部２１は、そのデータが、ファイル１に対して追記するデータであるか否かを判定する。例えば、次のデータがファイル１とは異なるファイル３のものである場合には、書き込み処理部２１は、アドレス0x10の第２のユニットをファイル３に割り当てて、起点として設定されているアドレス0x10の９番目のクラスタからデータを書き込む処理を行う。
【００５１】
このように、ファイル管理部１２は、ユニットをまたいでファイルを書き込むことが必要となると、そのファイルが割り当てられたユニットの先頭のクラスタからデータを書き込む処理を行う。このように、所定数のクラスタで構成されるユニットを基準としてファイル単位のデータの書き込みを行うことで、記憶部１３を長期間使用して、データの書き込みおよび削除が繰り返されても、フラグメントの過度の発生を抑制することができる。これにより、フラグメントが発生した場合に想定されるデータの書き込み速度の低下を回避し、性能低下を回避することができる。
【００５２】
具体的には、情報処理装置１１では、所定の条件でデータの書き込みおよび削除を所定時間繰り返したとき、例えば、従来のFATを利用した構成と比較して、書き込み速度の平均で約１．５倍、書き込み速度の最低速度で約２．５倍となることが確認された。
【００５３】
また、記憶部１３としてフラッシュメモリが採用される構成では、書き込み可能回数から定められる寿命を延長して、長寿命化を図ることができる。即ち、フラッシュメモリでは、消去ブロックの一部のファイルを消去する際には、消去の対象となるファイル以外のデータを移動させるための書き込みが発生することによって、寿命が短くなることが想定されている。これに対し、情報処理装置１１では、消去ブロックサイズと同一の大きさとなるようにユニットを設定することで、ファイルを消去する際に、上述のようなデータを移動させるための書き込みが発生しないため、長寿化を図ることができる。
【００５４】
また、情報処理装置１１は、例えば、FATの仕様に準拠したクラスタを利用しているため、他の装置との間で互換性を確保することができる。さらに、情報処理装置１１では、書き込む対象となるファイルのサイズを把握する必要がないため、ファイルサイズとあらかじめ設定しておいた複数の閾値とを比較するようなシステムと比較して、管理テーブルが複雑になることがない。即ち、情報処理装置１１は、従来のフラグメント防止ファイルシステムよりも、より簡易的な構成でフラグメントの発生を抑制することができる。
【００５５】
次に、図６は、ファイル管理部１２が記憶部１３にデータを書き込む処理を説明するフローチャートである。
【００５６】
ファイル管理部１２にデータが供給されると処理が開始される。そして、ステップＳ１１において、書き込み処理部２１は、管理情報保持部２２の管理情報を参照して、供給されたデータが、記憶部１３に既に記憶されているファイルに対して追記するデータであるか否かを判定する。例えば、記憶部１３に既に記憶されているファイルにはユニットが割り当てられており、管理情報保持部２２の管理情報として、ファイルが割り当てられたユニットを示す情報が保持されている。従って、書き込み処理部２１は、供給されたデータについて、ファイルが割り当てられたユニットを示す情報が、管理情報保持部２２の管理情報に保持されている場合、追記するデータであると判定する。
【００５７】
ステップＳ１１において、書き込み処理部２１が、供給されたデータは記憶部１３に既に記憶されているファイルに対して追記するデータであると判定した場合、処理はステップＳ１２に進む。
【００５８】
ステップＳ１２において、書き込み処理部２１は、管理情報保持部２２の管理情報を参照して、追記されるデータのファイルが割り当てられたユニットに空クラスタがあるか否かを判定する。例えば、既に記憶されているファイルが割り当てられたユニットに空クラスタがある場合には、管理情報保持部２２の管理情報として、ファイルにデータを追記する際の起点となるクラスタを示す情報が保持されている。従って、書き込み処理部２１は、ファイルにデータを追記する際の起点となるクラスタを示す情報が、管理情報保持部２２の管理情報に保持されている場合、追記されるデータのファイルが割り当てられたユニットに空クラスタがあると判定する。
【００５９】
ステップＳ１２において、書き込み処理部２１が、追記されるデータのファイルが割り当てられたユニットに空クラスタがあると判定した場合、処理はステップＳ１３に進む。
【００６０】
ステップＳ１３において、書き込み処理部２１は、追記されるデータのファイルが割り当てられたユニットの空クラスタにデータを書き込む処理を行う。このとき、書き込み処理部２１は、ファイルにデータを追記する際の起点となるクラスタから順番にデータの書き込みを行う。
【００６１】
ステップＳ１４において、書き込み処理部２１は、データを追記したファイルが割り当てられているユニットにおける先頭の空クラスタを、ファイルにデータを追記する際の起点として、管理情報保持部２２の管理情報を更新する。ステップＳ１４の処理後、処理は終了される。
【００６２】
一方、ステップＳ１１において、供給されたデータは記憶部１３に既に記憶されているファイルに対して追記するデータでないと判定された場合、または、ステップＳ１２において、追記されるデータのファイルが記憶されているユニットに空クラスタがないと判定された場合、処理はステップＳ１５に進む。
【００６３】
ステップＳ１５において、書き込み処理部２１は、管理情報保持部２２の管理情報を参照して、記憶部１３に空ユニットがあるか否かを判定する。上述したように、ユニットにファイルを新たに割り当ててデータを書き込む際の起点は、ファイルが割り当てられたユニットの次の空ユニットの先頭のクラスタに設定されている。従って、書き込み処理部２１は、ユニットにファイルを新たに割り当ててデータを書き込む際の起点となるクラスタを示す情報が、管理情報保持部２２の管理情報に保持されている場合、記憶部１３に空ユニットがあると判定する。
【００６４】
ステップＳ１５において、書き込み処理部２１が記憶部１３に空ユニットがあると判定した場合、処理はステップＳ１３に進み、以下、上述した処理が行われる。なお、この場合には、書き込み処理部２１は、ステップＳ１３において、ユニットにファイルを新たに割り当ててデータを書き込む際の起点となるクラスタから順番にデータの書き込みを行う。そして、書き込み処理部２１は、ステップＳ１４において、この書き込みに対応して管理情報保持部２２の管理情報を更新する。
【００６５】
一方、ステップＳ１５において、書き込み処理部２１が記憶部１３に空ユニットがないと判定した場合、処理はステップＳ１６に進む。
【００６６】
ステップＳ１６において、書き込み処理部２１は、ファイル検索部２３に対して、更新日時が一定以上古いファイルを検索するように指示し、ファイル検索部２３が、更新日時が一定以上古いファイルを検出すると、処理はステップＳ１７に進む。
【００６７】
ステップＳ１７において、ファイル検索部２３は、ステップＳ１６で検出したファイルが割り当てられているユニットに空クラスタがあるか否かを判定する。
【００６８】
ステップＳ１７において、ファイル検索部２３がユニットに空クラスタがないと判定した場合、即ち、ユニットの全てのクラスタにデータが記憶されている場合、処理はステップＳ１６に戻り、以下、同様の処理が繰り返される。なお、例えば、処理が繰り返して行われた結果、更新日時が一定以上古いファイルが割り当てられている全てのユニットに空クラスタがない場合には、ファイル検索部２３は、その旨を図示しない上位の制御部に通知する。そして、この場合、データの書き込みを行うことができないことを示すメッセージがユーザに通知され、処理は中止される。
【００６９】
一方、ステップＳ１７において、ファイル検索部２３がユニットに空クラスタがあると判定した場合、処理はステップＳ１８に進む。
【００７０】
ステップＳ１８において、ファイル検索部２３は、ステップＳ１６で検出したファイルが割り当てられているユニットを、リスト保持部２４に保持されているリストに登録する。このとき、ファイル検索部２３は、リストに登録したユニットが有する空クラスタの個数を、そのユニットに対応付けてリストに登録する。
【００７１】
ステップＳ１９において、ファイル検索部２３は、リスト保持部２４のリストにおいて、空クラスタを有するユニットの登録数が一定数以上であるか否かを判定する。
【００７２】
ステップＳ１９において、ファイル検索部２３が、空クラスタを有するユニットの登録数が一定数以上でない（即ち、空クラスタを有するユニットの登録数が一定数未満である）と判定した場合、処理はステップＳ１６に戻り、以下、同様の処理が繰り返される。一方、ステップＳ１９において、ファイル検索部２３が、空クラスタを有するユニットの登録数が一定数以上であると判定した場合、処理はステップＳ２０に進む。
【００７３】
ステップＳ２０において、ファイル検索部２３は、リスト保持部２４のリストに登録されているユニットにおいて、空クラスタの個数が最も多いユニットを選択して、そのユニットを書き込み処理部２１に通知する。
【００７４】
ステップＳ２１において、書き込み処理部２１は、管理情報保持部２２の管理情報を参照して、ステップＳ２０でファイル検索部２３から通知されたユニットにおける先頭の空クラスタを、データを書き込む起点として特定する。その後、処理はステップＳ１３に進み、以下、上述した処理が行われる。なお、この場合には、書き込み処理部２１は、ステップＳ１３において、ステップＳ２１で特定した起点となるクラスタから順番にデータの書き込みを行い、ステップＳ１４において、この書き込みに対応して管理情報保持部２２の管理情報を更新する。さらに、書き込み処理部２１は、ステップＳ１４において、書き込みを行ったユニットに関して、リスト保持部２４に保持されているリストを更新し、そのユニットが有する空クラスタの個数を変更したり、そのユニットをリストから削除したりする。
【００７５】
以上のように、情報処理装置１１では、空ユニットがない場合でも、更新日時が一定以上の古いファイルが割り当てられたユニットの空クラスタに、データを書き込むことができる。更新日時が一定以上の古いファイルが割り当てられたユニットのうちの、空クラスタを有するユニットを登録したリストを利用することで、データを書き込むクラスタを特定する処理の処理速度を向上させることができる。
【００７６】
また、例えば、空ユニットがない場合にデータを書き込む対象とするユニットを、更新日時が一定以上の古いファイルが割り当てられたユニットとすることで、そのファイルに追記が発生する可能性が低いことより、デフラグの発生を抑制することができる。また、全てのユニットを検索対象とする場合よりも、処理速度を向上させることができる。なお、空ユニットがない場合にデータを書き込む対象とするユニットを、更新日時が古い順番で割り当ててもよい。
【００７７】
また、図６のステップＳ２０において、空クラスタの個数が最も多いユニットを選択する他、例えば、更新日時が古いファイルが割り当てられているユニットから順番に選択してもよい。
【００７８】
また、情報処理装置１１では、ユーザの操作に従ってデフラグ処理部２５がデフラグ処理を行う際に、複数のファイルを纏めて１つのユニットに割り当てる統合処理を行うことができる。
【００７９】
次に、図７を参照して、デフラグ処理部２５によるファイルの統合処理について説明する。
【００８０】
図７には、図４および図５と同様に、アドレス0x00からアドレス0x20により識別されるクラスタが示されている。そして、アドレス0x00の第１および第２のユニットにファイル１が割り当てられ、アドレス0x00の１番目のクラスタから１０番目のクラスタまでファイル１のデータが記憶されている。また、アドレス0x10の第１のユニットにファイル２が割り当てられ、アドレス0x10の１番目のクラスタにファイル２のデータが記憶されている。また、また、アドレス0x10の第２のユニットにファイル３が割り当てられ、アドレス0x10の９番目および１０番目のクラスタにファイル２のデータが記憶されている。
【００８１】
デフラグ処理部２５は、ユニットのサイズに対して一定のサイズ以下のデータを有する複数のファイルを１つのユニットに割り当て、それらのファイルを纏める統合処理を行う。また、デフラグ処理部２５は、ユニットのサイズよりも大きなデータを有するファイルであっても、ファイルの末尾のデータが割り当てられているユニットにおいて、そのデータが一定のサイズ以下である場合には、そのデータを統合処理の対象とする。
【００８２】
つまり、図７に示すように、ユニットのサイズに対して一定のサイズ以下のデータであるファイル２および３が統合処理の対象とされる。また、ファイル１の末尾のデータが割り当てられているアドレス0x00の第２のユニットにおけるファイル１のデータが統合処理の対象とされる。
【００８３】
従って、デフラグ処理部２５は、ファイル１の末尾のデータ、ファイル２、およびファイル３を纏めてアドレス0x00の第２のユニットに割り当てる統合処理を行う。これにより、図７に示すように、ファイル２は、アドレス0x00の１１番目のクラスタに書き込まれ、ファイル３は、アドレス0x00の１２番目および１３番目のクラスタに書き込まれる。
【００８４】
このように、デフラグ処理部２５が統合処理を行うことによって、情報処理装置１１では、データ量の少ないファイルがユニットに割り当てられることによって、記憶部１３において、データの記憶に使用される領域の比率が低下することを回避することができる。即ち、より効率的に記憶部１３を使用することができる。
【００８５】
なお、デフラグ処理部２５は、更新の可能性が低いと想定される更新日時が一定期間経過しているファイルを、統合処理の対象として処理を行う。
【００８６】
また、例えば、クラスタのサイズを大きく設定することによってもデフラグの発生を抑制することができると想定されるが、このようにクラスタのサイズを大きく設定した場合には、クラスタに複数のファイルのデータを記憶させることはできない。そのため、クラスタのサイズよりも小さなサイズのファイルが記憶されると、記憶領域の使用効率が低下することになる。これに対し、情報処理装置１１は、ユニットに複数のファイルを割り当てることができるため、記憶部１３の使用効率の低下を回避することができる。
【００８７】
なお、デフラグ処理部２５は、ユーザの操作に従ってデフラグを実行する際に統合処理を行う他、例えば、所定の一定期間ごとに定期的に統合処理を行うことができる。または、デフラグ処理部２５は、記憶部１３に設定された全てのユニットにファイルが割り当てられたタイミングで、または空ユニットが所定数以下となったタイミングで、統合処理を行うことができる。これにより、例えば、記憶部１３において空ユニットがなくなることによって発生する処理を実行することを回避することができ、書き込み速度の向上を図ることができる。
【００８８】
また、情報処理装置１１では、ファイル管理部１２が記憶部１３に記憶されているファイルの管理に使用するメタデータを、記憶部１３の一部に記憶させて処理を行っている。その際、メタデータはクラスタ単位で扱い、記憶部１３にメタデータ用のユニットを設けることができる。
【００８９】
通常、ファイルの管理に使用するメタデータのサイズは、ユニットのサイズよりも小さいものであり、メタデータごとにユニットを割り当てた場合には、記憶部１３の使用効率が低下することが想定される。そこで、情報処理装置１１では、記憶部１３にメタデータ用のユニットを設け、メタデータ用のユニットにおいてデータの書き込みをクラスタ単位で行うことにより、記憶部１３の使用効率の低下を回避することができる。
【００９０】
なお、上述のフローチャートを参照して説明した各処理は、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理（例えば、並列処理あるいはオブジェクトによる処理）も含むものである。また、プログラムは、１のCPUにより処理されるものであっても良いし、複数のCPUによって分散処理されるものであっても良い。
【００９１】
また、上述した一連の処理（情報処理方法）は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラムが記録されたプログラム記録媒体からインストールされる。
【００９２】
図８は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【００９３】
コンピュータにおいて、CPU（Central Processing Unit）１０１，ROM（Read Only Memory）１０２，RAM（Random Access Memory）１０３は、バス１０４により相互に接続されている。
【００９４】
バス１０４には、さらに、入出力インタフェース１０５が接続されている。入出力インタフェース１０５には、キーボード、マウス、マイクロホンなどよりなる入力部１０６、ディスプレイ、スピーカなどよりなる出力部１０７、ハードディスクや不揮発性のメモリなどよりなる記憶部１０８、ネットワークインタフェースなどよりなる通信部１０９、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア１１１を駆動するドライブ１１０が接続されている。
【００９５】
以上のように構成されるコンピュータでは、CPU１０１が、例えば、記憶部１０８に記憶されているプログラムを、入出力インタフェース１０５及びバス１０４を介して、RAM１０３にロードして実行することにより、上述した一連の処理が行われる。
【００９６】
コンピュータ（CPU１０１）が実行するプログラムは、例えば、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等）、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア１１１に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
【００９７】
そして、プログラムは、リムーバブルメディア１１１をドライブ１１０に装着することにより、入出力インタフェース１０５を介して、記憶部１０８にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部１０９で受信し、記憶部１０８にインストールすることができる。その他、プログラムは、ROM１０２や記憶部１０８に、あらかじめインストールしておくことができる。
【００９８】
なお、本技術は以下のような構成も取ることができる。
（１）
データをクラスタごとに記憶する記憶部に対し、所定数の前記クラスタで構成されるユニットを基準としてファイル単位のデータを書き込む処理を行う書き込み処理部
を備える情報処理装置。
（２）
前記書き込み処理部は、前記記憶部に既に記憶されているファイルにデータを追記する際に、
追記の対象となるファイルに割り当てられている前記ユニットに、データの書き込まれていない前記クラスタがある場合には、そのクラスタからデータの書き込みを行い、
追記の対象となるファイルに割り当てられている前記ユニットに、データの書き込まれていない前記クラスタがない場合には、追記の対象となるファイルに前記ユニットを新たに割り当てて、そのユニットの前記クラスタからデータの書き込みを行う
上記（１）に記載の情報処理装置。
（３）
前記記憶部に記憶されている更新日時が一定以上の古いファイルを検索するファイル検索部と、
前記ファイル検索部が検出したファイルが割り当てられている前記ユニットのうちの、データの書き込まれていない前記クラスタを有する前記ユニットが登録されるリストを保持するリスト保持部と
をさらに備える上記（１）または（２）に記載の情報処理装置。
（４）
前記ファイル検索部は、前記記憶部の全ての前記クラスタにファイルが割り当てられている場合、所定数の前記ユニットが登録された前記リストの中から所望の前記ユニットを、新たにデータを書き込む対象として選択する
上記（１）から（３）までのいずれかに記載の情報処理装置。
（５）
前記ファイル検索部は、所定数の前記ユニットが登録された前記リストの中から、データの書き込まれていない前記クラスタの個数が最も多い前記ユニットを選択する
上記（４）に記載の情報処理装置。
（６）
前記ファイル検索部は、所定数の前記ユニットが登録された前記リストの中から、更新日時が古いファイルが割り当てられている前記ユニットから順番に前記ユニットを選択する
上記（４）に記載の情報処理装置。
（７）
前記書き込み処理部がデータを書き込む起点となる前記クラスタを示す情報を管理情報として保持する管理情報保持部
をさらに備える上記（１）から（６）までのいずれかに記載の情報処理装置。
（８）
前記管理情報保持部は、前記記憶部に既に記憶されているファイルが割り当てられたユニットを示す情報を管理情報として保持する
上記（７）に記載の情報処理装置。
（９）
前記管理情報保持部は、ファイルにデータを追記する際の起点として、先頭の前記クラスタから順番にデータが書き込まれている前記ユニットの前記クラスタのうちの、データの書き込まれていない先頭の前記クラスタを示す情報を管理情報として保持する
上記（７）に記載の情報処理装置。
（１０）
前記管理情報保持部は、前記ユニットにファイルを新たに割り当ててデータを書き込む際の起点として、最後に書き込まれたファイルが割り当てられた前記ユニットの次の前記ユニットであって、かつ、ファイルの割り当てられていない前記ユニットの先頭のクラスタを示す情報を管理情報として保持する
上記（７）に記載の情報処理装置。
（１１）
前記記憶部が、所定の記憶領域ごとにデータを一括で消去するように構成されているとき、一括でデータを消去する所定の記憶領域と一致するように前記ユニットが設定されている
上記（１）から（１０）までのいずれかに記載の情報処理装置。
（１２）
所定サイズ以下のデータからなる複数のファイルを、１つのユニットに割り当てて統合する処理を行う統合処理部
をさらに備える上記（１）から（１１）までのいずれかに記載の情報処理装置。
（１３）
前記統合処理部は、更新日時が一定期間経過しているファイルを処理の対象とする
上記（１２）に記載の情報処理装置。
（１４）
前記書き込み処理部は、前記記憶部に記憶されているファイルの管理に使用する所定のデータの記憶に使用するために設けられた前記ユニットでは、前記クラスタごとにデータの書き込みを行う
上記（１）から（１３）までのいずれかに記載の情報処理装置。
【００９９】
なお、本実施の形態は、上述した実施の形態に限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【０１００】
１１  情報処理装置，  １２  ファイル管理部，  １３  記憶部，  ２１  書き込み処理部，  ２２  管理情報保持部，  ２３  ファイル検索部，  ２４  リスト保持部，２５  デフラグ処理部
【図１】
2013250831.tif 000003
【図２】
2013250831.tif 000004
【図３】
2013250831.tif 000005
【図４】
2013250831.tif 000006
【図５】
2013250831.tif 000007
【図６】
2013250831.tif 000008
【図７】
2013250831.tif 000009
【図８】
2013250831.tif 000010