JPH1063555A - ファイル管理方法 - Google Patents
ファイル管理方法Info
- Publication number
- JPH1063555A JPH1063555A JP8217579A JP21757996A JPH1063555A JP H1063555 A JPH1063555 A JP H1063555A JP 8217579 A JP8217579 A JP 8217579A JP 21757996 A JP21757996 A JP 21757996A JP H1063555 A JPH1063555 A JP H1063555A
- Authority
- JP
- Japan
- Prior art keywords
- file
- block
- data
- allocated
- block number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】
【課題】 ファイル管理テーブル8及びファイル管理情
報領域11の割当ブロック番号リストは、ファイルに割
り当てられたブロックの番号を割当順に配列したもので
ある。ほとんどオーバヘッドなしでデータ書き込みの中
断したファイルについてテーブル8の割当ブロック番号
リストを回復する。 【解決手段】 領域11の割当ブロック番号リストはフ
ァイルの先頭のブロックの番号を常に保存する。データ
格納領域13の各ブロックにはデータと次に連結するブ
ロックの番号又は空のブロックであることを示す識別子
を記録する。ファイル管理プログラム6は、ファイルに
新規データを追加するときに余分の空ブロックを割り当
てる。ファイル書き込み処理が中断したとき、領域11
中の先頭ブロック番号及び各ブロックの次ブロック番号
を空のブロックまでたどってファイル管理テーブル8を
回復する。
報領域11の割当ブロック番号リストは、ファイルに割
り当てられたブロックの番号を割当順に配列したもので
ある。ほとんどオーバヘッドなしでデータ書き込みの中
断したファイルについてテーブル8の割当ブロック番号
リストを回復する。 【解決手段】 領域11の割当ブロック番号リストはフ
ァイルの先頭のブロックの番号を常に保存する。データ
格納領域13の各ブロックにはデータと次に連結するブ
ロックの番号又は空のブロックであることを示す識別子
を記録する。ファイル管理プログラム6は、ファイルに
新規データを追加するときに余分の空ブロックを割り当
てる。ファイル書き込み処理が中断したとき、領域11
中の先頭ブロック番号及び各ブロックの次ブロック番号
を空のブロックまでたどってファイル管理テーブル8を
回復する。
Description
【0001】
【発明の属する技術分野】本発明は、電子計算機による
ファイル管理に係わり、特にファイル管理情報とファイ
ル構造に特徴をもつファイル管理方法に関する。
ファイル管理に係わり、特にファイル管理情報とファイ
ル構造に特徴をもつファイル管理方法に関する。
【0002】
【従来の技術】従来、計算機システムにおいて外部記憶
装置にファイルを格納する方法としては、UNIX
(注)オペレーティングシステムによって提供されるよ
うな方法があった(注:UNIXはX/Open社が独
占的にライセンスしている米国ならびに他の国における
登録商標である)。UNIXオペレーティングシステム
では、外部記憶装置をブロックと呼ばれる単位に分割し
て管理し、計算機の利用者が格納しようとするデータを
ブロックの集合であるファイルに記録する手段を提供す
る。UNIXオペレーティングシステムでは、ファイル
をiノードと呼ばれる管理情報を用いて管理する。iノ
ードはファイルを構成しているブロックの通し番号の一
覧を記憶している。iノードは計算機の利用者がファイ
ルを使用していない間は外部記憶装置上に記憶されてお
り、実際にファイルを参照又は更新するためにファイル
の使用開始をするときに計算機の主記憶装置上に読み込
まれる。利用者が新たにファイルにデータを追加するた
めにファイルに新しくブロックを追加する必要が生じた
場合、UNIXオペレーティングシステムは、新たなブ
ロックを割り当てたことを主記憶上のiノードのみに記
録し、オーバヘッド軽減のため、外部記憶装置上のiノ
ードの更新は先送りにする(「UNIXカーネルの設
計」、1991 共立出版 87ページ)。この状態で
外部記憶装置にデータを書き込んでいる途中で障害によ
って計算機が停止すると、主記憶上のiノードの内容が
失われ、かつ外部記憶装置上のiノードはまだ更新され
ていないために、ファイルにどのブロックを新たに割り
当てたかという情報が失われてファイルの使用開始後に
新しく追加されたブロックに関するデータを取り出すこ
とができなくなる。
装置にファイルを格納する方法としては、UNIX
(注)オペレーティングシステムによって提供されるよ
うな方法があった(注:UNIXはX/Open社が独
占的にライセンスしている米国ならびに他の国における
登録商標である)。UNIXオペレーティングシステム
では、外部記憶装置をブロックと呼ばれる単位に分割し
て管理し、計算機の利用者が格納しようとするデータを
ブロックの集合であるファイルに記録する手段を提供す
る。UNIXオペレーティングシステムでは、ファイル
をiノードと呼ばれる管理情報を用いて管理する。iノ
ードはファイルを構成しているブロックの通し番号の一
覧を記憶している。iノードは計算機の利用者がファイ
ルを使用していない間は外部記憶装置上に記憶されてお
り、実際にファイルを参照又は更新するためにファイル
の使用開始をするときに計算機の主記憶装置上に読み込
まれる。利用者が新たにファイルにデータを追加するた
めにファイルに新しくブロックを追加する必要が生じた
場合、UNIXオペレーティングシステムは、新たなブ
ロックを割り当てたことを主記憶上のiノードのみに記
録し、オーバヘッド軽減のため、外部記憶装置上のiノ
ードの更新は先送りにする(「UNIXカーネルの設
計」、1991 共立出版 87ページ)。この状態で
外部記憶装置にデータを書き込んでいる途中で障害によ
って計算機が停止すると、主記憶上のiノードの内容が
失われ、かつ外部記憶装置上のiノードはまだ更新され
ていないために、ファイルにどのブロックを新たに割り
当てたかという情報が失われてファイルの使用開始後に
新しく追加されたブロックに関するデータを取り出すこ
とができなくなる。
【0003】また計算機に障害が発生した場合でもファ
イルの管理情報が失われないようにするファイル格納方
法として、利用者のデータを外部記憶装置に書き込むと
同時にファイルに対するブロックの追加などの操作の記
録を外部記憶装置上に残す方法があった。この方法によ
れば、障害発生時にもファイル管理情報が失われないよ
うにすることができる。しかしこの方法を用いると、外
部記憶装置上で利用者のデータを格納する領域とは別の
離れた領域に操作の記録を書き込むため、外部記憶装置
に対する書き込み要求数が増加し、ファイルへのデータ
書き込み時のオーバヘッドが増加する(「Inside
Windows NT ファイルシステム」、199
5 アスキー出版局)。
イルの管理情報が失われないようにするファイル格納方
法として、利用者のデータを外部記憶装置に書き込むと
同時にファイルに対するブロックの追加などの操作の記
録を外部記憶装置上に残す方法があった。この方法によ
れば、障害発生時にもファイル管理情報が失われないよ
うにすることができる。しかしこの方法を用いると、外
部記憶装置上で利用者のデータを格納する領域とは別の
離れた領域に操作の記録を書き込むため、外部記憶装置
に対する書き込み要求数が増加し、ファイルへのデータ
書き込み時のオーバヘッドが増加する(「Inside
Windows NT ファイルシステム」、199
5 アスキー出版局)。
【0004】
【発明が解決しようとする課題】UNIXオペレーティ
ングシステムのファイル格納方法においては、障害発生
時にファイル管理情報が失われ、外部記憶装置に書き込
み中だったデータを回復できなくなる危険性があるとい
う問題があった。またデータ書き込みと同時にファイル
操作の記録を書き込む方法ではUNIXオペレーティン
グシステムの方法に比べて信頼性が高いものの、通常の
書き込み時にオーバヘッドが増加するという問題点があ
った。
ングシステムのファイル格納方法においては、障害発生
時にファイル管理情報が失われ、外部記憶装置に書き込
み中だったデータを回復できなくなる危険性があるとい
う問題があった。またデータ書き込みと同時にファイル
操作の記録を書き込む方法ではUNIXオペレーティン
グシステムの方法に比べて信頼性が高いものの、通常の
書き込み時にオーバヘッドが増加するという問題点があ
った。
【0005】本発明の目的は、ファイルに対する新規ブ
ロックの追加を容易にするようなファイル管理方法を提
供することにある。
ロックの追加を容易にするようなファイル管理方法を提
供することにある。
【0006】本発明の他の目的は、オーバヘッドをほと
んど増加させずに計算機に障害が発生したときデータ書
き込み中であったファイルのファイル管理情報を回復す
ることにある。
んど増加させずに計算機に障害が発生したときデータ書
き込み中であったファイルのファイル管理情報を回復す
ることにある。
【0007】本発明のさらに他の目的は、ファイル中の
データを更新するとき更新前のデータを保存するような
ファイル管理方法を提供することにある。
データを更新するとき更新前のデータを保存するような
ファイル管理方法を提供することにある。
【0008】本発明のさらに他の目的は、更新前後のデ
ータをファイルのバージョンによって区別し、指定した
バージョンのデータブロックへのアクセスを容易にする
ようなファイル管理方法を提供することにある。
ータをファイルのバージョンによって区別し、指定した
バージョンのデータブロックへのアクセスを容易にする
ようなファイル管理方法を提供することにある。
【0009】
【課題を解決するための手段】本発明は、電子計算機の
主記憶装置に格納されて実行されるファイル管理プログ
ラムによって実現されるファイル管理方法であって、フ
ァイルに新規データのブロックを追加する前にあらかじ
めこのファイルに余分の未使用ブロックを割り当ててお
き、ファイルに新規データのブロックを追加するときに
あらかじめ割り当てられた未使用ブロックに新規データ
を格納するとともに、さらにこのファイルに余分の未使
用ブロックを割り当てるファイル管理方法を特徴とす
る。
主記憶装置に格納されて実行されるファイル管理プログ
ラムによって実現されるファイル管理方法であって、フ
ァイルに新規データのブロックを追加する前にあらかじ
めこのファイルに余分の未使用ブロックを割り当ててお
き、ファイルに新規データのブロックを追加するときに
あらかじめ割り当てられた未使用ブロックに新規データ
を格納するとともに、さらにこのファイルに余分の未使
用ブロックを割り当てるファイル管理方法を特徴とす
る。
【0010】また本発明は、ファイルに対して最初に割
り当てられたブロックの番号をファイルの管理情報とし
て外部記憶装置上に記録し、ファイルに割り当てられた
各ブロックにはデータと次に連結するブロックの番号又
は空のブロックであることを示す識別子を記録し、ファ
イルに割り当てられたブロックの番号をファイル内のブ
ロックの位置(相対ブロック番号)の順に配列する割当
ブロック一覧を計算機の主記憶装置上に格納しておき、
このファイルに新規データを追加するとき新規データを
格納するブロックの番号を割当ブロック一覧に順次追加
し、ファイルに新規データを追加する処理が中断したと
き、外部記憶装置上に記録されたファイル管理情報及び
各ブロックに記録された次に連結するブロックの番号を
空のブロックまで順次たどることによって主記憶装置上
の割当ブロック一覧を回復するファイル管理方法を特徴
とする。
り当てられたブロックの番号をファイルの管理情報とし
て外部記憶装置上に記録し、ファイルに割り当てられた
各ブロックにはデータと次に連結するブロックの番号又
は空のブロックであることを示す識別子を記録し、ファ
イルに割り当てられたブロックの番号をファイル内のブ
ロックの位置(相対ブロック番号)の順に配列する割当
ブロック一覧を計算機の主記憶装置上に格納しておき、
このファイルに新規データを追加するとき新規データを
格納するブロックの番号を割当ブロック一覧に順次追加
し、ファイルに新規データを追加する処理が中断したと
き、外部記憶装置上に記録されたファイル管理情報及び
各ブロックに記録された次に連結するブロックの番号を
空のブロックまで順次たどることによって主記憶装置上
の割当ブロック一覧を回復するファイル管理方法を特徴
とする。
【0011】本発明によれば、外部記憶装置上にはファ
イルに最初に割り当てられたブロックの番号が保存さ
れ、ファイルを構成する各ブロックにはデータとともに
次に連結するブロックの番号が記録されるので、ファイ
ルに最初に割り当てられたブロックから順にブロックを
たどることによってデータ書き込み中のファイルの割当
ブロック一覧を回復することができる。しかもブロック
に記録する次に連結するブロックの番号はデータを記録
する1回の書き込み動作の中で記録することが可能なの
で、外部記憶装置に対するオーバヘッドはほとんど増加
しない。
イルに最初に割り当てられたブロックの番号が保存さ
れ、ファイルを構成する各ブロックにはデータとともに
次に連結するブロックの番号が記録されるので、ファイ
ルに最初に割り当てられたブロックから順にブロックを
たどることによってデータ書き込み中のファイルの割当
ブロック一覧を回復することができる。しかもブロック
に記録する次に連結するブロックの番号はデータを記録
する1回の書き込み動作の中で記録することが可能なの
で、外部記憶装置に対するオーバヘッドはほとんど増加
しない。
【0012】また本発明は、ファイルに対する新規デー
タのブロックの追加と既存データを格納するブロックの
更新とのうちいずれかのデータ書き込みをする前にあら
かじめファイルに余分の未使用ブロックを割り当ててお
き、データ書き込みをするときにあらかじめ割り当てら
れた未使用ブロックに新しい書き込みデータを格納する
とともに、さらにファイルに余分の未使用ブロックを割
り当てるファイル管理方法を特徴とする。
タのブロックの追加と既存データを格納するブロックの
更新とのうちいずれかのデータ書き込みをする前にあら
かじめファイルに余分の未使用ブロックを割り当ててお
き、データ書き込みをするときにあらかじめ割り当てら
れた未使用ブロックに新しい書き込みデータを格納する
とともに、さらにファイルに余分の未使用ブロックを割
り当てるファイル管理方法を特徴とする。
【0013】さらに本発明は、ファイルの使用開始のた
びにファイルのバージョンを更新し、ファイルのバージ
ョンとこのバージョンに対応して最初に割り当てられた
ブロックの番号をファイルの管理情報として外部記憶装
置上に記録し、ファイルに割り当てられた各ブロックに
はデータとそのブロックが属するバージョンに対応して
次に連結するブロックの番号又は空のブロックであるこ
とを示す識別子を記録し、特定のバージョンが指定され
たとき、ファイル管理情報を参照して指定されたバージ
ョンに対応するファイルの先頭のブロックの番号を取得
し、各ブロックに記録された次に連結するブロック番号
を指定されたバージョンについて空のブロックまで順次
たどることによって指定されたバージョンに属するブロ
ックの番号をファイルの相対ブロック番号の順に配列す
る割当ブロック一覧を作成し、この割当ブロック一覧に
基づいて指定されたブロック位置に対応するブロックに
アクセスするファイル管理方法を特徴とする。
びにファイルのバージョンを更新し、ファイルのバージ
ョンとこのバージョンに対応して最初に割り当てられた
ブロックの番号をファイルの管理情報として外部記憶装
置上に記録し、ファイルに割り当てられた各ブロックに
はデータとそのブロックが属するバージョンに対応して
次に連結するブロックの番号又は空のブロックであるこ
とを示す識別子を記録し、特定のバージョンが指定され
たとき、ファイル管理情報を参照して指定されたバージ
ョンに対応するファイルの先頭のブロックの番号を取得
し、各ブロックに記録された次に連結するブロック番号
を指定されたバージョンについて空のブロックまで順次
たどることによって指定されたバージョンに属するブロ
ックの番号をファイルの相対ブロック番号の順に配列す
る割当ブロック一覧を作成し、この割当ブロック一覧に
基づいて指定されたブロック位置に対応するブロックに
アクセスするファイル管理方法を特徴とする。
【0014】
【発明の実施の形態】以下本発明の実施形態について図
面を用いて詳細に説明する。
面を用いて詳細に説明する。
【0015】(1)第1の実施形態 図1は、第1の実施形態のファイル管理システムの構成
図である。計算機1の主記憶装置は、利用者プログラム
5、ファイル管理プログラム6、ファイル管理テーブル
8及びブロック使用状況管理テーブル7を格納する。外
部記憶装置2は、ファイル管理情報領域11、ブロック
使用状況管理領域12及びデータ格納領域13を有す
る。ファイル管理テーブル8は、各ファイルごとに外部
記憶装置2上の割り当てたブロックの番号のリストと余
分に割り当てた空のブロック(仮割当ブロック)の番号
を格納する。ブロック使用状況管理テーブル7は、外部
記憶装置2の各ブロックが使用中か否かブロックの使用
状況を格納する。ファイル管理情報領域11は、各ファ
イルごとに外部記憶装置2上の割り当てたブロックの番
号のリストを格納する。ブロック使用状況管理領域12
は、外部記憶装置2の各ブロックが使用中か否かブロッ
クの使用状況を格納する。データ格納領域13は、固定
長のブロックに分割され、各ブロックは同一ファイル内
の次のブロックの番号を記録するなど制御情報を記録す
る部分とこれに隣接してデータ内容を記録する部分とか
ら構成される。ファイルの実体は次々にチェインされる
(連結される)ブロックの集合で構成され、チェインの
最後のブロックには次ブロックとして仮割当ブロックの
番号が記録される。
図である。計算機1の主記憶装置は、利用者プログラム
5、ファイル管理プログラム6、ファイル管理テーブル
8及びブロック使用状況管理テーブル7を格納する。外
部記憶装置2は、ファイル管理情報領域11、ブロック
使用状況管理領域12及びデータ格納領域13を有す
る。ファイル管理テーブル8は、各ファイルごとに外部
記憶装置2上の割り当てたブロックの番号のリストと余
分に割り当てた空のブロック(仮割当ブロック)の番号
を格納する。ブロック使用状況管理テーブル7は、外部
記憶装置2の各ブロックが使用中か否かブロックの使用
状況を格納する。ファイル管理情報領域11は、各ファ
イルごとに外部記憶装置2上の割り当てたブロックの番
号のリストを格納する。ブロック使用状況管理領域12
は、外部記憶装置2の各ブロックが使用中か否かブロッ
クの使用状況を格納する。データ格納領域13は、固定
長のブロックに分割され、各ブロックは同一ファイル内
の次のブロックの番号を記録するなど制御情報を記録す
る部分とこれに隣接してデータ内容を記録する部分とか
ら構成される。ファイルの実体は次々にチェインされる
(連結される)ブロックの集合で構成され、チェインの
最後のブロックには次ブロックとして仮割当ブロックの
番号が記録される。
【0016】利用者プログラム5は、ファイル管理プロ
グラム6に対してファイルからのデータの読み取り、デ
ータの書き込み、ファイル削除などの要求を発行する処
理部である。ファイル管理プログラム6は、計算機1の
起動時にファイル管理情報領域11及びブロック使用状
況管理領域12の内容をそれぞれファイル管理テーブル
8及びブロック使用状況管理テーブル7に読み込む。デ
ータ読み取り要求を受けたファイル管理プログラム6
は、ファイル管理テーブル8の割当ブロック番号リスト
を参照して指定されたファイル読み取り位置に対応する
ブロック番号を取得し、データ格納領域13からそのブ
ロック番号のブロックのデータ内容を読み取って利用者
プログラム5に渡す。またデータ書き込み要求を受けた
ファイル管理プログラム6は、そのデータ書き込みが新
規のデータ書き込みであるとき、ブロック使用状況管理
テーブル7を参照して未使用のブロックを検索し、ファ
イル管理テーブル8上の仮割当ブロックの番号と割当ブ
ロック番号リストを更新した上で指定されたファイル書
き込み位置に対応するブロックにデータ内容を書き込
む。このときデータを書き込んだブロックの次ブロック
番号には新たに割り当てた仮割当ブロックの番号を書き
込む。ファイルの使用が終了したとき、ファイル管理プ
ログラム6はファイル管理テーブル8の当該ファイル分
のコピー及びブロック使用状況管理テーブル7をそれぞ
れファイル管理情報領域11及びブロック使用状況管理
領域12に格納する。計算機1に障害が発生してファイ
ル管理テーブル8及びブロック使用状況管理テーブル7
が失われたとき、ファイル管理プログラム6はファイル
管理情報領域11、ブロック使用状況管理領域12及び
データ格納領域13を参照してファイル管理テーブル8
及びブロック使用状況管理テーブル7を回復する。
グラム6に対してファイルからのデータの読み取り、デ
ータの書き込み、ファイル削除などの要求を発行する処
理部である。ファイル管理プログラム6は、計算機1の
起動時にファイル管理情報領域11及びブロック使用状
況管理領域12の内容をそれぞれファイル管理テーブル
8及びブロック使用状況管理テーブル7に読み込む。デ
ータ読み取り要求を受けたファイル管理プログラム6
は、ファイル管理テーブル8の割当ブロック番号リスト
を参照して指定されたファイル読み取り位置に対応する
ブロック番号を取得し、データ格納領域13からそのブ
ロック番号のブロックのデータ内容を読み取って利用者
プログラム5に渡す。またデータ書き込み要求を受けた
ファイル管理プログラム6は、そのデータ書き込みが新
規のデータ書き込みであるとき、ブロック使用状況管理
テーブル7を参照して未使用のブロックを検索し、ファ
イル管理テーブル8上の仮割当ブロックの番号と割当ブ
ロック番号リストを更新した上で指定されたファイル書
き込み位置に対応するブロックにデータ内容を書き込
む。このときデータを書き込んだブロックの次ブロック
番号には新たに割り当てた仮割当ブロックの番号を書き
込む。ファイルの使用が終了したとき、ファイル管理プ
ログラム6はファイル管理テーブル8の当該ファイル分
のコピー及びブロック使用状況管理テーブル7をそれぞ
れファイル管理情報領域11及びブロック使用状況管理
領域12に格納する。計算機1に障害が発生してファイ
ル管理テーブル8及びブロック使用状況管理テーブル7
が失われたとき、ファイル管理プログラム6はファイル
管理情報領域11、ブロック使用状況管理領域12及び
データ格納領域13を参照してファイル管理テーブル8
及びブロック使用状況管理テーブル7を回復する。
【0017】図2(a)は、ファイル管理テーブル8の
データ形式の例を示す図である。ファイル名80は利用
者が設定したファイルの名称、ファイル長81はブロッ
ク数で表現するファイルの長さである。ファイル管理テ
ーブル8中でファイル管理情報を格納していない行のフ
ァイル名80は空白となる。ファイル使用中フラグ82
は、ファイルの新規作成の開始又は使用開始のとき1に
セットされ、ファイル使用終了のとき0にリセットされ
るフラグである。ファイル削除中フラグ86は、ファイ
ル削除操作の開始時に1にセットされ、ファイル削除終
了時に0にリセットされるフラグである。割当ブロック
番号リスト83は、ファイルに割り当てられているブロ
ックの一覧であり、割当ブロック番号リスト83の各項
目83−1、83−2、・・・は、それぞれファイルの
先頭に割り当てられたブロック、2番めの位置に割り当
てられたブロック、・・・の番号を記憶している。それ
ぞれの位置にブロックが割り当てられていない項目に
は、ブロック番号としては無効な値である−1が書き込
まれている。最終ブロック番号84は、ファイルを構成
するブロックのうちチェインの最後のデータブロックの
番号である。仮割当ブロック番号85は、余分に割り当
てられた空のブロックの番号である。仮割当ブロック番
号85中の−1は、仮割当ブロックがないことを示す。
ファイル管理テーブル8はファイルにアクセスする際に
その管理情報に高速にアクセスするために主記憶装置上
に設けられる。
データ形式の例を示す図である。ファイル名80は利用
者が設定したファイルの名称、ファイル長81はブロッ
ク数で表現するファイルの長さである。ファイル管理テ
ーブル8中でファイル管理情報を格納していない行のフ
ァイル名80は空白となる。ファイル使用中フラグ82
は、ファイルの新規作成の開始又は使用開始のとき1に
セットされ、ファイル使用終了のとき0にリセットされ
るフラグである。ファイル削除中フラグ86は、ファイ
ル削除操作の開始時に1にセットされ、ファイル削除終
了時に0にリセットされるフラグである。割当ブロック
番号リスト83は、ファイルに割り当てられているブロ
ックの一覧であり、割当ブロック番号リスト83の各項
目83−1、83−2、・・・は、それぞれファイルの
先頭に割り当てられたブロック、2番めの位置に割り当
てられたブロック、・・・の番号を記憶している。それ
ぞれの位置にブロックが割り当てられていない項目に
は、ブロック番号としては無効な値である−1が書き込
まれている。最終ブロック番号84は、ファイルを構成
するブロックのうちチェインの最後のデータブロックの
番号である。仮割当ブロック番号85は、余分に割り当
てられた空のブロックの番号である。仮割当ブロック番
号85中の−1は、仮割当ブロックがないことを示す。
ファイル管理テーブル8はファイルにアクセスする際に
その管理情報に高速にアクセスするために主記憶装置上
に設けられる。
【0018】図2(b)は、ファイル管理情報領域11
のデータ形式の例を示す図である。ファイル管理情報領
域11は、ファイル名20、ファイル長21、ファイル
使用中フラグ22、ファイル削除中フラグ26、割当ブ
ロック番号リスト23及び最終ブロック番号24から構
成され、それぞれファイル名80、ファイル長81、フ
ァイル使用中フラグ82、ファイル削除中フラグ86、
割当ブロック番号リスト83及び最終ブロック番号84
と同じ意味をもつ。計算機1の起動時にファイル管理情
報領域11の内容が計算機1に読み込まれ、ファイル管
理テーブル8が作成される。ファイルの使用が終了した
とき、そのファイルのファイル管理テーブル8の内容が
ファイル管理情報領域11に書き戻される。図2でファ
イル管理テーブル8の内容とファイル管理情報領域11
の内容が異なるのは、ファイル名XXXのファイルが使
用中の状態であり、ファイル使用によって更新されたフ
ァイル管理テーブル8の内容がまだファイル管理情報領
域11に反映されていないためである。
のデータ形式の例を示す図である。ファイル管理情報領
域11は、ファイル名20、ファイル長21、ファイル
使用中フラグ22、ファイル削除中フラグ26、割当ブ
ロック番号リスト23及び最終ブロック番号24から構
成され、それぞれファイル名80、ファイル長81、フ
ァイル使用中フラグ82、ファイル削除中フラグ86、
割当ブロック番号リスト83及び最終ブロック番号84
と同じ意味をもつ。計算機1の起動時にファイル管理情
報領域11の内容が計算機1に読み込まれ、ファイル管
理テーブル8が作成される。ファイルの使用が終了した
とき、そのファイルのファイル管理テーブル8の内容が
ファイル管理情報領域11に書き戻される。図2でファ
イル管理テーブル8の内容とファイル管理情報領域11
の内容が異なるのは、ファイル名XXXのファイルが使
用中の状態であり、ファイル使用によって更新されたフ
ァイル管理テーブル8の内容がまだファイル管理情報領
域11に反映されていないためである。
【0019】図3(a)は、ブロック使用状況管理テー
ブル7のデータ形式の例を示す図である。ブロック使用
状況管理テーブル7は、各ブロック番号71ごとにその
ブロックが使用中(符号1)か未使用(符号0)かを示
す使用状況72を格納する。ブロック使用状況管理テー
ブル7はファイルにブロックを割り当てたり、ブロック
割当解除をする際に高速にアクセスするために主記憶装
置上に設けられる。
ブル7のデータ形式の例を示す図である。ブロック使用
状況管理テーブル7は、各ブロック番号71ごとにその
ブロックが使用中(符号1)か未使用(符号0)かを示
す使用状況72を格納する。ブロック使用状況管理テー
ブル7はファイルにブロックを割り当てたり、ブロック
割当解除をする際に高速にアクセスするために主記憶装
置上に設けられる。
【0020】図3(b)は、ブロック使用状況管理領域
12のデータ形式の例を示す図である。ブロック使用状
況管理領域12は、各ブロック番号31ごとにそのブロ
ックが使用中(符号1)か未使用(符号0)かを示す使
用状況32を格納する。計算機1の起動時にブロック使
用状況管理領域12の内容が計算機1に読み込まれ、ブ
ロック使用状況管理テーブル7が作成される。ファイル
の使用が終了したとき、ブロック使用状況管理テーブル
7の内容がブロック使用状況管理領域12に書き戻され
る。
12のデータ形式の例を示す図である。ブロック使用状
況管理領域12は、各ブロック番号31ごとにそのブロ
ックが使用中(符号1)か未使用(符号0)かを示す使
用状況32を格納する。計算機1の起動時にブロック使
用状況管理領域12の内容が計算機1に読み込まれ、ブ
ロック使用状況管理テーブル7が作成される。ファイル
の使用が終了したとき、ブロック使用状況管理テーブル
7の内容がブロック使用状況管理領域12に書き戻され
る。
【0021】図4は、データ格納領域13のデータ形式
の例を示す図である。データ格納領域13は、複数のブ
ロックから構成され、ブロックにはブロック番号1番か
ら始まる通し番号がつけられている。各ブロックの先頭
には次ブロック番号記録部101とファイル内位置記録
部102が設けられている。次ブロック番号記録部10
1は、当該ブロックがファイルに割り当てられている場
合、当該ブロックの次にファイルに割り当てられたブロ
ックの番号を記録する。図2及び図4の例では、ファイ
ル名XXXのファイルの先頭に割り当てられたブロック
はブロック番号1番のブロックであり、2番目に割り当
てられたブロックはブロック番号3番のブロックである
ことを示している。ブロック番号2番のブロックのよう
にどのファイルにも割り当てられていないブロック及び
ブロック番号5番のブロックのようにファイルの末尾に
割り当てられていてまだデータの書き込まれていないブ
ロックの次ブロック番号記録部101にはブロック番号
として無効な値である−1が格納される。ファイル内位
置記録部102は、ファイル内でのそのブロックの位置
を示し、相対ブロック番号1番から始まるファイル内通
し番号がつけられている。図2及び図4の例ではファイ
ル名XXXのファイルにはブロック番号1番、3番及び
4番のブロックが割り当てられ、ファイル内位置がそれ
ぞれ1番、2番及び3番であることを示している。デー
タ記録部103は、利用者プログラム5がファイルに書
き込んだデータを保持する。
の例を示す図である。データ格納領域13は、複数のブ
ロックから構成され、ブロックにはブロック番号1番か
ら始まる通し番号がつけられている。各ブロックの先頭
には次ブロック番号記録部101とファイル内位置記録
部102が設けられている。次ブロック番号記録部10
1は、当該ブロックがファイルに割り当てられている場
合、当該ブロックの次にファイルに割り当てられたブロ
ックの番号を記録する。図2及び図4の例では、ファイ
ル名XXXのファイルの先頭に割り当てられたブロック
はブロック番号1番のブロックであり、2番目に割り当
てられたブロックはブロック番号3番のブロックである
ことを示している。ブロック番号2番のブロックのよう
にどのファイルにも割り当てられていないブロック及び
ブロック番号5番のブロックのようにファイルの末尾に
割り当てられていてまだデータの書き込まれていないブ
ロックの次ブロック番号記録部101にはブロック番号
として無効な値である−1が格納される。ファイル内位
置記録部102は、ファイル内でのそのブロックの位置
を示し、相対ブロック番号1番から始まるファイル内通
し番号がつけられている。図2及び図4の例ではファイ
ル名XXXのファイルにはブロック番号1番、3番及び
4番のブロックが割り当てられ、ファイル内位置がそれ
ぞれ1番、2番及び3番であることを示している。デー
タ記録部103は、利用者プログラム5がファイルに書
き込んだデータを保持する。
【0022】以下利用者プログラム5からファイル新規
作成要求、ファイル使用開始要求、データ読み取り要
求、データ書き込み要求、ファイル使用終了要求、ファ
イル削除要求が発行されたときのファイル管理プログラ
ム6の処理について及び計算機1の障害後のファイル管
理プログラム6のファイル管理情報回復処理について説
明する。新規にファイルを作成するときには、利用者プ
ログラム5からファイル新規作成要求を発行する必要が
あり、例えばOPEN、CREATEなどのシステムコ
ールを通じてこの要求が発行される。既存のファイルに
アクセスするに際しては、利用者プログラム5からファ
イル使用開始要求を発行する必要があり、OPENなど
のシステムコールを通じてこの要求が発行される。利用
者プログラム5がファイル新規作成要求又はファイル使
用開始要求を発行し正常に受け付けられた後は、任意回
数のデータ読み取り要求又はデータ書き込み要求が可能
である。ファイルの新規作成又は使用を終了するときに
は、利用者プログラム5からファイル使用終了要求を発
行する必要があり、CLOSEなどのシステムコールを
通じてこの要求が発行される。ファイル削除操作は上記
の一連のファイル操作とは独立した操作であり、利用者
プログラム5からファイル削除を要求するシステムコー
ルを発行するか、または図示しないユーザインタフェー
ス部を介してファイル削除を要求するコマンドが発行さ
れたとき実行される。なお空のブロックのファイルへの
割当に関して述べれば、ファイル新規作成要求、ファイ
ル使用開始要求及び新規のデータ書き込み要求があった
とき、ファイル管理プログラム6はそのファイルに空の
ブロックを割り当て、ファイル使用終了要求があったと
き、余分に割り当てた空のブロックを割当解除する。
作成要求、ファイル使用開始要求、データ読み取り要
求、データ書き込み要求、ファイル使用終了要求、ファ
イル削除要求が発行されたときのファイル管理プログラ
ム6の処理について及び計算機1の障害後のファイル管
理プログラム6のファイル管理情報回復処理について説
明する。新規にファイルを作成するときには、利用者プ
ログラム5からファイル新規作成要求を発行する必要が
あり、例えばOPEN、CREATEなどのシステムコ
ールを通じてこの要求が発行される。既存のファイルに
アクセスするに際しては、利用者プログラム5からファ
イル使用開始要求を発行する必要があり、OPENなど
のシステムコールを通じてこの要求が発行される。利用
者プログラム5がファイル新規作成要求又はファイル使
用開始要求を発行し正常に受け付けられた後は、任意回
数のデータ読み取り要求又はデータ書き込み要求が可能
である。ファイルの新規作成又は使用を終了するときに
は、利用者プログラム5からファイル使用終了要求を発
行する必要があり、CLOSEなどのシステムコールを
通じてこの要求が発行される。ファイル削除操作は上記
の一連のファイル操作とは独立した操作であり、利用者
プログラム5からファイル削除を要求するシステムコー
ルを発行するか、または図示しないユーザインタフェー
ス部を介してファイル削除を要求するコマンドが発行さ
れたとき実行される。なお空のブロックのファイルへの
割当に関して述べれば、ファイル新規作成要求、ファイ
ル使用開始要求及び新規のデータ書き込み要求があった
とき、ファイル管理プログラム6はそのファイルに空の
ブロックを割り当て、ファイル使用終了要求があったと
き、余分に割り当てた空のブロックを割当解除する。
【0023】図5は、第1の実施形態におけるファイル
新規作成要求の処理手順を示すフローチャートである。
利用者プログラム5がファイル管理プログラム6に対し
てファイル新規作成要求を発行すると、ファイル管理プ
ログラム6はファイル管理情報テーブル8を参照して新
しいファイルの管理情報を記録できる空きの行があるか
どうかを検索する(ステップ201)。空きの行がなけ
れば(ステップ201N)、新規作成するファイルの管
理情報を記録することができないので、処理を終了す
る。空きの行があれば(ステップ201Y)、新規に作
成しようとしているファイルと同名のファイルがファイ
ル管理テーブル8に登録されているかどうかを調べる
(ステップ202)。同名のファイルが登録済であれば
(ステップ202Y)、利用者が新規作成しようとして
いるファイルと同名のファイルが既に存在するので、処
理を終了する。同名のファイルが存在しなければ(ステ
ップ202N)、ブロック使用状況管理テーブル7を参
照して外部記憶装置2のデータ格納領域13上の未使用
のブロックを検索する。次に未使用のブロックが存在し
たかどうかを判定する(ステップ204)。未使用のブ
ロックが存在しなければ(ステップ204N)、新規に
ファイルを作成しても書き込み可能なブロックがないた
めデータを外部記憶装置2に格納することができないの
で、処理を終了する。未使用のブロックがあれば(ステ
ップ204Y)、ステップ201で検索の結果発見した
ファイル管理情報テーブル8の空きの行に利用者プログ
ラム5が指定した新規に作成するファイルのファイル名
80、ファイル長81(新規ファイル作成時であるため
ファイル長は0とする)、ファイル使用中フラグ82と
して1(使用中)、ファイル削除中フラグ86として0
(削除中でない)、最終ブロック番号84としてブロッ
ク番号としては無効な値である−1、割当ブロック番号
リスト83のすべての項目に−1、仮割当ブロック番号
85としてステップ203での検索の結果発見した未使
用のブロックの番号を記録する(ステップ205)。次
にファイル管理情報領域11の空きの行に新規に作成す
るファイルのファイル名20、ファイル長21、ファイ
ル使用中フラグ22として1(使用中)、ファイル削除
中フラグ26として0(削除中でない)、割当ブロック
番号リスト23の先頭の項目23−1としてステップ2
03の検索の結果発見したブロックの番号を記録する
(ステップ207)。割当ブロック番号リスト23の残
りの項目及び最終ブロック番号24には−1を格納す
る。次にブロック使用状況管理テーブル7を更新してス
テップ203で発見したブロックの使用状況72を1
(使用中)に変更する(ステップ209)。
新規作成要求の処理手順を示すフローチャートである。
利用者プログラム5がファイル管理プログラム6に対し
てファイル新規作成要求を発行すると、ファイル管理プ
ログラム6はファイル管理情報テーブル8を参照して新
しいファイルの管理情報を記録できる空きの行があるか
どうかを検索する(ステップ201)。空きの行がなけ
れば(ステップ201N)、新規作成するファイルの管
理情報を記録することができないので、処理を終了す
る。空きの行があれば(ステップ201Y)、新規に作
成しようとしているファイルと同名のファイルがファイ
ル管理テーブル8に登録されているかどうかを調べる
(ステップ202)。同名のファイルが登録済であれば
(ステップ202Y)、利用者が新規作成しようとして
いるファイルと同名のファイルが既に存在するので、処
理を終了する。同名のファイルが存在しなければ(ステ
ップ202N)、ブロック使用状況管理テーブル7を参
照して外部記憶装置2のデータ格納領域13上の未使用
のブロックを検索する。次に未使用のブロックが存在し
たかどうかを判定する(ステップ204)。未使用のブ
ロックが存在しなければ(ステップ204N)、新規に
ファイルを作成しても書き込み可能なブロックがないた
めデータを外部記憶装置2に格納することができないの
で、処理を終了する。未使用のブロックがあれば(ステ
ップ204Y)、ステップ201で検索の結果発見した
ファイル管理情報テーブル8の空きの行に利用者プログ
ラム5が指定した新規に作成するファイルのファイル名
80、ファイル長81(新規ファイル作成時であるため
ファイル長は0とする)、ファイル使用中フラグ82と
して1(使用中)、ファイル削除中フラグ86として0
(削除中でない)、最終ブロック番号84としてブロッ
ク番号としては無効な値である−1、割当ブロック番号
リスト83のすべての項目に−1、仮割当ブロック番号
85としてステップ203での検索の結果発見した未使
用のブロックの番号を記録する(ステップ205)。次
にファイル管理情報領域11の空きの行に新規に作成す
るファイルのファイル名20、ファイル長21、ファイ
ル使用中フラグ22として1(使用中)、ファイル削除
中フラグ26として0(削除中でない)、割当ブロック
番号リスト23の先頭の項目23−1としてステップ2
03の検索の結果発見したブロックの番号を記録する
(ステップ207)。割当ブロック番号リスト23の残
りの項目及び最終ブロック番号24には−1を格納す
る。次にブロック使用状況管理テーブル7を更新してス
テップ203で発見したブロックの使用状況72を1
(使用中)に変更する(ステップ209)。
【0024】以上の手順によれば、ステップ207で外
部記憶装置2内のファイル管理情報領域11にファイル
名やファイル長などのファイル管理情報を書き込むた
め、ステップ207終了後に計算機1に障害が発生した
場合でも新規作成されたファイルの管理情報は外部記憶
装置2上に記録されている。ステップ207終了以前に
計算機1に障害が発生した場合は、ファイル管理情報領
域11及びブロック使用状況管理領域12は一切更新さ
れていないため、計算機1の障害回復後、障害が発生す
る前と同じ状態で新規ファイル作成処理を再実行するこ
とが可能である。
部記憶装置2内のファイル管理情報領域11にファイル
名やファイル長などのファイル管理情報を書き込むた
め、ステップ207終了後に計算機1に障害が発生した
場合でも新規作成されたファイルの管理情報は外部記憶
装置2上に記録されている。ステップ207終了以前に
計算機1に障害が発生した場合は、ファイル管理情報領
域11及びブロック使用状況管理領域12は一切更新さ
れていないため、計算機1の障害回復後、障害が発生す
る前と同じ状態で新規ファイル作成処理を再実行するこ
とが可能である。
【0025】図6は、ファイル使用開始要求の処理手順
を示すフローチャートである。ファイル使用開始要求を
受け取ると、ファイル管理プログラム6はファイル管理
テーブル8を検索してユーザが指定したファイル名のフ
ァイルの管理情報が存在するかどうかを判定する(ステ
ップ301)。管理情報が存在しなければ(ステップ3
01N)、ユーザが使用開始を要求したファイルが存在
しないので処理を終了する。管理情報が存在すれば(ス
テップ301Y)、ファイル使用中フラグ82を参照し
て利用者が使用開始を要求したファイルが使用中である
かどうかを判定する(ステップ302)。ファイルが使
用中であれば(ステップ302Y)、処理を終了する。
ファイルが使用中でなければ(ステップ302N)、次
にファイルが削除中であるかどうかを判定する(ステッ
プ303)。ファイルが削除中であれば(ステップ30
3Y)、処理を終了する。ファイルが削除中でなければ
(ステップ303N)、ブロック使用状況管理テーブル
7を参照して未使用のブロックを検索する(ステップ3
04)。未使用のブロックが存在しなければ(ステップ
305N)、処理を終了する。未使用ブロックが存在す
れば(ステップ305Y)、ファイル管理テーブル8の
利用者が使用開始を要求しているファイルのファイル使
用中フラグ82を1(使用中)にする(ステップ30
6)。次にファイル管理テーブル8の仮割当ブロック番
号85としてステップ304で発見した未使用ブロック
の番号を記録する(ステップ307)。次にファイル管
理テーブル8の利用者が使用開始を要求しているファイ
ルに対応する割当ブロック番号リスト83を参照して、
割当ブロック番号リストの最初の項目83−1が−1で
あるかどうかを判定する(ステップ309)。最初の項
目が−1であれば(ステップ309Y)、ファイルには
ブロックが割り当てられていない状態なので、ファイル
管理情報領域11のファイル使用中フラグ22を1(使
用中)にし、かつ割当ブロック番号リスト23の先頭の
項目23−1としてステップ304で検索した未使用の
ブロックの番号を書き込む(ステップ311)。ファイ
ルにブロックが割り当てられていない状態は、ファイル
新規作成要求を発行した後、データ書き込みをせずにフ
ァイル使用終了要求を発行した場合に生じる。ファイル
使用中フラグ22と割当ブロック番号リスト23は、外
部記憶装置2の中で近接した位置にあり、これらの2つ
の情報の更新は外部記憶装置2への1回の書き込みで実
現するものとする。ステップ311が終了すると、ステ
ップ317に進む。最初の項目が−1でなければ(ステ
ップ309N)、ファイル管理情報領域11のファイル
使用中フラグ22を1(使用中)にする(ステップ31
3)。次にファイル管理テーブル8内の最終ブロック番
号84を参照して、利用者が使用開始を要求しているフ
ァイルのデータの書き込まれているブロックのうち最後
にファイルに割り当てられたブロックの番号を求め、そ
のブロックの次ブロック番号記録部101にファイル管
理テーブル8の仮割当ブロック番号85に記録されてい
るブロックの番号、すなわちステップ304で検索した
未使用ブロックのブロック番号を書き込む(ステップ3
15)。割当ブロック番号リスト23の先頭の項目23
−1が−1でない場合(ステップ309N)は、少なく
とも1つ以上のブロックがファイルに割り当てられてい
る場合なので、最終ブロック番号84は−1以外の有効
なブロックの番号を保持している。次にブロック使用管
理状況テーブル7を更新してステップ304での検索の
結果発見した未使用ブロックの使用状況72を1(使用
中)に変更して(ステップ317)、処理を終了する。
を示すフローチャートである。ファイル使用開始要求を
受け取ると、ファイル管理プログラム6はファイル管理
テーブル8を検索してユーザが指定したファイル名のフ
ァイルの管理情報が存在するかどうかを判定する(ステ
ップ301)。管理情報が存在しなければ(ステップ3
01N)、ユーザが使用開始を要求したファイルが存在
しないので処理を終了する。管理情報が存在すれば(ス
テップ301Y)、ファイル使用中フラグ82を参照し
て利用者が使用開始を要求したファイルが使用中である
かどうかを判定する(ステップ302)。ファイルが使
用中であれば(ステップ302Y)、処理を終了する。
ファイルが使用中でなければ(ステップ302N)、次
にファイルが削除中であるかどうかを判定する(ステッ
プ303)。ファイルが削除中であれば(ステップ30
3Y)、処理を終了する。ファイルが削除中でなければ
(ステップ303N)、ブロック使用状況管理テーブル
7を参照して未使用のブロックを検索する(ステップ3
04)。未使用のブロックが存在しなければ(ステップ
305N)、処理を終了する。未使用ブロックが存在す
れば(ステップ305Y)、ファイル管理テーブル8の
利用者が使用開始を要求しているファイルのファイル使
用中フラグ82を1(使用中)にする(ステップ30
6)。次にファイル管理テーブル8の仮割当ブロック番
号85としてステップ304で発見した未使用ブロック
の番号を記録する(ステップ307)。次にファイル管
理テーブル8の利用者が使用開始を要求しているファイ
ルに対応する割当ブロック番号リスト83を参照して、
割当ブロック番号リストの最初の項目83−1が−1で
あるかどうかを判定する(ステップ309)。最初の項
目が−1であれば(ステップ309Y)、ファイルには
ブロックが割り当てられていない状態なので、ファイル
管理情報領域11のファイル使用中フラグ22を1(使
用中)にし、かつ割当ブロック番号リスト23の先頭の
項目23−1としてステップ304で検索した未使用の
ブロックの番号を書き込む(ステップ311)。ファイ
ルにブロックが割り当てられていない状態は、ファイル
新規作成要求を発行した後、データ書き込みをせずにフ
ァイル使用終了要求を発行した場合に生じる。ファイル
使用中フラグ22と割当ブロック番号リスト23は、外
部記憶装置2の中で近接した位置にあり、これらの2つ
の情報の更新は外部記憶装置2への1回の書き込みで実
現するものとする。ステップ311が終了すると、ステ
ップ317に進む。最初の項目が−1でなければ(ステ
ップ309N)、ファイル管理情報領域11のファイル
使用中フラグ22を1(使用中)にする(ステップ31
3)。次にファイル管理テーブル8内の最終ブロック番
号84を参照して、利用者が使用開始を要求しているフ
ァイルのデータの書き込まれているブロックのうち最後
にファイルに割り当てられたブロックの番号を求め、そ
のブロックの次ブロック番号記録部101にファイル管
理テーブル8の仮割当ブロック番号85に記録されてい
るブロックの番号、すなわちステップ304で検索した
未使用ブロックのブロック番号を書き込む(ステップ3
15)。割当ブロック番号リスト23の先頭の項目23
−1が−1でない場合(ステップ309N)は、少なく
とも1つ以上のブロックがファイルに割り当てられてい
る場合なので、最終ブロック番号84は−1以外の有効
なブロックの番号を保持している。次にブロック使用管
理状況テーブル7を更新してステップ304での検索の
結果発見した未使用ブロックの使用状況72を1(使用
中)に変更して(ステップ317)、処理を終了する。
【0026】上記のファイル新規作成要求及びファイル
使用開始要求が正常に終了した後は、ファイル管理テー
ブル8及びファイル管理情報領域11の利用者プログラ
ム5が新規作成又は使用開始を要求したファイルに対応
する使用中フラグ82及び22が1(使用中)の状態に
なる。またファイルの終端には、データの書き込まれた
ブロックとは別に次回の書き込みのためにデータの書込
まれていない空のブロックが1個仮に割り当てられ、そ
の番号が仮割当ブロック番号85に記憶される。
使用開始要求が正常に終了した後は、ファイル管理テー
ブル8及びファイル管理情報領域11の利用者プログラ
ム5が新規作成又は使用開始を要求したファイルに対応
する使用中フラグ82及び22が1(使用中)の状態に
なる。またファイルの終端には、データの書き込まれた
ブロックとは別に次回の書き込みのためにデータの書込
まれていない空のブロックが1個仮に割り当てられ、そ
の番号が仮割当ブロック番号85に記憶される。
【0027】利用者プログラム5からファイルに対する
データ読み取り要求が発行されたときのファイル管理プ
ログラム6の処理手順は次の通りである。ファイル管理
テーブル8を参照して指定されたファイルの使用中フラ
グ82が1(使用中)であり、かつファイル削除中フラ
グ86が0(削除中でない)である場合に、割当ブロッ
ク番号リスト83を参照して指定された読み取り位置に
対応するブロック番号を取得し、そのブロック番号のブ
ロックの内容を読み取ってその中のデータ記録部103
の内容を指定された主記憶領域に格納する。次に読み取
りブロック数から1を減じ、残りのブロック数が0でな
ければ読み取り位置に1を加えてから再び割当ブロック
番号リスト83を参照して次のブロック番号を取得し、
そのブロック番号のブロックの内容を読み取る上記処理
を繰り返す。残りのブロック数0を検出したとき、デー
タ読み取りの処理を終了する。
データ読み取り要求が発行されたときのファイル管理プ
ログラム6の処理手順は次の通りである。ファイル管理
テーブル8を参照して指定されたファイルの使用中フラ
グ82が1(使用中)であり、かつファイル削除中フラ
グ86が0(削除中でない)である場合に、割当ブロッ
ク番号リスト83を参照して指定された読み取り位置に
対応するブロック番号を取得し、そのブロック番号のブ
ロックの内容を読み取ってその中のデータ記録部103
の内容を指定された主記憶領域に格納する。次に読み取
りブロック数から1を減じ、残りのブロック数が0でな
ければ読み取り位置に1を加えてから再び割当ブロック
番号リスト83を参照して次のブロック番号を取得し、
そのブロック番号のブロックの内容を読み取る上記処理
を繰り返す。残りのブロック数0を検出したとき、デー
タ読み取りの処理を終了する。
【0028】図7は、ファイルに対するデータ書き込み
要求の処理手順を示すフローチャートである。本実施形
態では、書き込み要求を発行する場合、利用者プログラ
ム5はファイル内の書き込み開始位置とデータ書き込み
するブロック数を指定するものとする。ファイルに対す
る書き込み要求を受け取ると、ファイル管理プログラム
6はファイル管理テーブル8内のファイル使用中フラグ
82を参照して、利用者が書き込みを要求したファイル
が使用中であるかどうかを判定する(ステップ40
1)。ファイルが使用中でなければ(ステップ401
N)、利用者が使用開始を宣言していないファイルに対
して書き込もうとしている場合であるため、処理を終了
する。ファイルが使用中である場合(ステップ401
Y)は、ファイル管理テーブル8内のファイル削除中フ
ラグ86を参照して、ファイルが削除中であるかどうか
を判定する(ステップ402)。ファイルが削除中の場
合(ステップ402Y)、処理を終了する。ファイルが
削除中でない場合(ステップ402N)、変数nに利用
者が指定した書き込むデータのブロック数を代入し(ス
テップ403)、利用者プログラム5が指定したデータ
の書き込み位置(相対ブロック番号)を変数pに代入す
る(ステップ405)。次にファイル管理テーブル8の
割り当てブロック番号リスト83の第p番めの項目が−
1であるかどうかを判定する(ステップ406)。第p
番めの項目が−1でなければ(ステップ406N)、既
存のデータブロックに対する上書きであることがわかる
ので、割り当てブロック番号リストの第p番めの項目と
して格納されるブロック番号のブロックのデータ記録部
103に利用者プログラム5が指定したデータを書き込
み(ステップ411)、ステップ421に進む。第p番
めの項目が−1の場合(ステップ406Y)は、ファイ
ルに新規にブロックを割り当てる場合なので、ブロック
使用状況管理テーブル7を参照して外部記憶装置2のデ
ータ格納領域13の未使用のブロックを検索する(ステ
ップ407)。次にステップ407の検索の結果として
未使用ブロックが存在したかどうかを判定する(ステッ
プ408)。未使用ブロックが存在しない場合(ステッ
プ408N)には、処理を終了する。未使用ブロックが
存在する場合(ステップ408Y)には、ファイル管理
テーブル8内のファイル長81を1ブロック分増加させ
る(ステップ412)。なお第1の実施形態では、新規
の書き込みデータは常にファイル中の最後の書き込み位
置の次のブロックに書き込むので、データの新規書き込
みをするごとにファイル長が増加する。次にファイル管
理テーブル8内の利用者が書き込みを要求したファイル
の割当ブロックリスト83の第p番めの項目に仮割当ブ
ロック番号85に記憶されているブロックの番号を書き
込む(ステップ413)。次に仮割当ブロック番号85
にステップ407の検索の結果発見した未使用ブロック
の番号を書き込む(ステップ415)。次にファイルの
第p番めのブロックの次ブロック番号記録部101に仮
割当ブロック番号85に記録されているブロックの番
号、ファイル内位置記録部102に変数pの値、データ
記録部103に利用者が指定したデータをそれぞれ書き
込む(ステップ417)。なお次ブロック番号記録部1
01とファイル内位置記録部102及びデータ記録部1
03は外部記憶装置2上で隣接しているため、これらの
3つの部分の書き込みは外部記憶装置2に対する1回の
書き込み操作で実行することができる。次にブロック使
用状況管理テーブル7を更新して、ステップ407の検
索の結果発見した未使用ブロックの使用状況72を1
(使用中)にする(ステップ419)。次にファイル管
理テーブル8内の利用者が書き込みを要求したファイル
に対応する最終ブロック番号84にステップ417で書
き込んだブロックの番号を書き込み(ステップ42
0)、書き込み位置を示す変数pの値を1増やし(ステ
ップ421)、書き込むブロック数の残りを示す変数n
の値を1減らす(ステップ423)。次に変数nの値が
0であるかどうかを判定する(ステップ425)。変数
nの値が0でなければ(ステップ425N)、ステップ
407に戻って処理を継続する。変数nの値が0の場合
(ステップ425Y)、処理を終了する。
要求の処理手順を示すフローチャートである。本実施形
態では、書き込み要求を発行する場合、利用者プログラ
ム5はファイル内の書き込み開始位置とデータ書き込み
するブロック数を指定するものとする。ファイルに対す
る書き込み要求を受け取ると、ファイル管理プログラム
6はファイル管理テーブル8内のファイル使用中フラグ
82を参照して、利用者が書き込みを要求したファイル
が使用中であるかどうかを判定する(ステップ40
1)。ファイルが使用中でなければ(ステップ401
N)、利用者が使用開始を宣言していないファイルに対
して書き込もうとしている場合であるため、処理を終了
する。ファイルが使用中である場合(ステップ401
Y)は、ファイル管理テーブル8内のファイル削除中フ
ラグ86を参照して、ファイルが削除中であるかどうか
を判定する(ステップ402)。ファイルが削除中の場
合(ステップ402Y)、処理を終了する。ファイルが
削除中でない場合(ステップ402N)、変数nに利用
者が指定した書き込むデータのブロック数を代入し(ス
テップ403)、利用者プログラム5が指定したデータ
の書き込み位置(相対ブロック番号)を変数pに代入す
る(ステップ405)。次にファイル管理テーブル8の
割り当てブロック番号リスト83の第p番めの項目が−
1であるかどうかを判定する(ステップ406)。第p
番めの項目が−1でなければ(ステップ406N)、既
存のデータブロックに対する上書きであることがわかる
ので、割り当てブロック番号リストの第p番めの項目と
して格納されるブロック番号のブロックのデータ記録部
103に利用者プログラム5が指定したデータを書き込
み(ステップ411)、ステップ421に進む。第p番
めの項目が−1の場合(ステップ406Y)は、ファイ
ルに新規にブロックを割り当てる場合なので、ブロック
使用状況管理テーブル7を参照して外部記憶装置2のデ
ータ格納領域13の未使用のブロックを検索する(ステ
ップ407)。次にステップ407の検索の結果として
未使用ブロックが存在したかどうかを判定する(ステッ
プ408)。未使用ブロックが存在しない場合(ステッ
プ408N)には、処理を終了する。未使用ブロックが
存在する場合(ステップ408Y)には、ファイル管理
テーブル8内のファイル長81を1ブロック分増加させ
る(ステップ412)。なお第1の実施形態では、新規
の書き込みデータは常にファイル中の最後の書き込み位
置の次のブロックに書き込むので、データの新規書き込
みをするごとにファイル長が増加する。次にファイル管
理テーブル8内の利用者が書き込みを要求したファイル
の割当ブロックリスト83の第p番めの項目に仮割当ブ
ロック番号85に記憶されているブロックの番号を書き
込む(ステップ413)。次に仮割当ブロック番号85
にステップ407の検索の結果発見した未使用ブロック
の番号を書き込む(ステップ415)。次にファイルの
第p番めのブロックの次ブロック番号記録部101に仮
割当ブロック番号85に記録されているブロックの番
号、ファイル内位置記録部102に変数pの値、データ
記録部103に利用者が指定したデータをそれぞれ書き
込む(ステップ417)。なお次ブロック番号記録部1
01とファイル内位置記録部102及びデータ記録部1
03は外部記憶装置2上で隣接しているため、これらの
3つの部分の書き込みは外部記憶装置2に対する1回の
書き込み操作で実行することができる。次にブロック使
用状況管理テーブル7を更新して、ステップ407の検
索の結果発見した未使用ブロックの使用状況72を1
(使用中)にする(ステップ419)。次にファイル管
理テーブル8内の利用者が書き込みを要求したファイル
に対応する最終ブロック番号84にステップ417で書
き込んだブロックの番号を書き込み(ステップ42
0)、書き込み位置を示す変数pの値を1増やし(ステ
ップ421)、書き込むブロック数の残りを示す変数n
の値を1減らす(ステップ423)。次に変数nの値が
0であるかどうかを判定する(ステップ425)。変数
nの値が0でなければ(ステップ425N)、ステップ
407に戻って処理を継続する。変数nの値が0の場合
(ステップ425Y)、処理を終了する。
【0029】図8は、ファイルの使用終了要求の処理手
順を示すフローチャートである。ファイルの使用終了要
求を受け取ると、ファイル管理プログラム6はファイル
管理テーブル8のファイル使用中フラグ82を参照し
て、利用者が使用終了を要求しているファイルが使用中
であるかどうかを判定する(ステップ501)。ファイ
ル使用中でなければ(ステップ501N)、使用中でな
いファイルに対する使用終了要求なので、処理を終了す
る。ファイル使用中であれば(ステップ501Y)、フ
ァイル管理テーブル8のファイル削除中フラグ86を参
照して、ファイルが削除中であるかどうかを判定する
(ステップ502)。ファイル削除中であれば(ステッ
プ502Y)、処理を終了する。ファイル削除中でなけ
れば(ステップ502N)、ファイル管理テーブル8内
の利用者が使用終了を要求しているファイルの最終ブロ
ック番号84が−1であるかどうかを判定する(ステッ
プ503)。最終ブロック番号84が−1であれば(ス
テップ503Y)、データの書き込まれたブロックを持
たないファイルの使用を終了しようとしている場合なの
で、ステップ509に進む。最終ブロック番号84が−
1でなければ(ステップ503N)、ステップ503で
参照した最終ブロック番号84のブロックの次ブロック
番号記録部101にブロック番号としては無効な値であ
る−1を書き込む(ステップ507)。次にブロック使
用状況管理テーブル7を更新して、ファイル管理テーブ
ル8の利用者が使用を終了しようとしているファイルの
仮割当ブロック番号85のブロックに対応する使用状況
72を0(未使用)とする(ステップ509)。次にフ
ァイル管理テーブル8のファイル使用中フラグ82を0
にし(ステップ511)、仮割当ブロック番号85にブ
ロック番号としては無効な値である−1を書き込む(ス
テップ512)。すなわち仮割当したブロックを割当解
除する。次にファイル管理テーブル8の利用者が使用終
了を要求しているファイルに対応するファイル長81、
ファイル使用中フラグ82、ファイル削除中フラグ8
6、割当ブロック番号リスト83及び最終ブロック番号
84を、ファイル管理情報領域11のファイル長21、
ファイル使用中フラグ22、ファイル削除中フラグ2
6、割当ブロック番号リスト23、最終ブロック番号2
4にそれぞれコピーし(ステップ513)、ブロック使
用状況管理テーブル7をブロック使用状況管理領域12
にコピーして(ステップ515)、処理を終了する。
順を示すフローチャートである。ファイルの使用終了要
求を受け取ると、ファイル管理プログラム6はファイル
管理テーブル8のファイル使用中フラグ82を参照し
て、利用者が使用終了を要求しているファイルが使用中
であるかどうかを判定する(ステップ501)。ファイ
ル使用中でなければ(ステップ501N)、使用中でな
いファイルに対する使用終了要求なので、処理を終了す
る。ファイル使用中であれば(ステップ501Y)、フ
ァイル管理テーブル8のファイル削除中フラグ86を参
照して、ファイルが削除中であるかどうかを判定する
(ステップ502)。ファイル削除中であれば(ステッ
プ502Y)、処理を終了する。ファイル削除中でなけ
れば(ステップ502N)、ファイル管理テーブル8内
の利用者が使用終了を要求しているファイルの最終ブロ
ック番号84が−1であるかどうかを判定する(ステッ
プ503)。最終ブロック番号84が−1であれば(ス
テップ503Y)、データの書き込まれたブロックを持
たないファイルの使用を終了しようとしている場合なの
で、ステップ509に進む。最終ブロック番号84が−
1でなければ(ステップ503N)、ステップ503で
参照した最終ブロック番号84のブロックの次ブロック
番号記録部101にブロック番号としては無効な値であ
る−1を書き込む(ステップ507)。次にブロック使
用状況管理テーブル7を更新して、ファイル管理テーブ
ル8の利用者が使用を終了しようとしているファイルの
仮割当ブロック番号85のブロックに対応する使用状況
72を0(未使用)とする(ステップ509)。次にフ
ァイル管理テーブル8のファイル使用中フラグ82を0
にし(ステップ511)、仮割当ブロック番号85にブ
ロック番号としては無効な値である−1を書き込む(ス
テップ512)。すなわち仮割当したブロックを割当解
除する。次にファイル管理テーブル8の利用者が使用終
了を要求しているファイルに対応するファイル長81、
ファイル使用中フラグ82、ファイル削除中フラグ8
6、割当ブロック番号リスト83及び最終ブロック番号
84を、ファイル管理情報領域11のファイル長21、
ファイル使用中フラグ22、ファイル削除中フラグ2
6、割当ブロック番号リスト23、最終ブロック番号2
4にそれぞれコピーし(ステップ513)、ブロック使
用状況管理テーブル7をブロック使用状況管理領域12
にコピーして(ステップ515)、処理を終了する。
【0030】以上のファイル使用終了要求の処理によ
り、ファイル使用中フラグ82及び22が0になり、ま
たファイルの終端に仮に割り当てられていたデータの書
き込まれていないブロックが解放される。
り、ファイル使用中フラグ82及び22が0になり、ま
たファイルの終端に仮に割り当てられていたデータの書
き込まれていないブロックが解放される。
【0031】図9は、ファイルの削除要求の処理手順を
示すフローチャートである。ファイル管理プログラム6
は、ファイル削除要求を受け取ると、まずファイル管理
テーブル8内のファイル使用中フラグ82を参照して、
削除の対象となるファイルが使用中であるかどうかを判
定する(ステップ601)。ファイル使用中であれば
(ステップ601Y)、処理を終了する。ファイル使用
中でなければ(ステップ601N)、ファイル管理テー
ブル8内のファイル削除中フラグ86を参照して、削除
の対象となるファイルがすでに削除中であるかどうかを
判定する(ステップ603)。ファイル削除中であれば
(ステップ603Y)、処理を終了する。ファイル削除
中でなければ(ステップ603N)、ファイル管理テー
ブル8のファイル削除中フラグ86を1(削除中)にし
(ステップ605)、ファイル管理情報領域11のファ
イル削除中フラグ26を1(削除中)にする(ステップ
606)。次にファイル管理テーブル8内の割当ブロッ
ク番号リスト83を参照して、ファイルに割り当てられ
ている全てのブロックについて、ブロック使用状況管理
テーブル7内の使用状況72を0(未使用)にして(ス
テップ607)、ブロック使用状況管理テーブル7の内
容をブロック使用状況管理領域12にコピーする(ステ
ップ609)。次に変数iにファイル管理テーブル8の
割当ブロック番号リスト83の項目数を代入し(ステッ
プ611)、割当ブロック番号リスト83の第i番めの
項目が−1(ファイルにブロックが割り当てられていな
いことを示す)であるか否かを判定する(ステップ61
3)。−1でない場合(ステップ613N)は、ファイ
ルの第i番めの位置にはブロックが割り当てられている
ので、割当ブロック番号リスト83を参照してファイル
の第i番めの位置に割り当てられているブロックの次ブ
ロック番号記録部101に−1、ファイル内位置記録部
102に−1を書き込んで(ステップ615)、ステッ
プ617に進む。第i番めの項目が−1の場合(ステッ
プ613Y)は、変数iの値を1減らす(ステップ61
7)。次に変数iの値が0より大きいかどうかを判定し
(ステップ619)、0より大きい場合(ステップ61
9Y)は、ステップ613に戻って処理を継続する。変
数iの値が0の場合(ステップ619N)は、割当ブロ
ック番号リスト83のすべての項目について処理が終わ
ったので、ファイル管理テーブル8内の削除対象のファ
イルに対応するファイル名80を空白、ファイル長81
を0、ファイル削除中フラグ86を0、割当ブロック番
号リスト83の全項目を−1、最終ブロック番号84を
−1、仮割当ブロック番号85を−1に初期化し(ステ
ップ621)、ファイル管理テーブル8のステップ62
1で更新した部分をファイル管理情報領域11にコピー
して(ステップ623)、処理を終了する。
示すフローチャートである。ファイル管理プログラム6
は、ファイル削除要求を受け取ると、まずファイル管理
テーブル8内のファイル使用中フラグ82を参照して、
削除の対象となるファイルが使用中であるかどうかを判
定する(ステップ601)。ファイル使用中であれば
(ステップ601Y)、処理を終了する。ファイル使用
中でなければ(ステップ601N)、ファイル管理テー
ブル8内のファイル削除中フラグ86を参照して、削除
の対象となるファイルがすでに削除中であるかどうかを
判定する(ステップ603)。ファイル削除中であれば
(ステップ603Y)、処理を終了する。ファイル削除
中でなければ(ステップ603N)、ファイル管理テー
ブル8のファイル削除中フラグ86を1(削除中)にし
(ステップ605)、ファイル管理情報領域11のファ
イル削除中フラグ26を1(削除中)にする(ステップ
606)。次にファイル管理テーブル8内の割当ブロッ
ク番号リスト83を参照して、ファイルに割り当てられ
ている全てのブロックについて、ブロック使用状況管理
テーブル7内の使用状況72を0(未使用)にして(ス
テップ607)、ブロック使用状況管理テーブル7の内
容をブロック使用状況管理領域12にコピーする(ステ
ップ609)。次に変数iにファイル管理テーブル8の
割当ブロック番号リスト83の項目数を代入し(ステッ
プ611)、割当ブロック番号リスト83の第i番めの
項目が−1(ファイルにブロックが割り当てられていな
いことを示す)であるか否かを判定する(ステップ61
3)。−1でない場合(ステップ613N)は、ファイ
ルの第i番めの位置にはブロックが割り当てられている
ので、割当ブロック番号リスト83を参照してファイル
の第i番めの位置に割り当てられているブロックの次ブ
ロック番号記録部101に−1、ファイル内位置記録部
102に−1を書き込んで(ステップ615)、ステッ
プ617に進む。第i番めの項目が−1の場合(ステッ
プ613Y)は、変数iの値を1減らす(ステップ61
7)。次に変数iの値が0より大きいかどうかを判定し
(ステップ619)、0より大きい場合(ステップ61
9Y)は、ステップ613に戻って処理を継続する。変
数iの値が0の場合(ステップ619N)は、割当ブロ
ック番号リスト83のすべての項目について処理が終わ
ったので、ファイル管理テーブル8内の削除対象のファ
イルに対応するファイル名80を空白、ファイル長81
を0、ファイル削除中フラグ86を0、割当ブロック番
号リスト83の全項目を−1、最終ブロック番号84を
−1、仮割当ブロック番号85を−1に初期化し(ステ
ップ621)、ファイル管理テーブル8のステップ62
1で更新した部分をファイル管理情報領域11にコピー
して(ステップ623)、処理を終了する。
【0032】上記のファイル新規作成要求、ファイル使
用開始要求、書き込み要求及びファイル使用終了要求の
手順に従うことにより、新規作成されたファイル及び使
用開始を宣言されたファイルには、1個の空のブロック
が仮に割り当てられ、そのブロックの番号が仮割り当て
ブロック番号85としてファイル管理テーブル8に記憶
される。ファイルにデータを書き込む際には、既存デー
タに対する上書きの場合は既存のブロックの内容を更新
し、ファイルに対する新規ブロック追加の場合には仮割
当されているブロックにデータを書き込み、同時に新た
なブロックを仮にファイルに割り当てて、ファイルに新
規に追加したブロックの次ブロック番号記録部101に
書き込む。これによりファイルに割り当てられるブロッ
クどうしの間に次ブロック番号記録部101による参照
関係を構築することができる。図2及び図4の例では、
ファイルXXXがブロック番号1番、3番、4番のファ
イルから構成されることがファイル管理テーブル8に記
録される他に、ファイル新規作成時に外部記憶装置2に
書き込まれる割当ブロック番号リスト23の先頭の項目
23−1及びブロック番号1番の次にファイルに割り当
てられたブロックがブロック番号3番のブロックである
ことがブロック番号1番のブロックの次ブロック番号記
録部101に、ブロック番号3番のブロックの次にファ
イルに割り当てられたブロックがブロック番号4番のブ
ロックであることがブロック番号3番のブロックの次ブ
ロック番号記録部101に、といったように順次書き込
まれており、各ブロックの次ブロック番号記録部101
の値を参照することにより、ファイルに割り当てられた
ブロックをファイルの先頭から終端までたどっていくこ
とが可能である。ファイルの終端にはデータの書き込ま
れていない空のブロックが仮に割り当てられているが、
空のブロックでは次ブロック番号記録部101の値が−
1となっているので、そのブロックがファイルの終端で
あることが判別できる。すなわち外部記憶装置2に書き
込まれた内容からファイル管理テーブル8の内容を回復
することが可能である。また次ブロック番号記録部10
1及びファイル内位置記録部102はデータ記録部10
3に付加されて外部記憶装置2に書き込まれるため、外
部記憶装置2に対する書き込み操作の数はUNIXなど
の方式に比べて増加することはない。すなわちオーバヘ
ッドはほとんど増加しない。またファイル管理テーブル
8を外部記憶装置2に格納されている全ファイルについ
て回復することにより、ブロック使用状況管理テーブル
7及びブロック使用状況管理領域12の内容も回復する
ことができる。
用開始要求、書き込み要求及びファイル使用終了要求の
手順に従うことにより、新規作成されたファイル及び使
用開始を宣言されたファイルには、1個の空のブロック
が仮に割り当てられ、そのブロックの番号が仮割り当て
ブロック番号85としてファイル管理テーブル8に記憶
される。ファイルにデータを書き込む際には、既存デー
タに対する上書きの場合は既存のブロックの内容を更新
し、ファイルに対する新規ブロック追加の場合には仮割
当されているブロックにデータを書き込み、同時に新た
なブロックを仮にファイルに割り当てて、ファイルに新
規に追加したブロックの次ブロック番号記録部101に
書き込む。これによりファイルに割り当てられるブロッ
クどうしの間に次ブロック番号記録部101による参照
関係を構築することができる。図2及び図4の例では、
ファイルXXXがブロック番号1番、3番、4番のファ
イルから構成されることがファイル管理テーブル8に記
録される他に、ファイル新規作成時に外部記憶装置2に
書き込まれる割当ブロック番号リスト23の先頭の項目
23−1及びブロック番号1番の次にファイルに割り当
てられたブロックがブロック番号3番のブロックである
ことがブロック番号1番のブロックの次ブロック番号記
録部101に、ブロック番号3番のブロックの次にファ
イルに割り当てられたブロックがブロック番号4番のブ
ロックであることがブロック番号3番のブロックの次ブ
ロック番号記録部101に、といったように順次書き込
まれており、各ブロックの次ブロック番号記録部101
の値を参照することにより、ファイルに割り当てられた
ブロックをファイルの先頭から終端までたどっていくこ
とが可能である。ファイルの終端にはデータの書き込ま
れていない空のブロックが仮に割り当てられているが、
空のブロックでは次ブロック番号記録部101の値が−
1となっているので、そのブロックがファイルの終端で
あることが判別できる。すなわち外部記憶装置2に書き
込まれた内容からファイル管理テーブル8の内容を回復
することが可能である。また次ブロック番号記録部10
1及びファイル内位置記録部102はデータ記録部10
3に付加されて外部記憶装置2に書き込まれるため、外
部記憶装置2に対する書き込み操作の数はUNIXなど
の方式に比べて増加することはない。すなわちオーバヘ
ッドはほとんど増加しない。またファイル管理テーブル
8を外部記憶装置2に格納されている全ファイルについ
て回復することにより、ブロック使用状況管理テーブル
7及びブロック使用状況管理領域12の内容も回復する
ことができる。
【0033】図10は、ファイルを使用中に又は削除中
のときに計算機1に障害が発生した後に、外部記憶装置
2に記録されたファイル管理情報領域11及びデータ格
納領域13からファイル管理テーブル8及びブロック使
用状況管理テーブル7の内容を回復し、これによってフ
ァイル管理情報領域11及びブロック使用状況管理領域
12の内容を回復するファイル管理プログラム6のファ
イル管理情報回復処理の手順を示すフローチャートであ
る。
のときに計算機1に障害が発生した後に、外部記憶装置
2に記録されたファイル管理情報領域11及びデータ格
納領域13からファイル管理テーブル8及びブロック使
用状況管理テーブル7の内容を回復し、これによってフ
ァイル管理情報領域11及びブロック使用状況管理領域
12の内容を回復するファイル管理プログラム6のファ
イル管理情報回復処理の手順を示すフローチャートであ
る。
【0034】ファイル管理情報回復処理は、計算機1に
障害が発生した後、すなわちファイル管理テーブル8及
びファイル管理情報領域11の内容が失われている状態
で、利用者によって実行される。計算機1に障害が発生
した時点でファイルを使用中であった場合、通常はファ
イル使用終了要求によって計算機1の主記憶装置から外
部記憶装置2に書き込まれるファイル管理テーブル8及
びブロック使用状況管理テーブル7の内容がファイル管
理情報領域11及びブロック使用状況管理領域12に反
映されていない状態になっている。
障害が発生した後、すなわちファイル管理テーブル8及
びファイル管理情報領域11の内容が失われている状態
で、利用者によって実行される。計算機1に障害が発生
した時点でファイルを使用中であった場合、通常はファ
イル使用終了要求によって計算機1の主記憶装置から外
部記憶装置2に書き込まれるファイル管理テーブル8及
びブロック使用状況管理テーブル7の内容がファイル管
理情報領域11及びブロック使用状況管理領域12に反
映されていない状態になっている。
【0035】ファイル管理情報回復処理が呼び出される
と、ファイル管理プログラム6は、ブロック使用状況管
理領域12の内容を主記憶装置上のブロック使用状況管
理テーブル7にコピーし(ステップ701)、変数iに
1を代入する(ステップ702)。次にファイル管理情
報領域11に記録されている第i番めのファイルのファ
イル名20、ファイル長21、ファイル使用中フラグ2
2、ファイル削除中フラグ26、割当ブロック番号リス
ト23及び最終ブロック番号24を、主記憶装置内のフ
ァイル管理テーブル8のそれぞれファイル名80、ファ
イル長81、ファイル使用中フラグ82、ファイル削除
中フラグ86、割当ブロック番号リスト83及び最終ブ
ロック番号84にコピーする(ステップ703)。次に
仮割当ブロック番号85に−1を格納する(ステップ7
04)。次にコピーした第i番めのファイルのファイル
名80が空白であるかどうかを判定する(ステップ70
5)。ファイル名80が空白であれば(ステップ705
Y)、i番めのファイルは存在しないのでステップ71
7に進む。ファイル名80が空白でなければ(ステップ
705N)、ファイル削除中フラグ86を参照して、計
算機1に障害が発生時した時点でファイルが削除中であ
ったかどうかを判定する(ステップ707)。ファイル
が削除中であったとき(ステップ707Y)、削除中フ
ァイル回復処理を行うことによりブロック使用状況管理
テーブル7及びファイル管理テーブル8の内容を回復す
る(ステップ709)。ファイルが削除中でないとき
(ステップ707N)、ファイル使用中フラグ82を参
照して計算機1に障害が発生した時点でファイルが使用
中であったかどうかを判定する(ステップ711)。フ
ァイル使用中でない場合(ステップ711N)、ステッ
プ717に進む。すなわち計算機1に障害が発生した時
点でファイルが使用中でも削除中でもない場合には、計
算機に障害が発生した時点のファイル管理テーブル8内
のi番めのファイルのファイル名80、ファイル長8
1、ファイル使用中フラグ82、ファイル削除中フラグ
86及び最終ブロック番号84は、ファイル管理情報領
域11のi番めのファイルのファイル名20、ファイル
長21、ファイル使用中フラグ22、ファイル削除中フ
ラグ26及び最終ブロック番号24と等しい。従ってフ
ァイル管理情報領域11の管理情報をファイル管理テー
ブル8にコピーするだけで回復処理が完了する。ファイ
ルが使用中であれば(ステップ711Y)、使用中ファ
イル回復処理を行ってブロック使用状況管理テーブル7
及びファイル管理テーブル8の内容を回復する(ステッ
プ713)。ステップ713の使用中ファイル回復処理
及びステップ709の削除中ファイル回復処理が完了す
ると、ファイル管理テーブル8内のi番めのファイルに
対応するファイル名80、ファイル長81、ファイル使
用中フラグ82、ファイル削除中フラグ86及び最終ブ
ロック番号84を、外部記憶装置2上のファイル管理情
報領域11のファイル名20、ファイル長21、ファイ
ル使用中フラグ22、ファイル削除中フラグ26及び最
終ブロック番号24にコピーする(ステップ715)。
次に変数iの値に1を加え(ステップ717)、ファイ
ル管理情報領域11の全ファイルについて処理を終了し
たか、すなわち変数iの値がファイル管理情報領域11
の終端を越えるかどうかを判定する(ステップ71
9)。全ファイルについて処理終了していない場合(ス
テップ719N)は、ステップ703に戻って処理を継
続する。全ファイルについて処理終了した場合(ステッ
プ719Y)は、ファイル管理情報領域11が管理する
全てのファイルについて回復処理が終了したので、ステ
ップ713及び709で回復されているブロック使用状
況管理テーブル7の内容をブロック使用状況管理領域1
2にコピーして(ステップ721)、処理を終了する。
と、ファイル管理プログラム6は、ブロック使用状況管
理領域12の内容を主記憶装置上のブロック使用状況管
理テーブル7にコピーし(ステップ701)、変数iに
1を代入する(ステップ702)。次にファイル管理情
報領域11に記録されている第i番めのファイルのファ
イル名20、ファイル長21、ファイル使用中フラグ2
2、ファイル削除中フラグ26、割当ブロック番号リス
ト23及び最終ブロック番号24を、主記憶装置内のフ
ァイル管理テーブル8のそれぞれファイル名80、ファ
イル長81、ファイル使用中フラグ82、ファイル削除
中フラグ86、割当ブロック番号リスト83及び最終ブ
ロック番号84にコピーする(ステップ703)。次に
仮割当ブロック番号85に−1を格納する(ステップ7
04)。次にコピーした第i番めのファイルのファイル
名80が空白であるかどうかを判定する(ステップ70
5)。ファイル名80が空白であれば(ステップ705
Y)、i番めのファイルは存在しないのでステップ71
7に進む。ファイル名80が空白でなければ(ステップ
705N)、ファイル削除中フラグ86を参照して、計
算機1に障害が発生時した時点でファイルが削除中であ
ったかどうかを判定する(ステップ707)。ファイル
が削除中であったとき(ステップ707Y)、削除中フ
ァイル回復処理を行うことによりブロック使用状況管理
テーブル7及びファイル管理テーブル8の内容を回復す
る(ステップ709)。ファイルが削除中でないとき
(ステップ707N)、ファイル使用中フラグ82を参
照して計算機1に障害が発生した時点でファイルが使用
中であったかどうかを判定する(ステップ711)。フ
ァイル使用中でない場合(ステップ711N)、ステッ
プ717に進む。すなわち計算機1に障害が発生した時
点でファイルが使用中でも削除中でもない場合には、計
算機に障害が発生した時点のファイル管理テーブル8内
のi番めのファイルのファイル名80、ファイル長8
1、ファイル使用中フラグ82、ファイル削除中フラグ
86及び最終ブロック番号84は、ファイル管理情報領
域11のi番めのファイルのファイル名20、ファイル
長21、ファイル使用中フラグ22、ファイル削除中フ
ラグ26及び最終ブロック番号24と等しい。従ってフ
ァイル管理情報領域11の管理情報をファイル管理テー
ブル8にコピーするだけで回復処理が完了する。ファイ
ルが使用中であれば(ステップ711Y)、使用中ファ
イル回復処理を行ってブロック使用状況管理テーブル7
及びファイル管理テーブル8の内容を回復する(ステッ
プ713)。ステップ713の使用中ファイル回復処理
及びステップ709の削除中ファイル回復処理が完了す
ると、ファイル管理テーブル8内のi番めのファイルに
対応するファイル名80、ファイル長81、ファイル使
用中フラグ82、ファイル削除中フラグ86及び最終ブ
ロック番号84を、外部記憶装置2上のファイル管理情
報領域11のファイル名20、ファイル長21、ファイ
ル使用中フラグ22、ファイル削除中フラグ26及び最
終ブロック番号24にコピーする(ステップ715)。
次に変数iの値に1を加え(ステップ717)、ファイ
ル管理情報領域11の全ファイルについて処理を終了し
たか、すなわち変数iの値がファイル管理情報領域11
の終端を越えるかどうかを判定する(ステップ71
9)。全ファイルについて処理終了していない場合(ス
テップ719N)は、ステップ703に戻って処理を継
続する。全ファイルについて処理終了した場合(ステッ
プ719Y)は、ファイル管理情報領域11が管理する
全てのファイルについて回復処理が終了したので、ステ
ップ713及び709で回復されているブロック使用状
況管理テーブル7の内容をブロック使用状況管理領域1
2にコピーして(ステップ721)、処理を終了する。
【0036】以上の処理により、ファイル管理情報領域
11が管理している全てのファイルのうち計算機1に障
害が発生した時点で使用中もしくは削除中だったファイ
ルについてのみ、それぞれ使用中ファイル回復処理(ス
テップ713)又は削除中ファイル回復処理(ステップ
709)を行い、計算機1に障害が発生した時点で使用
中でも削除中でもなかったファイルについては、ファイ
ル管理情報領域11の管理情報をファイル管理テーブル
8にコピーするだけで回復処理が済み、利用者にとって
計算機1の障害がなかった場合と同じ状態となる。
11が管理している全てのファイルのうち計算機1に障
害が発生した時点で使用中もしくは削除中だったファイ
ルについてのみ、それぞれ使用中ファイル回復処理(ス
テップ713)又は削除中ファイル回復処理(ステップ
709)を行い、計算機1に障害が発生した時点で使用
中でも削除中でもなかったファイルについては、ファイ
ル管理情報領域11の管理情報をファイル管理テーブル
8にコピーするだけで回復処理が済み、利用者にとって
計算機1の障害がなかった場合と同じ状態となる。
【0037】図11は、ステップ713の使用中ファイ
ル回復処理の処理手順を展開して示すフローチャートで
ある。ファイル管理プログラム6は、まずファイル管理
テーブル8内のi番めのファイルに対応する割当ブロッ
ク番号リスト83の全項目に−1を書き込む(ステップ
801)。次にi番めのファイルに対応する最終ブロッ
ク番号84に−1を書き込み(ステップ803)、変数
pに0を代入して(ステップ804)、変数qにi番め
のファイルに対応する割当ブロック番号リスト23の先
頭の項目23−1の値を代入する(ステップ805)。
次に変数qの値が−1であるかどうかを判定する(ステ
ップ807)。変数qの値が−1の場合(ステップ80
7Y)は、ファイルには1つもブロックが割り当てられ
ていないことがわかるので、ステップ820に進む。変
数qの値が−1でない場合(ステップ807N)、ブロ
ック番号qのブロックのファイル内位置記録部102の
値が−1であるか否かを判定する(ステップ808)。
ファイル内位置記録部102の値が−1の場合(ステッ
プ808Y)は、ブロック番号qのブロックはファイル
の終端に仮に割り当てられたがまだデータを書き込まれ
ていないブロックであることがわかり、従って現在処理
中のファイルにはそれ以上ブロックが存在しないことが
わかるので、ステップ819に進む。ファイル内位置記
録部102の値が−1でない場合(ステップ808N)
は、変数pにブロック番号qのブロックのファイル内位
置記録部102の値を代入し(ステップ809)、第i
番めのファイルに対応する最終ブロック番号84に変数
qの値を代入する(ステップ813)。次に割当ブロッ
ク番号リストの第p番めの項目に変数qの値を代入し
(ステップ815)、ブロック使用状況管理テーブル7
のブロック番号qのブロックの使用状況72を1(使用
中)にし(ステップ816)、変数qにブロック番号q
のブロックの次ブロック番号記録部101の値を代入し
て(ステップ817)、ステップ808に戻って処理を
継続する。ステップ819では、第i番めのファイルに
対応するブロック使用状況管理テーブル7のブロック番
号qのブロックの使用状況72を0(未使用)にし(ス
テップ819)、ファイル使用中フラグ82を0にする
(ステップ820)。最後にファイル長81に変数pの
値を代入して(ステップ821)、処理を終了する。
ル回復処理の処理手順を展開して示すフローチャートで
ある。ファイル管理プログラム6は、まずファイル管理
テーブル8内のi番めのファイルに対応する割当ブロッ
ク番号リスト83の全項目に−1を書き込む(ステップ
801)。次にi番めのファイルに対応する最終ブロッ
ク番号84に−1を書き込み(ステップ803)、変数
pに0を代入して(ステップ804)、変数qにi番め
のファイルに対応する割当ブロック番号リスト23の先
頭の項目23−1の値を代入する(ステップ805)。
次に変数qの値が−1であるかどうかを判定する(ステ
ップ807)。変数qの値が−1の場合(ステップ80
7Y)は、ファイルには1つもブロックが割り当てられ
ていないことがわかるので、ステップ820に進む。変
数qの値が−1でない場合(ステップ807N)、ブロ
ック番号qのブロックのファイル内位置記録部102の
値が−1であるか否かを判定する(ステップ808)。
ファイル内位置記録部102の値が−1の場合(ステッ
プ808Y)は、ブロック番号qのブロックはファイル
の終端に仮に割り当てられたがまだデータを書き込まれ
ていないブロックであることがわかり、従って現在処理
中のファイルにはそれ以上ブロックが存在しないことが
わかるので、ステップ819に進む。ファイル内位置記
録部102の値が−1でない場合(ステップ808N)
は、変数pにブロック番号qのブロックのファイル内位
置記録部102の値を代入し(ステップ809)、第i
番めのファイルに対応する最終ブロック番号84に変数
qの値を代入する(ステップ813)。次に割当ブロッ
ク番号リストの第p番めの項目に変数qの値を代入し
(ステップ815)、ブロック使用状況管理テーブル7
のブロック番号qのブロックの使用状況72を1(使用
中)にし(ステップ816)、変数qにブロック番号q
のブロックの次ブロック番号記録部101の値を代入し
て(ステップ817)、ステップ808に戻って処理を
継続する。ステップ819では、第i番めのファイルに
対応するブロック使用状況管理テーブル7のブロック番
号qのブロックの使用状況72を0(未使用)にし(ス
テップ819)、ファイル使用中フラグ82を0にする
(ステップ820)。最後にファイル長81に変数pの
値を代入して(ステップ821)、処理を終了する。
【0038】以上の処理によって、計算機1の障害発生
時に使用中であったファイルに割り当てられたブロック
を、各ブロックの次ブロック番号記録部101を参照す
ることによってファイルの先頭に割り当てられたブロッ
クからファイルの終端に仮に割り当てられているデータ
を書き込まれていないブロックまで順にたどりながらフ
ァイル管理テーブル8の内容を回復することができる。
時に使用中であったファイルに割り当てられたブロック
を、各ブロックの次ブロック番号記録部101を参照す
ることによってファイルの先頭に割り当てられたブロッ
クからファイルの終端に仮に割り当てられているデータ
を書き込まれていないブロックまで順にたどりながらフ
ァイル管理テーブル8の内容を回復することができる。
【0039】計算機1の障害発生時に使用中であったフ
ァイルについては、ステップ417で書き込み位置が第
p番めのブロックについて次ブロック番号記録部10
1、ファイル内位置記録部102及びデータ記録部10
3の書き込みをする前に計算機1の障害が発生した場合
には、書き込み位置が第p−1番めのブロックまではフ
ァイル管理テーブル8の回復処理が済んでいるので、利
用者プログラム5は第p番めのブロックからデータ書き
込み要求をすれば処理を再開始できる。ステップ417
で書き込み位置が第p番めのブロックについて書き込み
が終了した後に計算機1の障害が発生した場合には、書
き込み位置が第p番めのブロックまではファイル管理テ
ーブル8の回復処理が済んでいるので、利用者プログラ
ム5はその次のブロックからデータ書き込み要求をすれ
ば処理を継続できる。いずれの場合にも仮割当されたブ
ロックが割当解放され、ファイル管理テーブル8がファ
イル使用終了の状態に回復されているので、ファイル新
規作成要求又はファイル使用開始要求から処理を再開始
することができる。
ァイルについては、ステップ417で書き込み位置が第
p番めのブロックについて次ブロック番号記録部10
1、ファイル内位置記録部102及びデータ記録部10
3の書き込みをする前に計算機1の障害が発生した場合
には、書き込み位置が第p−1番めのブロックまではフ
ァイル管理テーブル8の回復処理が済んでいるので、利
用者プログラム5は第p番めのブロックからデータ書き
込み要求をすれば処理を再開始できる。ステップ417
で書き込み位置が第p番めのブロックについて書き込み
が終了した後に計算機1の障害が発生した場合には、書
き込み位置が第p番めのブロックまではファイル管理テ
ーブル8の回復処理が済んでいるので、利用者プログラ
ム5はその次のブロックからデータ書き込み要求をすれ
ば処理を継続できる。いずれの場合にも仮割当されたブ
ロックが割当解放され、ファイル管理テーブル8がファ
イル使用終了の状態に回復されているので、ファイル新
規作成要求又はファイル使用開始要求から処理を再開始
することができる。
【0040】図12は、ステップ709の削除中ファイ
ル回復処理の処理手順を展開して示すフローチャートで
ある。ファイル管理プログラム6は、まず第i番めのフ
ァイルに対応する割当ブロック番号リスト83の全項目
に−1を代入する(ステップ901)。次に変数qに第
i番めのファイルに対応する割当ブロック番号リスト2
3の先頭の項目23−1の値を代入する(ステップ90
3)。次に変数qの値が−1であるかどうかを判定する
(ステップ905)。変数qの値が−1の場合(ステッ
プ905Y)は、第i番めのファイルを構成する全ブロ
ックについて処理が終了したことがわかるので、ステッ
プ911に進む。変数qの値が−1でない場合(ステッ
プ905N)は、ブロック番号qのブロックに対応する
ブロック使用状況管理テーブル7の使用状況72を0
(未使用)にし(ステップ907)、変数qにブロック
番号qのブロックの次ブロック番号記録部101の値を
代入して(ステップ909)、ステップ905に戻り、
処理を継続する。ステップ911ではファイル管理テー
ブル8内の第i番めのファイルに対応するファイル名8
0を空白にし、ファイル管理テーブル8内の第i番めの
ファイルに対応するファイル長を0にする(ステップ9
11)。次に最終ブロック番号84に−1を代入し(ス
テップ913)、第i番めのファイルに対応するファイ
ル削除中フラグ86を0にして(ステップ915)、処
理を終了する。
ル回復処理の処理手順を展開して示すフローチャートで
ある。ファイル管理プログラム6は、まず第i番めのフ
ァイルに対応する割当ブロック番号リスト83の全項目
に−1を代入する(ステップ901)。次に変数qに第
i番めのファイルに対応する割当ブロック番号リスト2
3の先頭の項目23−1の値を代入する(ステップ90
3)。次に変数qの値が−1であるかどうかを判定する
(ステップ905)。変数qの値が−1の場合(ステッ
プ905Y)は、第i番めのファイルを構成する全ブロ
ックについて処理が終了したことがわかるので、ステッ
プ911に進む。変数qの値が−1でない場合(ステッ
プ905N)は、ブロック番号qのブロックに対応する
ブロック使用状況管理テーブル7の使用状況72を0
(未使用)にし(ステップ907)、変数qにブロック
番号qのブロックの次ブロック番号記録部101の値を
代入して(ステップ909)、ステップ905に戻り、
処理を継続する。ステップ911ではファイル管理テー
ブル8内の第i番めのファイルに対応するファイル名8
0を空白にし、ファイル管理テーブル8内の第i番めの
ファイルに対応するファイル長を0にする(ステップ9
11)。次に最終ブロック番号84に−1を代入し(ス
テップ913)、第i番めのファイルに対応するファイ
ル削除中フラグ86を0にして(ステップ915)、処
理を終了する。
【0041】上記の処理手順により、計算機1に障害が
発生した時点で削除中だったファイルについてファイル
削除要求を完了し、ファイルが削除された状態にする。
発生した時点で削除中だったファイルについてファイル
削除要求を完了し、ファイルが削除された状態にする。
【0042】第1の実施形態によれば、ファイル新規作
成要求又はファイル使用開始要求の処理終了によって外
部記憶装置2の割当ブロック番号リスト23の先頭の項
目にはデータ格納領域13に所在するファイルの先頭の
データブロック又は未使用ブロックのブロック番号が必
ず記録されている。またデータ格納領域13には割当ブ
ロック番号リスト23の先頭の項目が指定するブロック
番号のブロックから始まって後続のブロックが次々に次
ブロック番号記録部101によってチェインされ、ファ
イルの最後は未使用ブロックで終端する。そしてデータ
書き込み処理のどの時点で計算機1に障害が発生しても
割当ブロック番号リスト23の先頭の項目とファイルの
終端である未使用ブロックが保存される。またデータ書
き込み処理中に障害が発生したとき、外部記憶装置2の
ファイル使用中フラグ22には1(使用中)のフラグが
保存されている。従ってファイル使用中フラグ22が使
用中であるファイルについて割当ブロック番号リスト2
3の先頭の項目で指定されるブロック番号のブロックか
ら始まって次々に次ブロック番号記録部101をたどる
ことによって、ファイルの最後に設けられた未使用ブロ
ックまで到達でき、当該ファイルについてファイル管理
テーブル8の内容を回復することができる。また上記説
明によってブロック使用状況管理テーブル7の内容も回
復されることが理解される。ブロック使用状況管理テー
ブル7の回復に伴ってデータ書き込み処理の時点で割り
当てられていた未使用ブロックが解放され、再びファイ
ル新規作成要求又はファイル使用開始要求から処理を再
開始することが可能になる。なおファイル回復のために
必要な次ブロック番号記録部101は、利用者プログラ
ム5が要求するデータ記録部103のデータに付加して
同時に書き込まれるため、外部記憶装置2に対する書き
込み操作の数は増加せず、従ってオーバヘッドもほとん
ど増加しない。
成要求又はファイル使用開始要求の処理終了によって外
部記憶装置2の割当ブロック番号リスト23の先頭の項
目にはデータ格納領域13に所在するファイルの先頭の
データブロック又は未使用ブロックのブロック番号が必
ず記録されている。またデータ格納領域13には割当ブ
ロック番号リスト23の先頭の項目が指定するブロック
番号のブロックから始まって後続のブロックが次々に次
ブロック番号記録部101によってチェインされ、ファ
イルの最後は未使用ブロックで終端する。そしてデータ
書き込み処理のどの時点で計算機1に障害が発生しても
割当ブロック番号リスト23の先頭の項目とファイルの
終端である未使用ブロックが保存される。またデータ書
き込み処理中に障害が発生したとき、外部記憶装置2の
ファイル使用中フラグ22には1(使用中)のフラグが
保存されている。従ってファイル使用中フラグ22が使
用中であるファイルについて割当ブロック番号リスト2
3の先頭の項目で指定されるブロック番号のブロックか
ら始まって次々に次ブロック番号記録部101をたどる
ことによって、ファイルの最後に設けられた未使用ブロ
ックまで到達でき、当該ファイルについてファイル管理
テーブル8の内容を回復することができる。また上記説
明によってブロック使用状況管理テーブル7の内容も回
復されることが理解される。ブロック使用状況管理テー
ブル7の回復に伴ってデータ書き込み処理の時点で割り
当てられていた未使用ブロックが解放され、再びファイ
ル新規作成要求又はファイル使用開始要求から処理を再
開始することが可能になる。なおファイル回復のために
必要な次ブロック番号記録部101は、利用者プログラ
ム5が要求するデータ記録部103のデータに付加して
同時に書き込まれるため、外部記憶装置2に対する書き
込み操作の数は増加せず、従ってオーバヘッドもほとん
ど増加しない。
【0043】なお第1の実施形態においては、利用者プ
ログラム5がファイル使用開始要求を発行する際は必ず
ファイル使用中フラグ22及び82を1(使用中)に変
更し、なおかつ新しく空のブロックをファイルの終端に
割り当てる処理を行っているが、ファイル使用開始要求
のパラメータとして「読み出し専用」を示すフラグを受
け取り、読み出し専用の目的でファイルの使用を開始す
る場合には空のブロックを割り当てる処理を省略し、ま
たファイル使用中フラグ22及び82を0のままにする
ことによって、不要な空のブロックを割り当てるオーバ
ヘッドをなくし、かつ計算機1の障害発生時には、該フ
ァイルをステップ713の使用中ファイル回復処理の対
象外とするような実施形態も可能である。この場合には
ファイル使用終了処理は、ファイル使用中でないので何
の処理もせずに終了する。
ログラム5がファイル使用開始要求を発行する際は必ず
ファイル使用中フラグ22及び82を1(使用中)に変
更し、なおかつ新しく空のブロックをファイルの終端に
割り当てる処理を行っているが、ファイル使用開始要求
のパラメータとして「読み出し専用」を示すフラグを受
け取り、読み出し専用の目的でファイルの使用を開始す
る場合には空のブロックを割り当てる処理を省略し、ま
たファイル使用中フラグ22及び82を0のままにする
ことによって、不要な空のブロックを割り当てるオーバ
ヘッドをなくし、かつ計算機1の障害発生時には、該フ
ァイルをステップ713の使用中ファイル回復処理の対
象外とするような実施形態も可能である。この場合には
ファイル使用終了処理は、ファイル使用中でないので何
の処理もせずに終了する。
【0044】第1の実施形態において、最終ブロック番
号84は、ファイル使用終了時に仮割当ブロックを解放
するために最終ブロックのファイル内位置記録部102
に−1を書き込んで仮割当ブロックをファイルの終端か
ら切り離すときに最終ブロックへのアクセスを速くする
ために使用されており、回復処理では特に必要としな
い。割当ブロック番号リスト83の項目をたどって行っ
て−1でない最後のブロック番号が最終ブロックである
から、割当ブロック番号リスト83があれば最終ブロッ
ク番号84を設けなくても本発明を実施することが可能
である。また第1の実施形態ではデータ格納領域13上
の各ブロックについてファイル内位置記録部102を設
けているが、これは回復処理のときにファイル内位置か
ら割当ブロック番号リスト83の対応する項目にアクセ
スするために使用される。しかし割当ブロック番号リス
ト23の先頭の項目で示されるブロック番号のブロック
がファイル内位置(相対ブロック番号)1番のブロック
から始まって次ブロック番号記録部101によって次々
にチェインされるブロックの順番がファイル内位置に対
応しているならば、次ブロック番号記録部101をたど
って次のブロックにアクセスするときファイル内位置を
1増加させることによってファイル内位置を容易に計算
できるのでファイル内位置記録部102は必要ない。こ
のようにファイル内位置記録部102がない場合のブロ
ックが仮割当ブロックであるか否かの判定は、次ブロッ
ク番号記録部101の値が特定の識別子、例えば−1で
あるか否かによって行うか、または次ブロック番号記録
部101とは別にブロックが仮割当ブロックであるか否
かを示すフラグ(識別子)を設け、このフラグを判定す
ることによって行うことが可能である。
号84は、ファイル使用終了時に仮割当ブロックを解放
するために最終ブロックのファイル内位置記録部102
に−1を書き込んで仮割当ブロックをファイルの終端か
ら切り離すときに最終ブロックへのアクセスを速くする
ために使用されており、回復処理では特に必要としな
い。割当ブロック番号リスト83の項目をたどって行っ
て−1でない最後のブロック番号が最終ブロックである
から、割当ブロック番号リスト83があれば最終ブロッ
ク番号84を設けなくても本発明を実施することが可能
である。また第1の実施形態ではデータ格納領域13上
の各ブロックについてファイル内位置記録部102を設
けているが、これは回復処理のときにファイル内位置か
ら割当ブロック番号リスト83の対応する項目にアクセ
スするために使用される。しかし割当ブロック番号リス
ト23の先頭の項目で示されるブロック番号のブロック
がファイル内位置(相対ブロック番号)1番のブロック
から始まって次ブロック番号記録部101によって次々
にチェインされるブロックの順番がファイル内位置に対
応しているならば、次ブロック番号記録部101をたど
って次のブロックにアクセスするときファイル内位置を
1増加させることによってファイル内位置を容易に計算
できるのでファイル内位置記録部102は必要ない。こ
のようにファイル内位置記録部102がない場合のブロ
ックが仮割当ブロックであるか否かの判定は、次ブロッ
ク番号記録部101の値が特定の識別子、例えば−1で
あるか否かによって行うか、または次ブロック番号記録
部101とは別にブロックが仮割当ブロックであるか否
かを示すフラグ(識別子)を設け、このフラグを判定す
ることによって行うことが可能である。
【0045】(2)第2の実施形態 以下本発明の第2の実施形態について説明する。第1の
実施形態と異なる部分についてのみ説明する。本実施形
態は、ファイルに対するデータ書き込みを行う際のオー
バヘッドの増加を抑えつつ計算機1に障害が発生した場
合でもファイルの管理情報を回復することが可能であ
り、なおかつ利用者プログラム5がファイルの使用開始
を宣言するごとにファイルのバージョンを自動的に更新
し、またファイルのデータに上書きをする場合にも必ず
新規のブロックを割り当てることにより、利用者が指定
したバージョンの状態にファイルを回復する手段を提供
することを特徴とする。本実施形態においては、データ
の上書き時にも新規ブロックを割り当てるためブロック
の消費量が増加するが、利用者プログラム5がファイル
の使用終了要求を発行する度に上書きされたブロックを
解放する処理を行うことにより、ブロックの消費量を第
1の実施形態と同程度に抑える。解放された上書き済の
ブロックは、利用者プログラム5の指定により旧バージ
ョンのファイルを回復する際に用いられる他、データ格
納領域13に未使用のブロックがなくなった場合には、
別ファイルに割り当てるためにも使用される。
実施形態と異なる部分についてのみ説明する。本実施形
態は、ファイルに対するデータ書き込みを行う際のオー
バヘッドの増加を抑えつつ計算機1に障害が発生した場
合でもファイルの管理情報を回復することが可能であ
り、なおかつ利用者プログラム5がファイルの使用開始
を宣言するごとにファイルのバージョンを自動的に更新
し、またファイルのデータに上書きをする場合にも必ず
新規のブロックを割り当てることにより、利用者が指定
したバージョンの状態にファイルを回復する手段を提供
することを特徴とする。本実施形態においては、データ
の上書き時にも新規ブロックを割り当てるためブロック
の消費量が増加するが、利用者プログラム5がファイル
の使用終了要求を発行する度に上書きされたブロックを
解放する処理を行うことにより、ブロックの消費量を第
1の実施形態と同程度に抑える。解放された上書き済の
ブロックは、利用者プログラム5の指定により旧バージ
ョンのファイルを回復する際に用いられる他、データ格
納領域13に未使用のブロックがなくなった場合には、
別ファイルに割り当てるためにも使用される。
【0046】第2の実施形態のシステム構成図として、
図1に示す構成図は第2の実施形態にも適用される。以
下に詳述するように、ファイル管理テーブル8、ブロッ
ク使用状況管理テーブル7、ファイル管理情報領域1
1、ブロック使用状況管理領域12及びデータ格納領域
13の内容は第1の実施形態と異なり、ファイル管理プ
ログラム6の処理は第1の実施形態の処理と異なるが、
以下同じ符号を用いるものとする。従ってこれらの構成
要素をその符号とともに参照するとき、特に断らない限
りそれらは第2の実施形態の構成要素を指す。
図1に示す構成図は第2の実施形態にも適用される。以
下に詳述するように、ファイル管理テーブル8、ブロッ
ク使用状況管理テーブル7、ファイル管理情報領域1
1、ブロック使用状況管理領域12及びデータ格納領域
13の内容は第1の実施形態と異なり、ファイル管理プ
ログラム6の処理は第1の実施形態の処理と異なるが、
以下同じ符号を用いるものとする。従ってこれらの構成
要素をその符号とともに参照するとき、特に断らない限
りそれらは第2の実施形態の構成要素を指す。
【0047】図13(a)は、ファイル管理テーブル8
のデータ形式の例を示す図である。第1の実施形態のフ
ァイル管理テーブル8に対してファイルID87、バー
ジョン88、ファイル状態89、上書き済ブロックリス
ト90及び次ブロック番号テーブル記憶領域95が追加
又は変更された項目である。ファイルID87は、作成
されたファイルごとに割り振られる一意な番号である。
バージョン88は、利用者プログラム5がファイルの使
用開始及び使用終了を要求するごとに1増加する値であ
る。利用者プログラム5は、ファイルのバージョンを指
定することにより指定したバージョンのデータを格納し
ているブロックが他ファイルに割り当てられていない限
りそのバージョンのファイルの内容を読み出すことがで
きる。ファイル状態89は、ファイルの状態を示す値で
あり、「未使用」「使用中」「上書き済ブロック解放
中」「格納中」「削除済」のいずれかの値をとる。「未
使用」はファイル管理テーブル8の該当する項目にファ
イル管理情報が存在しない状態であり、「使用中」は利
用者プログラム5がファイル使用開始要求を発行してフ
ァイルを使用している状態であり、「上書き済ブロック
解放中」は利用者プログラム5がファイル使用終了要求
を発行したことによりそれまでに上書きされたブロック
を解放している作業中の状態であり、「格納中」はファ
イル使用終了要求が完了した状態であり、「削除済」は
ファイルが削除された状態であることを示す。
のデータ形式の例を示す図である。第1の実施形態のフ
ァイル管理テーブル8に対してファイルID87、バー
ジョン88、ファイル状態89、上書き済ブロックリス
ト90及び次ブロック番号テーブル記憶領域95が追加
又は変更された項目である。ファイルID87は、作成
されたファイルごとに割り振られる一意な番号である。
バージョン88は、利用者プログラム5がファイルの使
用開始及び使用終了を要求するごとに1増加する値であ
る。利用者プログラム5は、ファイルのバージョンを指
定することにより指定したバージョンのデータを格納し
ているブロックが他ファイルに割り当てられていない限
りそのバージョンのファイルの内容を読み出すことがで
きる。ファイル状態89は、ファイルの状態を示す値で
あり、「未使用」「使用中」「上書き済ブロック解放
中」「格納中」「削除済」のいずれかの値をとる。「未
使用」はファイル管理テーブル8の該当する項目にファ
イル管理情報が存在しない状態であり、「使用中」は利
用者プログラム5がファイル使用開始要求を発行してフ
ァイルを使用している状態であり、「上書き済ブロック
解放中」は利用者プログラム5がファイル使用終了要求
を発行したことによりそれまでに上書きされたブロック
を解放している作業中の状態であり、「格納中」はファ
イル使用終了要求が完了した状態であり、「削除済」は
ファイルが削除された状態であることを示す。
【0048】ファイル使用終了の処理が終了したとき、
上書きブロックがあるときには「上書き済ブロック解放
中」から「格納中」に移行し、上書きブロックがないと
きには「使用中」から「格納中」に移行する。またファ
イル削除処理が終了すると、「格納中」が「削除済」に
移行する。ファイル使用開始の処理を行うと、「格納
中」が「使用中」に移行する。またファイル新規作成要
求がなされると「未使用」から「使用中」に移行する
が、ファイル管理テーブル8の「未使用」の行がなくな
ったとき「削除済」の行を「使用中」に移行して使用す
ることが可能である。 上書き済ブロックリスト90
は、「使用中」のファイルについてデータが上書きされ
たブロックのブロック番号を保持するリストである。次
ブロック番号テーブル記憶領域95は、最終ブロック番
号84に格納されているブロック番号のブロックの次ブ
ロック番号テーブル記録部104に格納されている次ブ
ロック番号テーブルのコピーである次ブロック番号テー
ブル96を格納している。次ブロック番号テーブル96
は、最終ブロック番号84に格納されているブロック番
号のブロックにデータが書き込まれたときのファイルの
バージョン97と、データが書き込まれた時点での次ブ
ロックのブロック番号である次ブロック番号98との対
応表である。
上書きブロックがあるときには「上書き済ブロック解放
中」から「格納中」に移行し、上書きブロックがないと
きには「使用中」から「格納中」に移行する。またファ
イル削除処理が終了すると、「格納中」が「削除済」に
移行する。ファイル使用開始の処理を行うと、「格納
中」が「使用中」に移行する。またファイル新規作成要
求がなされると「未使用」から「使用中」に移行する
が、ファイル管理テーブル8の「未使用」の行がなくな
ったとき「削除済」の行を「使用中」に移行して使用す
ることが可能である。 上書き済ブロックリスト90
は、「使用中」のファイルについてデータが上書きされ
たブロックのブロック番号を保持するリストである。次
ブロック番号テーブル記憶領域95は、最終ブロック番
号84に格納されているブロック番号のブロックの次ブ
ロック番号テーブル記録部104に格納されている次ブ
ロック番号テーブルのコピーである次ブロック番号テー
ブル96を格納している。次ブロック番号テーブル96
は、最終ブロック番号84に格納されているブロック番
号のブロックにデータが書き込まれたときのファイルの
バージョン97と、データが書き込まれた時点での次ブ
ロックのブロック番号である次ブロック番号98との対
応表である。
【0049】図13(b)は、ファイル管理情報領域1
1のデータ形式を示す図である。第1の実施形態のファ
イル管理情報領域11に対してファイルID27、バー
ジョン28、ファイル状態29及び先頭ブロック番号テ
ーブル30が追加又は変更された項目である。ファイル
ID27、バージョン28及びファイル状態29は、そ
れぞれファイルID87、バージョン88及びファイル
状態89と同じ意味をもつ。先頭ブロック番号テーブル
30は、ファイルの先頭のブロックが割り当てられたと
きのファイルのバージョン91とそのバージョンに対応
するファイルの先頭ブロックの番号92の対応表であ
る。
1のデータ形式を示す図である。第1の実施形態のファ
イル管理情報領域11に対してファイルID27、バー
ジョン28、ファイル状態29及び先頭ブロック番号テ
ーブル30が追加又は変更された項目である。ファイル
ID27、バージョン28及びファイル状態29は、そ
れぞれファイルID87、バージョン88及びファイル
状態89と同じ意味をもつ。先頭ブロック番号テーブル
30は、ファイルの先頭のブロックが割り当てられたと
きのファイルのバージョン91とそのバージョンに対応
するファイルの先頭ブロックの番号92の対応表であ
る。
【0050】図14(a)は、ブロック使用状況管理テ
ーブル7のデータ形式の例を示す図である。ブロックの
使用状況72は、「未使用」「使用中」「上書き済」の
3つの状態をとる。「未使用」はブロックが一度もファ
イルに割り当てられたことのない状態、またはファイル
に割り当てられた後にファイルの削除によって解放され
た状態であり、「使用中」はブロックがファイルに割り
当てられている状態、「上書き済」はブロックがファイ
ルに割り当てられた後、上書きによってその内容が古い
ものであることを示す。
ーブル7のデータ形式の例を示す図である。ブロックの
使用状況72は、「未使用」「使用中」「上書き済」の
3つの状態をとる。「未使用」はブロックが一度もファ
イルに割り当てられたことのない状態、またはファイル
に割り当てられた後にファイルの削除によって解放され
た状態であり、「使用中」はブロックがファイルに割り
当てられている状態、「上書き済」はブロックがファイ
ルに割り当てられた後、上書きによってその内容が古い
ものであることを示す。
【0051】図14(b)は、ブロック使用状況管理領
域12のデータ形式の例を示す図である。ブロック使用
状況管理領域12はブロック使用状況管理テーブル7の
コピーである。
域12のデータ形式の例を示す図である。ブロック使用
状況管理領域12はブロック使用状況管理テーブル7の
コピーである。
【0052】図15は、データ格納領域13のデータ形
式の例を示す図である。第1の実施形態のデータ格納領
域13に対して次ブロック番号テーブル記録部104、
ファイルID記録部105及びブロック状態記録部10
6が追加又は変更された項目である。次ブロック番号テ
ーブル記録部104は、当該ブロックにデータが書き込
まれたときのファイルのバージョンとその時点でのファ
イル内で当該ブロックの次に位置するブロックの番号で
ある次ブロック番号との対応表である。ファイルID記
録部105は、当該ブロックが割り当てられているファ
イルのファイルID87を記録する。ブロック状態記録
部106は、当該ブロックの状態として「未使用」「使
用中」「上書き済」のいずれかの値を記憶している。そ
れぞれの状態は、ブロック使用状況管理テーブル7の使
用状況72の意味するところと同じである。
式の例を示す図である。第1の実施形態のデータ格納領
域13に対して次ブロック番号テーブル記録部104、
ファイルID記録部105及びブロック状態記録部10
6が追加又は変更された項目である。次ブロック番号テ
ーブル記録部104は、当該ブロックにデータが書き込
まれたときのファイルのバージョンとその時点でのファ
イル内で当該ブロックの次に位置するブロックの番号で
ある次ブロック番号との対応表である。ファイルID記
録部105は、当該ブロックが割り当てられているファ
イルのファイルID87を記録する。ブロック状態記録
部106は、当該ブロックの状態として「未使用」「使
用中」「上書き済」のいずれかの値を記憶している。そ
れぞれの状態は、ブロック使用状況管理テーブル7の使
用状況72の意味するところと同じである。
【0053】図16は、本実施形態におけるファイル新
規作成処理の処理手順を示すフローチャートである。フ
ァイル新規作成要求を受け付けると、ファイル管理プロ
グラム6はファイル管理情報領域11にファイル状態2
9が「未使用」となっている行があるかどうかを判定す
る(ステップ1101)。「未使用」の行がない場合
(ステップ1101N)、ファイル管理情報領域11に
ファイル状態29が「削除済」となっている行があるか
どうかを判定する(ステップ1103)。「削除済」の
行がない場合(ステップ1103N)、ファイル管理情
報領域11には新規作成するファイルのために利用でき
る行が存在しないことがわかるので、処理を終了する。
「未使用」の行がある場合(ステップ1101Y)及び
「削除済」の行がある場合(ステップ1103Y)に
は、新規に作成しようとしているファイルとファイル名
20が同じでかつファイル状態29が「削除済」でない
行がファイル管理情報領域11に存在するかどうかを判
定する(ステップ1105)。同名のファイルが存在す
る場合(ステップ1105Y)は、新規作成しようとす
るファイルがすでに存在するので、処理を終了する。同
名のファイルが存在しない場合(ステップ1105N)
は、空きブロック検索処理を行い(ステップ110
7)、検索処理の結果使用可能なブロック(「未使用」
又は「上書き済」のブロック)が存在したかどうかを判
定する(ステップ1109)。使用可能なブロックが存
在しない場合(ステップ1109N)は、書き込み可能
なブロックが存在せず、従って新規作成したファイルに
データを書き込むことができないので処理を終了する。
使用可能なブロックが存在する場合(ステップ1109
Y)は、ファイル管理テーブル8を作成する(ステップ
1111)。すなわちファイル管理テーブル8にファイ
ル名80として利用者プログラム5の指定したファイル
名、ファイルID87として一意にファイルを識別可能
な値、ファイル長81として0、バージョン88として
0、ファイル状態89として「使用中」、仮割当ブロッ
ク番号85としてステップ1107での検索の結果発見
したブロックの番号、最終ブロック番号84としてブロ
ック番号としては無効な値である−1を書き込み、次ブ
ロック番号テーブル記憶領域95に記録されている次ブ
ロック番号テーブル96の全項目についてバージョン9
7を−1、次ブロック番号98を−1に初期化する。次
にファイル管理情報領域11のファイル名20、ファイ
ルID27、ファイル長21、バージョン28、ファイ
ル状態29及び最終ブロック番号24をファイル管理テ
ーブル8のそれぞれファイル名80、ファイルID8
7、ファイル長81、バージョン88、ファイル状態8
9及び最終ブロック番号84からコピーし、同時に先頭
ブロック番号テーブル30の新規項目としてバージョン
91にファイル管理テーブル8のバージョン88、ブロ
ック番号92としてステップ1107の空きブロック検
索処理で発見したブロックの番号をもつ項目を追加する
(ステップ1113)。なおステップ1113でファイ
ル管理情報領域11に書き込むデータはすべて外部記憶
装置2上で近接した位置にあり、外部記憶装置2に対す
る1回の出力操作で書き込むことができる。次に次ブロ
ック番号テーブル記憶領域95に記憶されている次ブロ
ック番号テーブル96をステップ1107の空きブロッ
ク検索処理で発見したブロックの次ブロック番号テーブ
ル記録部104の次ブロック番号テーブルにコピーする
(ステップ1114)。次にブロック使用状況管理テー
ブル7を更新して、ステップ1107で発見したブロッ
クの使用状況72を「使用中」に変更する(ステップ1
115)。
規作成処理の処理手順を示すフローチャートである。フ
ァイル新規作成要求を受け付けると、ファイル管理プロ
グラム6はファイル管理情報領域11にファイル状態2
9が「未使用」となっている行があるかどうかを判定す
る(ステップ1101)。「未使用」の行がない場合
(ステップ1101N)、ファイル管理情報領域11に
ファイル状態29が「削除済」となっている行があるか
どうかを判定する(ステップ1103)。「削除済」の
行がない場合(ステップ1103N)、ファイル管理情
報領域11には新規作成するファイルのために利用でき
る行が存在しないことがわかるので、処理を終了する。
「未使用」の行がある場合(ステップ1101Y)及び
「削除済」の行がある場合(ステップ1103Y)に
は、新規に作成しようとしているファイルとファイル名
20が同じでかつファイル状態29が「削除済」でない
行がファイル管理情報領域11に存在するかどうかを判
定する(ステップ1105)。同名のファイルが存在す
る場合(ステップ1105Y)は、新規作成しようとす
るファイルがすでに存在するので、処理を終了する。同
名のファイルが存在しない場合(ステップ1105N)
は、空きブロック検索処理を行い(ステップ110
7)、検索処理の結果使用可能なブロック(「未使用」
又は「上書き済」のブロック)が存在したかどうかを判
定する(ステップ1109)。使用可能なブロックが存
在しない場合(ステップ1109N)は、書き込み可能
なブロックが存在せず、従って新規作成したファイルに
データを書き込むことができないので処理を終了する。
使用可能なブロックが存在する場合(ステップ1109
Y)は、ファイル管理テーブル8を作成する(ステップ
1111)。すなわちファイル管理テーブル8にファイ
ル名80として利用者プログラム5の指定したファイル
名、ファイルID87として一意にファイルを識別可能
な値、ファイル長81として0、バージョン88として
0、ファイル状態89として「使用中」、仮割当ブロッ
ク番号85としてステップ1107での検索の結果発見
したブロックの番号、最終ブロック番号84としてブロ
ック番号としては無効な値である−1を書き込み、次ブ
ロック番号テーブル記憶領域95に記録されている次ブ
ロック番号テーブル96の全項目についてバージョン9
7を−1、次ブロック番号98を−1に初期化する。次
にファイル管理情報領域11のファイル名20、ファイ
ルID27、ファイル長21、バージョン28、ファイ
ル状態29及び最終ブロック番号24をファイル管理テ
ーブル8のそれぞれファイル名80、ファイルID8
7、ファイル長81、バージョン88、ファイル状態8
9及び最終ブロック番号84からコピーし、同時に先頭
ブロック番号テーブル30の新規項目としてバージョン
91にファイル管理テーブル8のバージョン88、ブロ
ック番号92としてステップ1107の空きブロック検
索処理で発見したブロックの番号をもつ項目を追加する
(ステップ1113)。なおステップ1113でファイ
ル管理情報領域11に書き込むデータはすべて外部記憶
装置2上で近接した位置にあり、外部記憶装置2に対す
る1回の出力操作で書き込むことができる。次に次ブロ
ック番号テーブル記憶領域95に記憶されている次ブロ
ック番号テーブル96をステップ1107の空きブロッ
ク検索処理で発見したブロックの次ブロック番号テーブ
ル記録部104の次ブロック番号テーブルにコピーする
(ステップ1114)。次にブロック使用状況管理テー
ブル7を更新して、ステップ1107で発見したブロッ
クの使用状況72を「使用中」に変更する(ステップ1
115)。
【0054】上記の手順によりファイル管理プログラム
6は、利用者プログラム5の要求によって新規ファイル
の管理情報を作成して、ファイル管理テーブル8とファ
イル管理情報領域11に書き込む。新規作成したファイ
ルにはデータの書き込まれていないブロックが仮に割り
当てられた状態になっており、そのブロック番号がファ
イル管理テーブル8の仮割当ブロック番号85及びファ
イル管理情報領域11の先頭ブロック番号テーブル30
に新しく作成された項目のブロック番号92として記録
されている。
6は、利用者プログラム5の要求によって新規ファイル
の管理情報を作成して、ファイル管理テーブル8とファ
イル管理情報領域11に書き込む。新規作成したファイ
ルにはデータの書き込まれていないブロックが仮に割り
当てられた状態になっており、そのブロック番号がファ
イル管理テーブル8の仮割当ブロック番号85及びファ
イル管理情報領域11の先頭ブロック番号テーブル30
に新しく作成された項目のブロック番号92として記録
されている。
【0055】図17は、ステップ1107の空きブロッ
ク検索処理の処理手順を示すフローチャートである。空
きブロック検索処理は、新たにデータを書き込むことの
できるブロックを検索する処理である。ファイル管理プ
ログラム6はまず変数iに1を代入する(ステップ12
01)。次にブロック使用状況管理テーブル7を参照し
てブロック番号iのブロックの使用状況72が「未使
用」であるかどうかを判定する(ステップ1203)。
「未使用」である場合(ステップ1203Y)、新たに
データを書き込むことのできるブロックが存在すること
がわかったので、処理を終了する。「未使用」でない場
合(ステップ1203N)、ステップ1205で変数i
の値に1を加え(ステップ1205)、変数iの値がブ
ロック使用状況管理テーブル7で管理しているブロック
の個数より大きいかどうかを判定する(ステップ120
7)。変数iがブロックの個数以下の場合(ステップ1
207N)、ステップ1203に戻って処理を継続す
る。変数iがブロックの個数より大きい場合(ステップ
1207Y)、ブロック状態が「未使用」になっている
ブロックが存在しないことがわかるので、次にブロック
状態が「上書き済」となっているブロックの検索を行
う。まず変数iに1を代入する(ステップ1209)。
次にブロック使用状況管理テーブル7を参照してブロッ
ク番号iのブロックの使用状況72が「上書き済」であ
るかどうかを判定する(ステップ1211)。「上書き
済」である場合(ステップ1211Y)、新たなデータ
を書き込むことができるブロックが存在することがわか
るので処理を終了する。「上書き済」でない場合(ステ
ップ1211N)、変数iの値に1を加え(ステップ1
213)、変数iの値がブロック使用状況管理テーブル
7で管理しているブロックの個数より大きいかどうかを
判定する(ステップ1215)。変数iがブロックの個
数以下の場合(ステップ1215N)、ステップ121
1に戻って処理を継続する。変数iがブロックの個数よ
り大きい場合(ステップ1215Y)、新しいデータを
書き込むために使用可能なブロックが存在しないことが
わかるので処理を終了する。
ク検索処理の処理手順を示すフローチャートである。空
きブロック検索処理は、新たにデータを書き込むことの
できるブロックを検索する処理である。ファイル管理プ
ログラム6はまず変数iに1を代入する(ステップ12
01)。次にブロック使用状況管理テーブル7を参照し
てブロック番号iのブロックの使用状況72が「未使
用」であるかどうかを判定する(ステップ1203)。
「未使用」である場合(ステップ1203Y)、新たに
データを書き込むことのできるブロックが存在すること
がわかったので、処理を終了する。「未使用」でない場
合(ステップ1203N)、ステップ1205で変数i
の値に1を加え(ステップ1205)、変数iの値がブ
ロック使用状況管理テーブル7で管理しているブロック
の個数より大きいかどうかを判定する(ステップ120
7)。変数iがブロックの個数以下の場合(ステップ1
207N)、ステップ1203に戻って処理を継続す
る。変数iがブロックの個数より大きい場合(ステップ
1207Y)、ブロック状態が「未使用」になっている
ブロックが存在しないことがわかるので、次にブロック
状態が「上書き済」となっているブロックの検索を行
う。まず変数iに1を代入する(ステップ1209)。
次にブロック使用状況管理テーブル7を参照してブロッ
ク番号iのブロックの使用状況72が「上書き済」であ
るかどうかを判定する(ステップ1211)。「上書き
済」である場合(ステップ1211Y)、新たなデータ
を書き込むことができるブロックが存在することがわか
るので処理を終了する。「上書き済」でない場合(ステ
ップ1211N)、変数iの値に1を加え(ステップ1
213)、変数iの値がブロック使用状況管理テーブル
7で管理しているブロックの個数より大きいかどうかを
判定する(ステップ1215)。変数iがブロックの個
数以下の場合(ステップ1215N)、ステップ121
1に戻って処理を継続する。変数iがブロックの個数よ
り大きい場合(ステップ1215Y)、新しいデータを
書き込むために使用可能なブロックが存在しないことが
わかるので処理を終了する。
【0056】以上の手順によりブロックの状態が「未使
用」であるブロックが存在する場合にはそのブロックが
検索によって発見され、なおかつブロックの状態が「未
使用」であるブロックが存在しない場合にのみ「上書き
済」のブロックを検索することができる。本実施形態に
おいては、ファイルを古いバージョンに復旧するときブ
ロックの状態が「上書き済」になっているブロックを参
照することがあるため、状態が「未使用」のブロックが
存在する間は状態が「上書き済」になっているブロック
に新しくデータを書き込むことはせずに、状態が「未使
用」のブロックを使用する。
用」であるブロックが存在する場合にはそのブロックが
検索によって発見され、なおかつブロックの状態が「未
使用」であるブロックが存在しない場合にのみ「上書き
済」のブロックを検索することができる。本実施形態に
おいては、ファイルを古いバージョンに復旧するときブ
ロックの状態が「上書き済」になっているブロックを参
照することがあるため、状態が「未使用」のブロックが
存在する間は状態が「上書き済」になっているブロック
に新しくデータを書き込むことはせずに、状態が「未使
用」のブロックを使用する。
【0057】なお本実施形態では、「上書き済」のブロ
ックを検索する際にブロック使用状況管理テーブル7の
項目の順に検索し、最初に発見したブロックを空きブロ
ックとしてデータ書き込みに使用するが、ブロックにデ
ータを書き込んだ時刻をブロック使用状況などと同時に
ブロックに書き込み、かつブロック使用状況管理テーブ
ル7及びブロック使用状況管理領域12に記憶すること
により、空きブロック検索処理において「上書き済」の
ブロックを検索する際にデータを書き込んだ時刻の比較
を行い、データを書き込んだ時刻のもっとも古いブロッ
クを空きブロックとして利用する実施形態も可能であ
る。
ックを検索する際にブロック使用状況管理テーブル7の
項目の順に検索し、最初に発見したブロックを空きブロ
ックとしてデータ書き込みに使用するが、ブロックにデ
ータを書き込んだ時刻をブロック使用状況などと同時に
ブロックに書き込み、かつブロック使用状況管理テーブ
ル7及びブロック使用状況管理領域12に記憶すること
により、空きブロック検索処理において「上書き済」の
ブロックを検索する際にデータを書き込んだ時刻の比較
を行い、データを書き込んだ時刻のもっとも古いブロッ
クを空きブロックとして利用する実施形態も可能であ
る。
【0058】図18は、本実施形態におけるファイル使
用開始要求の処理手順を示すフローチャートである。フ
ァイル使用開始要求を受け取ると、ファイル管理プログ
ラム6は、まずファイル管理テーブル8を参照して利用
者プログラム5が使用開始を要求しているファイルの管
理情報が登録されているかどうかを判定する(ステップ
1301)。登録されていない場合(ステップ1301
N)、存在しないファイルに対する使用開始要求なので
処理を終了する。なお利用者プログラム5が使用開始を
要求したファイルが存在しない場合、処理を終了するか
わりに新規ファイル作成の処理を行う実施形態も可能で
ある。登録されている場合(ステップ1301Y)、フ
ァイル状態89が「格納中」であるかどうかを判定する
(ステップ1303)。ファイル状態89が「格納中」
でない場合(ステップ1303N)、処理を終了する。
「格納中」である場合(ステップ1303Y)、空きブ
ロック検索処理を実行する(ステップ1305)。この
空きブロック検索処理は図17について説明した処理と
同一のものである。次にステップ1305での空きブロ
ック検索処理の結果、データを書き込むことが可能な空
きブロック、すなわち使用状況72が「未使用」または
「上書き済」のブロックが存在したかどうかを判定する
(ステップ1307)。空きブロックが存在しない場合
(ステップ1307N)、処理を終了する。空きブロッ
クが存在する場合(ステップ1307Y)、ファイル管
理テーブル8に記憶されているファイルのバージョン8
8の値に1を加える(ステップ1309)。次にファイ
ル管理テーブル8に記憶されているファイル状態89を
「使用中」に変更し(ステップ1311)、ファイル管
理テーブル8の仮割当番号85としてステップ1305
の空きブロック検索処理の結果発見した空きブロックの
番号を書き込む(ステップ1313)。次にファイル管
理テーブル8に記憶されているファイル長81が0であ
るかどうかを判定する(ステップ1315)。ファイル
長が0の場合(ステップ1315Y)は、ブロックがま
ったく割り当てられていないファイルに対する使用開始
要求なので、ファイル管理情報領域11のファイル状態
29及びファイルのバージョン28にファイル管理テー
ブル8のファイル状態89及びファイルのバージョン8
8をコピーし、かつ先頭ブロック番号テーブル30に現
在のファイルのバージョン88の値をバージョン91、
ステップ1305の空きブロック検索処理で発見したブ
ロックの番号をブロック番号92として持つ項目を新規
に追加する(ステップ1317)。なおステップ131
7でファイル管理情報領域11に書き込む管理情報は外
部記憶装置2上で近接した位置に存在するため、外部記
憶装置2に対する1回の出力操作で書き込むことが可能
である。ステップ1317が終了すると、ステップ13
23に進む。ファイル長が0でない場合(ステップ13
15N)、ファイルにはすでに割り当てられているブロ
ックが存在するので、ファイル管理情報領域11のファ
イル状態29とファイルのバージョン28にファイル管
理テーブル8のファイル状態89とファイルのバージョ
ン88をコピーし(ステップ1319)、最終ブロック
番号84を参照してファイルに最後に割り当てられたブ
ロックの次ブロック番号テーブル記録部104にバージ
ョンとしてファイルのバージョン88、次ブロック番号
としてステップ1305の空きブロック検索処理で発見
したブロックの番号を持つ項目を追加する(ステップ1
321)。次に最終ブロック番号84に格納されている
ブロック番号のブロックの次ブロック番号テーブル記録
部104に格納されている次ブロック番号テーブルを次
ブロック番号テーブル記憶領域95に格納されている次
ブロック番号テーブル96にコピーし(ステップ132
2)、ブロック使用状況管理テーブル7を更新して、ス
テップ1305の空きブロック検索処理で発見したブロ
ックの使用状況72を「使用中」に変更する(ステップ
1323)。
用開始要求の処理手順を示すフローチャートである。フ
ァイル使用開始要求を受け取ると、ファイル管理プログ
ラム6は、まずファイル管理テーブル8を参照して利用
者プログラム5が使用開始を要求しているファイルの管
理情報が登録されているかどうかを判定する(ステップ
1301)。登録されていない場合(ステップ1301
N)、存在しないファイルに対する使用開始要求なので
処理を終了する。なお利用者プログラム5が使用開始を
要求したファイルが存在しない場合、処理を終了するか
わりに新規ファイル作成の処理を行う実施形態も可能で
ある。登録されている場合(ステップ1301Y)、フ
ァイル状態89が「格納中」であるかどうかを判定する
(ステップ1303)。ファイル状態89が「格納中」
でない場合(ステップ1303N)、処理を終了する。
「格納中」である場合(ステップ1303Y)、空きブ
ロック検索処理を実行する(ステップ1305)。この
空きブロック検索処理は図17について説明した処理と
同一のものである。次にステップ1305での空きブロ
ック検索処理の結果、データを書き込むことが可能な空
きブロック、すなわち使用状況72が「未使用」または
「上書き済」のブロックが存在したかどうかを判定する
(ステップ1307)。空きブロックが存在しない場合
(ステップ1307N)、処理を終了する。空きブロッ
クが存在する場合(ステップ1307Y)、ファイル管
理テーブル8に記憶されているファイルのバージョン8
8の値に1を加える(ステップ1309)。次にファイ
ル管理テーブル8に記憶されているファイル状態89を
「使用中」に変更し(ステップ1311)、ファイル管
理テーブル8の仮割当番号85としてステップ1305
の空きブロック検索処理の結果発見した空きブロックの
番号を書き込む(ステップ1313)。次にファイル管
理テーブル8に記憶されているファイル長81が0であ
るかどうかを判定する(ステップ1315)。ファイル
長が0の場合(ステップ1315Y)は、ブロックがま
ったく割り当てられていないファイルに対する使用開始
要求なので、ファイル管理情報領域11のファイル状態
29及びファイルのバージョン28にファイル管理テー
ブル8のファイル状態89及びファイルのバージョン8
8をコピーし、かつ先頭ブロック番号テーブル30に現
在のファイルのバージョン88の値をバージョン91、
ステップ1305の空きブロック検索処理で発見したブ
ロックの番号をブロック番号92として持つ項目を新規
に追加する(ステップ1317)。なおステップ131
7でファイル管理情報領域11に書き込む管理情報は外
部記憶装置2上で近接した位置に存在するため、外部記
憶装置2に対する1回の出力操作で書き込むことが可能
である。ステップ1317が終了すると、ステップ13
23に進む。ファイル長が0でない場合(ステップ13
15N)、ファイルにはすでに割り当てられているブロ
ックが存在するので、ファイル管理情報領域11のファ
イル状態29とファイルのバージョン28にファイル管
理テーブル8のファイル状態89とファイルのバージョ
ン88をコピーし(ステップ1319)、最終ブロック
番号84を参照してファイルに最後に割り当てられたブ
ロックの次ブロック番号テーブル記録部104にバージ
ョンとしてファイルのバージョン88、次ブロック番号
としてステップ1305の空きブロック検索処理で発見
したブロックの番号を持つ項目を追加する(ステップ1
321)。次に最終ブロック番号84に格納されている
ブロック番号のブロックの次ブロック番号テーブル記録
部104に格納されている次ブロック番号テーブルを次
ブロック番号テーブル記憶領域95に格納されている次
ブロック番号テーブル96にコピーし(ステップ132
2)、ブロック使用状況管理テーブル7を更新して、ス
テップ1305の空きブロック検索処理で発見したブロ
ックの使用状況72を「使用中」に変更する(ステップ
1323)。
【0059】以上の手順により、利用者プログラム5が
ファイル使用開始要求を発行すると、ファイル管理プロ
グラム6はファイル状態29及び89を「使用中」に変
更し、ファイルの終端にデータの書き込まれていないブ
ロックを割り当てる。
ファイル使用開始要求を発行すると、ファイル管理プロ
グラム6はファイル状態29及び89を「使用中」に変
更し、ファイルの終端にデータの書き込まれていないブ
ロックを割り当てる。
【0060】図19は、本実施形態における書き込み要
求の処理手順を示すフローチャートである。なお本実施
形態においても、第1の実施形態と同じく利用者プログ
ラム5は、書き込むデータの長さとデータを書き込むフ
ァイル内の位置をブロック単位で指定するものとする。
書き込み要求を受け付けると、ファイル管理プログラム
6はまずファイル管理テーブル8を参照してファイル状
態89が「使用中」であるかどうかを判定する(ステッ
プ1401)。「使用中」でない場合(ステップ140
1N)は、使用中でないファイルに対する書き込み要求
なので処理を終了する。「使用中」である場合(ステッ
プ1401Y)は、変数nに利用者プログラム5が指定
した書き込むデータのブロック数を代入し(ステップ1
403)、変数pに利用者プログラム5が指定したデー
タを書き込むファイル内の位置を代入する(ステップ1
405)。次に空きブロック検索処理を行う(ステップ
1407)。この空きブロック検索処理は図17につい
て説明した処理と同一の処理である。次にステップ14
07の空きブロック検索処理の結果、データを書き込む
ブロックとして使用可能な空きブロックが存在したかど
うかを判定する(ステップ1409)。空きブロックが
存在しない場合(ステップ1409N)、新しいデータ
を書き込むことのできるブロックが存在しないため処理
を終了する。空きブロックが存在する場合(ステップ1
409Y)、ファイル管理テーブル8を参照して割当ブ
ロック番号リスト83の第p番めの項目が−1であるか
どうかを判定する(ステップ1411)。−1である場
合(ステップ1411Y)、利用者プログラム5がデー
タを書き込もうとしている位置にはブロックが割り当て
られていないことがわかる。すなわち新たにデータを書
き込むことによりファイル長が増加する可能性があるの
で、pが現在のファイル長81より大であるかどうかを
判定する(ステップ1413)。ファイル長81より大
である場合(ステップ1413Y)、新たにデータを書
き込むことによりファイル長が長くなることがわかるの
で、ファイル長81にpの値を代入して(ステップ14
15)、ステップ1419に進む。pがファイル長81
以下の場合(ステップ1413N)はデータを書き込ん
でもファイル長が長くならないことがわかるので、ステ
ップ1419に進む。ファイル長はファイルの最後の書
き込み位置を示しているので、最初の書き込み位置から
最後の書き込み位置までの間にまだデータを書き込んで
いないブロックが存在する場合にこのケースが生じる。
割当ブロック番号リスト83の第p番めの項目が−1で
ない場合(ステップ1411N)は、既存のブロックに
対する上書きであるので、上書き済ブロックリスト90
に上書きされるブロックである割当ブロック番号リスト
83のp番めの項目の値を追加して(ステップ141
7)、ステップ1419に進む。ステップ1419で
は、ファイル管理テーブル8の割当ブロック番号リスト
83のp番めの項目に仮割当ブロック番号85の値を書
き込み(ステップ1419)、次に仮割当ブロック番号
85にステップ1407の空きブロック検索処理で発見
したブロックの番号を書き込む(ステップ1421)。
次にファイル管理テーブル8の割当ブロック番号リスト
83の第p番めの項目に記録されているブロック番号の
ブロックのファイル内位置記録部102に変数pの値、
ファイルID記録部103にファイルID87、ブロッ
ク状態記録部106に「使用中」を書き込み、かつ次ブ
ロック番号テーブル記憶領域95に記憶されているこれ
からデータを書き込むブロックの次ブロック番号テーブ
ルのコピーである次ブロック番号テーブル96に、バー
ジョン97としてファイルの現在のバージョン88、次
ブロック番号98としてステップ1407の空きブロッ
ク検索処理で発見したブロックの番号をもつ項目を追加
し、これらのバージョンと次ブロック番号を次ブロック
番号テーブル記録部104に書き込み、また利用者プロ
グラム5の指定したデータをデータ記録部103に書き
込む(ステップ1423)。なお上記のファイル内位置
記録部102、ファイルID記録部105、ブロック状
態記録部106、次ブロック番号テーブル記録部104
及びデータ記録部103は外部記憶装置2上で隣接した
位置に存在しており、外部記憶装置2に対する1回の出
力操作でまとめて書き込むことが可能である。次にファ
イル管理テーブル8の次ブロック番号テーブル記憶領域
95に格納されている次ブロック番号テーブル96の全
項目について、バージョン97を−1に次ブロック番号
98を−1にする(ステップ1424)。これはファイ
ルに仮に割り当てられたブロックである仮割当ブロック
番号85で示されるブロックの次ブロック番号テーブル
の内容に対応する。次にブロック使用状況管理テーブル
7を更新して、ステップ1407の空きブロック検索処
理で発見した空きブロックの使用状況72を「使用中」
にして(ステップ1425)、最終ブロック番号84の
値をファイル管理テーブル8の割当ブロック番号テーブ
ル83の第p番めの項目の値にする(ステップ142
7)。次に変数pの値に1を加え(ステップ142
9)、変数nの値から1を減じて(ステップ143
1)、nの値が0であるかどうかを判定する(ステップ
1433)。nが0でなければ(ステップ1433
N)、書き込むデータがまだ残っているのでステップ1
407に戻って処理を継続する。nが0の場合(ステッ
プ1433Y)、処理を終了する。
求の処理手順を示すフローチャートである。なお本実施
形態においても、第1の実施形態と同じく利用者プログ
ラム5は、書き込むデータの長さとデータを書き込むフ
ァイル内の位置をブロック単位で指定するものとする。
書き込み要求を受け付けると、ファイル管理プログラム
6はまずファイル管理テーブル8を参照してファイル状
態89が「使用中」であるかどうかを判定する(ステッ
プ1401)。「使用中」でない場合(ステップ140
1N)は、使用中でないファイルに対する書き込み要求
なので処理を終了する。「使用中」である場合(ステッ
プ1401Y)は、変数nに利用者プログラム5が指定
した書き込むデータのブロック数を代入し(ステップ1
403)、変数pに利用者プログラム5が指定したデー
タを書き込むファイル内の位置を代入する(ステップ1
405)。次に空きブロック検索処理を行う(ステップ
1407)。この空きブロック検索処理は図17につい
て説明した処理と同一の処理である。次にステップ14
07の空きブロック検索処理の結果、データを書き込む
ブロックとして使用可能な空きブロックが存在したかど
うかを判定する(ステップ1409)。空きブロックが
存在しない場合(ステップ1409N)、新しいデータ
を書き込むことのできるブロックが存在しないため処理
を終了する。空きブロックが存在する場合(ステップ1
409Y)、ファイル管理テーブル8を参照して割当ブ
ロック番号リスト83の第p番めの項目が−1であるか
どうかを判定する(ステップ1411)。−1である場
合(ステップ1411Y)、利用者プログラム5がデー
タを書き込もうとしている位置にはブロックが割り当て
られていないことがわかる。すなわち新たにデータを書
き込むことによりファイル長が増加する可能性があるの
で、pが現在のファイル長81より大であるかどうかを
判定する(ステップ1413)。ファイル長81より大
である場合(ステップ1413Y)、新たにデータを書
き込むことによりファイル長が長くなることがわかるの
で、ファイル長81にpの値を代入して(ステップ14
15)、ステップ1419に進む。pがファイル長81
以下の場合(ステップ1413N)はデータを書き込ん
でもファイル長が長くならないことがわかるので、ステ
ップ1419に進む。ファイル長はファイルの最後の書
き込み位置を示しているので、最初の書き込み位置から
最後の書き込み位置までの間にまだデータを書き込んで
いないブロックが存在する場合にこのケースが生じる。
割当ブロック番号リスト83の第p番めの項目が−1で
ない場合(ステップ1411N)は、既存のブロックに
対する上書きであるので、上書き済ブロックリスト90
に上書きされるブロックである割当ブロック番号リスト
83のp番めの項目の値を追加して(ステップ141
7)、ステップ1419に進む。ステップ1419で
は、ファイル管理テーブル8の割当ブロック番号リスト
83のp番めの項目に仮割当ブロック番号85の値を書
き込み(ステップ1419)、次に仮割当ブロック番号
85にステップ1407の空きブロック検索処理で発見
したブロックの番号を書き込む(ステップ1421)。
次にファイル管理テーブル8の割当ブロック番号リスト
83の第p番めの項目に記録されているブロック番号の
ブロックのファイル内位置記録部102に変数pの値、
ファイルID記録部103にファイルID87、ブロッ
ク状態記録部106に「使用中」を書き込み、かつ次ブ
ロック番号テーブル記憶領域95に記憶されているこれ
からデータを書き込むブロックの次ブロック番号テーブ
ルのコピーである次ブロック番号テーブル96に、バー
ジョン97としてファイルの現在のバージョン88、次
ブロック番号98としてステップ1407の空きブロッ
ク検索処理で発見したブロックの番号をもつ項目を追加
し、これらのバージョンと次ブロック番号を次ブロック
番号テーブル記録部104に書き込み、また利用者プロ
グラム5の指定したデータをデータ記録部103に書き
込む(ステップ1423)。なお上記のファイル内位置
記録部102、ファイルID記録部105、ブロック状
態記録部106、次ブロック番号テーブル記録部104
及びデータ記録部103は外部記憶装置2上で隣接した
位置に存在しており、外部記憶装置2に対する1回の出
力操作でまとめて書き込むことが可能である。次にファ
イル管理テーブル8の次ブロック番号テーブル記憶領域
95に格納されている次ブロック番号テーブル96の全
項目について、バージョン97を−1に次ブロック番号
98を−1にする(ステップ1424)。これはファイ
ルに仮に割り当てられたブロックである仮割当ブロック
番号85で示されるブロックの次ブロック番号テーブル
の内容に対応する。次にブロック使用状況管理テーブル
7を更新して、ステップ1407の空きブロック検索処
理で発見した空きブロックの使用状況72を「使用中」
にして(ステップ1425)、最終ブロック番号84の
値をファイル管理テーブル8の割当ブロック番号テーブ
ル83の第p番めの項目の値にする(ステップ142
7)。次に変数pの値に1を加え(ステップ142
9)、変数nの値から1を減じて(ステップ143
1)、nの値が0であるかどうかを判定する(ステップ
1433)。nが0でなければ(ステップ1433
N)、書き込むデータがまだ残っているのでステップ1
407に戻って処理を継続する。nが0の場合(ステッ
プ1433Y)、処理を終了する。
【0061】以上の処理により、上書き・新規書き込み
を問わずファイル使用開始要求又はファイルの新規作成
要求によってファイルに仮に割り当てられたブロックに
対して、利用者プログラム5の指定したデータを1ブロ
ックずつ書き込みつつ、新しく別のブロックをファイル
に仮に割り当て、なおかつデータを書き込んだブロック
の次ブロック番号テーブルに仮に割り当てたブロックの
番号を示す項目を追加することができる。
を問わずファイル使用開始要求又はファイルの新規作成
要求によってファイルに仮に割り当てられたブロックに
対して、利用者プログラム5の指定したデータを1ブロ
ックずつ書き込みつつ、新しく別のブロックをファイル
に仮に割り当て、なおかつデータを書き込んだブロック
の次ブロック番号テーブルに仮に割り当てたブロックの
番号を示す項目を追加することができる。
【0062】図20は、ファイル使用終了要求の処理手
順を示すフローチャートである。ファイル使用終了要求
を受け付けると、ファイル管理プログラム6は、まずフ
ァイル管理テーブル8のファイル状態89が「使用中」
であるかどうかを判定する(ステップ1501)。「使
用中」でない場合(ステップ1501N)、使用中でな
いファイルに対する使用終了要求なので、処理を終了す
る。「使用中」である場合(ステップ1501Y)、最
終ブロック番号84が−1であるかどうかを判定する
(ステップ1503)。−1である場合(ステップ15
03Y)は、データが書き込まれていないファイルに対
する使用終了要求なので、ステップ1507に進む。最
終ブロック番号84が−1でない場合(ステップ150
3N)は、1つ以上のブロックが書き込まれている状態
のファイルに対する使用終了要求なので、最終ブロック
番号84で示されるブロックの次ブロック番号テーブル
記録部104の次ブロック番号テーブルのコピーである
次ブロック番号テーブル96に、バージョン97として
ファイルの現在のバージョン88、次ブロック番号98
としてブロック番号としては無効な値である−1をもつ
項目を追加し、最終ブロック番号84で示されるブロッ
クの次ブロック番号テーブル記録部104に書き戻す
(ステップ1505)。次にブロック使用状況管理テー
ブル7を更新して、仮割当ブロック番号85で示される
ブロックの使用状況72を「未使用」に変更する(ステ
ップ1507)。次にファイル管理テーブル8の仮割当
ブロック番号85の値を−1に変更する(ステップ15
09)。次にファイル管理テーブル8のファイル状態8
9を「上書き済ブロック解放中」に変更し(ステップ1
511)、ファイルのバージョン88に1を加え(ステ
ップ1513)、ファイル管理テーブル8からファイル
長81、ファイル状態89、最終ブロック番号84、バ
ージョン88及び割当ブロック番号リスト83をファイ
ル管理情報領域11のファイル長21、ファイル状態2
9、最終ブロック番号24、バージョン28及び割当ブ
ロック番号リスト23へそれぞれコピーする(ステップ
1515)。次にブロック使用状況管理テーブル7の内
容をブロック使用状況管理領域12にコピーする(ステ
ップ1517)。以上の処理により利用者プログラム5
が使用終了を要求しているファイルの管理情報につい
て、ファイル管理テーブル8が記憶している内容とファ
イル管理情報領域11が記憶している内容が同一とな
る。またブロック使用状況管理テーブル7とブロック使
用状況管理領域12が記憶している内容も同一となる。
そのためステップ1517終了後に計算機1に障害が発
生しても、使用終了要求の対象となったファイルの管理
情報はファイル管理情報領域11から復旧することがで
きる。
順を示すフローチャートである。ファイル使用終了要求
を受け付けると、ファイル管理プログラム6は、まずフ
ァイル管理テーブル8のファイル状態89が「使用中」
であるかどうかを判定する(ステップ1501)。「使
用中」でない場合(ステップ1501N)、使用中でな
いファイルに対する使用終了要求なので、処理を終了す
る。「使用中」である場合(ステップ1501Y)、最
終ブロック番号84が−1であるかどうかを判定する
(ステップ1503)。−1である場合(ステップ15
03Y)は、データが書き込まれていないファイルに対
する使用終了要求なので、ステップ1507に進む。最
終ブロック番号84が−1でない場合(ステップ150
3N)は、1つ以上のブロックが書き込まれている状態
のファイルに対する使用終了要求なので、最終ブロック
番号84で示されるブロックの次ブロック番号テーブル
記録部104の次ブロック番号テーブルのコピーである
次ブロック番号テーブル96に、バージョン97として
ファイルの現在のバージョン88、次ブロック番号98
としてブロック番号としては無効な値である−1をもつ
項目を追加し、最終ブロック番号84で示されるブロッ
クの次ブロック番号テーブル記録部104に書き戻す
(ステップ1505)。次にブロック使用状況管理テー
ブル7を更新して、仮割当ブロック番号85で示される
ブロックの使用状況72を「未使用」に変更する(ステ
ップ1507)。次にファイル管理テーブル8の仮割当
ブロック番号85の値を−1に変更する(ステップ15
09)。次にファイル管理テーブル8のファイル状態8
9を「上書き済ブロック解放中」に変更し(ステップ1
511)、ファイルのバージョン88に1を加え(ステ
ップ1513)、ファイル管理テーブル8からファイル
長81、ファイル状態89、最終ブロック番号84、バ
ージョン88及び割当ブロック番号リスト83をファイ
ル管理情報領域11のファイル長21、ファイル状態2
9、最終ブロック番号24、バージョン28及び割当ブ
ロック番号リスト23へそれぞれコピーする(ステップ
1515)。次にブロック使用状況管理テーブル7の内
容をブロック使用状況管理領域12にコピーする(ステ
ップ1517)。以上の処理により利用者プログラム5
が使用終了を要求しているファイルの管理情報につい
て、ファイル管理テーブル8が記憶している内容とファ
イル管理情報領域11が記憶している内容が同一とな
る。またブロック使用状況管理テーブル7とブロック使
用状況管理領域12が記憶している内容も同一となる。
そのためステップ1517終了後に計算機1に障害が発
生しても、使用終了要求の対象となったファイルの管理
情報はファイル管理情報領域11から復旧することがで
きる。
【0063】次に上書き済ブロック解放処理を行う(ス
テップ1519)。本実施形態ではファイルのデータを
上書きする場合でも新規にブロックを割り当ててデータ
を書き込み、上書きされる前のデータを格納しているブ
ロックに直接上書きすることはしない。ファイルが「使
用中」の状態の間は上書きされる前のデータを格納して
いたブロックはファイルに割り当てられたままの状態に
なっているため、本実施形態ではファイル使用終了要求
が発行された時点でファイル使用開始要求が発行された
時点からファイル使用終了要求が発行された時点までの
間にデータが上書きされたブロックを解放する処理を行
う。なおファイル使用終了要求の時点では上書きされた
ブロックの解放を行わずに、利用者プログラム5が上書
きされたブロックを解放する要求を発行した場合にのみ
上書きされたブロックの解放を行う実施形態も可能であ
る。
テップ1519)。本実施形態ではファイルのデータを
上書きする場合でも新規にブロックを割り当ててデータ
を書き込み、上書きされる前のデータを格納しているブ
ロックに直接上書きすることはしない。ファイルが「使
用中」の状態の間は上書きされる前のデータを格納して
いたブロックはファイルに割り当てられたままの状態に
なっているため、本実施形態ではファイル使用終了要求
が発行された時点でファイル使用開始要求が発行された
時点からファイル使用終了要求が発行された時点までの
間にデータが上書きされたブロックを解放する処理を行
う。なおファイル使用終了要求の時点では上書きされた
ブロックの解放を行わずに、利用者プログラム5が上書
きされたブロックを解放する要求を発行した場合にのみ
上書きされたブロックの解放を行う実施形態も可能であ
る。
【0064】ステップ1519の上書き済ブロック解放
処理が終了すると、ファイル管理テーブル8のファイル
状態89を「格納中」に変更し(ステップ1521)、
ファイル管理情報領域11のファイル状態29を「格納
中」に変更して(ステップ1523)、処理を終了す
る。
処理が終了すると、ファイル管理テーブル8のファイル
状態89を「格納中」に変更し(ステップ1521)、
ファイル管理情報領域11のファイル状態29を「格納
中」に変更して(ステップ1523)、処理を終了す
る。
【0065】図21は、ステップ1519の上書き済ブ
ロック解放処理の処理手順を示すフローチャートであ
る。ファイル管理プログラム6はまず変数qに−1を代
入する(ステップ1601)。次に変数pにファイル管
理情報領域11の先頭ブロック番号テーブル30の最新
のバージョン91に対応するブロック番号92の値を代
入する(ステップ1603)。上書き済ブロック解放処
理において変数pは上書きされたブロックの番号を示す
ために用い、変数qはファイル内で上書きされたブロッ
クの前に割り当てられているブロックの番号を示すため
に用いる。次に変数pの値が−1であるかどうかを判定
する(ステップ1605)。変数pが−1の場合(ステ
ップ1605Y)は、ファイルの終端まで処理し終わっ
たことがわかるので、上書き済ブロック解放処理を終了
する。変数pが−1でない場合(ステップ1605N)
は、ブロック番号pのブロックの次ブロック番号テーブ
ル記録部104を参照して最新のバージョンに対するブ
ロック番号を変数rに代入する(ステップ1607)。
上書き済ブロック解放処理においては、変数rはブロッ
ク番号pのブロックの次の位置に割り当てられているブ
ロックの番号を示すために用いる。次にファイル管理テ
ーブル8を参照して変数pの値が現在処理対象となって
いるファイルの上書き済ブロックリスト90に含まれて
いるかどうかを判定する(ステップ1609)。含まれ
ていない場合(ステップ1609N)は、ブロック番号
pのブロックは上書きされていないことがわかるので、
変数qに変数pの値を代入してステップ1621に進
む。変数pが上書き済ブロックリスト90に含まれてい
る場合(ステップ1609Y)は、ブロック番号pのブ
ロックは上書きされていることがわかるので、変数qが
−1であるかどうかを判定する(ステップ1613)。
qが−1である場合(ステップ1613Y)、ブロック
番号pのブロックはファイルの先頭に割り当てられたブ
ロックであるので、処理対象となっているファイルの先
頭ブロック番号テーブル30にバージョン91として現
在のファイルのバージョン88、ブロック番号として変
数rの値をもつ項目を追加し(ステップ1615)、ブ
ロック番号pのブロックのブロック状態記録部106を
「上書き済」に変更し(ステップ1619)、ステップ
1621に進む。qが−1でない場合(ステップ161
3N)、ブロック番号pのブロックはファイルの先頭以
外に割り当てられたブロックであり、ブロック番号pの
前の位置に割り当てられているブロックの番号は変数q
が保持しているので、ブロック番号qのブロックの次ブ
ロック番号テーブル記録部104にバージョンとして現
在のファイルのバージョン88、ブロック番号として変
数rの値をもつ項目を追加して(ステップ1617)、
ステップ1619に進む。ステップ1621では変数r
の値を変数pに代入し(ステップ1621)、ステップ
1605に戻って次のブロックの処理を行う。
ロック解放処理の処理手順を示すフローチャートであ
る。ファイル管理プログラム6はまず変数qに−1を代
入する(ステップ1601)。次に変数pにファイル管
理情報領域11の先頭ブロック番号テーブル30の最新
のバージョン91に対応するブロック番号92の値を代
入する(ステップ1603)。上書き済ブロック解放処
理において変数pは上書きされたブロックの番号を示す
ために用い、変数qはファイル内で上書きされたブロッ
クの前に割り当てられているブロックの番号を示すため
に用いる。次に変数pの値が−1であるかどうかを判定
する(ステップ1605)。変数pが−1の場合(ステ
ップ1605Y)は、ファイルの終端まで処理し終わっ
たことがわかるので、上書き済ブロック解放処理を終了
する。変数pが−1でない場合(ステップ1605N)
は、ブロック番号pのブロックの次ブロック番号テーブ
ル記録部104を参照して最新のバージョンに対するブ
ロック番号を変数rに代入する(ステップ1607)。
上書き済ブロック解放処理においては、変数rはブロッ
ク番号pのブロックの次の位置に割り当てられているブ
ロックの番号を示すために用いる。次にファイル管理テ
ーブル8を参照して変数pの値が現在処理対象となって
いるファイルの上書き済ブロックリスト90に含まれて
いるかどうかを判定する(ステップ1609)。含まれ
ていない場合(ステップ1609N)は、ブロック番号
pのブロックは上書きされていないことがわかるので、
変数qに変数pの値を代入してステップ1621に進
む。変数pが上書き済ブロックリスト90に含まれてい
る場合(ステップ1609Y)は、ブロック番号pのブ
ロックは上書きされていることがわかるので、変数qが
−1であるかどうかを判定する(ステップ1613)。
qが−1である場合(ステップ1613Y)、ブロック
番号pのブロックはファイルの先頭に割り当てられたブ
ロックであるので、処理対象となっているファイルの先
頭ブロック番号テーブル30にバージョン91として現
在のファイルのバージョン88、ブロック番号として変
数rの値をもつ項目を追加し(ステップ1615)、ブ
ロック番号pのブロックのブロック状態記録部106を
「上書き済」に変更し(ステップ1619)、ステップ
1621に進む。qが−1でない場合(ステップ161
3N)、ブロック番号pのブロックはファイルの先頭以
外に割り当てられたブロックであり、ブロック番号pの
前の位置に割り当てられているブロックの番号は変数q
が保持しているので、ブロック番号qのブロックの次ブ
ロック番号テーブル記録部104にバージョンとして現
在のファイルのバージョン88、ブロック番号として変
数rの値をもつ項目を追加して(ステップ1617)、
ステップ1619に進む。ステップ1621では変数r
の値を変数pに代入し(ステップ1621)、ステップ
1605に戻って次のブロックの処理を行う。
【0066】以上の手順により、次ブロック番号テーブ
ル記録部104に書き込まれている最も新しいバージョ
ンに対応する次ブロック番号を順にたどっていくことに
より、上書き済ブロックリスト90に記録されているブ
ロック以外のブロックのみについて、ファイルの先頭に
割り当てられているブロックからファイルの末尾に割り
当てられているブロックまでたどることができる。また
上書き済ブロックリスト90に記録されているブロック
については、ブロック状態記録部106の状態が「上書
き済」に変更される。すなわち上書きされたブロックは
ファイルから解放される。
ル記録部104に書き込まれている最も新しいバージョ
ンに対応する次ブロック番号を順にたどっていくことに
より、上書き済ブロックリスト90に記録されているブ
ロック以外のブロックのみについて、ファイルの先頭に
割り当てられているブロックからファイルの末尾に割り
当てられているブロックまでたどることができる。また
上書き済ブロックリスト90に記録されているブロック
については、ブロック状態記録部106の状態が「上書
き済」に変更される。すなわち上書きされたブロックは
ファイルから解放される。
【0067】図22は、本実施形態におけるファイル管
理情報回復処理の処理手順を示すフローチャートであ
る。ファイル管理情報回復処理は、計算機1に障害が発
生した後、すなわちファイル管理テーブル8及びファイ
ル管理情報領域7の内容が失われている状態で、ファイ
ル管理プログラム6によって実行される処理である。フ
ァイル管理情報回復処理は、ファイル管理情報領域11
及びデータ格納領域13内の各ブロックの次ブロック番
号テーブル記録部104、ファイル内位置記録部10
2、ファイルID記録部105及びブロック状態記録部
106を用いてファイル管理テーブル8、ブロック使用
状況管理テーブル7及びブロック使用状況管理領域12
を回復する。
理情報回復処理の処理手順を示すフローチャートであ
る。ファイル管理情報回復処理は、計算機1に障害が発
生した後、すなわちファイル管理テーブル8及びファイ
ル管理情報領域7の内容が失われている状態で、ファイ
ル管理プログラム6によって実行される処理である。フ
ァイル管理情報回復処理は、ファイル管理情報領域11
及びデータ格納領域13内の各ブロックの次ブロック番
号テーブル記録部104、ファイル内位置記録部10
2、ファイルID記録部105及びブロック状態記録部
106を用いてファイル管理テーブル8、ブロック使用
状況管理テーブル7及びブロック使用状況管理領域12
を回復する。
【0068】ファイル管理情報回復処理が実行される
と、ファイル管理プログラム6はまずブロック使用状況
管理領域12をブロック使用状況管理テーブル7にコピ
ーし(ステップ1701)、変数iに1を代入する(ス
テップ1702)。次にファイル管理情報領域11の第
i番めのファイルのファイル名20、ファイル長21、
ファイル状態29、割当ブロック番号リスト23及び最
終ブロック番号24を、それぞれファイル管理テーブル
8の第i番めのファイルに対応するファイル名80、フ
ァイル長81、ファイル状態89、割当ブロック番号テ
ーブル83及び最終ブロック番号84にコピーする(ス
テップ1703)。次に仮割当ブロック番号85に−1
を格納し(ステップ1705)、ファイル管理テーブル
8の第i番めのファイルのファイル状態89が「削除
中」であるかどうかを判定する(ステップ1707)。
ファイル状態89が「削除中」の場合(ステップ170
7Y)、削除中ファイル回復処理を行い(ステップ17
17)、その後ステップ1719に進む。「削除中」で
ない場合(ステップ1707N)、ファイル管理テーブ
ル8の第i番めのファイルのファイル状態89が「使用
中」であるかどうかを判定する(ステップ1709)。
ファイル状態89が「使用中」の場合(ステップ170
9Y)、使用中ファイル回復処理を行い(ステップ17
15)、その後ステップ1719に進む。「使用中」で
ない場合(ステップ1709N)、ファイル管理テーブ
ル8の第i番めのファイルのファイル状態89が「上書
き済みブロック解放中」であるかどうかを判定する(ス
テップ1711)。「上書き済みブロック解放中」の場
合(ステップ1711Y)、上書き済ブロック解放中フ
ァイル回復処理を行い(ステップ1713)、ステップ
1719に進む。ステップ1719では削除中ファイル
回復処理、使用中ファイル回復処理又は上書き済ブロッ
ク解放中ファイル回復処理の結果回復されたファイル管
理テーブル8の第i番めのファイルに対応するファイル
名80、ファイル長81、ファイル状態89、割当ブロ
ック番号リスト83及び最終ブロック番号84をファイ
ル管理情報領域11の第i番めのファイルに対応するフ
ァイル名20、ファイル長21、ファイル状態29、割
当ブロック番号リスト23及び最終ブロック番号24に
それぞれコピーして(ステップ1719)、ステップ1
721に進む。「上書き済みブロック解放中」でない場
合(ステップ1711N)、ファイル状態89が「削除
中」でも「使用中」でも「上書き済ブロック解放中」で
もない場合、すなわちファイル状態89が「格納中」ま
たは「削除済」の場合であり、ファイル管理情報の更新
がないので、ステップ1721に進む。ステップ172
1では変数iに1を加え(ステップ1721)、変数i
の値がファイル管理情報領域11の行数を越えている、
すなわちファイル管理情報領域11で管理している全て
のファイルの処理を終了したかどうかを判定する(ステ
ップ1723)。全ファイルの処理終了でない場合(ス
テップ1723N)は、ステップ1703に戻って処理
を継続する。全ファイルを処理終了した場合(ステップ
1723Y)は、それまでの手順で計算機1に障害が発
生した時点での内容が復旧されているブロック使用状況
管理テーブル7をブロック使用状況管理領域12にコピ
ーし(ステップ1725)、処理を終了する。
と、ファイル管理プログラム6はまずブロック使用状況
管理領域12をブロック使用状況管理テーブル7にコピ
ーし(ステップ1701)、変数iに1を代入する(ス
テップ1702)。次にファイル管理情報領域11の第
i番めのファイルのファイル名20、ファイル長21、
ファイル状態29、割当ブロック番号リスト23及び最
終ブロック番号24を、それぞれファイル管理テーブル
8の第i番めのファイルに対応するファイル名80、フ
ァイル長81、ファイル状態89、割当ブロック番号テ
ーブル83及び最終ブロック番号84にコピーする(ス
テップ1703)。次に仮割当ブロック番号85に−1
を格納し(ステップ1705)、ファイル管理テーブル
8の第i番めのファイルのファイル状態89が「削除
中」であるかどうかを判定する(ステップ1707)。
ファイル状態89が「削除中」の場合(ステップ170
7Y)、削除中ファイル回復処理を行い(ステップ17
17)、その後ステップ1719に進む。「削除中」で
ない場合(ステップ1707N)、ファイル管理テーブ
ル8の第i番めのファイルのファイル状態89が「使用
中」であるかどうかを判定する(ステップ1709)。
ファイル状態89が「使用中」の場合(ステップ170
9Y)、使用中ファイル回復処理を行い(ステップ17
15)、その後ステップ1719に進む。「使用中」で
ない場合(ステップ1709N)、ファイル管理テーブ
ル8の第i番めのファイルのファイル状態89が「上書
き済みブロック解放中」であるかどうかを判定する(ス
テップ1711)。「上書き済みブロック解放中」の場
合(ステップ1711Y)、上書き済ブロック解放中フ
ァイル回復処理を行い(ステップ1713)、ステップ
1719に進む。ステップ1719では削除中ファイル
回復処理、使用中ファイル回復処理又は上書き済ブロッ
ク解放中ファイル回復処理の結果回復されたファイル管
理テーブル8の第i番めのファイルに対応するファイル
名80、ファイル長81、ファイル状態89、割当ブロ
ック番号リスト83及び最終ブロック番号84をファイ
ル管理情報領域11の第i番めのファイルに対応するフ
ァイル名20、ファイル長21、ファイル状態29、割
当ブロック番号リスト23及び最終ブロック番号24に
それぞれコピーして(ステップ1719)、ステップ1
721に進む。「上書き済みブロック解放中」でない場
合(ステップ1711N)、ファイル状態89が「削除
中」でも「使用中」でも「上書き済ブロック解放中」で
もない場合、すなわちファイル状態89が「格納中」ま
たは「削除済」の場合であり、ファイル管理情報の更新
がないので、ステップ1721に進む。ステップ172
1では変数iに1を加え(ステップ1721)、変数i
の値がファイル管理情報領域11の行数を越えている、
すなわちファイル管理情報領域11で管理している全て
のファイルの処理を終了したかどうかを判定する(ステ
ップ1723)。全ファイルの処理終了でない場合(ス
テップ1723N)は、ステップ1703に戻って処理
を継続する。全ファイルを処理終了した場合(ステップ
1723Y)は、それまでの手順で計算機1に障害が発
生した時点での内容が復旧されているブロック使用状況
管理テーブル7をブロック使用状況管理領域12にコピ
ーし(ステップ1725)、処理を終了する。
【0069】以上の手順により、各ファイルのファイル
状態29に基づいてステップ1713、1715又は1
717の回復処理の必要なファイルのみを抽出してその
状態に対応した種類の回復処理を実行することができ
る。
状態29に基づいてステップ1713、1715又は1
717の回復処理の必要なファイルのみを抽出してその
状態に対応した種類の回復処理を実行することができ
る。
【0070】なお本実施例におけるステップ1717の
削除中ファイル回復処理及びステップ1715の使用中
ファイル回復処理は第1の実施形態と同様なので説明を
省略する。ただしステップ805及びステップ903で
割当ブロック番号リスト83の先頭の項目83−1の代
わりに先頭ブロック番号テーブル30を使う点と、ステ
ップ817及びステップ909で次ブロック番号記録部
101ではなく次ブロック番号テーブル記録部104の
最新のバージョンに対応するブロック番号を使う点が異
なる。
削除中ファイル回復処理及びステップ1715の使用中
ファイル回復処理は第1の実施形態と同様なので説明を
省略する。ただしステップ805及びステップ903で
割当ブロック番号リスト83の先頭の項目83−1の代
わりに先頭ブロック番号テーブル30を使う点と、ステ
ップ817及びステップ909で次ブロック番号記録部
101ではなく次ブロック番号テーブル記録部104の
最新のバージョンに対応するブロック番号を使う点が異
なる。
【0071】図23は、本実施形態における上書き済ブ
ロック解放中ファイル回復処理の処理手順を示すフロー
チャートである。ファイル管理プログラム6は、まずフ
ァイル管理テーブル8の処理対象となっているファイル
に対応する割当ブロック番号リスト83を初期化する
(ステップ1801)。次に変数qにファイル管理情報
領域11の処理対象となっているファイルの先頭ブロッ
ク番号テーブル30の最新のバージョン91に対応する
ブロック番号92を代入する(ステップ1803)。次
に変数pにブロック番号qのブロックのファイル内位置
記録部102の内容を代入し(ステップ1807)、割
当ブロック番号リスト83の第p番めの項目が−1であ
るかどうかを判定する(ステップ1808)。第p番め
の項目が−1でない場合(ステップ1808N)は、上
書き済ブロックリスト90に変数qの値を追加して(ス
テップ1809)、ステップ1810に進む。第p番め
の項目が−1である場合(ステップ1808Y)は、割
当ブロック番号リスト83の第p番めの項目に変数qの
値を書き込む(ステップ1810)。次にブロック番号
qのブロックの次ブロック番号テーブル記録部104を
参照して次ブロック番号テーブルに項目が2つ以上記録
されているかどうかを判定する(ステップ1811)。
項目が2つ以上記録されていない場合(ステップ181
1N)、ブロック番号qのブロックにはデータが上書き
されたことがないとわかるので、ステップ1819に進
む。項目が2つ以上記録されている場合(ステップ18
11Y)、変数rにブロック番号qのブロックの次ブロ
ック番号テーブル記録部104の項目のうち最新よりひ
とつ前のバージョンに対応するブロック番号の内容を代
入する(ステップ1813)。次にブロック番号rのブ
ロックのファイルID記録部105とブロック状態記録
部106を参照して、ブロック番号rのブロックが現在
処理対象となっているファイルに割り当てられているか
どうかを判定する(ステップ1815)。ファイルID
記録部105の値がファイルID89と一致しない場
合、もしくはブロック状態記録部106の内容が「使用
中」でない場合には、ブロック番号rのブロックはファ
イルに割り当てられていないことがわかるので(ステッ
プ1815N)、ステップ1819に進む。ファイルI
D記録部105の値がファイルID89に等しくかつフ
ァイル状態記録部106の値が「使用中」である場合に
は、計算機1に障害が発生したのはステップ1615ま
たはステップ1617が終了した後でかつステップ16
19が完了する前の時点だったことがわかるので、ブロ
ック番号rのブロックのブロック状態記録部106を
「上書き済」に変更して(ステップ1817)、変数q
にブロック番号qのブロックの次ブロック番号テーブル
記録部104の最新のバージョンに対応するブロック番
号の内容を代入する(ステップ1819)。次に変数q
の値が−1であるかどうかを判定する(ステップ182
1)。変数qの値が−1でない場合(ステップ1821
N)、ステップ1807に戻って処理を継続する。変数
qの値が−1である場合(ステップ1821Y)、ファ
イルの最後まで処理を行ったことがわかるので、ステッ
プ1827に進む。上記の処理により、処理対象となっ
ているファイルに割り当てられているブロックのうち使
用開始要求から使用終了要求までの間に上書きされたブ
ロックを上書き済ブロックリスト90に記録することが
できるので、上書き済ブロック解放処理を行い(ステッ
プ1827)、ファイル管理テーブル8のファイル状態
89を「格納中」に変更して(ステップ1829)、処
理を終了する。上書き済ブロック解放処理は図21につ
いて説明した処理と同一の処理である。
ロック解放中ファイル回復処理の処理手順を示すフロー
チャートである。ファイル管理プログラム6は、まずフ
ァイル管理テーブル8の処理対象となっているファイル
に対応する割当ブロック番号リスト83を初期化する
(ステップ1801)。次に変数qにファイル管理情報
領域11の処理対象となっているファイルの先頭ブロッ
ク番号テーブル30の最新のバージョン91に対応する
ブロック番号92を代入する(ステップ1803)。次
に変数pにブロック番号qのブロックのファイル内位置
記録部102の内容を代入し(ステップ1807)、割
当ブロック番号リスト83の第p番めの項目が−1であ
るかどうかを判定する(ステップ1808)。第p番め
の項目が−1でない場合(ステップ1808N)は、上
書き済ブロックリスト90に変数qの値を追加して(ス
テップ1809)、ステップ1810に進む。第p番め
の項目が−1である場合(ステップ1808Y)は、割
当ブロック番号リスト83の第p番めの項目に変数qの
値を書き込む(ステップ1810)。次にブロック番号
qのブロックの次ブロック番号テーブル記録部104を
参照して次ブロック番号テーブルに項目が2つ以上記録
されているかどうかを判定する(ステップ1811)。
項目が2つ以上記録されていない場合(ステップ181
1N)、ブロック番号qのブロックにはデータが上書き
されたことがないとわかるので、ステップ1819に進
む。項目が2つ以上記録されている場合(ステップ18
11Y)、変数rにブロック番号qのブロックの次ブロ
ック番号テーブル記録部104の項目のうち最新よりひ
とつ前のバージョンに対応するブロック番号の内容を代
入する(ステップ1813)。次にブロック番号rのブ
ロックのファイルID記録部105とブロック状態記録
部106を参照して、ブロック番号rのブロックが現在
処理対象となっているファイルに割り当てられているか
どうかを判定する(ステップ1815)。ファイルID
記録部105の値がファイルID89と一致しない場
合、もしくはブロック状態記録部106の内容が「使用
中」でない場合には、ブロック番号rのブロックはファ
イルに割り当てられていないことがわかるので(ステッ
プ1815N)、ステップ1819に進む。ファイルI
D記録部105の値がファイルID89に等しくかつフ
ァイル状態記録部106の値が「使用中」である場合に
は、計算機1に障害が発生したのはステップ1615ま
たはステップ1617が終了した後でかつステップ16
19が完了する前の時点だったことがわかるので、ブロ
ック番号rのブロックのブロック状態記録部106を
「上書き済」に変更して(ステップ1817)、変数q
にブロック番号qのブロックの次ブロック番号テーブル
記録部104の最新のバージョンに対応するブロック番
号の内容を代入する(ステップ1819)。次に変数q
の値が−1であるかどうかを判定する(ステップ182
1)。変数qの値が−1でない場合(ステップ1821
N)、ステップ1807に戻って処理を継続する。変数
qの値が−1である場合(ステップ1821Y)、ファ
イルの最後まで処理を行ったことがわかるので、ステッ
プ1827に進む。上記の処理により、処理対象となっ
ているファイルに割り当てられているブロックのうち使
用開始要求から使用終了要求までの間に上書きされたブ
ロックを上書き済ブロックリスト90に記録することが
できるので、上書き済ブロック解放処理を行い(ステッ
プ1827)、ファイル管理テーブル8のファイル状態
89を「格納中」に変更して(ステップ1829)、処
理を終了する。上書き済ブロック解放処理は図21につ
いて説明した処理と同一の処理である。
【0072】図24は旧バージョンデータ読み出し要求
の処理手順を示すフローチャートである。旧バージョン
データ読み出し要求は、ファイルが現在のバージョンよ
りも古いバージョンだった時点で格納していたデータを
読み出すときに利用者プログラム5によって発行される
要求である。
の処理手順を示すフローチャートである。旧バージョン
データ読み出し要求は、ファイルが現在のバージョンよ
りも古いバージョンだった時点で格納していたデータを
読み出すときに利用者プログラム5によって発行される
要求である。
【0073】利用者プログラム5は、旧バージョンデー
タ読み出し要求のパラメータとして読み出すデータのバ
ージョンと、データの読み出しを開始するファイル内の
位置と読み出す量とを指定する。ただし本実施形態にお
いては、ファイルのバージョン88はファイル新規作成
時に0となり、以後ファイルの使用終了要求及び使用開
始要求によって1ずつ増えていくが、ファイル使用終了
要求を実行する前と実行する後のファイルはバージョン
88が異なるが、データが上書きされたブロックが解放
されているかどうかが異なるのみであって、ファイルに
格納されているデータは同一である。従ってファイル使
用開始要求後に更新されたバージョン88(たとえば
2)と、その後ファイル使用終了要求が発行された後の
バージョン88(たとえば3)とは、同一のバージョン
とみなすものとする。
タ読み出し要求のパラメータとして読み出すデータのバ
ージョンと、データの読み出しを開始するファイル内の
位置と読み出す量とを指定する。ただし本実施形態にお
いては、ファイルのバージョン88はファイル新規作成
時に0となり、以後ファイルの使用終了要求及び使用開
始要求によって1ずつ増えていくが、ファイル使用終了
要求を実行する前と実行する後のファイルはバージョン
88が異なるが、データが上書きされたブロックが解放
されているかどうかが異なるのみであって、ファイルに
格納されているデータは同一である。従ってファイル使
用開始要求後に更新されたバージョン88(たとえば
2)と、その後ファイル使用終了要求が発行された後の
バージョン88(たとえば3)とは、同一のバージョン
とみなすものとする。
【0074】旧バージョンデータ読み出し要求を受け付
けると、ファイル管理プログラム6は、まずファイル管
理テーブル8を参照して利用者プログラム5の指定した
ファイルのファイル状態89が「格納中」であるかどう
かを判定する(ステップ1901)。「格納中」でない
場合(ステップ1901N)、処理を終了する。「格納
中」である場合(ステップ1901Y)、ファイル管理
テーブル8内の利用者プログラム5が旧バージョンデー
タの読み出しを要求したファイルに対応するファイル状
態89を「使用中」に変更し(ステップ1903)、フ
ァイル管理情報領域11内の利用者プログラム5が旧バ
ージョンデータの読み出しを要求したファイルのファイ
ル状態29を「使用中」に変更する(ステップ190
5)。次に利用者プログラム5が旧バージョンデータの
読み出しを要求しているファイルの先頭ブロック番号テ
ーブル30を参照して、利用者プログラム5が指定した
バージョンに対応する先頭ブロック番号92が存在する
かどうかを判定する(ステップ1907)。先頭ブロッ
ク番号92が存在しない場合(ステップ1907N)、
そのバージョンのファイルは存在しないのでステップ1
929に進む。先頭ブロック番号92が存在する場合
(ステップ1907Y)、ファイル管理テーブル8内の
利用者プログラム5が旧バージョンデータ読み出しを要
求したファイルの割当ブロック番号リスト83の全項目
に−1を代入して初期化する(ステップ1909)。次
に変数qにステップ1907で参照した先頭ブロック番
号テーブル30に格納されている利用者が指定したバー
ジョンに対応する先頭ブロック番号92の値を代入する
(ステップ1911)。次に変数qの値が−1であるか
どうかを判定する(ステップ1913)。変数qの値が
−1である場合(ステップ1913Y)、指定したバー
ジョンのファイルに割り当てられていたすべてのブロッ
クを割当ブロック番号リスト83に登録し終わったこと
がわかるので、ステップ1915に進む。ステップ19
15では、割当ブロック番号リストを参照して利用者プ
ログラム5の指定したバージョンのファイルの利用者プ
ログラム5が読み出し開始を指定したファイル内の位置
にブロックが割り当てられていたかどうかを判定する
(ステップ1915)。ブロックが割り当てられていな
い場合(ステップ1915N)は、旧バージョンデータ
を読み出すことができないので、ステップ1927に進
む。ブロックが割り当てられている場合(ステップ19
15Y)は、利用者プログラム5の指定した量のデータ
を読み出して(ステップ1917)、ステップ1927
に進む。変数qの値が−1でない場合(ステップ191
3N)、ファイル管理テーブル8内のファイルID87
とブロック番号qのブロックのファイルID記録部10
5を比較することによって、ブロック番号qのブロック
が利用者プログラム5の指定したファイルのデータを格
納しているかどうかを判定する(ステップ1919)。
指定されたデータを格納していない場合(ステップ19
19N)、利用者プログラム5が指定したバージョンの
ファイルのデータは既に失われているので、ステップ1
927に進む。指定されたデータを格納している場合
(ステップ1919Y)、ブロック番号qのブロックの
ファイル内位置記録部102の値を変数pに代入する
(ステップ1921)。次に割当ブロック番号リストの
第p番めの項目に変数qの値を代入する(ステップ19
23)。次に変数qにブロック番号qのブロックの次ブ
ロック番号テーブル記録部104内の利用者プログラム
5が指定したバージョンに対応する次ブロック番号を代
入して(ステップ1925)、ステップ1913に戻
り、処理を継続する。
けると、ファイル管理プログラム6は、まずファイル管
理テーブル8を参照して利用者プログラム5の指定した
ファイルのファイル状態89が「格納中」であるかどう
かを判定する(ステップ1901)。「格納中」でない
場合(ステップ1901N)、処理を終了する。「格納
中」である場合(ステップ1901Y)、ファイル管理
テーブル8内の利用者プログラム5が旧バージョンデー
タの読み出しを要求したファイルに対応するファイル状
態89を「使用中」に変更し(ステップ1903)、フ
ァイル管理情報領域11内の利用者プログラム5が旧バ
ージョンデータの読み出しを要求したファイルのファイ
ル状態29を「使用中」に変更する(ステップ190
5)。次に利用者プログラム5が旧バージョンデータの
読み出しを要求しているファイルの先頭ブロック番号テ
ーブル30を参照して、利用者プログラム5が指定した
バージョンに対応する先頭ブロック番号92が存在する
かどうかを判定する(ステップ1907)。先頭ブロッ
ク番号92が存在しない場合(ステップ1907N)、
そのバージョンのファイルは存在しないのでステップ1
929に進む。先頭ブロック番号92が存在する場合
(ステップ1907Y)、ファイル管理テーブル8内の
利用者プログラム5が旧バージョンデータ読み出しを要
求したファイルの割当ブロック番号リスト83の全項目
に−1を代入して初期化する(ステップ1909)。次
に変数qにステップ1907で参照した先頭ブロック番
号テーブル30に格納されている利用者が指定したバー
ジョンに対応する先頭ブロック番号92の値を代入する
(ステップ1911)。次に変数qの値が−1であるか
どうかを判定する(ステップ1913)。変数qの値が
−1である場合(ステップ1913Y)、指定したバー
ジョンのファイルに割り当てられていたすべてのブロッ
クを割当ブロック番号リスト83に登録し終わったこと
がわかるので、ステップ1915に進む。ステップ19
15では、割当ブロック番号リストを参照して利用者プ
ログラム5の指定したバージョンのファイルの利用者プ
ログラム5が読み出し開始を指定したファイル内の位置
にブロックが割り当てられていたかどうかを判定する
(ステップ1915)。ブロックが割り当てられていな
い場合(ステップ1915N)は、旧バージョンデータ
を読み出すことができないので、ステップ1927に進
む。ブロックが割り当てられている場合(ステップ19
15Y)は、利用者プログラム5の指定した量のデータ
を読み出して(ステップ1917)、ステップ1927
に進む。変数qの値が−1でない場合(ステップ191
3N)、ファイル管理テーブル8内のファイルID87
とブロック番号qのブロックのファイルID記録部10
5を比較することによって、ブロック番号qのブロック
が利用者プログラム5の指定したファイルのデータを格
納しているかどうかを判定する(ステップ1919)。
指定されたデータを格納していない場合(ステップ19
19N)、利用者プログラム5が指定したバージョンの
ファイルのデータは既に失われているので、ステップ1
927に進む。指定されたデータを格納している場合
(ステップ1919Y)、ブロック番号qのブロックの
ファイル内位置記録部102の値を変数pに代入する
(ステップ1921)。次に割当ブロック番号リストの
第p番めの項目に変数qの値を代入する(ステップ19
23)。次に変数qにブロック番号qのブロックの次ブ
ロック番号テーブル記録部104内の利用者プログラム
5が指定したバージョンに対応する次ブロック番号を代
入して(ステップ1925)、ステップ1913に戻
り、処理を継続する。
【0075】ステップ1927では、すでに旧バージョ
ンデータの読み出しが正常に終了しているかあるいは失
敗した後なので、ファイル管理情報領域11から現在の
バージョンに対応する割当ブロック番号リスト23をフ
ァイル管理テーブル8の割当ブロック番号リスト83に
コピーする(ステップ1927)。次にファイル管理情
報領域11のファイル状態29を「格納中」に変更し
(ステップ1929)、ファイル管理テーブル8のファ
イル状態89を「格納中」に変更して(ステップ193
1)、処理を終了する。
ンデータの読み出しが正常に終了しているかあるいは失
敗した後なので、ファイル管理情報領域11から現在の
バージョンに対応する割当ブロック番号リスト23をフ
ァイル管理テーブル8の割当ブロック番号リスト83に
コピーする(ステップ1927)。次にファイル管理情
報領域11のファイル状態29を「格納中」に変更し
(ステップ1929)、ファイル管理テーブル8のファ
イル状態89を「格納中」に変更して(ステップ193
1)、処理を終了する。
【0076】第2の実施形態によれば、第1の実施形態
と同様に計算機1に障害が発生した場合にファイル管理
情報を回復することが可能であり、従って計算機1に障
害が発生した時点でファイルに書き込んでいたデータが
取り出せなくなることがなく、しかもファイルに対する
書き込み時のオーバヘッドの増加はほとんどない。さら
に利用者がファイルのバージョンを指定することによ
り、指定したバージョンのファイルの内容を読み出すこ
とが可能である。
と同様に計算機1に障害が発生した場合にファイル管理
情報を回復することが可能であり、従って計算機1に障
害が発生した時点でファイルに書き込んでいたデータが
取り出せなくなることがなく、しかもファイルに対する
書き込み時のオーバヘッドの増加はほとんどない。さら
に利用者がファイルのバージョンを指定することによ
り、指定したバージョンのファイルの内容を読み出すこ
とが可能である。
【0077】
【発明の効果】本発明によれば、ファイルに新規データ
のブロックを追加するとき、あらかじめ割り当てられた
ブロックを利用できるとともにファイルの終端をブロッ
クの形式で記録できるという効果がある。また本発明に
よれば、外部記憶装置上にファイルに最初に割り当てた
ブロックの番号を保存し、各ブロックにはデータと次に
連結するブロックの番号又は空のブロックであることを
示すフラグを記録するので、外部記憶装置に対するオー
バヘッドをほとんど増加させずに計算機に障害が発生し
たときデータ書き込み処理中であったファイルの管理情
報を回復できる。さらに本発明によれば、上記新規デー
タのブロックを追加するときの効果に加えてファイル中
のデータを更新するとき更新前のデータを保存できると
いう効果がある。さらに本発明によれば、ブロックごと
にそのブロックが属するバージョンを記録するので、指
定されたバージョンのデータブロックへ容易にアクセス
できる。
のブロックを追加するとき、あらかじめ割り当てられた
ブロックを利用できるとともにファイルの終端をブロッ
クの形式で記録できるという効果がある。また本発明に
よれば、外部記憶装置上にファイルに最初に割り当てた
ブロックの番号を保存し、各ブロックにはデータと次に
連結するブロックの番号又は空のブロックであることを
示すフラグを記録するので、外部記憶装置に対するオー
バヘッドをほとんど増加させずに計算機に障害が発生し
たときデータ書き込み処理中であったファイルの管理情
報を回復できる。さらに本発明によれば、上記新規デー
タのブロックを追加するときの効果に加えてファイル中
のデータを更新するとき更新前のデータを保存できると
いう効果がある。さらに本発明によれば、ブロックごと
にそのブロックが属するバージョンを記録するので、指
定されたバージョンのデータブロックへ容易にアクセス
できる。
【図1】第1の実施形態のファイル管理システムの構成
図である。
図である。
【図2】第1の実施形態のファイル管理テーブル8及び
ファイル管理情報領域11のデータ形式を示す図であ
る。
ファイル管理情報領域11のデータ形式を示す図であ
る。
【図3】第1の実施形態のブロック使用状況管理テーブ
ル7及びブロック使用状況管理領域12のデータ形式を
示す図である。
ル7及びブロック使用状況管理領域12のデータ形式を
示す図である。
【図4】第1の実施形態のデータ格納領域13のデータ
形式を示す図である。
形式を示す図である。
【図5】第1の実施形態のファイル新規作成要求の処理
手順を示すフローチャートである。
手順を示すフローチャートである。
【図6】第1の実施形態のファイル使用開始要求の処理
手順を示すフローチャートである。
手順を示すフローチャートである。
【図7】第1の実施形態によるデータ書き込み要求の処
理手順を示すフローチャートである。
理手順を示すフローチャートである。
【図8】第1の実施形態のファイル使用終了要求の処理
手順を示すフローチャートである。
手順を示すフローチャートである。
【図9】第1の実施形態のファイル削除要求の処理手順
を示すフローチャートである。
を示すフローチャートである。
【図10】第1の実施形態のファイル管理情報回復処理
の処理手順の概略を示すフローチャートである。
の処理手順の概略を示すフローチャートである。
【図11】第1の実施形態のファイル管理情報回復要求
における使用中ファイル回復処理の処理手順を示すフロ
ーチャートである。
における使用中ファイル回復処理の処理手順を示すフロ
ーチャートである。
【図12】第1の実施形態のファイル管理情報回復要求
における削除中ファイル回復処理の処理手順を示すフロ
ーチャートである。
における削除中ファイル回復処理の処理手順を示すフロ
ーチャートである。
【図13】第2の実施形態のファイル管理テーブル8及
びファイル管理情報領域11のデータ形式を示す図であ
る。
びファイル管理情報領域11のデータ形式を示す図であ
る。
【図14】第2の実施形態のブロック使用状況管理テー
ブル7及びブロック使用状況管理領域12のデータ形式
を示す図である。
ブル7及びブロック使用状況管理領域12のデータ形式
を示す図である。
【図15】第2の実施形態のデータ格納領域13のデー
タ形式を示す図である。
タ形式を示す図である。
【図16】第2の実施形態のファイル新規作成要求の処
理手順を示すフローチャートである。
理手順を示すフローチャートである。
【図17】第2の実施形態の空きブロック検索処理の処
理手順を示すフローチャートである。
理手順を示すフローチャートである。
【図18】第2の実施形態のファイル使用開始要求の処
理手順を示すフローチャートである。
理手順を示すフローチャートである。
【図19】第2の実施形態におけるデータ書き込み要求
の処理手順を示すフローチャートである。
の処理手順を示すフローチャートである。
【図20】第2の実施形態のファイル使用終了要求の処
理手順を示すフローチャートである。
理手順を示すフローチャートである。
【図21】第2の実施形態のファイル使用終了要求にお
ける上書き済ブロック解放処理の処理手順を示すフロー
チャートである。
ける上書き済ブロック解放処理の処理手順を示すフロー
チャートである。
【図22】第2の実施形態のファイル管理情報回復処理
の処理手順を示すフローチャートである。
の処理手順を示すフローチャートである。
【図23】第2の実施形態のファイル管理情報回復処理
における上書き済ブロック解放中ファイル回復処理の処
理手順を示すフローチャートである。
における上書き済ブロック解放中ファイル回復処理の処
理手順を示すフローチャートである。
【図24】第2の実施形態の旧バージョンデータ読み出
し要求の処理手順を示すフローチャートである。
し要求の処理手順を示すフローチャートである。
1…計算機、2…外部記憶装置、6…ファイル管理プロ
グラム、8…ファイル管理テーブル、11…ファイル管
理情報領域、13…データ格納領域、23,83…割当
ブロック番号リスト、85…仮割当ブロック番号、10
1…次ブロック番号記録部、103…データ記録部
グラム、8…ファイル管理テーブル、11…ファイル管
理情報領域、13…データ格納領域、23,83…割当
ブロック番号リスト、85…仮割当ブロック番号、10
1…次ブロック番号記録部、103…データ記録部
フロントページの続き (72)発明者 山下 洋史 神奈川県川崎市幸区鹿島田890番地 株式 会社日立製作所情報・通信開発本部内
Claims (10)
- 【請求項1】複数のブロックから構成されるファイルを
格納する外部記憶装置と、該外部記憶装置に接続され、
該ファイルに新規データを追加するとき該ファイルに該
外部記憶装置の未使用ブロックを新たに割り当てるファ
イル管理プログラムが走行する計算機とを有する計算機
システムのファイル管理方法において、 該ファイルに該新規データのブロックを追加する前にあ
らかじめ該ファイルに余分の未使用ブロックを割り当て
ておき、 該ファイルに該新規データのブロックを追加するときに
あらかじめ割り当てられた未使用ブロックに該新規デー
タを格納するとともに、さらに該ファイルに余分の未使
用ブロックを割り当てることを特徴とするファイル管理
方法。 - 【請求項2】該ファイルの新規作成を開始するとき及び
既存ファイルを使用開始するときに該ファイルに該余分
の未使用ブロックを割り当てておき、ファイルを使用終
了するとき該余分の未使用ブロックの割当を解除するこ
とを特徴とする請求項1記載のファイル管理方法。 - 【請求項3】該ファイルに対して最初に割り当てられた
ブロックの番号を該ファイルの管理情報として該外部記
憶装置上に記録し、該ファイルに割り当てられた各ブロ
ックにはデータと次に連結するブロックの番号又は空の
ブロックであることを示す識別子を記録することを特徴
とする請求項1記載のファイル管理方法。 - 【請求項4】該ファイルに割り当てられたブロックの番
号を該ファイル内のブロックの位置(相対ブロック番
号)の順に配列する割当ブロック一覧を該計算機の主記
憶装置上に格納しておき、該ファイルに新規データを追
加するとき新規データを格納するブロックの番号を該割
当ブロック一覧に順次追加することを特徴とする請求項
3記載のファイル管理方法。 - 【請求項5】該外部記憶装置が有する各ブロックが使用
中か未使用かを示す情報をブロック使用状況管理テーブ
ルとして該計算機の主記憶装置上に格納しておき、該フ
ァイルに未使用ブロックを割り当てるごとに該テーブル
の該未使用ブロックの使用状況を未使用から使用中に更
新することを特徴とする請求項1記載のファイル管理方
法。 - 【請求項6】該ファイルに余分に割り当てる未使用ブロ
ックの番号を仮割当ブロック番号として主記憶装置上に
格納しておき、該ファイルに余分の未使用ブロックを割
り当てるごとに該仮割当ブロック番号を更新することを
特徴とする請求項1記載のファイル管理方法。 - 【請求項7】該ファイルに新規データを追加する処理が
中断したとき、該外部記憶装置上に記録されたファイル
管理情報及び各ブロックに記録された次に連結するブロ
ックの番号を空のブロックまで順次たどることによって
主記憶装置上の該割当ブロック一覧を回復することを特
徴とする請求項4記載のファイル管理方法。 - 【請求項8】複数のブロックから構成されるファイルを
格納する外部記憶装置と、該外部記憶装置に接続され、
該ファイルに新規データを追加するとき該ファイルに該
外部記憶装置の未使用ブロックを新たに割り当てるファ
イル管理プログラムが走行する計算機とを有する計算機
システムのファイル管理方法において、 該ファイルに該新規データのブロックの追加と既存デー
タを格納するブロックの更新とのうちいずれかのデータ
書き込みをする前にあらかじめ該ファイルに余分の未使
用ブロックを割り当てておき、 該データ書き込みをするときにあらかじめ割り当てられ
た未使用ブロックに新しい書き込みデータを格納すると
ともに、さらに該ファイルに余分の未使用ブロックを割
り当てることを特徴とするファイル管理方法。 - 【請求項9】ファイルの使用開始のたびにファイルのバ
ージョンを更新し、該ファイルのバージョンと該ファイ
ルのバージョンに対応して最初に割り当てられたブロッ
クの番号を該ファイルの管理情報として該外部記憶装置
上に記録し、該ファイルに割り当てられた各ブロックに
はデータと該ブロックが属するバージョンに対応して次
に連結するブロックの番号又は空のブロックであること
を示す識別子を記録することを特徴とする請求項8記載
のファイル管理方法。 - 【請求項10】バージョンが指定されたとき、該ファイ
ルの管理情報を参照して指定されたバージョンに対応す
るファイルの先頭のブロックの番号を取得し、各ブロッ
クに記録された次に連結するブロック番号を指定された
バージョンについて空のブロックまで順次たどることに
よって該ファイルの指定されたバージョンに属するブロ
ックの番号を該ファイル内のブロックの位置(相対ブロ
ック番号)の順に配列する割当ブロック一覧を作成し、
該割当ブロック一覧に基づいて指定されたブロック位置
に対応するブロックにアクセスすることを特徴とする請
求項9記載のファイル管理方法。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8217579A JPH1063555A (ja) | 1996-08-19 | 1996-08-19 | ファイル管理方法 |
| US08/909,073 US5926821A (en) | 1996-08-19 | 1997-08-14 | File control method and system for allocating a free block to a file when the previously allocated block is to be written to |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8217579A JPH1063555A (ja) | 1996-08-19 | 1996-08-19 | ファイル管理方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH1063555A true JPH1063555A (ja) | 1998-03-06 |
Family
ID=16706500
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP8217579A Pending JPH1063555A (ja) | 1996-08-19 | 1996-08-19 | ファイル管理方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US5926821A (ja) |
| JP (1) | JPH1063555A (ja) |
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2005129217A (ja) * | 2003-10-23 | 2005-05-19 | Thomson Licensing Sa | データを記録し且つ記録データを回復するための方法及び装置 |
| KR100644598B1 (ko) * | 2000-08-17 | 2006-11-10 | 삼성전자주식회사 | 기록 매체의 데이터 공간 관리 방법 |
| KR100714691B1 (ko) | 2005-05-04 | 2007-05-04 | 삼성전자주식회사 | 파일 시스템에 추가 정보를 저장하고 관리하는 장치 및방법 |
| WO2008032621A1 (en) * | 2006-09-12 | 2008-03-20 | Panasonic Corporation | Memory controller, nonvolatile storage device and nonvolatile storage system |
| WO2008032711A1 (en) * | 2006-09-13 | 2008-03-20 | Panasonic Corporation | Memory controller, nonvolatile storage device, access device and nonvolatile storage system |
| US7363331B2 (en) | 1999-08-31 | 2008-04-22 | Fujitsu Limited | File device and file access method |
| JP2009217340A (ja) * | 2008-03-07 | 2009-09-24 | Nec Corp | ファイル不正防止装置、ファイル不正防止方法およびプログラム |
| KR101059653B1 (ko) * | 2002-06-27 | 2011-08-25 | 소니 주식회사 | 정보 처리 장치, 정보 처리 방법, 및 기록 매체 |
Families Citing this family (27)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6178428B1 (en) * | 1997-10-31 | 2001-01-23 | Oracle Corporation | Method and apparatus for accessing a file that can be concurrently written |
| US5946700A (en) * | 1997-10-31 | 1999-08-31 | Oracle Corporation | Method and apparatus for preserving non-current information that can be overwritten in a computer file |
| JP3478130B2 (ja) * | 1998-06-30 | 2003-12-15 | 日本ビクター株式会社 | 情報記録媒体 |
| US8250617B2 (en) | 1999-10-29 | 2012-08-21 | Opentv, Inc. | System and method for providing multi-perspective instant replay |
| US6970641B1 (en) | 2000-09-15 | 2005-11-29 | Opentv, Inc. | Playback of interactive programs |
| US7000245B1 (en) * | 1999-10-29 | 2006-02-14 | Opentv, Inc. | System and method for recording pushed data |
| US20020169940A1 (en) * | 2001-04-12 | 2002-11-14 | Kyler Daniel B. | System and method for using memory mapping to scan a master file table |
| JP2003280754A (ja) * | 2002-03-25 | 2003-10-02 | Nec Corp | 隠蔽化ソースプログラム、ソースプログラム変換方法及び装置並びにソース変換プログラム |
| JP2007011536A (ja) * | 2005-06-29 | 2007-01-18 | Victor Co Of Japan Ltd | 記録装置 |
| US8488178B2 (en) * | 2006-06-21 | 2013-07-16 | Kyocera Document Solutions Inc. | Image forming apparatus storage files with file attribution table having deletion date and flag |
| JP5055853B2 (ja) * | 2006-06-26 | 2012-10-24 | 富士通セミコンダクター株式会社 | ファイル管理装置及び電子機器 |
| JP2008052815A (ja) * | 2006-08-24 | 2008-03-06 | Victor Co Of Japan Ltd | 記録方法、記録装置、記録媒体、再生方法および再生装置 |
| EP2015197A1 (en) * | 2007-06-29 | 2009-01-14 | Siemens Aktiengesellschaft | Method and file system |
| US8849777B1 (en) * | 2011-06-30 | 2014-09-30 | Emc Corporation | File deletion detection in key value databases for virtual backups |
| US8843443B1 (en) | 2011-06-30 | 2014-09-23 | Emc Corporation | Efficient backup of virtual data |
| US9158632B1 (en) | 2011-06-30 | 2015-10-13 | Emc Corporation | Efficient file browsing using key value databases for virtual backups |
| US9092318B2 (en) * | 2012-02-06 | 2015-07-28 | Vmware, Inc. | Method of allocating referenced memory pages from a free list |
| JP5958539B2 (ja) * | 2012-06-25 | 2016-08-02 | 富士通株式会社 | 情報処理装置、ファイル管理方法、及びファイル管理プログラム |
| US10963430B2 (en) | 2015-04-01 | 2021-03-30 | Dropbox, Inc. | Shared workspaces with selective content item synchronization |
| US9852147B2 (en) | 2015-04-01 | 2017-12-26 | Dropbox, Inc. | Selective synchronization and distributed content item block caching for multi-premises hosting of digital content items |
| US9922201B2 (en) | 2015-04-01 | 2018-03-20 | Dropbox, Inc. | Nested namespaces for selective content sharing |
| US10691718B2 (en) | 2015-10-29 | 2020-06-23 | Dropbox, Inc. | Synchronization protocol for multi-premises hosting of digital content items |
| US9479567B1 (en) * | 2015-10-29 | 2016-10-25 | Dropbox, Inc. | Synchronization protocol for multi-premises hosting of digital content items |
| US9870367B2 (en) * | 2016-01-04 | 2018-01-16 | Acronis International Gmbh | System and method of using data blocks to optimize file storage |
| US9537952B1 (en) | 2016-01-29 | 2017-01-03 | Dropbox, Inc. | Apparent cloud access for hosted content items |
| US11169962B2 (en) * | 2016-03-17 | 2021-11-09 | Rakuten Group, Inc. | File management system, file management method, collection program, and non-transitory computer-readable information recording medium |
| US11290531B2 (en) | 2019-12-04 | 2022-03-29 | Dropbox, Inc. | Immediate cloud content item creation from local file system interface |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5504883A (en) * | 1993-02-01 | 1996-04-02 | Lsc, Inc. | Method and apparatus for insuring recovery of file control information for secondary storage systems |
| US5829005A (en) * | 1996-07-03 | 1998-10-27 | Sun Microsystems, Inc. | Circular size-bounded file technique for a computer operating system |
-
1996
- 1996-08-19 JP JP8217579A patent/JPH1063555A/ja active Pending
-
1997
- 1997-08-14 US US08/909,073 patent/US5926821A/en not_active Expired - Fee Related
Cited By (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7363331B2 (en) | 1999-08-31 | 2008-04-22 | Fujitsu Limited | File device and file access method |
| KR100644598B1 (ko) * | 2000-08-17 | 2006-11-10 | 삼성전자주식회사 | 기록 매체의 데이터 공간 관리 방법 |
| KR101059653B1 (ko) * | 2002-06-27 | 2011-08-25 | 소니 주식회사 | 정보 처리 장치, 정보 처리 방법, 및 기록 매체 |
| JP2005129217A (ja) * | 2003-10-23 | 2005-05-19 | Thomson Licensing Sa | データを記録し且つ記録データを回復するための方法及び装置 |
| KR101121924B1 (ko) * | 2003-10-23 | 2012-03-19 | 톰슨 라이센싱 | 데이터를 기록하고 기록된 데이터를 복구하기 위한 방법및 장치 |
| KR100714691B1 (ko) | 2005-05-04 | 2007-05-04 | 삼성전자주식회사 | 파일 시스템에 추가 정보를 저장하고 관리하는 장치 및방법 |
| WO2008032621A1 (en) * | 2006-09-12 | 2008-03-20 | Panasonic Corporation | Memory controller, nonvolatile storage device and nonvolatile storage system |
| JP2008070929A (ja) * | 2006-09-12 | 2008-03-27 | Matsushita Electric Ind Co Ltd | メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム |
| WO2008032711A1 (en) * | 2006-09-13 | 2008-03-20 | Panasonic Corporation | Memory controller, nonvolatile storage device, access device and nonvolatile storage system |
| JP2009217340A (ja) * | 2008-03-07 | 2009-09-24 | Nec Corp | ファイル不正防止装置、ファイル不正防止方法およびプログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| US5926821A (en) | 1999-07-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH1063555A (ja) | ファイル管理方法 | |
| US6957362B2 (en) | Instantaneous restoration of a production copy from a snapshot copy in a data storage system | |
| US6792518B2 (en) | Data storage system having mata bit maps for indicating whether data blocks are invalid in snapshot copies | |
| US6934822B2 (en) | Organization of multiple snapshot copies in a data storage system | |
| US7035881B2 (en) | Organization of read-write snapshot copies in a data storage system | |
| US6247024B1 (en) | Method and system for performing deferred file removal in a file system | |
| EP1942414B1 (en) | Snapshot system and method | |
| CN1173231A (zh) | 计算机数据的存储 | |
| JP2001506387A (ja) | ファイル・システムにおけるディスク・スペースの解放 | |
| US6675257B1 (en) | System and method for managing storage space on a sequential storage media | |
| US10445185B1 (en) | Version mapped incremental backups | |
| JPH06139120A (ja) | ファイルの更新方式 | |
| US11531474B1 (en) | Storage system and data replication method in storage system | |
| JP4916892B2 (ja) | トランザクション処理のためのログ情報管理システムおよび方法 | |
| JPH01261745A (ja) | データ・ベース・レコードのトランザクシヨンの回復方法 | |
| EP1470484B1 (en) | Method and system for providing direct access recovery using seekable tape device | |
| JPH11120057A (ja) | ファイルバックアップ方法 | |
| JP2005215940A (ja) | ストレージシステム、サーバ装置及び先行コピーデータ生成方法 | |
| US5978810A (en) | Data management system and method for storing a long record in a set of shorter keyed records | |
| JP7512519B2 (ja) | 管理装置、データベースシステム、管理方法およびプログラム | |
| JP2822869B2 (ja) | ライブラリファイル管理装置 | |
| JP2008123104A (ja) | データアクセス装置 | |
| JP2610972B2 (ja) | データベースのデータ保全方式 | |
| JPH08328929A (ja) | データベース分割管理システム | |
| CN112988766A (zh) | 一种数据库访问方法和装置 |