(57)【要約】【課題】  ファイルへ割り当てられている未使用な領域を、ファイル拡張時に検索して解放する技術はファイル拡張性能が劣化する。ファイルに割り当てられながらデータが格納されない領域を有する技術は領域の有効利用ができない。【解決手段】  ファイル装置は、使用領域と仮削除領域を備える複数のサブファイルと、空き領域、または、サブファイルの使用領域若しくは仮削除領域に属するブロックを備えるファイル、サブファイルに追加するデータを格納するブロックを、仮削除領域から確保できる場合は仮削除領域から、仮削除領域から確保できない場合は空き領域から確保して使用領域に加え、サブファイルからデータを削除する為に、当該データを格納するブロックを使用領域から削除して仮削除領域に加える更新部、更新部と非同期に動作して、仮削除領域に属するブロックを仮削除領域から削除して空き領域に加える監視部を備える。【選択図】      図１
2009048222.tif 000002
【特許請求の範囲】
【請求項１】
使用領域と仮削除領域を備える複数のサブファイルと、
空き領域、または、前記複数のサブファイルのうちの一のサブファイル（以降、サブファイル）の前記使用領域若しくは前記仮削除領域の何れか一の領域に属するブロックを備えるファイルと、
前記サブファイルに追加するデータを格納する為の前記ブロックを、前記仮削除領域から確保できる場合は前記仮削除領域から、前記仮削除領域から確保できない場合は前記空き領域から確保して前記使用領域に加え、
前記サブファイルからデータを削除する為に、当該データを格納する前記ブロックを前記使用領域から削除して前記仮削除領域に加える更新部と、
前記更新部と非同期に動作して、前記仮削除領域に属するブロックを前記仮削除領域から削除して前記空き領域に加える監視部と、
を備えるファイル装置。
【請求項２】
前記監視部は、所定期間以上前継続して前記仮削除領域に属するブロックを前記仮削除領域から削除して前記空き領域に加える第１の解放を行うことを特徴とする請求項１に記載のファイル装置。
【請求項３】
前記監視部は、周期的に動作して前記所定期間の経過を監視することを特徴とする請求項２に記載のファイル装置。
【請求項４】
前記監視部は、前記仮削除領域に属する前記ブロックの総領域サイズの前記使用領域に属する前記ブロックの総領域サイズに対する割合が所定比率を超えている場合に、前記割合を前記所定比率に下げるように前記仮削除領域に属する前記ブロックを前記仮削除領域から削除して前記空き領域に加える第２の解放をさらに行うことを特徴とする請求項３に記載のファイル装置。
【請求項５】
前記監視部は、前記空き領域に属する前記ブロックの数が、所定値以下の場合に前記第２の解放処理を行うことを特徴とする請求項４に記載のファイル装置。
【請求項６】
使用領域と仮削除領域を備える複数のサブファイルと、
空き領域、または、前記複数のサブファイルのうちの一のサブファイル（以降、サブファイル）の前記使用領域若しくは前記仮削除領域の何れか一の領域に属するブロックを包含するファイルを備えたコンピュータに、
前記サブファイルに追加するデータを格納する為の前記ブロックを、前記仮削除領域から確保できる場合は前記仮削除領域から、前記仮削除領域から確保できない場合は前記空き領域から確保して前記使用領域に加え、
前記サブファイルからデータを削除する為に、当該データを格納する前記ブロックを前記使用領域から削除して前記仮削除領域に加える更新処理と、
前記更新部と非同期に動作して、前記仮削除領域に属するブロックを前記仮削除領域から削除して前記空き領域に加える監視処理と、
を実行させるファイル制御プログラム。
【請求項７】
前記コンピュータに、前記監視処理において、所定期間以上前継続して前記仮削除領域に属するブロックを前記仮削除領域から削除して前記空き領域に加える第１の解放を実行させることを特徴とする請求項６に記載のファイル制御プログラム。
【請求項８】
前記コンピュータに、前記監視処理に於いて、周期的に動作して前記所定期間の経過を監視させることを特徴とする請求項７に記載のファイル制御プログラム。
【請求項９】
前記コンピュータに、前記監視処理に於いて、前記仮削除領域に属する前記ブロックの総領域サイズの前記使用領域に属する前記ブロックの総領域サイズに対する割合が所定比率を超えている場合に、前記割合を前記所定比率に下げるように前記仮削除領域に属する前記ブロックを前記仮削除領域から削除して前記空き領域に加える第２の解放をさらに実行させることを特徴とする請求項８に記載のファイル制御プログラム。
【請求項１０】
前記コンピュータに、前記監視処理に於いて、前記空き領域に属する前記ブロックの数が、所定値以下の場合に前記第２の解放処理を実行させることを特徴とする請求項９に記載のファイル制御プログラム。
【請求項１１】
使用領域と仮削除領域を備える複数のサブファイルと、
空き領域、または、前記複数のサブファイルのうちの一のサブファイル（以降、サブファイル）の前記使用領域若しくは前記仮削除領域の何れか一の領域に属するブロックを包含するファイルを備えたコンピュータが、
前記サブファイルに追加するデータを格納する為の前記ブロックを、前記仮削除領域から確保できる場合は前記仮削除領域から、前記仮削除領域から確保できない場合は前記空き領域から確保して前記使用領域に加え、
前記サブファイルからデータを削除する為に、当該データを格納する前記ブロックを前記使用領域から削除して前記仮削除領域に加える更新行程と、
前記更新部と非同期に動作して、前記仮削除領域に属するブロックを前記仮削除領域から削除して前記空き領域に加える監視行程と、
を有するファイル制御方法。
【請求項１２】
前記コンピュータが、前記監視行程に於いて、所定期間以上前継続して前記仮削除領域に属するブロックを前記仮削除領域から削除して前記空き領域に加える第１の解放を行うことを特徴とする請求項１１に記載のファイル制御方法。
【請求項１３】
前記コンピュータが、前記監視行程に於いて、周期的に動作して前記所定期間の経過を監視することを特徴とする請求項１２に記載のファイル制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル装置、ファイル制御プログラム、およびファイル制御方法に関する。
【背景技術】
【０００２】
特許文献１は、ファイル拡張時に確保できる未使用域が不足した場合、既に各ファイルへ割り当てられているが未使用な領域を各ファイルから解放して利用する技術を開示する。
【０００３】
特許文献２は、ファイルに割り当てられながらデータが格納されない領域を残す技術を開示する。
【０００４】
【特許文献１】特開平５−３１３９６２号公報
【特許文献２】特開平５−１２００９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の技術はファイル拡張の性能劣化が発生する。当該技術は、各ファイルへ割り当てられている未使用な領域を、ファイル拡張時に検索して各ファイルから解放するからである。
【０００６】
特許文献２に記載の技術は領域の有効利用ができない。当該技術は、ファイルに割り当てられながらデータが格納されない領域を他のファイル領域に利用できないからである。
【０００７】
本発明の目的は、上記の課題を解決する、ファイル装置、ファイル制御プログラム、およびファイル制御方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の一実施形態のファイル装置は、使用領域と仮削除領域を備える複数のサブファイルと、空き領域、または、前記複数のサブファイルのうちの一のサブファイル（以降、サブファイル）の前記使用領域若しくは前記仮削除領域の何れか一の領域に属するブロックを備えるファイルと、前記サブファイルに追加するデータを格納する為の前記ブロックを、前記仮削除領域から確保できる場合は前記仮削除領域から、前記仮削除領域から確保できない場合は前記空き領域から確保して前記使用領域に加え、前記サブファイルからデータを削除する為に、当該データを格納する前記ブロックを前記使用領域から削除して前記仮削除領域に加える更新部と、前記更新部と非同期に動作して、前記仮削除領域に属するブロックを前記仮削除領域から削除して前記空き領域に加える監視部とを備える。
【０００９】
本発明の一実施形態のファイル制御プログラムは、使用領域と仮削除領域を備える複数のサブファイルと、空き領域、または、前記複数のサブファイルのうちの一のサブファイル（以降、サブファイル）の前記使用領域若しくは前記仮削除領域の何れか一の領域に属するブロックを包含するファイルを備えたコンピュータに、前記サブファイルに追加するデータを格納する為の前記ブロックを、前記仮削除領域から確保できる場合は前記仮削除領域から、前記仮削除領域から確保できない場合は前記空き領域から確保して前記使用領域に加え、前記サブファイルからデータを削除する為に、当該データを格納する前記ブロックを前記使用領域から削除して前記仮削除領域に加える更新処理と、前記更新部と非同期に動作して、前記仮削除領域に属するブロックを前記仮削除領域から削除して前記空き領域に加える監視処理とを実行させる。
【００１０】
本発明の一実施形態のファイル制御方法は、使用領域と仮削除領域を備える複数のサブファイルと、空き領域、または、前記複数のサブファイルのうちの一のサブファイル（以降、サブファイル）の前記使用領域若しくは前記仮削除領域の何れか一の領域に属するブロックを包含するファイルを備えたコンピュータが、前記サブファイルに追加するデータを格納する為の前記ブロックを、前記仮削除領域から確保できる場合は前記仮削除領域から、前記仮削除領域から確保できない場合は前記空き領域から確保して前記使用領域に加え、前記サブファイルからデータを削除する為に、当該データを格納する前記ブロックを前記使用領域から削除して前記仮削除領域に加える更新行程と、前記更新部と非同期に動作して、前記仮削除領域に属するブロックを前記仮削除領域から削除して前記空き領域に加える監視行程とを有する。
【発明の効果】
【００１１】
本発明は、ファイル領域の有効利用をはかりながら、ファイル内に存在するサブファイル拡張の性能を向上させる。
【発明を実施するための最良の形態】
【００１２】
本発明の第１の実施形態におけるファイル２０は、複数のサブファイル３０に分割されている。ファイル装置１０は、サブファイル３０の縮小時、削除対象となったデータ領域をサブファイル３０内に残したまま仮削除の状態とする。そして、ファイル装置１０は、再度サブファイル３０にデータ領域を追加する場合は、仮削除されているブロック５０を再利用する。
【００１３】
以下は、本実施形態の詳細な説明である。図１は、本実施形態にかかるファイル装置１０の全体構成を示す。ファイル装置１０は、更新部１１、参照部１３、監視部１２と、ファイル２０を包含する。さらに、ファイル装置１０は、時計１４、ファイル制御プログラム１５および複数の業務プログラム１６を包含する。ファイル２０は複数のサブファイル３０を包含する。
【００１４】
更新部１１は、サブファイル３０の拡張縮小を行う。参照部１３は、サブファイル３０のデータ読み出しを行う。監視部１２は、サブファイル３０内の記憶域の使用状態に関する定期的な監視を行う。時計１４は、現時刻を保持する。その精度は、秒単位程度であることが好ましいが、分単位または時間単位であっても構わない。
【００１５】
業務プログラム１６は、おのおの対応するサブファイル３０を使用して業務処理を進める。例えば、第１の業務プログラム１６は第１のサブファイル３０を使用し、第２の業務プログラム１６は第２のサブファイル３０を使用する。
【００１６】
本実施形態に於いて、更新部１１、参照部１３または監視部１２はハードウェアで実現されてもよいし、プロセッサーが記憶域に格納されているファイル制御プログラム１５を読み込んで実行することで同等な機能を果たすように実現されてもよい。
【００１７】
図２は、本実施形態のファイル２０の全体構成を示す。ファイル２０は、ユーザデータを格納するための複数の領域（ブロック５０）を包含する。各ブロック５０は固定長であっても良いし、可変長であっても良い。可変長の場合は、各ブロック５０にブロック５０の領域サイズを包含する。以降、本実施形態でのブロック５０は、固定長であるとする。
【００１８】
各サブファイル３０は、使用領域３１と仮削除領域３９とを包含する。使用領域３１は、ユーザのデータを格納しているブロック５０を包含する。使用領域３１は、通常複数のブロック５０を包含するが、一つしか包含しないこともあるし、包含しないこともある。仮削除領域３９は、サブファイル３０から削除されたデータを格納しているブロック５０を包含する。仮削除領域３９は、通常複数のブロック５０を包含するが、一つしか包含しないこともあるし、包含しないこともある。
【００１９】
ファイル２０は、サブファイル管理領域２１も包含する。サブファイル管理領域２１は、各サブファイル３０対応にディレクトリ３２を包含する。各ディレクトリ３２は対応するサブファイル３０の管理情報を包含する。
【００２０】
ファイル２０は、空き領域４０も包含する。空き領域４０は、どのサブファイル３０にも属さないブロック５０を包含する。空き領域４０は、通常複数のブロック５０を包含するが、一つしか包含しないこともあるし、包含しないこともある。
【００２１】
本実施形態に於いて、各ブロック５０は、空き領域４０、または、あるサブファイル３０の使用領域３１若しくは仮削除領域３９の何れか一の領域に包含される。
【００２２】
図５は、各ブロック５０の構成を示す。ブロック５０は、次ポインタ５１、前ポインタ５２、削除日時５３及びユーザデータ領域５４を包含する。なお、ブロック５０の領域サイズは、ユーザデータ領域５４の大きさを意味する。ブロック５０が可変長である場合、ブロック５０内に領域サイズを格納しておくことが望ましい。
【００２３】
図３は、各サブファイル３０の管理方法を示す。各サブファイル３０に属すブロック５０は、次ポインタ５１および前ポインタ５２に格納される双方向ポインタによりチェーンを形成する。チェーンの前半は使用領域３１に属すブロック５０がつながれている。チェーンの後半は仮削除領域３９に属すブロック５０がつながれている。なお、次ポインタ５１および前ポインタ５２に格納される情報は、ブロック５０を一意に識別できる情報であれば何でも良い。通常は、ブロック５０のファイル２０内の通番などが使われる。また、チェーンの先頭のブロック５０の前ポインタ５２、および、最終のブロック５０の次ポインタ５１にはチェーンの終端を示すためにＮｕｌｌ値、例えば０が格納される。
【００２４】
ディレクトリ３２は、チェーンの先頭のブロック５０を指す先頭ポインタ３３、最終のブロック５０を指す最終ポインタ３５を包含する。また、ディレクトリ３２は、仮削除領域３９に属すブロック５０の先頭のブロック５０を指す中間ポインタ３４も包含する。
【００２５】
サブファイル３０に属すブロック５０が存在しなければ、先頭ポインタ３３と最終ポインタ３５はＮｕｌｌ値を格納する。仮削除領域３９に属すブロック５０が存在しなければ、中間ポインタ３４はＮｕｌｌ値を格納する。
【００２６】
このようなディレクトリ３２とブロック５０のチェーンを設けることにより、ファイル装置１０は、少なくとも以下の処理が出来る。これらの処理は、よく知られた双方向チェーンの処理であるので、その詳細は割愛する。
１）更新部１１は、特定ブロック５０を使用領域３１から削除する（使用領域３１に属す特定ブロック５０をチェーンからはずす）。
２）更新部１１は、特定ブロック５０を使用領域３１に追加する（ブロック５０を、チェーンの仮削除領域３９の先頭のブロック５０、即ち中間ポインタ３４が指すブロック５０より前の指定された位置につなぐ）。
３）更新部１１は、仮削除領域３９からブロック５０を確保する（中間ポインタ３４が指すブロック５０をチェーンからはずす）。
４）更新部１１は、ブロック５０を仮削除領域３９に追加する（ブロック５０をチェーンの最後尾につなぐ）。
５）監視部１２は、仮削除領域３９のすべてのブロック５０を仮削除領域３９から削除する（中間ポインタ３４にＮｕｌｌ値を設定するとともに、仮削除領域３９の先頭ブロック５０の前ポインタ５２の値を最終ポインタ３５に格納する）。
【００２７】
図４は、空き領域４０の管理方法を示す。空き領域４０に属すブロック５０は、次ポインタ５１および前ポインタ５２に格納される双方向ポインタによりチェーンを形成する。チェーンの先頭のブロック５０の前ポインタ５２、および、最終のブロック５０の次ポインタ５１にはチェーンの終端を示すためにＮｕｌｌ値が格納される。
【００２８】
空き領域４０は包含するブロック５０を管理する為の空き管理領域４１を包含する。空き管理領域４１は、チェーンの先頭のブロック５０を指す第１空きポインタ４２と最終のブロック５０を指す第２空きポインタ４３を包含する。空き領域４０に属すブロック５０が存在しなければ、第１空きポインタ４２と第２空きポインタ４３はＮｕｌｌ値を格納する。
【００２９】
このような空き管理領域４１とブロック５０のチェーンを設けることにより、ファイル装置１０は、少なくとも以下の処理が出来る。これらの処理は、よく知られた双方向チェーンの処理であるので、詳細は割愛する。
１）更新部１１は、空き領域４０からブロック５０を確保する（先頭のブロック５０をチェーンからはずす）。
２）更新部１１または監視部１２は、特定のブロック５０を空き領域４０に追加する（ブロック５０をチェーンの最後尾につなぐ）。
【００３０】
本実施形態のファイル装置１０は、以下のように動作する。
【００３１】
図６は、更新部１１がサブファイル３０のブロック５０を削除するときの処理フローチャートを示す。業務プログラム１６は、使用するサブファイル３０のデータを削除したいとき、その処理を更新部１１に依頼する。サブファイル３０からデータを削除する結果、当該データを格納していたブロック５０が不要となったとき、そのブロック５０が使用領域３１から削除される。
【００３２】
更新部１１は、削除の対象となるブロック５０の削除日時５３に処理時点の日時を格納する（Ｓ６１）。処理時点の日時は時計１４から読み込まれる。
【００３３】
同部は、削除対象のブロック５０を使用領域３１から削除して、仮削除領域３９に追加する（Ｓ６２）。
【００３４】
図７は、更新部１１がサブファイル３０を拡張するときの処理フローチャートを示す。業務プログラム１６が、サブファイル３０にデータを追加することを、更新部１１に依頼するとサブファイル３０の拡張が行われる。
【００３５】
更新部１１は、仮削除領域３９に属するブロック５０が存在するか否かをチェックする（Ｓ７１）。存在する場合、即ち中間ポインタ３４がＮｕｌｌ値で無ければ（Ｓ７１でＹ）、同部は、仮削除領域３９からブロック５０を確保する（Ｓ７２）。
【００３６】
存在しない場合、即ち中間ポインタ３４がＮｕｌｌ値であれば（Ｓ７１でＮ）、同部は、空き領域４０に属するブロック５０が存在するかチェックする（Ｓ７６）。存在する場合、即ち第１空きポインタ４２がＮｕｌｌ値で無ければ（Ｓ７６でＹ）、同部は、空き領域４０からブロック５０を確保する（Ｓ７７）。存在しない場合、即ち第１空きポインタ４２がＮｕｌｌ値であれば（Ｓ７６でＮ）、同部は異常終了する。
【００３７】
仮削除領域３９または空き領域４０からブロック５０が確保できた場合、同部は、確保したブロック５０の削除日時５３を初期化（例えば、０値を格納）し、ユーザデータ領域５４に追加するデータを格納する（Ｓ７３）。その後同部は、当該ブロック５０を、使用領域３１に追加する（Ｓ７４）。同部は、この処理を、追加データを格納するために必要なブロック５０の数分繰り返す（Ｓ７５）
図８は、参照部１３が、サブファイル３０に格納されているデータを読み出すときの処理フローチャートを示す。図８は、サブファイル３０に格納されているデータすべてを読み出す場合の処理を例示する。参照部１３は、業務プログラム１６の依頼を受けてデータを読み出す。
【００３８】
参照部１３は、先頭のブロック５０のポインタを先頭ポインタ３３から取得する（Ｓ８１）。同部は、この値がＮｕｌｌ値で無ければ（Ｓ８２でＮ）、この値が中間ポインタ３４と一致するかチェックする（Ｓ８３）。一致していなければ（Ｓ８４でＮ）、同部は、当該ブロック５０のユーザデータ領域５４に格納されているデータを参照データとして業務プログラム１６に出力する（Ｓ８５）。当該ブロック５０は使用領域３１に属すからである。その後、同部は、当該ブロック５０の次ポインタ５１から、チェーンの次のブロック５０のポインタを取得して（Ｓ８６）、Ｓ８２からの処理を繰り返す。
【００３９】
参照部１３は、Ｓ８１またはＳ８６で取得したポインタが、Ｎｕｌｌ値である場合（Ｓ８２でＹ）または中間ポインタ３４の値と一致する場合（Ｓ８４でＹ）は、処理を終了する。
【００４０】
なお、参照部１３がサブファイル３０のデータを読み出す方法はこれに限らない。参照部１３は、サブファイル３０のデータに関するインデックスに基づいて、特定のブロック５０のユーザデータ領域５４だけを読み出す機能を業務プログラム１６に提供しても良い。
【００４１】
図９は、監視部１２の監視処理のフローチャートを示す。監視部１２は、仮削除領域３９に属するブロック５０を定期的に監視して、所定時間以上継続して属しているブロック５０を仮削除領域３９から削除して、空き領域４０に追加する。
【００４２】
監視部１２は、以下の処理をすべてのサブファイル３０について行う。
【００４３】
同部は、仮削除領域３９の先頭のブロック５０のポインタを中間ポインタ３４から取得する（Ｓ９１）。同部は、この値がＮｕｌｌ値で無ければ（Ｓ９２でＮ）、当該ブロックの削除日時５３から処理時点の日時までの経過時間を算出する（Ｓ９３）。
【００４４】
処理時点の日時は時計１４から読み込まれる。当該経過時間が、所定値以上であれば（Ｓ９４でＹ）、同部は、仮削除領域３９のすべてのブロック５０を仮削除領域３９から削除する（Ｓ９５）。
【００４５】
次に同部は、仮削除領域３９から削除したすべてのブロック５０を空き領域４０に追加（第１の解放）をする（Ｓ９６）。
【００４６】
上述した本実施形態の効果は下記の通りである。
【００４７】
第１の効果は、並行して実行される複数の業務プログラム１６が複数のサブファイル３０の拡張、縮小を頻繁に行う場合に、当該拡張・縮小処理性能を向上させることができることである。
【００４８】
その理由は、更新部１１が、サブファイル３０内で削除対象となったブロック５０をサブファイル３０内仮削除領域３９に残し、再度サブファイル３０にブロック５０を追加する場合に再利用するからである。この再利用は、サブファイル３０の拡張、縮小に伴う空き領域４０へのアクセスを最小限に抑えて、空き領域４０へのアクセス集中に起因する待ち時間を削減させる。
【００４９】
第２の効果は、ファイル２０の記憶スペースを効率的に活用できることである。複数の業務プログラム１６が、サブファイル３０の拡張縮小を頻繁に行う（ピーク負荷）時間の差異を有効に利用して、ブロック５０を適切に融通しあうことが可能となる。さらに、サブファイル３０の拡張を高速に行うことが出来る。
【００５０】
その理由は、監視部１２が一定期間以上仮削除領域３９に属したままとなっているブロック５０を定期的に空き領域４０に移動するからである。この移動は、拡張縮小が頻繁でないサブファイル３０のブロック５０を他のサブファイル３０の為に高速に利用可能とする。
【００５１】
なお、本実施形態は、ファイル２０およびサブファイル３０を、各々、ＤＩＳＫ等の記憶装置のボリュームおよびボリューム内のファイルに対応させて実装しても良い。
【００５２】
上述の説明では、監視部１２は、ブロック５０を空き領域４０に追加するときに所定期間以上継続して仮削除領域３９に所属していたことを判断している。監視部１２は、この判断をせずに、起動されたときに仮削除領域３９に属すブロック５０をすべて空き領域４０に追加してもよい。
【００５３】
さらに監視部１２は、更新部１１と非同期に動作できればよく、定期的に起動される必要はない。ファイル装置１０が、参照部１３、業務プログラム１６、または、サブファイル管理領域２１を備えていることも必須ではない。これらは、ファイル２０を共用する別の装置やファイル装置１０と通信できる別の装置に備えられていても良い。図１０は、これらの条件を加味した本実施形態のファイル装置１０の全体構成を示す。
【００５４】
本発明の第２の実施形態は以下の通りである。図１１は、本実施形態に於けるディレクトリ３２を示している。第１の実施形態のディレクトリ３２（図３）に、使用中ブロック数３６、仮削除ブロック数３７および仮削除ブロック基準比率３８が追加されている。
【００５５】
使用中ブロック数３６は、サブファイル３０に属するブロック５０の総数が格納されている。この使用中ブロック数３６に格納される値は、使用領域３１および仮削除領域３９に属するブロック５０の総数である。更新部１１または監視部１２は、使用領域３１および仮削除領域３９にブロック５０を加えるときに、その数をこの値に加算する。また、更新部１１または監視部１２は、使用領域３１および仮削除領域３９からブロック５０を削除または確保するときには、その数をこの値から減算する。
【００５６】
仮削除ブロック数３７は、サブファイル３０の仮削除領域３９に属するブロック５０の総数である。更新部１１は、仮削除領域３９にブロック５０を加えるときに、その数をこの値に加算する。また、更新部１１または監視部１２は、仮削除領域３９からブロック５０を削除または確保するときには、その数をこの値から減算する。
【００５７】
仮削除ブロック基準比率３８は、サブファイル３０が包含する仮削除領域３９に属すブロック５０の数を、使用中ブロック数３６との割合で規定する。例えば、使用中ブロック数３６が３、仮削除ブロック基準比率３８が３０％の場合、仮削除領域３９に属するブロック５０の数は、１まで下げて良いことを意味する。この比率は、サブファイル３０の拡大縮小の振れ幅に応じて適宜設定される。
【００５８】
本実施例の監視部１２は、起動されると図９に記載の監視処理を行った後、図１２に記載される監視処理を行う。本処理は、仮削除領域３９に属するブロック５０が存在するすべてのサブファイル３０に対して行われる。
【００５９】
監視部１２は、使用中ブロック数３６に仮削除ブロック基準比率３８で示される比率を掛け、切り上げて整数化する（Ａ１）。同部は、仮削除ブロック数３７の値からこの整数値を減算する（Ａ２）。同部は、この減算結果が正であれば（Ａ３でＹ）、この減算結果分の数のブロック５０を、仮削除領域３９から削除する（Ａ４）。ここでの削除は、中間ポインタ３４が示すブロック５０から始まって、次ポインタ５１をたどりながら減算結果数分のブロック５０をチェーンからはずすことを意味する。同部は、当該ブロック５０を空き領域４０に追加（第２の解放）をする（Ａ５）。
【００６０】
なお、減算結果が正でなければ（Ａ３でＮ）、監視部１２は終了する。
【００６１】
その他は、第１の実施例と同じである。なお、上述の説明ではブロック５０は固定長であることを前提としたが、本実施例はブロック５０が可変長の場合にも実装可能である。
【００６２】
この場合、使用中ブロック数３６、仮削除ブロック数３７の代わりに、使用領域サイズ、仮削除領域サイズがディレクトリ３２に追加される。そして、監視部１２などは、ブロック５０の数の代わりにブロック５０に格納されている領域サイズに基づいた加減算処理などを行う。
【００６３】
第２の実施形態では、あるサブファイル３０に一時的に想定以上に大量のブロック５０が割り当てられ、その後、仮削除された場合でも、ブロック５０を有効に活用することができる。その理由は、監視部１２が、所定期間の経過を待たず、短時間で仮削除領域３９のブロックを空き領域４０に戻すからである。即ち、想定以上に大量に割り当てられたブロック５０は、再利用されない場合が多いが、本実施形態によればこれらのブロック５０を速やかに空き領域４０に戻すことが出来る。
【００６４】
本発明の第３の実施形態は以下の通りである。図１３は、本実施の形態の空き管理領域４１を示す。第１および第２の実施形態の空き管理領域４１（図４）に、空きブロック数４４と基準ブロック数４５が追加されている。
【００６５】
空きブロック数４４は空き領域４０に属するブロック５０の総数である。監視部１２は、空き領域４０にブロック５０を加えるときに、その数をこの値に加算する。また、更新部１１または監視部１２は、空き領域４０からブロック５０を確保するときには、その数をこの値から減算する。
【００６６】
基準ブロック数４５は、上述の第２の解放を行う基準を与える。即ち、本実施形態に於いて監視部１２は、空きブロック数４４の値が基準ブロック数４５の値以下の場合のみ図１２に記載の処理を行う。ファイル２０の領域の使用率が高いときのみ、第２の解放処理を行うのである。
【００６７】
本実施形態では、第２の解放処理に伴い発生しうる仮削除領域３９に属するブロック５０の不足を回避できる。監視部１２が、空き領域４０に基準ブロック数４５以上の十分な空きが存在すれば、第２の解放処理を抑止するからである。
【図面の簡単な説明】
【００６８】
【図１】ファイル装置の全体構成を示す図である。
【図２】ファイルの全体構成を示す図である。
【図３】サブファイルの管理方法を示す図である。
【図４】空き領域の管理方法を示す図である。
【図５】ブロックの構成を示す図である。
【図６】更新部のフローチャートである。
【図７】更新部のフローチャートである。
【図８】参照部のフローチャートである。
【図９】監視部のフローチャートである。
【図１０】ファイル装置の全体構成を示す図である。
【図１１】第２の実施形態のディレクトリの構成を示す図である。
【図１２】第２の実施形態の監視部のフローチャートである。
【図１３】第３の実施形態の空き管理領域の構成を示す図である。
【符号の説明】
【００６９】
１０    ファイル装置
１１    更新部
１２    監視部
１３    参照部
１４    時計
１５    ファイル制御プログラム
１６    業務プログラム
２０    ファイル
２１    サブファイル管理領域
３０    サブファイル
３１    使用領域
３２    ディレクトリ
３３    先頭ポインタ
３４    中間ポインタ
３５    最終ポインタ
３６    使用中ブロック数
３７    仮削除ブロック数
３８    仮削除ブロック基準比率
３９    仮削除領域
４０    空き領域
４１    空き管理領域
４２    第１空きポインタ
４３    第２空きポインタ
４４    空きブロック数
４５    基準ブロック数
５０    ブロック
５１    次ポインタ
５２    前ポインタ
５３    削除日時
５４    ユーザデータ領域
【図１】
2009048222.tif 000003
【図２】
2009048222.tif 000004
【図３】
2009048222.tif 000005
【図４】
2009048222.tif 000006
【図５】
2009048222.tif 000007
【図６】
2009048222.tif 000008
【図７】
2009048222.tif 000009
【図８】
2009048222.tif 000010
【図９】
2009048222.tif 000011
【図１０】
2009048222.tif 000012
【図１１】
2009048222.tif 000013
【図１２】
2009048222.tif 000014
【図１３】
2009048222.tif 000015