(57)【要約】【課題】領域共用ファイルにおけるメンバの削除処理を高速化する。【解決手段】領域共用ファイル３におけるメンバを削除する際、メンバ削除手段１２は、削除対象となるメンバに割り当てられているデータブロックを、データブロック間のチェーンを辿りながら求めると共に求めたデータブロックのアドレスをメモリ領域２上の拡張空データブロック管理表２３に一旦登録する。メンバに割り当てられている全てのデータブロックのアドレスを拡張空データブロック管理表２３に登録すると、メンバ削除手段１２は、解放されるデータブロックを複数含むデータブロック群に対応するＢＡＭブロック５１−ｊについては、拡張空データブロック管理表２３に登録されたアドレスに基づいて一回の入出力でＢＡＭ記述を更新する。【選択図】      図１
2004334255.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータブロックから構成されるデータ部と、
該データ部中のデータブロックを、複数のデータブロックを含む複数のデータブロック群にグループ分けした際の各データブロック群毎のＢＡＭブロックから構成され、該各ＢＡＭブロックが、データブロック毎のビットによって対応するデータブロックがメンバに割り当て済みか否かを示すＢＡＭ記述を保持するＢＡＭ部と、
データブロックが割り当てられたメンバのメンバ名、先頭データブロックのアドレスおよび終端データブロックのアドレスが格納されるディレクトリエントリから構成されるディレクトリ部とを含む領域共用ファイルを管理する領域共用ファイル管理装置であって、
メンバの削除時、削除対象となるメンバを構成するデータブロックを、データブロック間のチェーンを辿りながら求めると共に該求めたデータブロックのアドレスをメモリ領域に格納し、前記メンバを構成する全てのデータブロックのアドレスを前記メモリ領域に格納した後、解放されるデータブロックを複数含むデータブロック群に対応するＢＡＭブロックについては、前記メモリ領域に格納されたアドレスに基づいて一回の入出力でＢＡＭ記述を更新するメンバ削除手段を備えたことを特徴とする領域共用ファイル管理装置。
【請求項２】
請求項１記載の領域共用ファイル管理装置において、
前記メンバ削除手段が、解放されるデータブロックを複数含むデータブロック群に対応するＢＡＭブロックを前記ＢＡＭ部から入力し、該入力したＢＡＭブロック中のＢＡＭ記述の内の、前記解放されるデータブロックに対応するビットを未使用に更新した後、前記ＢＡＭ部に書き戻す構成を有することを特徴とする領域共用ファイル管理装置。
【請求項３】
複数のデータブロックから構成されるデータ部と、
該データ部中のデータブロックを、複数のデータブロックを含む複数のデータブロック群にグループ分けした際の各データブロック群毎のＢＡＭブロックから構成され、該各ＢＡＭブロックが、データブロック毎のビットによって対応するデータブロックがメンバに割り当て済みか否かを示すＢＡＭ記述を保持するＢＡＭ部と、
データブロックが割り当てられたメンバのメンバ名、先頭データブロックのアドレスおよび終端データブロックのアドレスが格納されるディレクトリエントリから構成されるディレクトリ部とを含む領域共用ファイルを管理する領域共用ファイル管理装置であって、
メモリ領域上に設けられた拡張空データブロック管理表と、
メンバの削除時、削除対象となるメンバを構成するデータブロックを、データブロック間のチェーンを辿りながら求めると共に該求めたデータブロックのアドレスを前記拡張空データブロック管理表に登録し、前記メンバを構成する全てのデータブロックのアドレスを拡張空データブロック管理表に登録した後、解放されるデータブロックを複数含むデータブロック群に対応するＢＡＭブロックについては、前記拡張空データブロック管理表に登録されたアドレスに基づいて一回の入出力でＢＡＭ記述を更新するメンバ削除手段とを備えたことを特徴とする領域共用ファイル管理装置。
【請求項４】
複数のデータブロックから構成されるデータ部と、
該データ部中のデータブロックを、複数のデータブロックを含む複数のデータブロック群にグループ分けした際の各データブロック群毎のＢＡＭブロックから構成され、該各ＢＡＭブロックが、データブロック毎のビットによって対応するデータブロックがメンバに割り当て済みか否かを示すＢＡＭ記述を保持するＢＡＭ部と、
データブロックが割り当てられたメンバのメンバ名、先頭データブロックのアドレスおよび終端データブロックのアドレスが格納されるディレクトリエントリから構成されるディレクトリ部とを含む領域共用ファイルにおけるメンバ削除方法であって、
削除対象となるメンバを構成するデータブロックを、データブロック間のチェーンを辿りながら求めると共に該求めたデータブロックのアドレスをメモリ領域に格納する格納ステップと、
該格納ステップにおいて、前記メンバを構成する全てのデータブロックのアドレスを前記メモリ領域に格納した後、解放されるデータブロックを複数含むデータブロック群に対応するＢＡＭブロックについては、前記メモリ領域に格納されたアドレスに基づいて一回の入出力でＢＡＭ記述を更新するＢＡＭ記述更新ステップとを含むことを特徴とするメンバ削除方法。
【請求項５】
請求項４記載のメンバ削除方法において、
ＢＡＭ記述更新ステップが、解放されるデータブロックを複数含むデータブロック群に対応するＢＡＭブロックを前記ＢＡＭ部から入力し、該入力したＢＡＭブロック中のＢＡＭ記述の内の、前記解放されるデータブロックに対応するビットを未使用に更新した後、前記ＢＡＭ部に書き戻す処理を行うことを特徴とするメンバ削除方法。
【請求項６】
コンピュータを、
複数のデータブロックから構成されるデータ部と、該データ部中のデータブロックを、複数のデータブロックを含む複数のデータブロック群にグループ分けした際の各データブロック群毎のＢＡＭブロックから構成され、該各ＢＡＭブロックが、データブロック毎のビットによって対応するデータブロックがメンバに割り当て済みか否かを示すＢＡＭ記述を保持するＢＡＭ部と、データブロックが割り当てられたメンバのメンバ名、先頭データブロックのアドレスおよび終端データブロックのアドレスが格納されるディレクトリエントリから構成されるディレクトリ部とを含む領域共用ファイルを管理する領域共用ファイル管理装置として機能させるためのプログラムであって、
前記コンピュータを、
メンバの削除時、削除対象となるメンバを構成するデータブロックを、データブロック間のチェーンを辿りながら求めると共に該求めたデータブロックのアドレスをメモリ領域に格納し、前記メンバを構成する全てのデータブロックのアドレスを前記メモリ領域に格納した後、解放されるデータブロックを複数含むデータブロック群に対応するＢＡＭブロックについては、前記メモリ領域に格納されたアドレスに基づいて一回の入出力でＢＡＭ記述を更新するメンバ削除手段として機能させるためのプログラム。
【請求項７】
請求項６記載のプログラムにおいて、
前記メンバ削除手段が、解放されるデータブロックを複数含むデータブロック群に対応するＢＡＭブロックを前記ＢＡＭ部から入力し、該入力したＢＡＭブロック中のＢＡＭ記述の内の、前記解放されるデータブロックに対応するビットを未使用に更新した後、前記ＢＡＭ部に書き戻す構成を有することを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のメンバによってデータ部が共用される領域共用ファイルに関し、特に、メンバの削除処理を高速化する技術に関する。
【０００２】
【従来の技術】
従来のこの種の技術として、領域共用ファイルのデータ領域を連続した定数個のデータブロックからなる論理トラックに分割し、この論理トラックをメンバに対する割り当て及び解放の単位とし、論理トラックを論理トラック使用状況ビットマップ（ＢＡＭブロック）で管理する場合に、ＢＡＭブロックの一部をメモリテーブル化した空論理トラック管理テーブルを作成することにより、ＢＡＭブロックへのアクセス回数を減らし、メンバの削除処理を高速化する技術が知られている（例えば、特許文献１参照）。即ち、上述した従来の技術では、メンバの削除時、データブロック間のチェーンを辿りながらメンバが占有していた論理トラックを空論理トラック管理テーブルに返却し、空論理トラック管理テーブルが満杯になり、返却できない場合には、直接ＢＡＭブロックに論理トラックを返却するようにしている。
【０００３】
【特許文献１】
特開昭６２−１５４１４９号公報
【０００４】
【発明が解決しようとする課題】
上述した従来の技術は、領域共用ファイル上のＢＡＭブロックに比較して高速アクセスが可能なメモリ上の空論理トラック管理テーブルを利用することにより、メンバの削除処理を高速化できるようにしている。しかし、削除対象としているメンバが多数のデータブロックにより構成されている場合には、削除処理中に空論理トラック管理テーブルが満杯になる場合があり、このような場合には、データブロック間のチェーンに基づいて解放すべきデータブロックを検出する度に、領域共用ファイル上のＢＡＭブロックを入出力しなければならないので、十分な削除処理速度を得られないという問題があった。
【０００５】
そこで、本発明の目的は、ＢＡＭブロックの入出力回数を減らすことにより、メンバの削除処理を高速化できるようにすることにある。
【０００６】
【課題を解決するための手段】
本発明にかかる第１の領域共用ファイル管理装置は、上記目的を達成するため、
複数のデータブロックから構成されるデータ部と、
該データ部中のデータブロックを、複数のデータブロックを含む複数のデータブロック群にグループ分けした際の各データブロック群毎のＢＡＭブロックから構成され、該各ＢＡＭブロックが、データブロック毎のビットによって対応するデータブロックがメンバに割り当て済みか否かを示すＢＡＭ記述を保持するＢＡＭ部と、
データブロックが割り当てられたメンバのメンバ名、先頭データブロックのアドレスおよび終端データブロックのアドレスが格納されるディレクトリエントリから構成されるディレクトリ部とを含む領域共用ファイルを管理する領域共用ファイル管理装置であって、
メンバの削除時、削除対象となるメンバを構成するデータブロックを、データブロック間のチェーンを辿りながら求めると共に該求めたデータブロックのアドレスをメモリ領域に格納し、前記メンバを構成する全てのデータブロックのアドレスを前記メモリ領域に格納した後、解放されるデータブロックを複数含むデータブロック群に対応するＢＡＭブロックについては、前記メモリ領域に格納されたアドレスに基づいて一回の入出力でＢＡＭ記述を更新するメンバ削除手段を備えたことを特徴とする。
【０００７】
より具体的には、本発明にかかる第２の領域共用ファイル管理装置は、第１の領域共用ファイル管理装置において、
前記メンバ削除手段が、解放されるデータブロックを複数含むデータブロック群に対応するＢＡＭブロックを前記ＢＡＭ部から入力し、該入力したＢＡＭブロック中のＢＡＭ記述の内の、前記解放されるデータブロックに対応するビットを未使用に更新した後、前記ＢＡＭ部に書き戻す構成を有することを特徴とする。
【０００８】
また、本発明にかかる第３の領域共用ファイル管理装置は、
複数のデータブロックから構成されるデータ部と、
該データ部中のデータブロックを、複数のデータブロックを含む複数のデータブロック群にグループ分けした際の各データブロック群毎のＢＡＭブロックから構成され、該各ＢＡＭブロックが、データブロック毎のビットによって対応するデータブロックがメンバに割り当て済みか否かを示すＢＡＭ記述を保持するＢＡＭ部と、
データブロックが割り当てられたメンバのメンバ名、先頭データブロックのアドレスおよび終端データブロックのアドレスが格納されるディレクトリエントリから構成されるディレクトリ部とを含む領域共用ファイルを管理する領域共用ファイル管理装置であって、
メモリ領域上に設けられた拡張空データブロック管理表と、
メンバの削除時、削除対象となるメンバを構成するデータブロックを、データブロック間のチェーンを辿りながら求めると共に該求めたデータブロックのアドレスを前記拡張空データブロック管理表に登録し、前記メンバを構成する全てのデータブロックのアドレスを拡張空データブロック管理表に登録した後、解放されるデータブロックを複数含むデータブロック群に対応するＢＡＭブロックについては、前記拡張空データブロック管理表に登録されたアドレスに基づいて一回の入出力でＢＡＭ記述を更新するメンバ削除手段を備えたことを特徴とする。
【０００９】
【作用】
メンバの削除時、メンバ削除手段は、
削除対象となるメンバを構成するデータブロックを、データブロック間のチェーンを辿りながら求め、求めたデータブロックのアドレスをメモリ領域に一旦格納しておく。その後、上記メンバを構成する全てのデータブロックのアドレスをメモリ領域に格納すると、解放されるデータブロックを複数含むデータブロック群に対応するＢＡＭブロックについては、上記メモリ領域に格納されたアドレスに基づいて一回の入出力でＢＡＭ記述を更新する。例えば、解放されるデータブロックを１０個含むデータブロック群に対応するＢＡＭブロックを考えた場合、データブロック間のチェーンに基づいて解放すべきデータブロックを検出する度に、ＢＡＭ記述を変更する従来の技術では、上記ＢＡＭブロックを１０回入出力しなければならないが、本発明では、上記ＢＡＭブロックに対する入出力を１回とすることができるので、メンバの削除処理を高速化することができる。
【００１０】
【発明の実施の形態】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【００１１】
【実施例の構成】
図１は本発明にかかる領域共用ファイル管理装置の実施例のブロック図であり、プログラム制御により動作するホストコンピュータ（中央処理装置；プロセッサ；データ処理装置）１と、領域共用ファイル３とから構成されている。
【００１２】
領域共用ファイル３は、ディレクトリ部４、ＢＡＭ部５、および、データ部６から構成される。
【００１３】
データ部６は、複数個のデータブロック６１から構成される。データブロック６１は、データを格納するための物理的な最小単位であり、図２に示すように１個のブロックヘッダ６２と、複数個のレコード６３−１〜６３−ｎとから構成されている。ブロックヘッダ６２には、図３に示すように、次データブロックアドレス６２１と、前データブロックアドレス６２２と、レコード数６２３と、バイト数６２４とが格納される、次データブロックアドレス６２１、前データブロックアドレス６２２は、それぞれ当該データブロックが割り当てられているメンバ中の、当該ブロックよりも１つ後、１つ前のデータブロックのアドレスを示す。なお、メンバ中の先頭データブロックの前データブロックアドレス６２２及びメンバ中の最終データブロックの次データブロックアドレス６２１にはオール“０”が設定される。また、データ部６中のデータブロック６１は、アドレス順に、それぞれが５個のデータブロックを含むデータブロック群Ｇ１、Ｇ２、…にグループ分けされている。つまり、アドレス「０１」〜「０５」のデータブロック６１によりデータブロック群Ｇ１が構成され、アドレス「０６」〜「１０」のデータブロック６１によりデータブロック群Ｇ２が構成されている。
【００１４】
ＢＡＭ部５は、データブロック群Ｇ１、Ｇ２、…毎のＢＡＭブロック５１−１、５１−２、…から構成されている。ＢＡＭブロック５１は、図４に示すように、１つのブロックヘッダ５２と、対応するデータブロック群中のデータブロックのメンバへの割り当て状況を管理しているビットマップであるＢＡＭ記述５３とから構成される。ブロックヘッダ５２は、当該ＢＡＭブロック５１と対応するデータブロック群中に存在する、未使用のデータブロック数を示す。例えば、図１に示したＢＡＭブロック５１−４は、アドレス「１６」〜「２０」の５個のデータブロック６１から構成されるデータブロック群Ｇ４に対応するものであり、ＢＡＭ記述「１００１１」は、アドレス「１６」「１９」「２０」のデータブロックが未使用で、アドレス「１７」「１８」のデータブロックが割り当て済みであることを示している。
【００１５】
ディレクトリ部４は、複数のディレクトリブロック４１で構成されている。ディレクトリブロック４１は、図５に示すように、１個のブロックヘッダ４２と、複数個のディレクトリエントリ４３とから構成されている。ディレクトリエントリ４３には、図６に示すように、データブロックを割り当てたメンバのメンバ名４３１と、先頭データブロックアドレス４３２と、最終データブロックアドレス４３３とが設定される。先頭データブロックアドレス４３２は、メンバに割り当てられた先頭のデータブロックのアドレスを示し、最終データブロックアドレス４３３は、メンバに割り当てられた終端のデータブロックのアドレスを示す。
【００１６】
ホストコンピュータ１内には、メンバ作成手段１１、メンバ削除手段１２、および、メモリ領域２が存在し、メモリ領域２内には、ＢＡＭブロック管理表２１、空データブロック管理表２２、および、拡張空データブロック管理表２３が存在する。
【００１７】
メンバ作成手段１１は、メンバ名をキーとして、ディレクトリ部４にディレクトリエントリ４３を登録すると共に、空データブロックをメンバに割り当て、データの出力を行う。
【００１８】
メンバ削除手段１２は、メンバ名をキーとして、ディレクトリ部４に登録されているディレクトリエントリ４３を削除すると共に、当該メンバのデータが格納されていたデータブロックの解放を行う。
【００１９】
ＢＡＭブロック管理表２１は、各ＢＡＭブロック５１−１、５１−２…中に空データブロック（メンバに割り当てられていないデータブロック）が存在するか否かを管理するビットマップである。図７に示すように、空データブロックが存在するＢＡＭブロックに対応するビットには“１”が、空データブロックが存在しないＢＡＭブロックに対応するビットには“０”が設定される。また、ビットマップの第１ビット目、第２ビット目、…は、それぞれＢＡＭブロック５１−１、５１−２、…に対応している。
【００２０】
空データブロック管理表２２は、図８に示すように、１つのヘッダ部２４と、複数のエントリ部２５とから構成され、データ部６に存在する空データブロックの内の、一部の空データブロックのアドレスが格納される。ヘッダ部２４には、図９に示すように、当該空データブロック管理表２２の総エントリ数２４１と、次の拡張空データブロック管理表２３へのポインタ２４２が設定される。なお、次の拡張空データブロック管理表が存在しない場合には、ＮＵＬＬが設定される。また、エントリ部２５には、図１０に示すように、データ部６に存在する空データブロックのアドレス２５２と、当該空データブロックのビットマップが格納されているＢＡＭブロックのアドレス２５１とが格納される。
【００２１】
拡張空データブロック管理表２３は、メンバ削除時に一時的に使用される管理表で、構成は空データブロック管理表２２に準ずる。
【００２２】
記録媒体Ｋは、ディスク、半導体メモリ、その他の記録媒体であり、ホストコンピュータ１上にメンバ作成手段１１、メンバ削除手段１２を実現するためのプログラムが記録されている。このプログラムは、ホストコンピュータ１によって読み取られ、その動作を制御することにより、ホストコンピュータ１上にメンバ作成手段１１、メンバ削除手段１２を実現する。
【００２３】
【実施例の動作の説明】
次に、各図を参照して本実施例の動作について詳細に説明する。
【００２４】
先ず、メンバ作成時の動作について説明する。
【００２５】
メンバ作成手段１１は、指定されたメンバ名が格納されているディレクトリエントリ４３の検索を行う（図１１のステップＡ１）。当該メンバのディレクトリエントリ４３が既に存在するかどうかの判断を行い（ステップＡ２）、ディレクトリエントリ４３が既に存在する場合は、エラー情報を返却し（ステップＡ２１）処理を終了する。これに対して、ディレクトリエントリ４３が存在しなかった場合は、ディレクトリエントリ４３を登録する（ステップＡ３）。
【００２６】
次に、空データブロック管理表２２のエントリ部２５を検索し（ステップＡ４）、空データブロックのアドレスを格納したエントリ部２５を探し出す（ステップＡ５）。空データブロックのアドレスを格納したエントリ部２５を探し出すことができた場合は、上記エントリ部２５中のアドレスによって示される空データブロックをメンバに割り当てた後（ステップＡ６）、上記エントリ部２５を０クリアし（ステップＡ７）、更に、割り当てたデータブロック６１にデータ出力を行う（ステップＡ８）。なお、ステップＡ６においては、必要に応じて、先頭データブロックアドレス４３２、次データブロックアドレス６２１、前データブロックアドレス６２２を更新する。
【００２７】
次に、ステップ８で出力したデータが当該メンバの最終データかどうかの判断を行い（ステップＡ９）、最終データだった場合は、当該メンバのディレクトリエントリ４３の最終データブロックアドレス４３３に最後に出力したデータブロック６１のアドレスを格納する（ステップＡ２０）。これに対して、最終データではない場合は、ステップ４に戻る。
【００２８】
ステップＡ５で空データブロック管理表２２上に空データブロックのアドレスを格納したエントリ部２５を探し出すことができなかった場合は、ＢＡＭブロック管理表２１を検索し（ステップＡ１０）、空データブロックを管理しているＢＡＭブロックが存在するかどうかを確認する（ステップＡ１１）。ここで、ＢＡＭブロック５１−１、５１−２、…は、それぞれデータブロック群Ｇ１、Ｇ２、…に対応するものであるので、ステップＡ１１では、空データブロックが存在するデータブロック群が存在するかどうかを確認していることになる。
【００２９】
そして、空データブロックを管理しているＢＡＭブロックが存在しない場合は、エラー情報返却を行い（ステップＡ２１）、処理を終了する。これに対して、空データブロックを管理しているＢＡＭブロック５１−ｊが存在した場合は、先ず、ＢＡＭブロック５１−ｊの入力を行う（ステップＡ１２）。その後、空データブロック情報（データブロック群Ｇｊ中の空データブロックの内の１つのアドレス）とＢＡＭブロック５１−ｊのアドレスとを空データブロック管理表２２の空エントリに登録し（ステップＡ１３）、更に、登録した空データブロックをＢＡＭブロック５１−ｊのＢＡＭ記述上、割り当て済み状態とする（ステップＡ１４）。
【００３０】
次に、空データブロック管理表２２の全エントリ部２５に空データブロック情報が登録されているかどうかを判断する（ステップＡ１５）。そして、全エントリ部２５に空データブロック情報が登録されている場合は、ステップＡ１２で入力したＢＡＭブロック５１−ｊ中に空データブロック情報が残っているか否か、即ちデータブロック群Ｇｊに空データブロックが残っているか否かを判断し（ステップＡ２２）、残っている場合は、ステップＡ４に戻り、残っていない場合は、ＢＡＭブロック管理表２１のＢＡＭブロック５１−ｊに対応するビットを“０”に更新し、データブロック群Ｇｊに空データブロックが残っていないことを表示した後（ステップＡ２３）、ステップＡ４に戻る。
【００３１】
これに対して、空データブロック管理表２２に、空データブロック情報が登録されていないエントリ部２５が存在する場合（ステップＡ１５がＮＯ）は、ステップＡ１２で入力したＢＡＭブロック５１−ｊ中に空データブロック情報が残っているかどうかを判断し（ステップＡ１６）、残っている場合は、ステップＡ１３に戻る。これに対して、空データブロック情報が残っていない場合は、ＢＡＭブロック管理表２１上のＢＡＭブロック５１−ｊに該当するビットを“０”とし（ステップＡ１７）、再度、ＢＡＭブロック管理表２１を検索する（ステップＡ１８）。そして、空データブロックを管理しているＢＡＭブロック５１−ｋが存在する場合はステップＡ１２に戻り、空データブロックを管理しているＢＡＭブロック５１−ｋが存在しない場合はステップＡ４に戻る。以上がメンバ作成時の動作である。
【００３２】
次にメンバ削除時の動作について説明する。
【００３３】
メンバ削除手段１２は、指定されたメンバ名が格納されているディレクトリエントリ４３の検索を行う（図１２のステップＢ１）。当該メンバのディレクトリエントリ４３が既に存在するかどうかの判断を行い（ステップＢ２）、ディレクトリエントリ４３が存在しない場合は、エラー情報を返却し（ステップＢ２０）、処理を終了する。
【００３４】
これに対して、ディレクトリエントリ４３が存在した場合は、指定されたメンバ名が格納されているディレクトリエントリ４３を削除し（ステップＢ３）、削除したディレクトリエントリ４３中に格納されていた先頭データブロックアドレス４３２のデータブロック６１を入力する（ステップＢ４）。次に、空データブロック管理表２２を検索し（ステップＢ５）、空データブロック管理表２２中に空エントリ部２５が存在するかどうかを確認する（ステップＢ６）。
【００３５】
そして、空データブロック管理表２２中に空エントリ部２５が存在しない場合（ステップＢ６がＮＯ）は、拡張空データブロック管理表２３を検索し（ステップＢ１０）、拡張空データブロック管理表２３中に空エントリ部２５が存在するかどうかを判断する（ステップＢ１１）。拡張空データブロック管理表２３中に空エントリが存在しない場合は、拡張データブロック管理表２３を拡張した後（ステップＢ１２）、入力したデータブロック６１の情報を空データブロック情報として拡張空データブロック管理表２３のエントリ部２５に登録し（ステップＢ１３）、ステップＢ８に進む。ステップＢ１１で拡張空データブロック管理表２３中に空エントリが存在した場合は、ステップＢ１３に進む。
【００３６】
これに対して、空データブロック管理表２２中に空エントリ部２５が存在する場合（ステップＢ６がＹＥＳ）は、入力したデータブロック６１の情報を空データブロック情報として空データブロック管理表２２の空エントリ部２５に登録し（ステップＢ７）、入力したデータブロック６１のブロックヘッダから、次データブロック６１が存在するかどうかを判断する（ステップＢ８）。
【００３７】
そして、次データブロック６１が存在する場合は、次データブロック６１を入力して（ステップＢ９）、ステップＢ５に戻る。これに対して、次データブロック６１が存在しない場合（ステップＢ８がＮＯ）は、拡張空データブロック管理表２３を検索し（ステップＢ１４）、拡張空データブロック管理表２３中に空データブロック情報が格納されたエントリ部２５が存在するかどうかを判断する（ステップＢ１５）。
【００３８】
そして、拡張空データブロック管理表２３中に空データブロック情報が格納されたエントリ部２５が存在しない場合は処理を終了する。これに対して、拡張空データブロック管理表２３中に空データブロック情報が格納されたエントリ部２５が存在した場合（ステップＢ１５がＹＥＳ）は、先ず、当該空データブロック情報を返却すべきＢＡＭブロック５１−ｉを入力する（ステップＢ１６）。次いで、拡張空データブロック管理表２３上のエントリの内の、ＢＡＭブロック５１−ｉによって空データブロックであることが示されているデータブロックのアドレスを格納したエントリを全て０クリアし、更にＢＡＭブロック５１−ｉのビットマップの内の、上記０クリアしたエントリに格納されていたアドレスによって指し示されるデータブロックに対応するビットを“１”（未使用状態）とする（ステップＢ１７）。その後、ステップＢ１６で入力したＢＡＭブロック５１−ｉをＢＡＭ部５に出力し（ステップＢ１８）、更に、ＢＡＭブロック管理表２１中の当該ＢＡＭブロック５１−ｉに相当するビットを立てた後（ステップＢ１９）、ステップＢ１４に戻る。以上がメンバ削除時の動作である。
【００３９】
次に、具体例を挙げてメンバ削除時の動作について説明する。
【００４０】
今、メモリ領域２の内容および領域共用ファイル３の内容が図１に示すものである時に、削除対象とするメンバのメンバ名が指定されると、メンバ削除手段１２は、上記メンバ名が格納されているディレクトリエントリ４３の検索を行う（ステップＢ１）。この検索の結果、先頭データブロックアドレス４３２がアドレス「００」、最終データブロックアドレス４３３がアドレス「１５」となっているディレクトリエントリ４３が探し出されたとする。
【００４１】
その後、メンバ削除手段１２は、上記探し出したディレクトリエントリ４３を削除した後、削除対象にしているメンバの先頭データブロック（アドレス「００」のデータブロック）を入力する（ステップＢ４）。この時点では、空データブロック管理表２２の第４番目のエントリ部２５が空エントリとなっているので、メンバ削除手段１２は、この第４番目のエントリ部２５に先頭データブロックのアドレス「０００００１」と、このデータブロックのメンバへの割り当て状況を管理しているＢＡＭブロック５１−１のアドレス「０１」とを格納する（ステップＢ５〜Ｂ７）。この結果、空データブロック管理表２２、拡張空データブロック管理表２３の内容は、図１３に示すものとなる。
【００４２】
その後、メンバ削除手段１２は、削除対象にしているメンバ中の第２番目のデータブロック（アドレス「１２」のデータブロック）を入力する（ステップＢ８がＹＥＳ、Ｂ９）。この時点では、図１３に示すように、空データブロック管理表２２には、空エントリが存在しないので、拡張空データブロック管理表２３の空エントリに第２番目のデータブロックのアドレス「００００１２」と、このデータブロックのメンバへの割り当て状況を管理しているＢＡＭブロック５１−３のアドレス「０３」を格納する（ステップＢ１０〜Ｂ１３）。以下、同様にして、メンバ削除手段１２は、削除対象にしているメンバ中の各データブロックのアドレスおよびＢＡＭブロックのアドレスを拡張空データブロック管理表２３の空エントリ部２５に格納する。メンバ中の最後のデータブロックまで処理することにより、空データブロック管理表２２、拡張空データブロック管理表２３の内容は、図１４に示すものとなる。
【００４３】
その後、メンバ削除手段１２は、拡張空データブロック管理表２２（図１４参照）を検索し、その先頭エントリに格納されているＢＡＭブロックアドレス「０３」を取得する（ステップＢ１４）。次いで、アドレス「０３」のＢＡＭブロック５１−３を入力する。この入力したＢＡＭブロック５１−３のＢＡＭ記述は「０００１０」（図１参照）となっているので、アドレス「１１」「１２」「１３」「１５」が格納されているエントリが拡張空データブロック管理表２３中に存在すれば、そのエントリを０クリアする。この例の場合、拡張空データブロック管理表２３の第１番目、第４番目のエントリに、それぞれアドレス「００００１２」「００００１５」が格納されているので、メンバ削除手段１２は、上記第１番目、第４番目のエントリを０クリアする。更に、メンバ削除手段１２は、ステップＢ１６で入力したＢＡＭブロック５１−３のＢＡＭ記述「００００１０」の内、０クリアしたエントリに格納されていたアドレス「００００１２」「００００１５」に対応する第２ビット目、第５ビット目を“１”に更新する（ステップＢ１６、Ｂ１７）。その後、メンバ削除手段１２は、更新後のＢＡＭブロック５１−３をＢＡＭ部５に書き戻す（ステップＢ１８）。この結果、ＢＡＭ部５上のＢＡＭブロック５１−３のＢＡＭ記述は「０１０１１」となり、削除対象メンバに割り当てられていたアドレス「１２」「１５」のデータブロックは解放される（ステップＢ１９）。
【００４４】
その後、メンバ削除手段１２は、拡張空データブロック管理表２３を参照して前述した処理と同様の処理を行い、削除対象メンバに割り当てられていたデータブロックを全て解放する。
【００４５】
【発明の効果】
本発明の効果は、領域共用ファイルにおけるメンバの削除処理を高速化できることにある。
【００４６】
その理由は、メンバの削除時、削除対象となるメンバに割り当てられているデータブロックを、データブロック間のチェーンを辿りながら求める際に、求めたデータブロックのアドレスをメモリ領域に一旦格納しておき、上記メンバに割り当てられている全てのデータブロックのアドレスをメモリ領域に格納した後に、解放されるデータブロックを複数含むデータブロック群に対応するＢＡＭブロックについては、上記メモリ領域に格納されたアドレスに基づいて一回の入出力でＢＡＭ記述を更新するようにしているからである。例えば、解放されるデータブロックを１０個含むデータブロック群に対応するＢＡＭブロックを考えた場合、データブロック間のチェーンに基づいて解放すべきデータブロックを検出する度に、ＢＡＭ記述を変更する従来の技術では、上記ＢＡＭブロックを１０回入出力しなければならないが、本発明では、上記ＢＡＭブロックに対する入出力を１回とすることができるので、メンバの削除処理を高速化することができる。
【図面の簡単な説明】
【図１】本発明の実施例のブロック図である。
【図２】データブロック６１の構成例を示す図である。
【図３】データブロック６１のブロックヘッダ６２の構成例を示す図である。
【図４】ＢＡＭブロック５１の構成例を示す図である。
【図５】ディレクトリブロック４１の構成例を示す図である。
【図６】ディレクトリエントリ４３の構成例を示す図である。
【図７】ＢＡＭブロック管理表２１を説明するための図である。
【図８】空データブロック管理表２２、拡張空データブロック管理表２３を説明するための図である。
【図９】空データブロック管理表２２、拡張空データブロック管理表２３のヘッダ部２４の構成例を示す図である。
【図１０】空データブロック管理表２２、拡張空データブロック管理表２３のエントリ部２５の構成例を示す図である。
【図１１】メンバ作成手段１１の処理例を示すフローチャートである。
【図１２】メンバ削除手段１２の処理例を示すフローチャートである。
【図１３】メンバ削除時の動作を説明するための図である。
【図１４】メンバ削除時の動作を説明するための図である。
【符号の説明】
１…ホストコンピュータ
１１…メンバ作成手段
１２…メンバ削除手段
２…メモリ領域
２１…ＢＡＭブロック管理表
２２…空データブロック管理表
２３…拡張空データブロック管理表
３…領域共用ファイル
４…ディレクトリ部
５…ＢＡＭ部
６…データ部
Ｋ…記録媒体
【図１】
2004334255.tif 000003
【図２】
2004334255.tif 000004
【図３】
2004334255.tif 000005
【図４】
2004334255.tif 000006
【図５】
2004334255.tif 000007
【図６】
2004334255.tif 000008
【図７】
2004334255.tif 000009
【図８】
2004334255.tif 000010
【図９】
2004334255.tif 000011
【図１０】
2004334255.tif 000012
【図１１】
2004334255.tif 000013
【図１２】
2004334255.tif 000014
【図１３】
2004334255.tif 000015
【図１４】
2004334255.tif 000016