(57)【要約】【課題】ＦＡＴファイルシステムにおいて、瞬断リセットが発生した場合、更新前の状態に自動的にロールバックできるようにする。【解決手段】ＦＡＴ更新手段１０１は、不揮発メモリ１１０上のＦＡＴ１１２、ノード情報テーブル１１４を主記憶装置１２０上にコピーし、ＦＡＴ及びノード情報テーブルの更新を主記憶装置１２０上で行う。不揮発書き込み手段１０４は、ファイル領域１１５に格納されているファイルの更新時、ファイルの更新箇所に対応するクラスタの内容をそのままにして空きクラスタに更新後の内容を書き込む。不揮発書き込み手段１０４は、ファイルクローズ時、主記憶装置１２０上にコピーしたＦＡＴ及びノード情報テーブルの内容を、それぞれ不揮発メモリ１１０上のＦＡＴエリア１１１及びＲＤＥ（ルートディレクトリエントリ）に書き戻す。【選択図】　　　図１
2004102660.tif 000002
【特許請求の範囲】
【請求項１】
不揮発メモリに、ＦＡＴエリア、ルートディレクトリエントリ及びファイル領域が設けられたＦＡＴファイルシステムにおいて、
ファイルオープン時、前記ＦＡＴエリアに格納されているＦＡＴを主記憶装置上にコピーし、ＦＡＴの更新時、前記主記憶装置上にコピーしたＦＡＴに対して更新処理を行うＦＡＴ更新手段と、
ファイルオープン時、前記ルートディレクトリエントリに格納されているノード情報テーブルを前記主記憶装置上にコピーし、ノード情報テーブルの更新時、前記主記憶装置にコピーしたノード情報テーブルに対して更新処理を行うノード情報テーブル更新手段と、
ファイルクローズ時、前記主記憶装置上のＦＡＴ及びノード情報テーブルの内容を、それぞれ前記不揮発メモリ上のＦＡＴエリア及びルートディレクトリエントリに書き戻す不揮発書き込み手段とを備えたことを特徴とするロールバック可能ＦＡＴファイルシステム。
【請求項２】
請求項１記載のロールバック可能ＦＡＴファイルシステムにおいて、
前記不揮発メモリ上のファイル領域に格納されているファイルの更新時、ファイルの更新箇所に対応するクラスタの内容をそのままにして空きクラスタに更新後の内容を書き込む空きクラスタ書き込み手段を備えたことを特徴とするロールバック可能ＦＡＴファイルシステム。
【請求項３】
請求項１記載のロールバック可能ＦＡＴファイルシステムにおいて、
ファイルの更新時、前記ファイル中の更新箇所に対応するクラスタの内容をそのままにして空きクラスタに更新後の内容を書き込む処理と、前記ファイル中の最も前の更新箇所と最も後ろの更新箇所とによって挟まれる区間の情報が格納されているクラスタの内の、前記ファイルの更新対象箇所と対応していないクラスタの内容を空きクラスタにコピーする処理とを行う空きクラスタ書き込み手段を備え、且つ、
前記ＦＡＴ更新手段が、前記ファイルの更新時、前記空きクラスタ書き込み手段が更新後の内容を書き込んだ空きクラスタ及びコピー先とした空きクラスタからなるクラスタ群を対象にして該クラスタ群を構成するクラスタのチェイン付けがファイル内容に合ったものになるように前記主記憶装置上にコピーされたＦＡＴの内容を更新する処理と、前記ファイル中の最も前の更新箇所と対応するクラスタよりも１つ前のクラスタが、前記クラスタ群中の先頭のクラスタとチェイン付けされるように前記主記憶装置上にコピーされたＦＡＴの内容を更新する処理と、前記ファイル中の最も後ろの更新箇所と対応するクラスタよりも１つ後ろのクラスタが、前記クラスタ群中の最後尾のクラスタとチェイン付けされるように前記主記憶装置上にコピーされているＦＡＴの内容を更新する処理とを行う構成を有し、
前記不揮発書き込み手段が、前記主記憶装置上のＦＡＴの内容を前記不揮発メモリ上のＦＡＴエリアに書き戻す際、最初に前記クラスタ群に関するチェイン情報をセクタ単位で書き戻し、その後、更新前のファイルの内容が格納されているクラスタに関するチェイン情報を、セクタ単位で最終チェインから先頭に向かって順番に書き戻す構成を有することを特徴とするロールバック可能ＦＡＴファイルシステム。
【請求項４】
請求項１、２または３記載のロールバック可能ＦＡＴファイルシステムにおいて、
前記不揮発メモリがフラッシュメモリであることを特徴とするロールバック可能ＦＡＴファイルシステム。
【請求項５】
ＦＡＴエリア、ルートディレクトリエントリ及びファイル領域が設けられた不揮発メモリを備えたコンピュータを、
ファイルオープン時、前記ＦＡＴエリアに格納されているＦＡＴを主記憶装置上にコピーし、ＦＡＴの更新時、前記主記憶装置上にコピーしたＦＡＴに対して更新処理を行うＦＡＴ更新手段、
ファイルオープン時、前記ルートディレクトリエントリに格納されているノード情報テーブルを前記主記憶装置上にコピーし、ノード情報テーブルの更新時、前記主記憶装置にコピーしたノード情報テーブルに対して更新処理を行うノード情報テーブル更新手段、
ファイルクローズ時、前記主記憶装置上のＦＡＴ及びノード情報テーブルの内容を、それぞれ前記不揮発メモリ上のＦＡＴエリア及びルートディレクトリエントリに書き戻す不揮発書き込み手段として機能させるためのプログラム。
【請求項６】
請求項５記載のプログラムにおいて、
前記コンピュータを、
前記不揮発メモリ上のファイル領域に格納されているファイルの更新時、ファイルの更新箇所に対応するクラスタの内容をそのままにして空きクラスタに更新後の内容を書き込む空きクラスタ書き込み手段として機能させるためのプログラム
【請求項７】
請求項６記載のプログラムにおいて、
前記コンピュータを、
ファイルの更新時、前記ファイル中の更新箇所に対応するクラスタの内容をそのままにして空きクラスタに更新後の内容を書き込む処理と、前記ファイル中の最も前の更新箇所と最も後ろの更新箇所とによって挟まれる区間の情報が格納されているクラスタの内の、前記ファイルの更新対象箇所と対応していないクラスタの内容を空きクラスタにコピーする処理とを行う空きクラスタ書き込み手段として機能させ、且つ、
前記ＦＡＴ更新手段が、前記ファイルの更新時、前記空きクラスタ書き込み手段が更新後の内容を書き込んだ空きクラスタ及びコピー先とした空きクラスタからなるクラスタ群を対象にして該クラスタ群を構成するクラスタのチェイン付けがファイル内容に合ったものになるように前記主記憶装置上にコピーされたＦＡＴの内容を更新する処理と、前記ファイル中の最も前の更新箇所と対応するクラスタよりも１つ前のクラスタが、前記クラスタ群中の先頭のクラスタとチェイン付けされるように前記主記憶装置上にコピーされたＦＡＴの内容を更新する処理と、前記ファイル中の最も後ろの更新箇所と対応するクラスタよりも１つ後ろのクラスタが、前記クラスタ群中の最後尾のクラスタとチェイン付けされるように前記主記憶装置上にコピーされているＦＡＴの内容を更新する処理とを行う構成を有し、
前記不揮発書き込み手段が、前記主記憶装置上のＦＡＴの内容を前記不揮発メモリ上のＦＡＴエリアに書き戻す際、最初に前記クラスタ群に関するチェイン情報をセクタ単位で書き戻し、その後、更新前のファイルの内容が格納されているクラスタに関するチェイン情報を、セクタ単位で最終チェインから先頭に向かって順番に書き戻す構成を有することを特徴とするプログラム。
【請求項８】
請求項５、６または７記載のプログラムにおいて、
前記不揮発メモリがフラッシュメモリであることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＦＡＴ（Ｆｉｌｅ　Ａｌｌｏｃａｔｉｏｎ　Ｔａｂｌｅ）ファイルシステムに関し、特に、瞬断リセット時にロールバックを行う技術に関する。
【０００２】
【従来の技術】
近年、携帯電話機などのモバイル機器は、その機能拡大に伴い、大容量の記憶域が必要になってきており、フラッシュメモリもファイル領域として扱われるようになってきている。また、ファイルシステムには、他の機器との相互運用性が高く一般に普及しているＦＡＴファイルシステムが用いられることが多い。ここで、従来のＦＡＴファイルシステムについて説明しておく。
【０００３】
図１２は、新規ファイル作成時の動作を説明するための図である。不揮発メモリには、ＦＡＴエリアと、ルートディレクトリエントリ（ＲＤＥ）と、ファイル領域とが設けられている。ＦＡＴエリアには、ＦＡＴ（ファイルアロケーションテーブル）が格納されており、ＦＡＴにはクラスタをチェイン付けするチェイン情報が格納されている。ＲＤＥには、ノード情報テーブルが格納されており、ノード情報テーブルには、ファイル領域に格納されている各ファイルのファイル情報（ファイル名、属性、先頭クラスタ番号、サイズなど）が格納されている。ファイル領域には、ファイルが格納されている。
【０００４】
図１２を参照すると、新規ファイルの作成は、以下のようにして行われる。
【０００５】
（１）ファイルオープン時、新規作成するファイルのファイル情報（ファイル名や属性）を、ＲＤＥ中のノード情報テーブルに書き込む。
【０００６】
（２）ファイル書き込み時、ＦＡＴエリア中のＦＡＴに基づいて、ファイルサイズに応じた数の空きクラスタを検索する。図１２の例は、ファイルサイズが４クラスタ分で、空きクラスタとして第１５番目〜第１８番目のクラスタが検索された場合を示している。
（３）ＦＡＴのチェイン情報を更新する。
（４）ファイル領域中の空きクラスタ（第１５番目〜第１８番目のクラスタ）にデータを書き込む。
【０００７】
（５）ファイルクローズ時、新規作成ファイルのファイル情報（サイズや先頭クラスタ番号）をＲＤＥ中のノード情報テーブルに書き込む。
【０００８】
次に、図１３を参照して既存ファイルに対して再作成（トランケートオープン）を行う場合の動作を説明する。
【０００９】
（１）ファイルオープン時、ノード情報テーブルに格納されている対象ファイルのファイル情報の内のサイズを「０」に変更する。図１３の例は、対象ファイルを先頭クラスタ番号が「０」のファイルとしている。
（２）ＦＡＴ上の、対象ファイルのチェイン情報をクリアする。
【００１０】
（３）ファイル書き込み時、ＦＡＴよりファイルサイズ分の空きクラスタを検索する。図１３の例は、ファイルサイズが４クラスタ分であり、空きクラスタとして第２０番目〜第２３番目のクラスタが検索されたことを示している。
（４）ＦＡＴのチェイン情報を更新する。
（５）空きクラスタ（第２０番目〜第２３番目のクラスタ）にデータを書き込む。
【００１１】
（６）ファイルクローズ時、ファイル情報（サイズや先頭クラスタ番号）をＲＤＥ中のノード情報テーブルに書き込む。
【００１２】
次に、図１４を参照して既存ファイルに対して上書き更新を行う場合の動作を説明する。
【００１３】
（１）ファイルオープン時、ＦＡＴエリア中のＦＡＴを参照し、対象ファイルのチェイン情報を取得する。
【００１４】
（２）ファイル書き込み時、対象ファイルのクラスタを更新する。
【００１５】
（３）ファイルクローズ時、ノード情報テーブルにファイル情報を書き込む。
【００１６】
以上が従来のＦＡＴファイルシステムについての説明である。
【００１７】
ところで、モバイル機器のファイルシステムとしては高い耐障害性が求められ、ファイル更新中に瞬断リセットが発生しても、ファイルシステムの整合性だけでなく、データに矛盾を発生させないことが求められる。
【００１８】
しかし、上述した従来のＦＡＴファイルシステムでは、ファイル更新中に瞬断リセットが発生すると、格納データに矛盾が発生してしまうという問題がある。例えば、図１２に示した新規ファイルの作成時においては、（１）の処理後から（５）の処理前までに瞬断リセットが発生すると、中途半端なファイル状態となり、データに矛盾が発生してしまう。また、図１３に示した再作成時においては、（１）の処理後から（６）の処理前までに瞬断リセットが発生すると、中途半端なファイル状態となり、データに矛盾が発生してしまう。また、図１４に示した上書き更新時には、（２）の処理中から（３）の処理前までに瞬断リセットが発生すると、中途半端なファイル状態となり、データに矛盾が発生してしまう。
【００１９】
ところで、壊れてしまったファイルを復元する従来の技術として、ハードディスク（不揮発メモリに対応）のドライブからセクタ情報を検出し、検出されたセクタ情報からＦＡＴ、ルートディレクトリ及びデータ情報を分析して破損したディレクトリ情報を検索し、検索器インタフェースを用いて見つけられたディレクトリを復元する技術が知られている（例えば、特許文献１参照）。
【００２０】
【特許文献１】
特開２００１−１８４２４７号公報
【００２１】
【発明が解決しようとする課題】
しかし、特許文献１に記載されている技術は、壊れてしまったファイルに対し、手動で復元を行うものであって、ファイル更新前の状態に、ＦＡＴファイルシステムを自動的にロールバックすることはできなかった。
【００２２】
【発明の目的】
そこで、本発明の目的は、ＦＡＴファイルシステムにおいて、ファイル更新中に瞬断リセットが発生した場合、自動的に更新前の状態にロールバックできるようにすることにある。
【００２３】
【課題を解決するための手段】
本発明のロールバック可能ＦＡＴファイルシステムは、ＦＡＴやノード情報テーブルを更新中に瞬断リセットが発生した場合においても、更新前の状態にロールバックできるようにするため、
不揮発メモリに、ＦＡＴエリア、ルートディレクトリエントリ及びファイル領域が設けられたＦＡＴファイルシステムにおいて、
ファイルオープン時、前記ＦＡＴエリアに格納されているＦＡＴを主記憶装置上にコピーし、ＦＡＴの更新時、前記主記憶装置上にコピーしたＦＡＴに対して更新処理を行うＦＡＴ更新手段と、
ファイルオープン時、前記ルートディレクトリエントリに格納されているノード情報テーブルを前記主記憶装置上にコピーし、ノード情報テーブルの更新時、前記主記憶装置にコピーしたノード情報テーブルに対して更新処理を行うノード情報テーブル更新手段と、
ファイルクローズ時、前記主記憶装置上のＦＡＴ及びノード情報テーブルの内容を、それぞれ前記不揮発メモリ上のＦＡＴエリア及びルートディレクトリエントリに書き戻す不揮発書き込み手段とを備えている。
【００２４】
また、本発明のロールバック可能ＦＡＴファイルシステムは、ファイルデータを不揮発メモリに書き込んでいる時に、瞬断リセットが発生しても更新前の状態にロールバックできるようにするため、
前記不揮発メモリ上のファイル領域に格納されているファイルの更新時、ファイルの更新箇所に対応するクラスタの内容をそのままにして空きクラスタに更新後の内容を書き込む空きクラスタ書き込み手段を備えている。
【００２５】
また、本発明のロールバック可能ＦＡＴファイルシステムは、ファイルオープン時からファイルクローズ時の何れのタイミングにおいて瞬断リセットが発生した場合においても、更新前の状態にロールバックできるようにするため、
ファイルの更新時、前記ファイル中の更新箇所に対応するクラスタの内容をそのままにして空きクラスタに更新後の内容を書き込む処理と、前記ファイル中の最も前の更新箇所と最も後ろの更新箇所とによって挟まれる区間の情報が格納されているクラスタの内の、前記ファイルの更新対象箇所と対応していないクラスタの内容を空きクラスタにコピーする処理とを行う空きクラスタ書き込み手段を備え、且つ、
前記ＦＡＴ更新手段が、前記ファイルの更新時、前記空きクラスタ書き込み手段が更新後の内容を書き込んだ空きクラスタ及びコピー先とした空きクラスタからなるクラスタ群を対象にして該クラスタ群を構成するクラスタのチェイン付けがファイル内容に合ったものになるように前記主記憶装置上にコピーされたＦＡＴの内容を更新する処理と、前記ファイル中の最も前の更新箇所と対応するクラスタよりも１つ前のクラスタが、前記クラスタ群中の先頭のクラスタとチェイン付けされるように前記主記憶装置上にコピーされたＦＡＴの内容を更新する処理と、前記ファイル中の最も後ろの更新箇所と対応するクラスタよりも１つ後ろのクラスタが、前記クラスタ群中の最後尾のクラスタとチェイン付けされるように前記主記憶装置上にコピーされているＦＡＴの内容を更新する処理とを行う構成を有し、
前記不揮発書き込み手段が、前記主記憶装置上のＦＡＴの内容を前記不揮発メモリ上のＦＡＴエリアに書き戻す際、最初に前記クラスタ群に関するチェイン情報をセクタ単位で書き戻し、その後、更新前のファイルの内容が格納されているクラスタに関するチェイン情報を、セクタ単位で最終チェインから先頭に向かって順番に書き戻す構成を有する。
【００２６】
【作用】
ＦＡＴやノード情報テーブルの更新を、ＦＡＴやノード情報テーブルを主記憶装置上にコピーしてから行うので、ＦＡＴやノード情報テーブルの更新時に瞬断リセットが発生しても、不揮発メモリ上のＦＡＴやノード情報テーブルは、更新前の状態であり、ファイル状態は自動的に更新前の状態にロールバックされる。
【００２７】
また、ファイルのデータを不揮発メモリに書き込む場合、ファイルの更新箇所に対応するクラスタの内容をそのままにして空きクラスタに更新後の内容を書き込むので、ファイルデータを不揮発メモリに書き込んでいる時に瞬断リセットが発生しても、更新前の状態に自動的にロールバックされる。
【００２８】
更に、ＦＡＴの内容を不揮発メモリ上のＦＡＴエリアに書き戻す際、最初にクラスタ群（更新後の内容が格納されているクラスタ及びコピー先とされたクラスタ）に関するチェイン情報をセクタ単位で書き戻し、その後、更新前のファイルの内容が格納されているクラスタに関するチェイン情報を、セクタ単位で最終チェインから先頭に向かって順番に書き戻すようにしているので、ＦＡＴを不揮発メモリに書き戻している時に瞬断リセットが発生しても、更新前の状態に自動的にロールバックされる。
【００２９】
【発明の実施の形態】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【００３０】
図１は、本発明に係るロールバック可能ＦＡＴファイルシステムの実施例のブロック図であり、コンピュータ１００と、フラッシュメモリ等の不揮発メモリ１１０と、主記憶装置１２０と、キーボード等の入力部１３０と、ＬＣＤ等の表示部１４０と、記録媒体Ｋとから構成されている。
【００３１】
不揮発メモリ１１０には、ＦＡＴエリア１１１と、ＲＤＥ１１３と、ファイル領域１１５とが設けられている。
【００３２】
ファイル領域１１５は、複数のクラスタから構成されており、１つ或いは複数のファイルが格納される。
【００３３】
ＦＡＴエリア１１１には、ＦＡＴ１１２が格納されている。ＦＡＴ１１２には、ファイル領域１１５に格納されている各ファイルそれぞれのチェイン情報が格納されている。
【００３４】
ＲＤＥ１１３には、ノード情報テーブル１１４が格納されている。ノード情報テーブル１１４には、ファイル領域１１５に格納されている各ファイルそれぞれのファイル情報（ファイル名、属性、先頭クラスタ位置、サイズなど）が格納されている。
【００３５】
コンピュータ１００上には、ＦＡＴ更新手段１０１と、ノード情報テーブル更新手段１０２と、空きクラスタ書き込み手段１０３と、不揮発書き込み手段１０４とが設けられている。
【００３６】
ＦＡＴ更新手段１０１は、ファイルオープン時、不揮発メモリ１１０上のＦＡＴ１１２を主記憶装置１２０上にコピーする機能や、ファイルの更新に伴ってＦＡＴを更新することが必要になった場合、主記憶装置１２０上にコピーしたＦＡＴに対して更新処理を行う機能等を有する。
【００３７】
ノード情報テーブル更新手段１０２は、ファイルオープン時、不揮発メモリ１１０上のノード情報テーブル１１４を主記憶装置１２０上にコピーする機能や、ファイルの更新に伴ってノード情報テーブル１１４を更新することが必要になった場合、主記憶装置１２０上にコピーしたノード情報テーブルに対して更新処理を行う機能等を有する。
【００３８】
空きクラスタ書き込み手段１０３は、ファイル領域１１５に格納されているファイルの更新時、ファイルの更新箇所に対応するクラスタの内容をそのままにして空きクラスタに更新後の内容を書き込む機能等を有する。
【００３９】
不揮発書き込み手段１０４は、ファイルクローズ時、主記憶装置１２０上にコピーされているＦＡＴ、ノード情報テーブルを不揮発メモリ１１０に書き戻す機能を有する。
【００４０】
記録媒体Ｋは、ディスク、半導体メモリ、その他の記録媒体であり、コンピュータ１００をロールバック可能ＦＡＴファイルシステムの一部として機能させるためのプログラムが記録されている。このプログラムは、コンピュータ１００によって読み取られ、その動作を制御することで、コンピュータ１００上に、ＦＡＴ更新手段１０１、ノード情報テーブル更新手段１０２、空きクラスタ書き込み手段１０３、不揮発書き込み手段１０４を実現する。
【００４１】
次に、本実施例の動作について説明する。
【００４２】
先ず、新規ファイルを作成する場合の動作について説明する。
【００４３】
図２，図３を参照すると、新規ファイルの作成は、以下のようにして行われる。
【００４４】
（１）ファイルオープン時、ＦＡＴ更新手段１０１が、不揮発メモリ１１０のＦＡＴエリア１１１に格納されているＦＡＴ１１２を主記憶装置１２０上にコピーし、主記憶装置１２０上にＦＡＴ１２１を生成する（図３、ステップＳ３１）。
（２）ノード情報テーブル更新手段１０２が、不揮発メモリ１１０上のＲＤＥ１１３に格納されているノード情報テーブル１１４を、主記憶装置１２０上にコピーし、更に、主記憶装置１２０上にコピーしたノード情報テーブル１２２に新規ファイルのファイル情報（ファイル名や属性）を格納する（ステップＳ３２）。
【００４５】
（３）ファイル書き込み時、空きクラスタ書き込み手段１０３が、主記憶装置１２０上のＦＡＴ１２１を参照し、ファイル領域１１５に存在する空きクラスタを検索する（ステップＳ３３）。図２の例は、空きクラスタとして第２０番目から第２３番目のクラスタが探し出された場合を示している。
（４）その後、空きクラスタ書き込み手段１０３が、空きクラスタにファイルのデータを書き込む（ステップＳ３４）。
（５）更に、ＦＡＴ更新手段１０１が、主記憶装置１２０上のＦＡＴ１２１のチェイン情報を更新する（ステップＳ３５）。
【００４６】
（６）ファイルクローズ時、不揮発書き込み手段１０４が、更新されている主記憶装置１２０上のＦＡＴ１２１を、不揮発メモリ１１０のＦＡＴエリア１１１に書き戻す（ステップＳ３６）。
（７）不揮発書き込み手段１０４が、主記憶装置１２０上のノード情報テーブル１２２にファイル情報（ファイルサイズや先頭クラスタ番号）を書き込み、その後、ノード情報テーブル１２２を不揮発メモリ１１０上のＲＤＥ１１３に書き戻す（ステップＳ３７）。
【００４７】
以上の処理手順により、ファイルオープンからファイルクローズまでの間に瞬断リセットが発生しても、不揮発メモリ１１０上のＦＡＴ１１２およびノード情報テーブル１１４は更新されてないため、更新（ファイルオープン）以前の状態が復元される。
【００４８】
次に、既存ファイルに対して再作成（トランケート）を行う場合の動作を、図４、図５を参照して説明する。
【００４９】
（１）ファイルオープン時、ＦＡＴ更新手段１０１が、不揮発メモリ１１０のＦＡＴエリア１１１に格納されているＦＡＴ１１２を主記憶装置１２０上にコピーし、主記憶装置１２０上にＦＡＴ１２１を生成する（ステップＳ５１）。
（２）ノード情報テーブル更新手段１０２が、ノード情報テーブル１１４を主記憶装置１２０上にコピーしてノード情報テーブル１２２を生成すると共に、既存ファイルのノード情報を読み込み、先頭クラスタ番号を覚える（ステップＳ５２）。
（３）ノード情報テーブル更新手段１０２が、主記憶装置１２０上のノード情報テーブル１２２に、新規ファイルのファイル情報（ファイルサイズ「０」やステップＳ５２で覚えた先頭クラスタ番号）を格納する（ステップＳ５３）。
【００５０】
（４）ファイル書き込み時、空きクラスタ書き込み手段１０３がＦＡＴ１２１を参照し、ファイル領域１１５上に存在する空きクラスタを検索する（ステップＳ５４）。図４の例は、空きクラスタとして第２０番目〜第２３番目のクラスタが検索された場合を示している。
（５）その後、空きクラスタ書き込み手段１０３が、空きクラスタに第１５番目〜第１８番目のクラスタのデータを書き込む（ステップＳ５５）。
（６）その後、ＦＡＴ更新手段１０１が、主記憶装置１２０上のＦＡＴ１２１のチェイン情報を更新する（ステップＳ５６）。
【００５１】
（７）ファイルクローズ時、ＦＡＴ更新手段１０１が、主記憶装置１２０上のＦＡＴの、既存ファイルのチェイン情報を、未使用クラスタを示す情報「００」に書き換える（ステップＳ５７）。
（８）不揮発書き込み手段１０４が、更新された主記憶装置１２０上のＦＡＴ１２１を、不揮発メモリ１１０のＦＡＴエリア１１１に書き戻す（ステップＳ５８）。
（９）不揮発書き込み手段１０４が、主記憶装置１２０上のノード情報テーブル１２２を不揮発メモリ１１０のＲＤＥ１１３に書き戻す（ステップＳ５９）。
【００５２】
以上の処理手順により、ファイルオープンからファイルクローズまでの間に瞬断リセットが発生しても、ＦＡＴ１１２およびノード情報テーブル１１４が更新されてないため、以前の状態が復元される。
【００５３】
次に、図６〜図１０を参照して既存ファイルに対して上書き更新を行う場合の動作を説明する。
【００５４】
（１）ファイルオープン時、ＦＡＴ更新手段１０１が、不揮発メモリ１１０上のＦＡＴエリア１１１に格納されているＦＡＴ１１２を主記憶装置１２０上にコピーし、主記憶装置１２０上にＦＡＴ１２１を生成する（図７、ステップＳ７１）。
（２）ノード情報テーブル更新手段１０２が、不揮発メモリ１１０上のＲＤＥ１１３に格納されているノード情報テーブル１１４を主記憶装置１２０上にコピーし、主記憶装置１２０上にノード情報テーブル１２２を生成する（ステップＳ７２）。
【００５５】
ファイル書き込み時、空きクラスタ書き込み手段１０３により空きクラスタ書き込み処理が行われる（ステップＳ７３）。このステップＳ７３の空きクラスタ書き込み処理の詳細を、図８の流れ図を参照して説明する。
【００５６】
今、第１５番目〜第１８番目のクラスタに格納されているファイルの第１６番目のクラスタに対応する部分のみが更新対象部分となったとする。
【００５７】
（３）空きクラスタ書き込み手段１０３は、第１６番目のクラスタが最初の更新部分であるので（図８、ステップＳ８１がＹＥＳ）、主記憶装置１２０上のＦＡＴ１２１を参照し、ファイル領域１１５上の空きクラスタを１つ検索する（ステップＳ８２）。今、例えば、第２１番目のクラスタが空きクラスタとして検索されたとする。
（４）その後、空きクラスタ書き込み手段１０３は、空きクラスタである第２１番目のクラスタに、ファイルの更新後の内容を書き込む（ステップＳ８３）。
【００５８】
その後、ＦＡＴ更新手段１０１によるＦＡＴ更新処理が行われる（ステップＳ７４）。このステップＳ７４のＦＡＴ更新処理を図９の流れ図を参照して詳細に説明する。
（５）ＦＡＴ更新手段１０１は、第１６番目のクラスタが最初の更新部分であるので（図９、ステップＳ９１がＹＥＳ）、ＦＡＴ１２１の第１６番目のクラスタに対応する情報を空きクラスタを示す「００」とすると共に（ステップＳ９２）、チェイン情報を更新する（ステップＳ９３）。この例の場合、ステップＳ９３では、ＦＡＴ１２１の第１５番目のクラスタに対応するチェイン情報を第２１番目のクラスタ（更新後のファイル内容が格納された空きクラスタ）を示すものにし、第２１番目のクラスタに対応するチェイン情報を第１７番目のクラスタ（更新部分の次の内容が格納されているクラスタ）を示すものに変更する。
【００５９】
ファイルクローズ時、不揮発書き込み手段１０４による書き戻し処理が行われる（ステップＳ７５）。このステップＳ７５の書き戻し処理を図１０の流れ図を参照して詳細に説明する。
（６）ファイルクローズ時、不揮発書き込み手段１０４は、先ず、更新後のファイル内容が格納されているクラスタ及びコピーが格納されているクラスタ（図６の例では、コピーされているクラスタはなく、更新後のファイル内容が格納されている第２１番目のクラスタ）のチェイン情報を不揮発メモリ１１０上のＦＡＴ１１２に書き戻し（図１０、ステップＳ１０１）、その後、更新前のファイルの内容が格納されているクラスタ（図６の例では、第１５番目〜第１８番目のクラスタ）のチェイン情報を、セクタ単位で最終チェインから先頭に向かって順番にＦＡＴ１１２に書き戻す（ステップＳ１０２）。
（７）その後、不揮発書き込み手段１０４が、主記憶装置１２０上のノード情報テーブル１２２の内容を不揮発メモリ１１０上のノード情報テーブル１１４に書き戻す（図７、ステップＳ７６）。
【００６０】
次に、図７〜図１１を参照して、ファイルの複数のクラスタに対応する部分を更新する場合の動作を説明する。なお、ファイルの更新は、ファイルの前から後ろに向かって行われるとする。
【００６１】
今、例えば、第１６番目〜第２５番目のクラスタに格納されているファイルが更新対象ファイルであるとする。この時、不揮発メモリ１１０上のＦＡＴ１１２の内容は、図１１（Ａ）に示すものとなっている。
【００６２】
先ず、図７のステップＳ７１，Ｓ７２の処理が行われ、主記憶装置１２０上にＦＡＴ１２１、ノード情報テーブル１２２がコピーされる。
【００６３】
その後、ファイルの上書き更新で、第１８番目のクラスタが更新対象となったとする。空きクラスタ書き込み手段１０３は、第１８番目のクラスタが最初の更新部分であるので（図８、ステップＳ８１がＹＥＳ）、主記憶装置１２０上のＦＡＴ１２１を参照し、ファイル領域１１５上の空きクラスタを１つ検索する（ステップＳ８２）。今、例えば、第５３番目のクラスタが空きクラスタとして検索されたとする。その後、空きクラスタ書き込み手段１０３は、空きクラスタである第５３番目のクラスタに、ファイルの更新後の内容を書き込む（ステップＳ８３）。
【００６４】
その後、ＦＡＴ更新手段１０１によるＦＡＴ更新処理が行われる（ステップＳ７４）。このステップＳ７４のＦＡＴ更新処理では、次のような処理が行われる。
【００６５】
ＦＡＴ更新手段１０１は、第１８番目のクラスタが最初の更新部分であるので（図９、ステップＳ９１がＹＥＳ）、ＦＡＴ１２１の第１８番目のクラスタに対応する情報を空きクラスタを示す「００」とすると共に（ステップＳ９２）、チェイン情報を更新する（ステップＳ９３）。この例の場合、ステップＳ９３では、ＦＡＴ１２１の第１７番目のクラスタに対応するチェイン情報を第５３番目のクラスタ（更新後のファイル内容が格納された空きクラスタ）を示すものにし、第５３番目のクラスタに対応するチェイン情報を第１９番目のクラスタ（ファイルの更新箇所の次の部分が格納されているクラスタ）を示すものに変更する。
【００６６】
その後、第２４番目のクラスタが更新対象になったとする。第２４番目のクラスタが更新対象になると、空きクラスタ書き込み手段１０３は、第２４番目のクラスタが最初の更新箇所でないので（図８、ステップＳ８１がＮＯ）、前回の更新箇所（第１８番目のクラスタ）から今回の更新箇所（第２４番目のクラスタ）までのクラスタ数よりも１つ少ない空きクラスタを、ＦＡＴ１２１から検索する（ステップＳ８４）。この例の場合、第５４番目〜第５９番目の６個のクラスタが空きクラスタとして検索されたとする。その後、空きクラスタ書き込み手段１０３は、第５９番目のクラスタに更新後の内容を書き込むと共に、前回の更新箇所と今回の更新箇所とによって挟まれる部分を空きクラスタにコピーする（ステップＳ８５）。この例の場合、第１９番目〜第２３番目のクラスタの内容が、それぞれ第５４番目〜第５８番目のクラスタにコピーされることになる。
【００６７】
その後、ＦＡＴ更新手段１０１によるＦＡＴ更新処理が行われる（図７、ステップＳ７４）。ＦＡＴ更新処理において、ＦＡＴ更新手段１０１は、第２４番目のクラスタが最初の更新箇所でないので（図９、ステップＳ９１がＮＯ）、ＦＡＴ１２１のチェインを図１１（Ｃ）に示すように更新する（ステップＳ９４）。即ち、前回更新後の内容を格納した第５３番目のクラスタに対応するチェイン情報を、今回コピーした部分の先頭部分が格納されている第５４番目のクラスタを指し示すように変更し、今回コピー部分が格納されている第５４番目〜第５８番目のクラスタに対応するチェイン情報を、それぞれ第５５番目〜第５９番目のクラスタを示すものに変更し、今回更新した内容を格納した第５９番目のクラスタに対応するチェイン情報を、今回更新したファイル部分の次の部分が格納されている第２５番目のクラスタを指し示すものに変更する。
【００６８】
その後、ファイルクローズ時に、不揮発書き込み手段１０４による書き戻し処理が行われる（図７、ステップＳ７５）。書き戻し処理において、不揮発書き込み手段１０４は、先ず、更新後のファイル内容が格納されているクラスタ及びコピーが格納されているクラスタ（図１１の例では、第５３番目〜第５９番目のクラスタ）のチェイン情報をセクタ単位で不揮発メモリ１１０上のＦＡＴ１１２に書き戻し（図１０、ステップＳ１０１）、その後、更新前のファイルの内容が格納されているクラスタ（図１１の例では、第１６番目〜第２５番目のクラスタ）のチェイン情報を、セクタ単位で最終チェインから先頭に向かって順番にＦＡＴ１１２に書き戻す（ステップＳ１０２）。従って、図１１（Ｄ）に示すように、セクタ３が最初に不揮発メモリ１１０に書き戻され、その後、セクタ２、セクタ１の順で不揮発メモリ１１０に書き戻されることになる。
【００６９】
これにより、セクタ３を書き込んだ後に瞬断リセットが発生した場合、あるいはセクタ３とセクタ２を書き込んだ後に瞬断リセットが発生した場合でも、ＦＡＴ１１２は更新前の状態のままであるので、更新前の状態に自動的にロールバックされる。
【００７０】
【発明の効果】
以上説明したように、本発明は、ＦＡＴやノード情報テーブルの更新を、ＦＡＴやノード情報テーブルを主記憶装置上にコピーしてから行うので、ＦＡＴやノード情報テーブルの更新時に瞬断リセットが発生しても、不揮発メモリ上のＦＡＴやノード情報テーブルは、更新前の状態であり、ファイル状態は自動的に更新前の状態にロールバックされる。また、主記憶装置にコピーしたＦＡＴ、ノード情報テーブルを使用するので、不揮発メモリ上のＦＡＴ、ノード情報テーブルをアクセスする場合に比較して、アクセス速度を向上させることができる。
【００７１】
また、本発明は、ファイルのデータを不揮発メモリに書き込む場合、ファイルの更新箇所に対応するクラスタの内容をそのままにして空きクラスタに更新後の内容を書き込むので、ファイルデータを不揮発メモリに書き込んでいる時に瞬断リセットが発生しても、更新前の状態に自動的にロールバックされる。
【００７２】
更に、本発明は、ＦＡＴの内容を前記不揮発メモリ上のＦＡＴエリアに書き戻す際、最初にクラスタ群（更新後の内容が格納されているクラスタ及びコピー先とされたクラスタ）に関するチェイン情報をセクタ単位で書き戻し、その後、更新前のファイルの内容が格納されているクラスタに関するチェイン情報を、セクタ単位で最終チェインから先頭に向かって順番に書き戻すようにしているので、ＦＡＴを不揮発メモリに書き戻している時に瞬断リセットが発生しても、更新前の状態に自動的にロールバックされる。
【図面の簡単な説明】
【図１】本発明の実施例のブロック図である。
【図２】新規ファイル作成時の動作を説明するための図である。
【図３】新規ファイル作成時の処理例を示す流れ図である。
【図４】ファイル再作成時の動作を説明するための図である。
【図５】ファイル再作成時の処理例を示す流れ図である。
【図６】ファイル更新時の動作を説明するための図である。
【図７】ファイル更新時の処理例を示す流れ図である。
【図８】空きクラスタ書き込み手段１０３が行う空きクラスタ書き込み処理の詳細を示した流れ図である。
【図９】ＦＡＴ更新手段１０１が行うＦＡＴ更新処理の詳細を示した流れ図である。
【図１０】不揮発書き込み手段１０４が行う書き戻し処理の詳細を示した流れ図である。
【図１１】ファイル更新時の動作を説明するための図である。
【図１２】従来の技術における新規ファイル作成時の動作を説明するための図である。
【図１３】従来の技術におけるファイル再作成時の動作を説明するための図である。
【図１４】従来の技術におけるファイル更新時の動作を説明するための図である。
【符号の説明】
１００…コンピュータ
１０１…ＦＡＴ更新手段
１０２…ノード情報テーブル更新手段
１０３…空きクラスタ書き込み手段
１０４…不揮発書き込み手段
１１０…不揮発メモリ
１１１…ＦＡＴエリア
１１２…ＦＡＴ
１１３…ＲＤＥ（ルートディレクトリエントリ）
１１４…ノード情報テーブル
１１５…ファイル領域
１２０…主記憶装置
１３０…入力部
１４０…表示部
Ｋ…記録媒体
【図１】
2004102660.tif 000003
【図２】
2004102660.tif 000004
【図３】
2004102660.tif 000005
【図４】
2004102660.tif 000006
【図５】
2004102660.tif 000007
【図６】
2004102660.tif 000008
【図７】
2004102660.tif 000009
【図８】
2004102660.tif 000010
【図９】
2004102660.tif 000011
【図１０】
2004102660.tif 000012
【図１１】
2004102660.tif 000013
【図１２】
2004102660.tif 000014
【図１３】
2004102660.tif 000015
【図１４】
2004102660.tif 000016