(57)【要約】【課題】デジタル映像音声データのように大容量のデータの読出しおよび書込みをリアルタイムで実行する。【解決手段】ファイル管理装置１０は、ハードディスク６に記録されたファイルを管理するファイル管理部１と、ファイル管理部１の指示に従い、ハードディスクへのデータの書込および読出の制御を行なう記録媒体制御部２と、ハードディスク６中の未使用領域を管理する未使用領域管理部３と、ハードディスク６中の未使用領域を接合する未使用領域接合部４と、交替処理を遅延させながら実行する遅延交替処理部５とを含む。【選択図】図１
2008140396.tif 000002
【特許請求の範囲】
【請求項１】
複数の論理ブロックに区切られた記録媒体を管理するファイル管理装置であって、
前記記録媒体に記録されたファイルを管理するためのファイル管理情報を管理するファイル管理手段を備え、
前記ファイル管理手段は、アプリケーションプログラムから指示されるデータの書込要求または読出要求が、前記論理ブロックの容量よりも小さい単位で行われたか否かを判断し、
前記ファイル管理手段および前記記録媒体に接続され、前記ファイル管理情報に基づいて、前記記録媒体に対するデータの書込および読出を行う記録媒体制御手段をさらに備え、
前記記録媒体制御手段は、前記アプリケーションプログラムから指示されるデータの書込要求または読出要求が、前記論理ブロックの容量よりも小さい単位で行われた場合に、前記論理ブロックを複数のサブブロックに分割し、前記サブブロック単位で前記記録媒体にアクセスすることによって、前記サブブロック単位で前記記録媒体に書込または読出を行う、ファイル管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル管理装置および方法に関し、特に、ＭＰＥＧ（Moving Picture Experts Group）２トランスポートストリームのように、デジタル映像データやデジタル音声データといった、大容量で読出および書込にリアルタイム性が要求されるようなデータを入出力可能なファイル管理装置および方法に関する。
【背景技術】
【０００２】
近年、ＭＰＥＧ１、ＭＰＥＧ２等のデジタル圧縮技術の標準化が進み、また、高性能なＣＰＵ（Central Processing Unit）、メモリおよびデータ蓄積媒体などが低価格で入手
できるようになってきている。よって、映像データや音声データをデジタル化して蓄積し、大容量のデジタルデータを処理するマルチメディア機器が数多く商品化されてきている。
【０００３】
このようなデジタル化された映像データや音声データを記録媒体に書込んだり、記録媒体から読出したりする際には、コンピュータでデータを読み書きするのと同様に、ファイルシステムと呼ばれるファイル管理装置がブロックのアロケート、未使用ブロックの管理およびデータの一覧情報の管理等を行なっている。
【０００４】
ファイルシステムでは、記録媒体のデータ領域をある定められたサイズのブロックに分割し、各ブロックが使用状況を管理するためのブロック管理テーブルを持つ。ブロックの大きさは、一般的なコンピュータの場合、５１２バイトや２Ｋバイトに設定されている。
【０００５】
これらのブロックを単位に、記録媒体に対して記録再生を行なう際、記録媒体上のセクタと称する単位を元に記録再生が行なわれる。セクタは、記録媒体毎に定められた固定長の記録再生の単位であり、ハードディスクの場合は、５１２バイトであることが多い。このセクタへのアクセスは、物理的なセクタに対応する番号に基づき行なわれる。ハードディスクでは、データの記録再生を行なう開始位置となるセクタの番号とセクタ数とを指定することによって、記録媒体上でデータが連続している限り、連続的にデータの転送を行なうことができる。
【０００６】
ただし、ファイルシステムでは、ブロック単位で領域の確保を行なうため、ファイルの作成、削除を繰り返すうちに、その領域が断片化される。このため、記録媒体上で連続した領域を確保できず、その結果、連続的にデータを転送できなくなってしまう。
【０００７】
ハードディスクなどの円盤状の記録媒体では、連続的にデータの転送が行なわれない場合には、ディスクのヘッドを目的のセクタが含まれるシリンダ位置へ移動させるためのシーク時間と、目的のセクタがヘッド位置まで回転してくるまでの回転待ち時間とがオーバーヘッドとなり、そのパフォーマンスが低下する。たとえば、回転速度が１１．１ｍｓｅｃ、シーク時間が１７．８ｍｓｅｃ、１回転当たりのセクタ数が４００セクタのハードディスクを想定する。また、１セクタ当りのデータ量を５１２［Ｂｙｔｅ］とする。実際には、トラックが変化するときのヘッドスイッチのための処理時間や、隣のシリンダに移るためのシリンダ間シーク時間等が関係するが、ここではそれらの時間を０と仮定する。
【０００８】
たとえば、連続的に４００セクタ毎にディスクアクセスする場合は、１７．８［ｍｓｅｃ］＋１１．１［ｍｓｅｃ］＋１１．１［ｍｓｅｃ］＝４０．０［ｍｓｅｃ］の間に、４００×５１２［Ｂｙｔｅ］＝２００ＫＢｙｔｅのデータを処理することになる。このため、４．８８［ＭＢｙｔｅ／ｓｅｃ］の処理能力となる。これに対し、連続的に２０００セ
クタ毎にディスクアクセスする場合は、１７．８［ｍｓｅｃ］＋１１．１［ｍｓｅｃ］＋１１．１［ｍｓｅｃ］×２０００／４００＝８４．４［ｍｓｅｃ］の間に、２０００×５１２＝０．９７６ＭＢｙｔｅのデータを処理することになる。このため、１１．５［ＭＢｙｔｅ／ｓｅｃ］の処理能力になる。
【０００９】
このため、ファイルシステムではディスクのパフォーマンスが低下しないように、いくつかのセクタを連続的にアクセスするようにデータを配置することが必要となる。このためには、ディスクへのアクセスの単位となる論理ブロックと呼ばれる大きさを取り決め、データの連続性を保証したディスクの空き領域の管理が必要となる。この論理ブロックの取扱いと空き領域の管理手法として、いくつかの従来技術が提案されている。
【００１０】
下記特許文献１では、記録領域を複数に分割し、分割後の記録領域毎に空き領域を管理するファイル管理装置が提案されている。この装置では、データを記録領域に記録している最中に空き領域がなくなった場合には、隣接する空き領域を用いてデータの記録を続行する。図２５を参照して、この装置では、記録領域をディスク円盤の同心円と同心円に直交する直線とで分割することで、領域が不連続となる箇所で発生するシークを隣の記憶領域内に抑えることができる。このため、ヘッドのシーク時間を抑えることができる。
【００１１】
特許文献２では、記録媒体上の領域を複数に分割可能な領域とし、各分割領域に対して、記録開始セクタから順次データを記憶し、再び記録開始セクタからオーバライトして記録するいわゆるリングストレージ構造として記録再生を行なうことにより、セクタの連続性を確保している。このため、各分割エリア内では、記録されたデータの連続性が保証される。
【特許文献１】特開平１１−９６０５２号公報
【特許文献２】特開平１１−２５０５８５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかし、特許文献２では、録画して保存しておきたい番組が複数存在するような場合には、あらかじめ記録領域を分割しておくか、１つの記録領域に追加記録する必要がある。あらかじめ領域を分割する場合は、１領域あたりの最大録画時間に上限を設けることになる。これでは、録画したいデータが領域の最大録画時間を超えた場合に録画できない。また、１つの領域に追加記録する場合においては、１つの領域内に記憶された複数の番組のうち、特定の番組のみを削除することができない。
【００１３】
また、上述した従来のファイルシステムでは、同時に複数のファイルを扱うことが考慮されていない。これは、ある番組を記録しながら既に記録した別の記録データを再生したり、番組を記録しながら再生するいわゆる追っかけ再生や、複数の番組データを同時に記録するといった場合などであり、複数のファイルを扱う場合においては、１つのファイルを連続的に配置したとしても、別のデータのアクセスにスイッチするために、データアクセスの連続性は失われる。
【００１４】
ただし、一方で、１つのファイルの連続性を確保した場合は、ファイル作成、削除等の処理負荷が軽減されたり、ファイルを管理するための容量が少なくてすむというメリットや、１つのファイルを扱う場合は記録媒体のパフォーマンスが高いというメリットもある。
【００１５】
従って、一つのファイルの連続性をある程度確保しながら、複数のファイルを同時にアクセスしても記録媒体のパフォーマンスを保証することができる、ファイル管理方法が重要となる。
【００１６】
また、ハードディスクではデータを記録再生する際に、欠陥セクタを検出した場合には、別の領域に用意されたセクタと交換する処理を行なう。これは交替処理と呼ばれる。この交替処理は内部的に処理されるため、ファイルシステムなど記録媒体の外部からは、そのセクタが交替されたものかどうかを意識する必要がない。
【００１７】
ただし、この交替処理は、２つの点で問題がある。１つは、交替処理にかかる時間であり、もう一つは、交代処理の結果、記録媒体のパフォーマンスが低下するということである。交替処理にかかる時間は、数百ミリ〜１秒であり、その間、外部からディスクへのアクセスはできなくなる。ファイルシステム内、またはファイルシステムを操作するプログラム上にバッファを設けることにより、交替処理の負荷を吸収することはできるが、デジタル放送のように高いビットレートで、データがリアルタイム伝送される場合においては、その容量は大きいものとなる。２４Ｍｂｐｓのように高ビットレートのデータを１つ扱うのであれば、交替処理が発生したときのために、３ＭＢｙｔｅのバッファを追加する必要がある。追っかけ再生のように、同時に記録再生を行なう場合は、６ＭＢｙｔｅのバッファを追加しなければならない。
【００１８】
また、この交替処理の結果、セクタの配置が不連続になってしまい、次回、交替処理を含む領域のデータの記録再生を行なう場合、ヘッドを交替領域に動かすシーク時間と、シーク後の回転待ち時間、さらに後続するセクタを記録再生するための元の領域に戻るためのシーク時間と回転待ち時間とが発生する。このため、連続的に配置されたセクタをアクセスする場合と比べて、そのパフォーマンスが低下し、ストリームデータをリアルタイムで処理することができなくなる。また、この交替処理は、確率的に発生するため、連続的に記録しなければならない最小単位内で、複数の欠陥セクタが発生した場合は、交替処理回数に比例してシーク時間と回転待ち時間が増大するために、パフォーマンスは更に低下することになる。
【００１９】
これに対して特開平１１−２５０５９２号公報では、交替処理を記録媒体の内部処理として行なうのではなく、ファイルシステム上で欠陥を有するセクタの管理を行ない、欠陥を有するセクタが存在する場合は、時間的に連続した次のセクタに記録を行なう方法が提案されている。この方法では、セクタが不連続となっても、ヘッドを交替領域に動かすシーク時間が必要ないために、パフォーマンスがそれほど低下しないというメリットがある。
【００２０】
ただし、次のセクタが必ずしも空き領域となっているとは限らず、複数のデータを記録しておきたい場合には、この方法は役に立たない。
【００２１】
本発明は上述の課題を解決するためになされたもので、その目的は、デジタル映像音声データのように大容量のデータの読出および書込をリアルタイムで実行可能なファイル記録装置および方法を提供することである。
【００２２】
本発明の他の目的は、記録媒体のパフォーマンスを低下させることなく交替処理を実行可能なファイル管理装置および方法を提供することである。
【００２３】
本発明のさらに他の目的は、領域の断片化を低減することができるファイル管理装置および方法を提供することである。
【課題を解決するための手段】
【００２４】
本発明のある局面に従うファイル管理装置は、各々、連続配置が保証され、かつ要求されるアクセス速度を上回ることが保証されている複数の論理ブロックに区切られた記録媒
体と、記録媒体に記録されたファイルを管理するファイル管理情報を管理するファイル管理部と、ファイル管理部および記録媒体に接続され、ファイル管理情報に基づいて、記録媒体に対するデータの書込および読出を行なう記録媒体制御部と、ファイル管理部に接続され、記録媒体中の未使用の論理ブロックを記録媒体上で連続している領域毎に管理する未使用領域管理部と、ファイル管理部および未使用領域管理部に接続され、新たに未使用領域が発生した際に、新たな未使用領域を他の未使用領域に接合する未使用領域接合部とを含む。
【００２５】
未使用領域は、未使用領域接合部で接合され、未使用領域管理部により管理される。このため、１つのファイルの記録媒体上での連続性をなるべく保つことができ、記録媒体のパフォーマンスを保証することができる。特に、デジタル映像音声データのように大容量で、かつ読出および書込時にリアルタイム性が要求される場合でも、記録媒体のパフォーマンスを保証することができる。
【００２６】
好ましくは、ファイル管理装置は、さらに、ファイル管理部および記録媒体制御部に接続され、記録媒体への書込エラーを検出した際に、エラーが発生した箇所に記録されるべきデータをメモリに保存し、メモリへの保存に遅延させて、メモリ上のデータと、書込エラーが発生した論理ブロックに含まれるエラーの発生した箇所以外のデータとを他の論理ブロックへ書込み、論理ブロックを代替する遅延交替処理部を含む。
【００２７】
データの書込に余裕がある場合に遅延処理を実行させることができる。このため、リアルタイム性が要求されるファイルの読出または書込途中であっても、読出または書込の邪魔をすることなく遅延処理を実行させることができる。
【００２８】
さらに好ましくは、論理ブロックは、所定個数のサブブロックを含み、記録媒体制御部は、記録媒体に対するデータの書込および読出が所定量以下の場合には、サブブロック単位でデータの書込および読出を行なう。
【００２９】
小サイズのデータについては、サブブロック単位でのアクセスを行なうことにより、アクセス効率を向上させることができる。
【００３０】
さらに好ましくは、未使用領域管理部は、未使用の論理ブロックを所定数の連続領域ごとに管理する。
【００３１】
未使用の論理ブロックを固定長で管理することにより、管理がしやすくなる。
さらに好ましくは、記録媒体は、所定数の同心円により区切られた複数のゾーンを含み、未使用領域管理部は、所定の同心円よりも外側のゾーンに属する論理ブロックのみを未使用領域として登録する。
【００３２】
記録媒体の内周側に位置するゾーンに属する論理ブロックは、未使用領域として登録されない。よって、論理ブロックの長さが増大することを防止できる。
【００３３】
さらに好ましくは、ファイル管理部は、ファイルサイズが予め定められているファイルの作成時に、ファイルサイズに到達するまで、連続する未使用領域をサイズの大きいものから順にファイルに割当てるための手段と、ファイルに割当てられていない未使用領域のうち、最後にファイルに割当てられた未使用領域と、当該未使用領域と交換可能な未使用領域とを交換するための交換手段とを含む。
【００３４】
２つのフリーブロック群を交換することによって、連続長が長いフリーブロックの断片化をさらに抑えることができる。
【００３５】
さらに好ましくは、ファイル管理部は、さらに、ファイルサイズが予め定められているファイルに、未使用領域をさらに追加する際には、最大の未使用領域をファイルに割当てるための追加割当手段を含む。
【００３６】
記録すべき番組が延長されるような場合においても、未使用領域の断片化を低減することができる。
【００３７】
さらに好ましくは、ファイル管理部は、ファイルをクローズする際に、ファイルに割当てられた領域のうち、未使用の論理ブロックを、未使用領域管理部に登録する。
【００３８】
記録時間が短いような場合に、記録媒体の記憶容量に対して記憶されるデータ量が極端に小さくなることを抑えることができる。
【００３９】
さらに好ましくは、ファイル管理部は、未使用の論理ブロック数が予め定められた個数以上の場合にのみ、未使用の論理ブロックを未使用領域管理部に登録する。
【００４０】
ファイルに割当てたにもかかわらず、記録されずに残った論理ブロックがあらかじめ定められた個数未満の場合には、未使用領域への登録を行なわない。このため、断片化を防止することができる。
【００４１】
さらに好ましくは、未使用領域接合部は、ファイル管理部により登録された未使用の論理ブロックに隣接する領域が未使用領域であれば、未使用の論理ブロックと、隣接する領域とを接合する。
【００４２】
隣接する未使用領域同士を接合することにより、未使用領域の断片化を防止することができる。
【００４３】
さらに好ましくは、遅延交替処理部は、他の論理ブロックを未使用領域管理部で管理されている未使用の論理ブロックより獲得する。
【００４４】
特別に交替用の領域を設ける必要がなく、かつ、交替先の領域でも論理ブロック単位でのアクセスを行なうことが可能となる。
【００４５】
さらに好ましくは、遅延交替処理部は、記録媒体への書込エラーを検出した際に、エラーが発生した箇所に記録されるべきデータをメモリに保存するとともに、不揮発性の記録媒体にも保存する。
【００４６】
エラーの発生した箇所に記録されるべきデータをメモリ上に保存するとともに、別の不揮発性の記憶媒体上にも保存することによって、停電等が起こった場合であっても、遅延交替処理を実行することができる。
【００４７】
さらに好ましくは、記録媒体制御部は、書込エラーが発生した箇所に記録されるべきデータが他の論理ブロックに書込まれていない際に、書込エラーが発生した論理ブロックに対する読出要求があった場合には、メモリ上のデータと、書込エラーが発生した論理ブロックに含まれるエラーの発生した箇所以外のデータとを読出す。
【００４８】
交替処理が完了していない場合であっても、正確なデータを読出すことができる。
さらに好ましくは、未使用領域管理部は、記録媒体上で連続した未使用の論理ブロックを１つのフリーブロック群として管理する。
【００４９】
未使用領域のうち、記録媒体上で連続した論理ブロックをフリーブロック群として、まとめて管理することにより、ファイルへの領域割当や、不要になった領域の接合処理などを効率良く行なうことができる。
【００５０】
さらに好ましくは、未使用領域接合部は、複数のフリーブロック群が記録媒体上で連続している場合は、複数のフリーブロック群を接合し、新たなフリーブロック群とする。
【００５１】
複数のフリーブロック群を接合することによって、未使用領域が断片化することを抑えることができる。
【００５２】
さらに好ましくは、未使用領域接合部は、２つのフリーブロック群の記録媒体上での距離が一定値以内であれば、２つのフリーブロック群を接合し、新たなフリーブロック群とする。
【００５３】
比較的近い距離の領域をまとめて管理することが可能となる。
さらに好ましくは、未使用領域接合部は、予め定められた長さを超えない範囲で、２つのフリーブロック群を接合する。
【００５４】
接合後のフリーブロック群の大きさが大きくなりすぎるのを抑制することができる。
さらに好ましくは、記録媒体には、予め複数の境界が設定されており、未使用領域接合部は、２つのフリーブロック群が境界をまたがない場合にのみ、２つのフリーブロック群を接合する。
【００５５】
接合後のフリーブロック群の大きさを境界間の大きさで規定できるため、接合後のフリーブロック群の大きさが大きくなりすぎるのを抑制することができる。
【００５６】
本発明の他の局面に従うファイル管理方法は、各々、連続配置が保証され、かつ要求されるアクセス速度を上回ることが保証されている複数の論理ブロックに区切られた記録媒体を管理するファイル管理装置で用いられる。ファイル管理方法は、記録媒体に記録されたファイルを管理するファイル管理情報を管理するステップと、ファイル管理情報に基づいて、記録媒体に対するデータの書込および読出を行なうステップと、記録媒体中の未使用の論理ブロックを記録媒体上で連続している領域ごとに管理するステップと、新たに未使用領域が発生した際に、新たな未使用領域を他の未使用領域に接合するステップとを含む。
【００５７】
未使用領域は、他の未使用領域と接合され、管理される。このため、１つのファイルの記録媒体上での連続性をなるべく保つことができ、記録媒体のパフォーマンスを保証することができる。特に、デジタル映像音声データのように大容量で、かつ読出および書込時にリアルタイム性が要求される場合でも、記録媒体のパフォーマンスを保証することができる。
【発明を実施するための最良の形態】
【００５８】
図１を参照して、本発明の実施の形態に係るファイル管理装置１０は、ハードディスク６に記録されたファイルを管理するファイル管理部１と、ファイル管理部１の指示に従い、ハードディスクへのデータの書込および読出の制御を行なう記録媒体制御部２と、ハードディスク６中の未使用領域を管理する未使用領域管理部３と、ハードディスク６中の未使用領域を接合する未使用領域接合部４と、交替処理を遅延させながら実行する遅延交替処理部５とを含む。
【００５９】
このファイル管理装置１０は、論理ブロックと呼ばれる単位でハードディスク６にアクセスを行ない、データの読出および書込を実行する。論理ブロックとは、論理ブロックに含まれるセクタのハードディスク６上での連続配置が保証され、かつその論理ブロックのセクタへのアクセスの前に、シークと回転待ちが発生したとしてもハードディスク６に要求されるパフォーマンスが発揮できる単位である。
【００６０】
ディスクアクセスの速度は、（アクセスデータ量［Ｂｙｔｅ］／総アクセス時間［ｓｅｃ］）で表わされ、これがハードディスク６のアクセス速度を上回っている必要がある。このため、パフォーマンスを発揮するには、次式（１）を満たす必要がある。
【００６１】
アクセスデータ量[Byte]／総アクセス時間[sec]
＞ディスクに要求されるアクセス速度[Byte/sec]      …（１）
ここで、ｎセクタずつアクセスするものとするとし、１セクタ当りのバイト数が５１２［Ｂｙｔｅ］とすると、アクセスデータ量は（５１２［Ｂｙｔｅ／セクタ］×ｎ［セクタ］）で表わすことができる。
【００６２】
また、総アクセス時間は、回転待ち時間とシーク時間とアクセス時間との和として求めることができる。回転待ち時間とは、ディスクが回転して、ディスクヘッドの位置に最初のセクタが位置するまでにかかる最大時間のことであり、すなわち、ディスクが１回転する時間のことである。シーク時間とは、ディスクのヘッドが目的のセクタの位置へ移動するのにかかる最大の時間のことである。アクセス時間とは、ディスクが１回転する時間に回転数をかけたものである。ここで、回転数は、同時にアクセスするセクタ数ｎを１回転当りのセクタ数で除した数である。
【００６３】
たとえば、ディスクの回転速度が１１．１ｍｓｅｃ、シーク時間が１７．８ｍｓｅｃ、１回転当たりのセクタ数が４００セクタであるハードディスク６を考える。この時、ファイル管理装置１０が、２４Ｍｂｐｓ（bits per second）のデータを同時に３つ扱う場合
を考える。論理ブロックに含まれるセクタ数をｎとし、１セクタのサイズを５１２ｂｙｔｅとすると、ハードディスク６のパフォーマンスを発揮するには、次式（２）を満たす必要がある。
【００６４】
512×ｎ／（0.0111＋0.0178＋0.0111×ｎ／400）
＞72[Mbits/sec]=9×1024×1024［Bytes/sec］        …（２）
すなわち、１つの論理ブロックに含まれるセクタを１０９１セクタ以上とすれば、目的のパフォーマンスが得られることがわかる。セクタ数を１０９１以上とし、ファイル管理装置１０が管理しやすい単位をハードディスク６にアクセスする際の最小単位とすればよい。
【００６５】
この論理ブロック内では、必ず、ハードディスク６上でのデータの連続性が保証される。１セクタ当りのデータサイズを５１２バイトとすると、論理ブロックのサイズは、１０９１×５１２＝５４５．５［ＫＢｙｔｅ］となる。この値を満たす２のべき乗は１０２４［ＫＢｙｔｅ］、すなわち１［Ｍｂｙｔｅ］となる。このため、論理ブロックのサイズは１ＭＢｙｔｅとなる。論理ブロックのサイズは、ディスクの回転速度や１回転当たりのセクタ数によって変化する。このため、場合によっては、論理ブロックのサイズが５１２ＫＢｙｔｅや２５６ＫＢｙｔｅなどになる場合もある。
【００６６】
トラックが変化するときのヘッドスイッチの為の処理時間または隣のシリンダに移るためのシリンダ間シーク時間を加味して、論理ブロックのサイズを算出してもよい。
【００６７】
［ファイル管理部１について］
ファイル管理部１は、ハードディスク６中の記憶領域を複数の論理ブロックに分割し、各論理ブロックの使用・未使用状況や、該当論理ブロックの交替処理の有無を表す領域管理テーブルを記憶している。
【００６８】
図２を参照して、領域管理テーブルについて説明する。使用フラグは論理ブロックへのデータの格納の有無を示している。使用フラグの値が１の論理ブロックにはデータが格納されており、使用フラグの値が０の論理ブロックにはデータが格納されていない。ここでは、論理ブロック番号０、１および３の論理ブロックにデータが格納されている。なお、以下の説明では、論理ブロック番号ｎの論理ブロックを論理ブロックｎと表現することにする。
【００６９】
論理ブロックの相対的な並びは、前ブロック相対アドレスおよび次ブロック相対アドレスで表わされる。たとえば、論理ブロック０は、前ブロック相対アドレス値が０であるため、この論理ブロックが開始位置であることを示す。論理ブロック１は、前ブロック相対アドレス値が−１であるため、この論理ブロックの前には、論理ブロック０が存在することを示している。また、論理ブロック１の次ブロック相対アドレス値が２であることから、この論理ブロックの後ろには、論理ブロック３が存在する事がわかる。論理ブロック３の次ブロック相対アドレス値は０であることから、このブロックが終了位置であることがわかる。
【００７０】
論理ブロック２、４、５、６および１０の使用フラグの値は０である。このため、これらの論理ブロックは、ファイルのデータが記録されていない未使用領域である事がわかる。
【００７１】
交替フラグは、論理ブロックに欠陥セクタが含まれており、交替処理されたか否かを示している。交替フラグの値が１の論理ブロックは他の論理ブロックと交替されていることを示し、交替フラグの値が０の論理ブロックは交替処理されていないことを示している。ここでは、論理ブロック５が論理ブロック１０と交替されていることを示している。
【００７２】
未使用領域として、論理ブロック２から構成されるものと、論理ブロック４、５、６および１０から構成されるもの２つがある事が分かる。
【００７３】
ファイル管理部１は、領域管理テーブルの他に、ファイル管理装置１０で作成されたファイルで使用される論理ブロックの並びを管理するファイル管理テーブルを記憶している。ファイル管理テーブルは、ファイルごとに存在する。
【００７４】
図３を参照して、ファイル管理テーブルは、１つのファイル中でどのように論理ブロックが構成されているかを、一連の論理ブロックの列を単位として表す。累積論理ブロック数は、それまでに出現した論理ブロック数であり、開始論理ブロックおよび終了論理ブロックで、一連の論理ブロックの列の開始および終了位置が示される。ブロック数は、一連の論理ブロックの列に含まれる論理ブロック数を表す。このファイルは、３つの未使用領域により構成されており、１つ目の未使用領域は、論理ブロック０〜２の３つの論理ブロックにより構成されている。２つ目の未使用領域は、論理ブロック６〜１０の５つの論理ブロックにより構成されている。３つ目の未使用領域は、論理ブロック１３〜１５の３つの論理ブロックにより構成されている。ここではファイルに含まれる論理ブロックの構成のみを示したが、ファイル管理テーブルには、ファイル管理装置１０が現在どこまで記録したかまたは読出したかを表すポインタなどのファイルシステムで使用される項目も含まれる。
【００７５】
［記録媒体制御部２について］
記録媒体制御部２は、ファイル管理部１を通じてアプリケーションプログラムから指示される書込要求または読出要求に従い、データの書込または読出を論理ブロック単位または論理ブロックよりも小さい単位であるサブブロック単位で行なう。
【００７６】
上述のように、論理ブロックを単位にしてハードディスク６にアクセスをすることにより、複数のファイルをアクセスする場合であっても、ハードディスク６のパフォーマンスは保証される。
【００７７】
図４を参照して、論理ブロックを単位として、１つのファイルまたは複数のファイルをアクセスする例について説明する。図４（ｃ）を参照して、ハードディスク６上には、ファイルＡおよびファイルＢが論理ブロックを単位として、不連続に配置されているものとする。この内、ファイルＡのみを上書きして記録する場合においては、図４（ａ）のように、論理ブロック間が不連続であったとしても、その間に発生するシークと回転待ちとのオーバーヘッドが加味されて論理ブロックのサイズが決定されている。このため、データの書込を遅延させることなく行なうことができる。図４（ｂ）のように、ファイルＡを記録しながら再生するといった追っかけ再生を行なうと同時に、ファイルＢに記録を行なうような場合においても、その間に発生するシークと回転待ちとのオーバーヘッドが加味されて論理ブロックのサイズが決定されている。このため、ディスクアクセスに遅延が生じることはない。
【００７８】
しかし、必ずしも論理ブロックを単位にアクセスされるとは限らない。たとえば、ハードディスク６上のファイルに記録されている映像データからＭＰＥＧ方式により符号化されたＩフレームのみを抽出して早送り再生をしたい場合等である。たとえば、論理ブロックのサイズが１ＭＢｙｔｅ、映像データが２４Ｍｂｐｓで、０．５秒毎に大きさが４００ＫＢｙｔｅのＩフレームが存在する場合を考える。図５（ａ）を参照して、このＩフレームのデータが論理ブロックの境界をまたいで２つの論理ブロックに記録されている場合には、２ＭＢｙｔｅのデータを読出す必要がある。このため、１秒間当り、最悪４ＭＢｙｔｅのデータをハードディスク６から読出さなければならず、要求されるデータ量に比べ、読出すデータ量が大きくなる。
【００７９】
従って、図５（ｂ）を参照して、本実施の形態では、論理ブロックをいくつかのサブブロックに分割し、ハードディスク６に対して要求されるデータ量が所定量以下の場合においては、サブブロック単位でアクセスを行なう。サブブロック単位でデータを読出すことによって、余分な読出量が低減される。論理ブロックを１ＭＢｙｔｅ、サブブロックを２５６Ｋとした場合には、２枚のＩフレームを読出すには、最悪１．５ＭＢｙｔｅのデータを読出すだけで良い。サブブロックを１２８Ｋとした場合は、１秒間に４枚のＩフレームデータを読出したとしても、最悪２ＭＢｙｔｅのデータを読出すだけでよい。
【００８０】
図６を参照して、ファイル管理部１および記録媒体制御部２の実行する処理について説明する。
【００８１】
ファイル管理部１は、アプリケーションプログラムからデータの書込または読出の要求を受信した場合、ハードディスク６へのアクセス単位が論理ブロック単位であるかサブブロック単位であるかを判定する（Ｓ２０１）。論理ブロック単位である場合には（Ｓ２０１でｆａｌｓｅ）、ファイル管理部１は、記録媒体制御部２に対して、論理ブロック単位で、ハードディスク６へアクセスするように要求する（Ｓ２０２）。サブブロック単位である場合には（Ｓ２０１でｔｒｕｅ）、ファイル管理部１は、記録媒体制御部２に対して、サブブロックを単位で、ハードディスク６へアクセスするように要求する（Ｓ２０３）。
【００８２】
記録媒体制御部２は、ファイル管理部１からの要求に従い、論理ブロック単位またはサブブロック単位でハードディスク６へアクセスする。
【００８３】
Ｓ２０１の判定処理について、具体例を示し説明する。ここでは、ハードディスク６の容量を１５Ｇｂｙｔｅとし、論理ブロック長を１ＭＢｙｔｅ、サブブロック長を１２８ＫＢｙｔｅとする。
【００８４】
また、ハードディスク６に対して、常に論理ブロック長以下のサイズのデータの書込要求または読出要求が行なわれるものとする。
【００８５】
ファイルの先頭から３ＭＢｙｔｅの位置から１ＭＢｙｔｅのデータの書込要求があったとする。ファイルは、１ＭＢｙｔｅの論理ブロック単位に区切られている。このため、データの書込位置とデータのサイズとの下位１７ビットが０か否かをチェックすることによって、そのデータ転送が論理ブロック単位のものか否かをチェックすることができる。この例では、双方とも、下位１７ビットが０であるので、論理ブロック単位のアクセスである。このため、論理ブロック単位でハードディスク６へのアクセスが行なわれる。
【００８６】
ファイルの先頭から２．５ＭＢｙｔｅの位置から２００ＫＢｙｔｅのデータの書込要求があったとする。書込位置２．５ＭＢｙｔｅの下位１７ビットは０であるが、データサイズ２００ＫＢｙｔｅの下位１７ビットは０ｘ１２０００である。従って、この場合には、サブブロック単位で記録媒体にアクセスすることになる。
【００８７】
上述の例では、アプリケーションプログラムから書込要求または読出要求されるデータ長を論理ブロック長以下としたが、論理ブロック長以上のアクセス要求があった場合は、そのアクセス要求を１ＭＢｙｔｅ単位のアクセス要求に分割すればよい。たとえば、先頭から２．５ＭＢｙｔｅの位置から１．７ＭＢｙｔｅのデータのアクセス要求があった場合には、ファイル管理部１は前処理として、２．５ＭＢｙｔｅの位置から０．５ＭＢｙｔｅのアクセス要求、３．０ＭＢｙｔｅの位置から１ＭＢｙｔｅのアクセス要求、および４ＭＢｙｔｅの位置から０．２ＭＢｙｔｅのアクセス要求の３つのアクセス要求を作成し、各々のアクセス要求について、図６に示した処理を行なう。
【００８８】
［未使用領域管理部３について］
ファイル管理装置１０では、論理ブロックを単位としてファイル管理や空き領域管理を行なった場合には、管理テーブルのサイズは大きくなってしまう。また、ファイル管理装置１０では、常に複数のファイルを扱うわけではない。このため、各々のファイルのデータをできる限り不連続が生じないように格納するのがよい。
【００８９】
そこで、未使用領域管理部３は、未使用の論理ブロックのハードディスク６上での連続領域を管理する。
【００９０】
図７を参照して、未使用領域管理部３の管理形態の概略を説明する。ハードディスク６内の論理ブロックとして、論理ブロック０〜１１が存在し、論理ブロック０、１、２、５、６、７、８、１０および１１はどのファイルにも属さない未割当の状態であるとする。未使用領域管理部３は、この未割当の論理ブロックのうちハードディスク６上で連続するものを一括して管理する。論理ブロック０〜２、５〜８および１０〜１１はそれぞれ連続し、未使用領域管理部３は、連続する論理ブロックを、先頭の論理ブロックの番号と連続するブロック数とで管理する。その他、未使用領域管理部３は、連続する論理ブロックを先頭および最後の論理ブロックの番号で管理したり、先頭および最後の論理ブロックの番号と連続ブロック数とで管理するようにしてもよい。
【００９１】
本明細書中では、未割当の論理ブロックを「未使用領域」とよび、ハードディスク６上で連続する一連の未使用の論理ブロックを「フリーブロック群」と呼ぶ。また、未使用領域を管理するテーブルを「未使用領域管理テーブル」という。
【００９２】
なお、ハードディスク６は３つのゾーンに区切られ、各ゾーンごとに未使用領域が管理される。ゾーンとは、ハードディスク６上で同心円により区切られた領域をいう。
【００９３】
ハードディスク６には、１回転当たりのセクタ数が場所によって異なるものがある。このような場合では、ハードディスク６の内周側では、セクタ数が少なく、外周側ではセクタ数が多くなる。なお、セクタ数は、各ゾーンにより異なる。ハードディスク６によっては、内側のゾーンを使用すると、１回転当たりのセクタ数が少なくなる。このため、要求されるパフォーマンスを達成するためには、論理ブロック当りの記憶可能なデータサイズを大きくする必要がある。または、要求されるパフォーマンスが達成できない場合もある。内側のゾーンの１回転当たりのセクタ数が２００セクタ、ディスクの回転速度が１１．１ｍｓｅｃ、シーク時間が１７．８ｍｓｅｃ、論理ブロックに含まれるセクタ数をｎとし、１セクタのサイズを５１２ｂｙｔｅとすると、次式（３）が成り立つ。
【００９４】
512×ｎ／（0.0111＋0.0178＋0.0111×ｎ／200）
＞9×1024×1024［Bytes/sec］                      …（３）
式（３）より、ｎ≦−２３１８５となり、要求されるパフォーマンスが出ないことがわかる。また、内側のゾーンの１回転当たりのセクタ数が２４０セクタであった場合は、ｎ≧３６１１となり、論理ブロックのサイズが２ＭＢｙｔｅ必要となる。
【００９５】
従って、内周のゾーンを使用することによって、論理ブロックのサイズが大きくなってしまう場合、または、要求されるパフォーマンスに達しない場合は、そのゾーンに該当する論理ブロックをデータの記録または再生に用いないようにすることが必要である。
【００９６】
図８を参照して、未使用領域管理部３は、ハードディスク６の外周側に位置するゾーンに属する未使用領域を管理する外周未使用領域管理テーブル（図８（Ａ））と、ハードディスク６の内周側に位置するゾーンに属する未使用領域を管理する内周未使用領域管理テーブル（図８（Ｃ））と、それ以外のゾーンに属する未使用領域を管理する内部未使用領域管理テーブル（図８（Ｂ））とを記憶している。
【００９７】
未使用領域は、３つの未使用領域管理テーブルと、上述の領域管理テーブル（図８（Ｄ）とで管理される。
【００９８】
ここでは、ハードディスク６の容量が１５Ｇｂｙｔｅであり、そのゾーンが１Ｇｂｙｔｅ毎に区切られているものとし、最内周に位置するゾーンは、論理ブロックアドレスとして０ｘ３８００〜０ｘ３ＢＦＦが付された、容量１Ｇｂｙｔｅの領域であり、最外周に位置するゾーンは、論理ブロックアドレスとして０ｘ００００〜０ｘ０３ＦＦが付された、容量１Ｇｂｙｔｅの領域であるものとする。
【００９９】
図８（Ａ）および図８（Ｃ）の外周未使用領域管理テーブルおよび内周未使用領域管理テーブルは、ともに１Ｇｂｙｔｅの領域を２つに分割した５１２ＭＢｙｔｅ単位の２つのフリーブロック群を管理している。
【０１００】
図８の例は、１５Ｇｂｙｔｅのハードディスクを、先頭から０ｘ２００個のブロック毎に、１つの連続したフリーブロック群として管理している例である。たとえば、外周未使用領域管理テーブル（図８（Ａ））には、先頭の論理ブロックのアドレスが０ｘ００００の、ブロック数が０ｘ２００のフリーブロック群が登録されている。このフリーブロック
群に含まれる論理ブロックの構成は、図８（Ｄ）の領域管理テーブルに示される。このフリーブロック群の先頭（論理ブロックアドレス０ｘ００００）の論理ブロックの前ブロック相対アドレスには「０」が登録され、そのブロックよりも前のブロックが存在しない事を示している。その論理ブロックの次ブロック相対アドレスには「１」が登録され、論理ブロックアドレス０ｘ０００１の論理ブロックが次に並んだ論理ブロックである事を示す。
【０１０１】
同様に、論理ブロック番号アドレスが０ｘ０００１の論理ブロックの前ブロック相対アドレスには「−１」が登録され、アドレス０ｘ００００の論理ブロックがアドレス０ｘ０００１の論理ブロックの１つ前に位置する事を示している。また、アドレス０ｘ０００１の論理ブロックの次ブロック相対アドレスには「１」が登録され、アドレス０ｘ０００２の論理ブロックがアドレス０ｘ０００１の論理ブロックの次に位置する事を示している。
【０１０２】
このように、ディスクを分けて管理することにより、映像や音声が含まれるデータのように、内周のゾーンを使用すると目的のパフォーマンスが得られないものであっても、通常の未使用管理領域内に記憶する事により、目的のパフォーマンスを得ることができる。
【０１０３】
一方、ファイル管理装置１０として、ハードディスク６のパフォーマンスを保証したとしても、ファイル管理装置１０を使用するアプリケーションプログラムが記録再生要求を適時に行なわなければ、記録すべきデータがアプリケーションプログラム上のバッファにたまってしまう。この要因として、たとえば、アプリケーションプログラムの処理負荷が一時的に高くなる場合等が考えられる。このような場合は、バッファに溜まったデータをできる限り速くハードディスク６に記憶することが必要である。このようなときには、外周のゾーンにデータを記憶するのが有効である。
【０１０４】
なぜならば、外周ゾーンにおいては、セクタ数が多いため、ハードディスク６のパフォーマンスは高い。従って、ファイル管理装置１０を使用しているアプリケーションプログラムの処理負荷が一時的に高くなり、バッファにデータが溜まってしまった場合などにおいて有効である。
【０１０５】
図８では、複数のゾーンのうち、最外周のゾーンのみおよび最内周のゾーンのみをそれぞれ外周未使用領域管理テーブルおよび内周未使用領域管理テーブルに登録するようにしたが、複数の外周ゾーンや複数の内周ゾーンを外周未使用領域管理テーブルまたは内周未使用領域管理テーブルで管理するようにしてもよい。
【０１０６】
図９を参照して、アプリケーションプログラムからファイルの書込要求を受けた際に、ファイル管理部１が外部からの指示に従って、フリーブロック群を割当てる処理について説明する。
【０１０７】
ファイル管理部１は、アプリケーションプログラムからのファイルへの書込要求に対して、ファイルを書込むための領域を追加する必要があるか否かを判定する（Ｓ５０１）。
【０１０８】
ファイル領域を追加する必要があると判定された場合には（Ｓ５０１でｔｒｕｅ）、外周ゾーンへの書込が要求されているか否かを判定する（Ｓ５０２）。外周ゾーンへの書込が要求された場合には（Ｓ５０２でｔｒｕｅ）、外周未使用領域管理テーブルの中から論理ブロックがファイルへ割当てられる（Ｓ５０３）。
【０１０９】
それ以外の場合には（Ｓ５０２でｆａｌｓｅ）、内周未使用領域管理テーブルの中から論理ブロックがファイルへ割当てられる（Ｓ５０４）。
【０１１０】
ファイル領域を追加する必要がない場合には（Ｓ５０１でｆａｌｓｅ）、処理を終了する。
【０１１１】
次に、領域割当処理（Ｓ５０３およびＳ５０４）について説明する。
本実施の形態では、ファイル作成時に、ファイルサイズが指定されたかどうか、また、該当ファイルへの領域の割当が初回かどうかによって、割当てる領域を変化させる。
【０１１２】
ファイルシステムでは、未使用領域をファイルに割当てる処理と、ファイルの記録領域として割当てられたにもかかわらず、結果として記録されなかった領域や、ファイル削除された領域を未使用領域として回収する処理とが必要である。
【０１１３】
この回収作業により、未使用領域の断片化が発生する。図１０を参照して、未使用領域が断片化する例について説明する。
【０１１４】
図１０（ａ）のようにファイルＡに４つの論理ブロックが割当てられている場合に、ファイルＡの４番目の論理ブロックが不要であるとして未使用領域となった場合には、図１０（ｂ）に示すように、本来連続しているべき６番目の論理ブロックと７番目の論理ブックとが断片化している。
【０１１５】
図１０（ｃ）を参照して、さらに、ファイルＡを構成するすべての論理ブロックを削除した場合には、０〜４番目までの論理ブロックは１つの未使用領域となるべきであるのに、０〜２番目の論理ブロックと、３〜４番目の論理ブロックとに断片化されている。
【０１１６】
これを回避するために、断片化を低減するような領域割当方法と、断片化された領域を接合する領域回収方法とが必要となる。
【０１１７】
領域の割当方法では、ファイルに対してどのような領域割当が発生するかを考慮する必要がある。
【０１１８】
デジタル放送データや、アナログ放送をエンコードしてデジタルデータを記録再生する装置においては、あらかじめサイズが固定されているファイルと、あらかじめサイズが指定されているが、記録領域が不足した場合には領域を追加するファイルと、サイズが指定されないファイルとが存在する。
【０１１９】
第１のファイルは、タイムシフト視聴をする際のように、ファイルをリングバッファのように用いて記録再生を行なう場合に用いられる。第２のファイルは、録画予約のように、あらかじめ録画開始時刻および録画終了時刻が設定されるような場合であって、かつ録画時間を延長したいような場合に用いられる。第３のファイルは、記録開始時刻および録画終了時刻が定まっていないような場合に用いられる。これらのファイルに対し、未使用領域を割当てたり、不要となった領域を回収する場合において、領域をなるべく断片化しないことが必要である。
【０１２０】
第３のファイルについては、必要となる領域がどのくらいあるかを判定することは難しく、始めに多くの領域を割当てたにもかかわらず、すぐに記録が終了するような場合には、記録されない領域が多く残ってしまう。また、小さな領域を割当てると、記録時間が長い場合において、未使用領域をファイルに割当てる処理のオーバーヘッドが大きくなってしまう。
【０１２１】
このために、本発明では、大きさの指定されていないファイルについては、始めは、あらかじめ設定された値の領域を割当て、さらに、記録している間に再び領域を必要とする
場合は、残りのフリーブロック群のうち最大長のフリーブロック群を割当てるといった二段階の領域割当処理を行なう。
【０１２２】
第１および第２のファイルについては、あらかじめ指定された大きさの未使用領域を確保すれば良いが、指定サイズを満たすフリーブロック群が存在するとは限らない。いくつかのフリーブロック群を組み合わせたとしても、その合計サイズが指定サイズと合致することは希である。従って、フリーブロック群の大きさが指定サイズを超えた場合には、フリーブロック群を分割して割当てることになり、領域の断片化が発生する。このとき、サイズの大きいフリーブロック群の断片化はできる限り避けたい。
【０１２３】
そのため、本発明では、あらかじめ大きさが指定されたファイルについては、連続領域の長いフリーブロック群が優先的に割当てられる。これにより、連続領域の長いフリーブロック群ほど、ファイルの末尾から遠ざかる形で割当てられる。よって、領域の断片化を避けることができる。図１１がこのような割当処理を行なった際のフリーブロック群の並び方を示している。ここでは、未使用領域の合計サイズが、指定サイズを超えているため、割当てられる領域の中で最小であるフリーブロック群３が断片化される。
【０１２４】
また、断片化されるフリーブロック群の大きさをさらに抑えることもできる。図１２を参照して、未割当のフリーブロック群のうちで、最後に割当てられたフリーブロック群と交換しても、合計のサイズが指定されたサイズを満たしている場合、その領域を交換することによって、断片化されるフリーブロックの大きさを低減することができる。図１２では、未使用領域１〜６のうち、未使用領域１〜３を割当てた場合と、未使用領域１，２、５を割当てた場合とを示している。どちらの場合でも領域は断片化されてしまうが、より小さい未使用領域５が断片化されることで、より大きな未使用領域３の断片化を防ぐことができる。
【０１２５】
断片化されるフリーブロック群の大きさを抑える方法としては、未割当のフリーブロック群のうちで、割当可能なフリーブロック群を検索し、条件を満たすフリーブロック群のうち最小長のフリーブロック群を割当てる方法と、最大長のフリーブロック群とを割当てる方法がある。
【０１２６】
前者の方法では、連続領域の短いフリーブロック群ほど断片化されやすく、連続領域が長いフリーブロック群ほど、断片化を避けることが可能である。後者の方法では、条件を満たすフリーブロック群を検索する作業を低減しながらも、連続領域が長いフリーブロック群の断片化を低減することができる。
【０１２７】
第２のファイルについては、あらかじめ指定された領域を確保したにもかかわらず、たとえば、記録したい番組が時間延長された等の理由により、さらに領域を追加したい場合が生ずる。
【０１２８】
そのため、本発明では、第２のファイルについては、あらかじめ指定された値の領域を割当て、領域を追加する際には、残りのフリーブロック群のうち最大長のフリーブロック群を割当てるといった二段階の領域割当処理を行なうことによって対応する。
【０１２９】
作成時に、ファイルサイズが指定されているファイルについては、指定されたファイルサイズに達するまで、最大長のフリーブロック群を順次確保する。この時、最後に割当てられたフリーブロック群と、割当てられていない残りのフリーブロック群とを交換しても指定されたファイルサイズが確保できる場合には、２つのフリーブロック群を交換する。予めファイルサイズが指定されているファイルであっても、後に追加で領域を確保する必要がある場合がある。そのような場合には、予め指定されたファイルサイズを確保してお
き、さらに領域の確保の必要が生じた場合には、最大長のフリーブロック群を割当てるようにする。
【０１３０】
図１３を参照して、ファイル管理部１は以下のように領域割当を行なう。ファイルへの領域割当要求をアプリケーションプログラムより受信した場合、ファイル管理部１は、その要求が、サイズ指定されたファイルに対する最初の割当要求かどうかを調べる（Ｓ１２０１）。サイズ指定されたファイルに対する最初の割当要求であった場合には、ファイル管理部１は、指定サイズが、最大長のフリーブロック群のサイズよりも大きいかどうかを判定する（Ｓ１２０２）。指定サイズの方が小さい場合は（Ｓ１２０２でｆａｌｓｅ）、ファイル管理部１は、最大長のフリーブロック群を指定されたファイルを割当てる領域として確保する（Ｓ１２０７）。
【０１３１】
指定サイズの方が大きい場合は（Ｓ１２０２でｔｒｕｅ）、指定サイズの領域が確保されるまで、最大長のフリーブロック群を順次ファイルに割当てる（Ｓ１２０３、Ｓ１２０４）。指定サイズの領域が確保された場合には（Ｓ１２０４でｆａｌｓｅ）、最後に割当てた領域と未使用領域として残っている最大のフリーブロック群とを交換しても指定サイズを満たすか否かを判定する（Ｓ１２０５）。２つのフリーブロック群を交換可能な場合には（Ｓ１２０５でｔｒｕｅ）、それらの交換を行なう（Ｓ１２０６）。
【０１３２】
サイズ指定されていないファイルまたは、サイズ指定されたファイルに対する２回目以降の割当要求をアプリケーションプログラムより受信した場合（Ｓ１２０１でｆａｌｓｅ）、ファイル管理部１は、サイズ指定されていない最初の割当要求か否かを調べる（Ｓ１２０８）。サイズ指定されていない最初の割当要求の場合には（Ｓ１２０８でｔｒｕｅ）、ファイル管理部１は、所定の個数（Ｎ個）以内の論理ブロックを含む連続領域を未使用領域の中から割当てる。それ以外の場合には（Ｓ１２０８でｆａｌｓｅ）、ファイル管理部１は、未使用領域として最大長のフリーブロック群を割当てる（Ｓ１２１０）。
【０１３３】
Ｓ１２０５およびＳ１２０６では、最後に割当てたフリーブロック群が、最大長のフリーブロック群と交換することができれば交換している。しかし、最大長のフリーブロック群には限られず、それ以外のフリーブロック群であっても交換する事ができる場合には、交換するようにしてもよい。
【０１３４】
また、Ｓ１２０７では、同様に、最大長のフリーブロック群でなくとも、指定サイズよりも大きなフリーブロック群の中で最小のものを割当てるようにしてもよい。
【０１３５】
［未使用領域接合部４について］
未使用領域接合部４は、上述した未使用領域を回収し、断片化が起こらないように領域を接合する処理を行なう。
【０１３６】
未使用領域接合部４は、ファイルの記録領域として割当てられたにもかかわらず、結果として記録されなかった領域を回収する際に、その前後に、フリーブロック群として管理されている領域が存在する可能性がある。このフリーブロック群と回収される領域とを接合して、新たなフリーブロック群とする。
【０１３７】
また、未使用領域接合部４は、ファイル削除などの理由により不要になった領域の各々についても、その前後に位置するフリーブロック群と接合して、新たなフリーブロック群を作成する。
【０１３８】
また、２つの断片化されたフリーブロック群のハードディスク６上での距離が非常に近い場合には、それらのフリーブロック群を接合して、新たなフリーブロック群として管理
することにより、フリーブロック群の間で発生するシーク時間を抑える事ができる。
【０１３９】
フリーブロック群間の距離としては、２つのフリーブロック群間の論理ブロック数やシリンダ数を用いることが考えられる。論理ブロック数で距離を表す場合には、２つのフリーブロック群のハードディスク６上でのおおよそのシリンダ数を判定し、フリーブロック群の間で発生するシーク時間を概算することができる。また、論理ブロックは、ファイル管理装置１０で用いられる単位であるために、ファイル管理装置１０が管理しやすいというメリットがある。シリンダ数で距離を表した場合には、フリーブロック群の間で発生するシーク時間を算出する事ができる。
【０１４０】
上述のように、距離の近いフリーブロック群同士を接合することは有効な手法であるが、接合の抑制を行なわなければ、ハードディスク６上のすべての領域が未使用領域となった場合には、１つの大きなフリーブロック群として構成されてしまい問題である。
【０１４１】
そのために、未使用領域接合部４は、フリーブロック群の接合を抑制することによって、この問題を解決する。フリーブロック群の接合を抑制する方法としては、最大長を設定する方法と、境界を設定する方法が考えられる。
【０１４２】
最大長による方法では、２つのフリーブロック群を接合した場合に、あらかじめ設定された最大長よりも長くなるか判定し、長い場合は接合を行なわないようにする。
【０１４３】
境界を設定する方法では、２つのフリーブロック群が、ハードディスク６上で境界をまたいで位置するかを判定し、境界をまたいで位置する場合には接合を行なわないようにする。
【０１４４】
図１４を参照して、未使用領域の接合処理について説明する。
未使用領域接合部４は、これから未使用領域として登録する領域に対して、ハードディスク６上で記録位置が前に位置するフリーブロック群を獲得する（Ｓ６０１）。未使用領域接合部４は、登録対象領域と獲得したフリーブロック群との距離が一定値以内かどうかを判定する（Ｓ６０２）。距離の判定方法については後述する。
【０１４５】
登録対象領域とフリーブロック群との距離が一定値以内の場合には（Ｓ６０２でｔｒｕｅ）、２つの領域を実際に接合するか否かを調べる（Ｓ６０３）。Ｓ６０３の処理については後述する。
【０１４６】
接合処理を行なうと判断された場合には（Ｓ６０３でｔｒｕｅ）、２つの領域の接合処理を行なう（Ｓ６０４）。
【０１４７】
未使用領域接合部４は、接合された領域に対して、ハードディスク６上で記録位置が後に位置するフリーブロック群を獲得し（Ｓ６０５）、同様に２つの領域の距離判定処理（Ｓ６０６）と、接合判定処理（Ｓ６０７）とを行ない、接合をする必要があると判断された場合には（Ｓ６０６でｔｒｕｅ、Ｓ６０７でｔｒｕｅ）、２つの領域の接合処理を行なう（Ｓ６０８）。
【０１４８】
図１５を参照して、図１４のＳ６０２およびＳ６０６の距離判定処理について説明する。
【０１４９】
ここでは、これから未使用領域となる領域と、その前に位置するものとして獲得されたフリーブロック群を領域Ａ、Ｂとして説明する。
【０１５０】
未使用領域接合部４は、領域Ａの開始論理ブロック番号（Ａｓ）および終了論理ブロック番号（Ａｅ）、ならびに領域Ｂの論理ブロック番号（Ｂｓ）および終了論理ブロック番号（Ｂｅ）を獲得する（Ｓ７０１）。未使用領域接合部４は、一方の領域が、他方の領域に包含されるか否かを判定する（Ｓ７０２）。
【０１５１】
たとえば、図１６（ａ）を参照して、未使用領域となるべき領域が論理ブロック３および４からなり、未使用領域となるべき領域の記憶位置が前方に位置するフリーブロック群が論理ブロック０〜２、記録位置が後方に位置するフリーブロック群が論理ブロック５〜６より構成されているものとする。このような場合には、未使用領域となるべき領域がフリーブロック群に包含されている。
【０１５２】
また、図１６（ｂ）を参照して、未使用領域となるべき領域が論理ブロック０〜２および５〜６より構成され、未使用領域となるべき領域の記録位置が前方に位置するフリーブロック群が論理ブロック３および４より構成されているものとする。このような場合には、フリーブロック群が未使用領域となるべき領域に包含されている。
【０１５３】
一方の領域が他方の領域に包含されている場合には（Ｓ７０２でｔｒｕｅ）、２つの領域を１つのフリーブロック群として管理するため、ｔｒｕｅを返す（Ｓ７０４）。
【０１５４】
それ以外の場合には（Ｓ７０２でｆａｌｓｅ）、２つの領域間の距離があらかじめ設定された値以下であるかを判定する（Ｓ７０３）。２つの領域間の距離が設定値以下の場合は（Ｓ７０３でｔｒｕｅ）、ｔｒｕｅを返す（Ｓ７０４）。２つの領域間の距離が設定値より大きい場合には（Ｓ７０３でｆａｌｓｅ）、ｆａｌｓｅを返す（Ｓ７０５）。
【０１５５】
図１７を参照して、図１４のＳ６０２およびＳ６０６の距離判定処理においては以下に示すように、２つの領域の属するシリンダが近い場合に接合するようにしてもよい。
【０１５６】
未使用領域接合部４は、領域Ａの開始論理ブロック番号（Ａｓ）および終了論理ブロック番号（Ａｅ）、ならびに領域Ｂの開始論理ブロック番号（Ｂｓ）および終了論理ブロック番号（Ｂｅ）を獲得する（Ｓ８０１）。
【０１５７】
未使用領域接合部４は、一方の領域が、他方の領域に包含されるか否かを判定する（Ｓ８０２）。一方の領域が他方の領域に包含される場合には（Ｓ８０２でｔｒｕｅ）、ｔｒｕｅを返す（Ｓ８０６）。
【０１５８】
それ以外の場合には（Ｓ８０２でｆａｌｓｅ）、未使用領域接合部４は、領域Ａの開始論理ブロックが含まれるシリンダ番号Ａｓｓおよび終了論理ブロックが含まれるシリンダ番号Ａｓｅ、ならびに領域Ｂの開始論理ブロックが含まれるシリンダ番号Ｂｓｓおよび終了論理ブロックが含まれるシリンダ番号Ｂｓｅを獲得する（Ｓ８０３）。未使用領域接合部４は、２つの領域間の距離があらかじめ設定されたシリンダ数以下か否かを判定し（Ｓ８０４）、設定値以下の場合にはｔｒｕｅ（Ｓ８０６）を、設定値より大きい場合にはｆａｌｓｅ（Ｓ８０５）を返す。
【０１５９】
図１８を参照して、図１４のＳ６０４およびＳ６０７の接合判定処理について説明する。ここでは、複数のフリーブロック群を接合する際に、あらかじめ設定された値を越えないように接合を行なう。接合した際のフリーブロック群の長さは、各々のフリーブロック群に含まれる論理ブロック数を合計する事により求められる。
【０１６０】
未使用領域接合部４は、２つの領域の論理ブロック数を合計し（Ｓ９０１）、合計値があらかじめ設定された値以下であるかを判定する（Ｓ９０２）。未使用領域接合部４は、設定値以下の場合は（Ｓ９０２でｔｒｕｅ）、ｔｒｕｅを（Ｓ９０３）、設定値よりも大
きい場合は（Ｓ９０２でｆａｌｓｅ）、ｆａｌｓｅを返す（Ｓ９０４）。
【０１６１】
図１９を参照して、図１４のＳ６０４およびＳ６０７の接合判定処理では以下に示すように、ハードディスク６中で予め設定された境界を横切らない場合にのみ、接合を行なうように判定を行なってもよい。
【０１６２】
たとえば、ハードディスク６中で境界を５１２ＭＢｙｔｅ毎に設けた場合は、２つの領域の開始論理ブロックアドレスの１０ビット目以上が一致すれば、２つの領域は同一の境界に存在すると判定できる。
【０１６３】
従って、未使用領域接合部４は、入力された２つの領域の開始ブロックの上位ｎビットを比較し（Ｓ１００１）、一致するか否かを判定する（Ｓ１００２）。上位ｎビットが一致した場合は（Ｓ１００２でｔｒｕｅ）、ｔｒｕｅを（Ｓ１００３）、一致しない場合は（Ｓ１００２でｆａｌｓｅ）、ｆａｌｓｅを返す（Ｓ１００４）。
【０１６４】
ファイルをクローズする際に、記録されずに残った論理ブロックは未使用領域として返却する必要がある。この時、フリーブロック群の断片化を避けるために、返却される領域の大きさが一定値以内の場合には返却を行なわないようにする必要がある。
【０１６５】
図２０を参照して、ファイル管理部１は、ファイルをクローズする際に、最後にデータの書込を行なった論理ブロック番号（Ｗｐ）を獲得する（Ｓ１１０１）。ファイル管理部１は、論理ブロックＷｐが、ファイルに最後に割当てられた領域内に存在するかを判定する（Ｓ１１０２）。論理ブロックＷｐが最後に割当てられた領域内に存在する場合（Ｓ１１１０２でｔｒｕｅ）、ファイル管理部１は、最後に割当てた領域のブロック数ｌｃと、最後に書込を行なった論理ブロックの該当領域先頭からのブロック数Ｗｐｃとを獲得する（Ｓ１１０３）。たとえば、最後に割当てられた領域が論理ブロック番号８〜１４の論理ブロックからなり、最後に書込を行なった論理ブロックの番号が１２である場合は、ブロック数ｌｃは７であり、論理ブロック先頭からのブロック数Ｗｐｃは５である。
【０１６６】
ファイル管理部１は、ブロック数ｌｃとＷｐｃとの差が予め定められた値以下であるか否かを判断する（Ｓ１１０４）。両者の差が設定値よりも大きい場合には（Ｓ１１０４でｆａｌｓｅ）、未使用領域接合部４により最後に割当てた論理ブロック以降のブロックがフリーブロック群として登録される（Ｓ１１０５）。Ｓ１１０５の処理は、図１４に示した未使用領域の接合処理と同様である。このため、その詳細な説明はここでは繰返さない。
【０１６７】
［遅延交替処理部５について］
遅延交替処理部５は、ハードディスク６の論理ブロックへのデータ書込時にエラーが発生した場合には、エラー発生箇所に書込まれるべきデータをメモリに一時的に記憶し、その論理ブロックが交替中であることを示すフラグを設定する。また、遅延交替処理部５は、ハードディスク６へのアクセスに時間的余裕がある場合に、エラー発生箇所の含まれる論理ブロックを交替先の論理ブロックに書込むとともに、エラー発生箇所のデータをメモリから読出し、交替先の論理ブロックに書込む処理を行なう。本明細書中では、このような処理を、遅延交替処理と呼ぶ。
【０１６８】
交替処理では、ハードディスク６のパフォーマンスを低下させないように、データアクセスを行なう必要がある。このため、論理ブロック単位でデータアクセスを行ない、交替処理を行なう必要がある。論理ブロックごとデータを交替したとしても、論理ブロック間のシーク時間と回転待ち時間とは加味されて論理ブロックのサイズは決められている。このため、ハードディスク６のパフォーマンスは保証される。
【０１６９】
ただし、交替処理では、エラーの発生した論理ブロックおよび交替先となる論理ブロックの両者に対して書込を行なわなければならない。このため、エラーの発生直後に交替処理を行なうと一時的にハードディスク６に入出力できるデータ量が低下する。従って、ハードディスク６のパフォーマンスに余裕がない場合は、交替処理を行なうことはできない。
【０１７０】
本実施の形態の遅延交替処理では、エラーの直後に交替処理を行なうのではなく、ハードディスク６のパフォーマンスに余裕がある時に、実際の交替処理を行なう。パフォーマンスに余裕があるか否かの判断は、取扱うデータの個数により計測される。たとえば、３つのデータを同時に入出力可能なハードディスク６の場合には、取扱うデータが２つであれば、ディスクのパフォーマンスに余裕がある事が分かる。また、ファイル管理装置１０用の時計を有し、単位時間あたりに取扱ったデータ量を計測し、ハードディスク６のパフォーマンスに余裕があるときに交替処理を行なうようにしてもよい。
【０１７１】
遅延交替処理では、交替先の論理ブロックに再記録されるべきデータを保存するメモリが必要となる点である。再記録されるべきデータをすべてメモリ上に保存すると、その容量は大きくなってしまう。このため、図２１（ａ）を参照して、本実施の形態では、エラーの発生した箇所のみをメモリに保存して、その他の部分のデータは、エラーの発生した論理ブロックに記憶するようにする。メモリに保存する単位としては、エラーの発生したセクタや、サブブロックなどが考えられる。これにより、交替処理を遅延させた結果、再記録されるべきデータを保存するメモリ量を抑えることができる。
【０１７２】
図２１（ｂ）を参照して、エラーの発生した箇所が論理ブロックの末端近くである場合には、エラーの発生した箇所以降のデータをメモリに保存して、エラー発生箇所よりも前に位置する部分のデータは、その論理ブロックのデータを利用するようにしてもよい。
【０１７３】
また、遅延交替処理では、交替すべき論理ブロックのデータを読出す必要がある場合に、正しいデータのすべてがハードディスク６上に存在しない場合がある。これは、追っかけ再生のように、記録しているデータを記録しながら読出すような場合に発生する。このような場合には、エラーの発生した箇所のデータはメモリから読出し、その他の正しく記録されている部分のデータは、エラーの発生した論理ブロックから読出す。よって、ハードディスク６にデータが存在しない場合の追っかけ再生であっても、データが乱れて再生されるようなことはない。
【０１７４】
さらに、遅延交替処理では、実際の交替処理を行なう前に、停電等が起こった場合には、メモリに保存したデータを紛失する可能性がある。このため、メモリだけでなく、他の不揮発性の記録媒体にエラーの発生した箇所のデータを保存するようにする。このようにすれば、メモリに保存したデータを紛失した場合であっても、データの回復が可能である。なお、不揮発性の記録媒体としては、フラッシュメモリ等が挙げられる。
【０１７５】
図２２を参照して、遅延交替処理について説明する。ここでは、エラー発生箇所をメモリに保存する際に、サブブロック単位で保存する。
【０１７６】
遅延交替処理部５は、ハードディスク６へのデータの書込時にエラーが発生しているか否かを調べる（Ｓ１３０１）。書込エラーが発生した場合には（Ｓ１３０１でｔｒｕｅ）、遅延交替処理部５は、エラーの発生したセクタの属する論理ブロックおよびサブブロックを求める（Ｓ１３０２）。論理ブロックのサイズが１ＭＢｙｔｅの場合には、セクタの番号を２０ビットシフトすることにより論理ブロックの番号を求めることができる。また、サブブロックのサイズが１２８Ｋバイトの場合には、セクタの番号を１７ビットシフト
し、下位３ビットを抽出することにより、サブブロックの番号を求めることができる。
【０１７７】
遅延交替処理部５は、図２に示した領域管理テーブルの該当する論理ブロックの交替フラグに交替処理が遅延していることを示すデータを設定する（Ｓ１３０３）。遅延交替処理部５は、書込エラーの発生したサブブロックのデータをメモリに保存するとともに（Ｓ１３０４）、同じデータを不揮発性の記録媒体に保存する（Ｓ１３０５）。
【０１７８】
この時、メモリや不揮発性の記録媒体には、書込エラーの発生したサブブロックのデータ以外に、そのデータが属する論理ブロックおよびサブブロックの番号なども保存される。
【０１７９】
データの書込エラーが発生していない場合には（Ｓ１３０１でｆａｌｓｅ）、交替処理が遅延されている論理ブロックが存在するか否かを調べる（Ｓ１３０６）。交替処理が遅延されている論理ブロックが存在する場合には（Ｓ１３０６でｔｒｕｅ）、遅延交替処理部５は、交替処理を行なう余裕があるか否かを判定する（Ｓ１３０７）。
【０１８０】
交替処理を行なう余裕がある場合には（Ｓ１３０７でｔｒｕｅ）、遅延交替処理部５は、未使用領域の中から交替先となる論理ブロックを獲得する（Ｓ１３０８）。遅延交替処理部５は、交替元となる論理ブロックから、書込が成功した領域を読出し、エラーの発生したサブブロックのデータは、保存したメモリ上から読出し、交替先に記録すべきデータを作成する（Ｓ１３０９）。遅延交替処理部５は、作成したデータを交替先の論理ブロックに記録する（Ｓ１３１０）。その後、遅延交替処理部５は、領域管理テーブル上の交替元となる論理ブロックの交替フラグを交替済みであることを示す値に変更し、交替先論理ブロックと交替元論理ブロックとを置き換える（Ｓ１３１１）。
【０１８１】
Ｓ１３１１の処理としては、交替元論理ブロックの前後に位置する論理ブロックのポインタが交替先論理ブロックを指すように変更したり、交替元論理ブロックのポインタ領域を交替先の論理ブロックを指すように変更し、交替先の論理ブロックのポインタを交替元の前後に位置する論理ブロックを指すように変更することが考えられる。
【０１８２】
図２３を参照して、この処理について説明する。図２３（ａ）は、エラーが検知される前の領域管理テーブルの状態を示している。論理ブロック番号が０から５１１までの領域の使用フラグは１であり、それらの論理ブロックがファイルで使用されていることを表す。また、交替フラグの値はすべて０であるため、交替処理は行なわれていないことを示している。
【０１８３】
この時、論理ブロック番号１の書込時にエラーが発生したものとする。図２３（ｂ）を参照して、１番の論理ブロックの交替フラグの値が２に設定され、その論理ブロックが交替中であることが示される。
【０１８４】
図２３（ｃ）を参照して、このブロックの交替先の論理ブロックとして、４０９５番の論理ブロックが選択された場合には、４０９５番の論理ブロックの前ブロック相対アドレスおよび次ブロック相対アドレスの値がそれぞれ０番および２番の論理ブロックを指し示すように書換えられる。また、交替元の１番の論理ブロックには、交替先の論理ブロックの番号４０９６が代入される。さらに、１番の論理ブロックの交替フラグには、交替処理が終了したことを示す値１が設定される。
【０１８５】
または、図２３（ｄ）を参照して、交替先の論理ブロックの前ブロック相対アドレスおよび次ブロック相対アドレスの値が、それぞれ０番および２番の論理ブロックを指し示すように書換えられる。また、０番の論理ブロックの次ブロック相対アドレスおよび２番の
論理ブロックの前ブロック相対アドレスが４０９５番のブロックを指し示すように変更される。また、１番の論理ブロックの交替フラグには、交替処理が終了したことを示す値１が設定される。
【０１８６】
図２４を参照して、記録媒体制御部２は、読出対象の論理ブロックが交替されていない状態である場合には、エラーが発生した箇所のデータについては、メモリに記憶された正常なデータを読出し、それ以外の部分については、ハードディスク６から読出す処理を行なう。
【０１８７】
記録媒体制御部２は、読出対象の論理ブロックが交替中であり、交替処理が終了していないか否かを調べる（Ｓ１４０１）。交替処理が終了していなければ（Ｓ１４０１でｔｒｕｅ）、エラーの発生した箇所以外のデータを読出対象の論理ブロックから読出し（Ｓ１４０２）、メモリからエラーの発生した箇所の正常なデータ読出す（Ｓ１４０３）。
【０１８８】
交替処理が終了していれば（Ｓ１４０１でｆａｌｓｅ）、通常の読出処理を行なう（Ｓ１４０４）。
【０１８９】
ハードディスク６では、１つのコマンドで転送可能なセクタ数は、２５６個までである。このため、１ＭＢｙｔｅの論理ブロックを転送するためには、１ＭＢｙｔｅのデータを８等分し、それぞれのデータを分割転送する必要がある。しかし、ハードディスク内部では、キャッシュメモリを使用している。このため、複数のデータに分割して転送したとしても、転送データのハードディスク６上でのセクタが連続している限りは、転送コマンド間でのシーク時間および回転待ち時間は発生しない。
【０１９０】
従って、書込エラーが生じた場合には、２５６セクタ単位でデータをメモリに保存するようにすれば、エラーが発生した箇所を読出すためのコマンドをハードディスク６に転送する必要がなくなる。また、メモリへ保存するデータサイズの大きさと、上述したサブブロックの大きさとを等しくすれば、ファイル管理装置１０におけるデータの管理がしやすくなる。
【０１９１】
なお、ハードディスク６以外にも、ＭＯ（Magneto-Optical）、ＤＶＤ−ＲＡＭ（Digital Video Disk-Random Access Memory）などの円盤状の記録媒体を用いてもよい。
【０１９２】
以上説明したように本発明の実施の形態に係るファイル管理装置によると、未使用領域は、未使用領域接合部４で接合され、未使用領域管理部３により管理される。このため、１つのファイルの記録媒体上での連続性をなるべく保つことができ、記録媒体のパフォーマンスを保証することができる。特に、デジタル映像音声データのように大容量で、かつ読出および書込時にリアルタイム性が要求される場合でも、記録媒体のパフォーマンスを保証することができる。
【０１９３】
また、データの書込に余裕がある場合に遅延処理を実行させることができる。このため、リアルタイム性が要求されるファイルの読出または書込途中であっても、読出または書込の邪魔をすることなく遅延処理を実行させることができる。
【０１９４】
さらに、小サイズのデータについては、サブブロック単位でのアクセスを行なうことにより、アクセス効率を向上させることができる。
【０１９５】
さらにまた、未使用領域のうち、記録媒体上で連続した論理ブロックをフリーブロック群として、まとめて管理することにより、ファイルへの領域割当や、不要になった領域の接合処理などを効率良く行なうことができる。
【０１９６】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【０１９７】
［実施の形態の効果］
本実施の形態によるとデジタル映像音声データのように大容量で、かつ読出および書込時にリアルタイム性が要求されるデータを取扱う場合でも、記録媒体のパフォーマンスを保証することができる。
【図面の簡単な説明】
【０１９８】
【図１】本発明の実施の形態に係るファイル管理装置のハードウェア構成を示すブロック図である。
【図２】領域管理テーブルの一例を示す図である。
【図３】ファイル管理テーブルの一例を示す図である。
【図４】論理ブロックを単位として、１つのファイルまたは複数のファイルをアクセスする処理を説明するための図である。
【図５】サブブロック単位でデータをアクセスする処理を説明するための図である。
【図６】ファイル管理部および記録媒体制御部の実行する処理のフローチャートである。
【図７】未使用領域管理部の管理形態の概略を説明するための図である。
【図８】未使用領域を管理するための未使用領域管理テーブルおよび領域管理テーブルの一例を示す図である。
【図９】外部からの指示に従って、フリーブロックを割当てる処理のフローチャートである。
【図１０】未使用領域の断片化の一例を説明するための図である。
【図１１】フリーブロック群の割当方を説明するための図である。
【図１２】フリーブロック群の割当方を説明するための図である。
【図１３】ファイル管理方法によるファイル領域割当処理のフローチャートである。
【図１４】フリーブロック群の接合処理のフローチャートである。
【図１５】フリーブロック群の距離を判定する処理のフローチャートである。
【図１６】領域の包含関係を説明するための図である。
【図１７】フリーブロック群の距離を判定する処理のフローチャートである。
【図１８】接合判定処理のフローチャートである。
【図１９】接合判定処理のフローチャートである。
【図２０】未使用領域返却処理のフローチャートである。
【図２１】遅延交替処理を説明するための図である。
【図２２】遅延交替処理のフローチャートである。
【図２３】交替先論理ブロックと交替元論理ブロックとを交換する処理を説明するための図である。
【図２４】記録媒体制御部２の行なう処理のフローチャートである。
【図２５】特開平１１−９６０５２号公報のファイル管理装置による記録領域の分割方法を説明するための図である。
【符号の説明】
【０１９９】
１  ファイル管理部、２  記録媒体制御部、３  未使用領域管理部、４  未使用領域接合部、５  遅延交替処理部、６  ハードディスク、１０  ファイル管理装置。
【図１】
2008140396.tif 000003
【図２】
2008140396.tif 000004
【図３】
2008140396.tif 000005
【図４】
2008140396.tif 000006
【図５】
2008140396.tif 000007
【図６】
2008140396.tif 000008
【図７】
2008140396.tif 000009
【図８】
2008140396.tif 000010
【図９】
2008140396.tif 000011
【図１０】
2008140396.tif 000012
【図１１】
2008140396.tif 000013
【図１２】
2008140396.tif 000014
【図１３】
2008140396.tif 000015
【図１４】
2008140396.tif 000016
【図１５】
2008140396.tif 000017
【図１６】
2008140396.tif 000018
【図１７】
2008140396.tif 000019
【図１８】
2008140396.tif 000020
【図１９】
2008140396.tif 000021
【図２０】
2008140396.tif 000022
【図２１】
2008140396.tif 000023
【図２２】
2008140396.tif 000024
【図２３】
2008140396.tif 000025
【図２４】
2008140396.tif 000026
【図２５】
2008140396.tif 000027
【手続補正書】
【提出日】平成19年12月28日(2007.12.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の論理ブロックに区切られた記録媒体を管理するファイル管理装置であって、
前記記録媒体に記録されたファイルを管理するためのファイル管理情報を管理するファイル管理手段を備え、
前記ファイル管理手段は、アプリケーションプログラムから指示されるデータの書込要求または読出要求が、前記論理ブロックの容量よりも小さい単位で行われたか否かを判断し、
前記ファイル管理手段および前記記録媒体に接続され、前記ファイル管理情報に基づいて、前記記録媒体に対するデータの書込および読出を行う記録媒体制御手段をさらに備え、
前記記録媒体制御手段は、前記アプリケーションプログラムから指示されるデータの書込要求または読出要求が、前記論理ブロックの容量よりも小さい単位で行われた場合に、前記論理ブロックを複数のサブブロックに分割し、前記サブブロック単位で前記記録媒体にアクセスすることによって、前記サブブロック単位で前記記録媒体に書込または読出を行う、ファイル管理装置。
【請求項２】
前記ファイル管理手段に接続され、前記記録媒体中の未使用の論理ブロックを前記記録媒体上で連続している連続領域毎に管理する未使用領域管理手段をさらに備える、請求項１に記載のファイル管理装置。
【請求項３】
前記ファイル管理手段は、ファイル作成時に、作成されるファイルのサイズが不定の場合には、前記ファイルに対してあらかじめ定められた大きさの前記連続領域を割当てる、請求項２に記載のファイル管理装置。
【請求項４】
前記ファイル管理手段は、サイズが不定のファイルに対してさらに領域を割当てる際には、前記連続領域の内で最大長の連続領域を割当てる、請求項３に記載のファイル管理装置。
【請求項５】
前記ファイル管理手段は、サイズが予め定められているファイルに対してさらに領域をを割当てる際には、前記連続領域の内で最大長の連続領域を割当てる、請求項２から４のいずれか１項に記載のファイル管理装置。
【請求項６】
前記ファイル管理手段は、ファイルをクローズする際に、前記ファイルに割当てられた連続領域中の未使用の論理ブロックを未使用の連続領域として前記未使用領域管理手段に登録する、請求項３から５のいずれか１項に記載のファイル管理装置。
【請求項７】
前記ファイル管理手段は、前記未使用の論理ブロックの数が予め定められた個数以上の場合にのみ、前記未使用の論理ブロックを未使用の連続領域として前記未使用領域管理手段に登録する、請求項６に記載のファイル管理装置。
【請求項８】
前記ファイル管理手段によって登録された前記未使用の連続領域と他の未使用の連続領域とが隣接している場合に、前記未使用の連続領域と前記他の未使用の連続領域とを接合する未使用領域接合手段をさらに備える、請求項６または７に記載のファイル管理装置。
【請求項９】
前記ファイル管理手段は、前記記録媒体中からファイルを削除した際に、前記ファイルに割当てられていた未使用の論理ブロックを未使用の連続領域として前記未使用領域管理手段に登録する、請求項２から５のいずれか１項に記載のファイル管理装置。
【請求項１０】
前記ファイル管理手段によって登録された前記未使用の連続領域と他の未使用の連続領域とが隣接している場合に、前記未使用の連続領域と前記他の未使用の連続領域とを接合する未使用領域接合手段をさらに備える、請求項９に記載のファイル管理装置。
【請求項１１】
前記ファイル管理手段によって登録された前記未使用の連続領域と他の未使用の連続領域との距離が一定値以内の場合に、前記未使用の連続領域と前記他の未使用の連続領域とを接合する未使用領域接合手段をさらに備える、請求項９に記載のファイル管理装置。
【請求項１２】
前記未使用領域接合手段は、予め定められた長さを超えない範囲で、前記未使用の連続領域と前記他の未使用の連続領域とを接合する、請求項１０または１１に記載のファイル管理装置。