(57)【要約】【課題】消去単位の大きいフラッシュＲＯＭをファイルシステムと適合させることができるとともに、データ記録中の電源オフ等に起因する寿命の短縮化を抑制する。【解決手段】ある消去ブロックのあるレコードに記録されたデータを、他の消去ブロックのレコードに移動させる場合、移動先のレコードの状態情報を「確保」とし（ステップＳｂ１）、移動元のレコードの状態情報を「旧有効」とする（ステップＳｂ２）。そして、移動元のレコードに記録されているデータを移動先のレコードにコピーし（ステップＳｂ３）、その後移動先のレコードの状態情報を「有効」にするとともに移動元のレコードの状態情報を「無効」にする。【選択図】      図９
2004213263.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ領域と、これらのデータ領域に対応する管理領域とを有する消去ブロックを複数備えたフラッシュＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）と、
前記フラッシュＲＯＭにデータを記録する手段であって、前記フラッシュＲＯＭの前記管理領域に、対応する前記データ領域に記憶されるデータの状態情報を記録する記録手段とを備え、
前記記録手段は、ある前記データ領域に記録されているデータを他の前記データ領域に記録させる際に、当該あるデータ領域に対応する前記管理領域に記録される前記状態情報が有効であり、前記他のデータ領域に対応する前記管理領域に記録される前記状態情報が空き状態である場合に以下の（ａ）〜（ｅ）の処理を順次行う
（ａ）前記あるデータ領域に対応する前記管理領域に記録されている状態情報を確保状態に書き換え、
（ｂ）前記あるデータ領域に対応する前記管理領域に記録されている状態情報を旧有効状態に書き換え、
（ｃ）前記あるデータ領域に記録されているデータを前記他のデータ領域に記録し、
（ｄ）前記他のデータ領域に対応する前記管理領域に記録されている状態情報を有効状態に書き換え、
（ｅ）前記あるデータ領域に対応する前記管理領域に記録されている状態情報を無効状態に書き換える
ことを特徴とする情報処理装置。
【請求項２】
前記記録手段は、
（ｆ）電源が投入された際に前記管理領域に記録される状態情報が確保状態である場合において、当該管理領域に記録される状態情報以外の情報および対応する前記データ領域のデータが未記録のときには当該管理領域に記録される状態情報を空き状態に書き換える一方で、未記録でないときには状態情報を無効に書き換え、
（ｇ）電源が投入された際に前記管理領域に記録される状態情報が旧有効である場合において、当該管理領域に対応する前記データ領域に記録されるデータと同一のデータが他の前記データ領域に記録されており、かつ当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効であるときには当該管理領域に記録される前記状態情報を旧有効から無効に書き換える一方で、同一のデータが他の前記データ領域に記録されていない、または記録されている場合であっても当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効以外であるときには当該管理領域の状態情報を旧有効から有効に書き換えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記フラッシュＲＯＭの前記消去ブロックは、複数の前記データ領域を連続して配置するデータ領域配置エリアと、複数の前記管理領域を連続して配置する管理領域配置エリアとを有する
ことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記管理領域に記録される状態情報は、空き状態、確保状態、有効状態、旧有効状態、無効状態のいずれかであり、かかる順序で状態情報を変更する際にビット値を１から０への変更で行えるようなビット値によって各状態情報が表される
ことを特徴とする請求項１ないし３のいずれか１つに記載の情報処理装置。
【請求項５】
複数のデータ領域と、これらのデータ領域に対応する管理領域であって、対応する前記データ領域に記録されるデータの状態情報を記録する管理領域とを有する消去ブロックを複数備えたフラッシュＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）へのデータ記録／消去を管理するフラッシュＲＯＭ管理方法であって、ある前記データ領域に記録されているデータを他の前記データ領域に記録させる際に、当該あるデータ領域に対応する前記管理領域に記録される前記状態情報が有効であり、前記他のデータ領域に対応する前記管理領域に記録される前記状態情報が空き状態である場合に以下の（ａ）〜（ｅ）の処理を順次行う
（ａ）前記あるデータ領域に対応する前記管理領域に記録されている状態情報を確保状態に書き換え、
（ｂ）前記あるデータ領域に対応する前記管理領域に記録されている状態情報を旧有効状態に書き換え、
（ｃ）前記あるデータ領域に記録されているデータを前記他のデータ領域に記録し、
（ｄ）前記他のデータ領域に対応する前記管理領域に記録されている状態情報を有効状態に書き換え、
（ｅ）前記あるデータ領域に対応する前記管理領域に記録されている状態情報を無効状態に書き換える
ことを特徴とするフラッシュＲＯＭ管理方法。
【請求項６】
前記フラッシュＲＯＭを備える装置に電源が投入された際に前記管理領域に記録される状態情報が確保状態である場合において、当該管理領域に対応する前記データ領域のデータが未記録のときには当該管理領域に記録される状態情報を空き状態に書き換える一方で、未記録でないときには状態情報を無効に書き換えるステップと、
前記フラッシュＲＯＭを備える装置に電源が投入された際に前記管理領域に記録される状態情報が旧有効である場合において、当該管理領域に対応する前記データ領域に記録されるデータと同一のデータが他の前記データ領域に記録されており、かつ当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効であるときには当該管理領域に記録される前記状態情報を旧有効から無効に書き換える一方で、同一のデータが他の前記データ領域に記録されていない、または記録されている場合であっても当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効以外であるときには当該管理領域の状態情報を旧有効から有効に書き換えるステップと
を具備することを特徴とする請求項５に記載のフラッシュＲＯＭ管理方法。
【請求項７】
複数のデータ領域と、これらのデータ領域に対応する管理領域とを有する消去ブロックを複数備えたフラッシュＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）へのデータの記録／消去を制御するコンピュータを、
前記フラッシュＲＯＭの前記データ領域にデータを記録するとともに、前記フラッシュＲＯＭの前記管理領域に、対応する前記データ領域に記憶されるデータの状態情報を記録する手段であって、ある前記データ領域に記録されているデータを他の前記データ領域に記録させる際に、当該あるデータ領域に対応する前記管理領域に記録される前記状態情報が有効であり、前記他のデータ領域に対応する前記管理領域に記録される前記状態情報が空き状態である場合に以下の（ａ）〜（ｅ）の処理を順次行う記録手段
（ａ）前記あるデータ領域に対応する前記管理領域に記録されている状態情報を確保状態に書き換え、
（ｂ）前記あるデータ領域に対応する前記管理領域に記録されている状態情報を旧有効状態に書き換え、
（ｃ）前記あるデータ領域に記録されているデータを前記他のデータ領域に記録し、
（ｄ）前記他のデータ領域に対応する前記管理領域に記録されている状態情報を有効状態に書き換え、
（ｅ）前記あるデータ領域に対応する前記管理領域に記録されている状態情報を無効状態に書き換える
として機能させることを特徴とするプログラム。
【請求項８】
前記記録手段は、
（ｆ）電源が投入された際に前記管理領域に記録される状態情報が確保状態である場合において、当該管理領域に記録される状態情報以外の情報および対応する前記データ領域のデータが未記録のときには当該管理領域に記録される状態情報を空き状態に書き換える一方で、未記録でないときには状態情報を無効に書き換え、
（ｇ）電源が投入された際に前記管理領域に記録される状態情報が旧有効である場合において、当該管理領域に対応する前記データ領域に記録されるデータと同一のデータが他の前記データ領域に記録されており、かつ当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効であるときには当該管理領域に記録される前記状態情報を旧有効から無効に書き換える一方で、同一のデータが他の前記データ領域に記録されていない、または記録されている場合であっても当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効以外であるときには当該管理領域の状態情報を旧有効から有効に書き換えることを特徴とする請求項７に記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、フラッシュＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）を有する情報処理装置、フラッシュＲＯＭ管理方法およびプログラムに関する。
【０００２】
【従来の技術】
記憶しているデータを書き換えることが可能な読み出し専用メモリとして、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）が用いられている。このようなＰＲＯＭの中でも、フラッシュＲＯＭは、固定長のブロック単位で内容を消去することができ、そのメモリ構造も簡易であり、チップサイズが小さいといった利点がある。また、フラッシュＲＯＭは一般的にＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）よりも価格が安いという利点がある。以上のような理由からフラッシュＲＯＭに対する注目は高まっている。
【０００３】
しかし、フラッシュＲＯＭには、以下のような機能的な制限があり、かかる制限がフラッシュＲＯＭを管理するファイルシステムに特殊な要求を課すこととなる。
【０００４】
まず、１つ目の制限は、ビット値１を０に変更するのはいつもで可能であるのに対し、ビット値０を１に変更する、つまりビット値の消去を行うにはビット境界の操作ではない複雑な処理が要求される。現在のフラッシュＲＯＭでは、例えば３２ｋバイトといったサイズのブロック単位でしか消去を行うことができず、このような単位で消去を行わなければ再書き込みをすることはできない。
【０００５】
２つ目の制限は、上記のようなブロック単位の消去を行う際に一定の時間が必要なことである。また、３つの目の制限は書き込みや消去の回数に制限があることであり、具体的には何万回といった書き込み／消去制限がなされているものが多い。
【０００６】
以上のような制限がある一方で、以下の理由からフラッシュＲＯＭを管理するファイルシステムは注目されており、フラッシュＲＯＭを管理するファイルシステムに関して種々の技術が提案されている（例えば特許文献１、特許文献２、特許文献３、特許文献４、特許文献５参照）。
▲１▼従来の磁気記録メディアによるシステムと比較して、装置の小型化、軽量化が容易であること
▲２▼従来の磁気記録メディアによるシステムと比較して、衝撃に強いので、搭載装置が可搬性に優れること
▲３▼従来のＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）によるシステムと比較して、記憶内容を保持するためのバックアップ電源が不要であること
▲４▼従来のＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）によるシステムと比較して、素子の小型化が可能であるので、大容量化が可能であること
【０００７】
【特許文献１】
特開平６−９５９５５号公報
【特許文献２】
特開平９−９３５２３号公報
【特許文献３】
特開平９−９７１３９号公報
【特許文献４】
特開平９−９７２０６号公報
【特許文献５】
特開平９−９７３１４号公報
【０００８】
【発明が解決しようとする課題】
しかし、フラッシュＲＯＭは、上述したようにその消去する際のブロックの単位が大きいという制限があるので、ファイルシステムとの整合性がよくない。すなわち、通常のファイルシステムが記憶デバイスとして仮定しているＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＦＤＤ（Ｆｌｏｐｐｙ（Ｒ）  Ｄｉｓｋ  Ｄｒｉｖｅ）は書き込み単位と消去単位が同一であり、ファイルシステムはこのような特性をもつことを前提とした設計がなされているため、フラッシュＲＯＭを記録媒体として使用する場合には上記のようなファイルシステムをそのまま利用することはできない。
【０００９】
また、フラッシュＲＯＭへのデータの記録中等に電源がオフになされた場合において、データの消失防止やデータの整合性を維持することができないといった不都合が生じる場合がある。このような不都合を抑制するためには、データや管理情報の書き込み回数を増やす必要があるが、上述したようにフラッシュＲＯＭには書き込み／消去回数に制限があり、このような書き込み回数の増加はフラッシュＲＯＭの寿命の短縮化という問題を招くことになる。
【００１０】
この発明は上記に鑑みてなされたもので、消去単位の大きいフラッシュＲＯＭをファイルシステムと適合させることができるとともに、データ記録中の電源オフ等に起因する不具合発生を抑制することができる情報処理装置、フラッシュＲＯＭ管理方法およびプログラムを得ることを目的とする。
【００１１】
【課題を解決するための手段】
上記目的を達成するため、請求項１にかかる発明は、複数のデータ領域と、これらのデータ領域に対応する管理領域とを有する消去ブロックを複数備えたフラッシュＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）と、前記フラッシュＲＯＭにデータを記録する手段であって、前記フラッシュＲＯＭの前記管理領域に対応する前記データ領域に記憶されるデータの状態情報を記録する記録手段とを備え、前記記録手段は、ある前記データ領域に記録されているデータを他の前記データ領域に記録させる際に、当該あるデータ領域に対応する前記管理領域に記録される前記状態情報が有効であり、前記他のデータ領域に対応する前記管理領域に記録される前記状態情報が空き状態である場合に以下の（ａ）〜（ｅ）の処理を順次行う
（ａ）前記あるデータ領域に対応する前記管理領域に記録されている状態情報を確保状態に書き換え、（ｂ）前記あるデータ領域に対応する前記管理領域に記録されている状態情報を旧有効状態に書き換え、（ｃ）前記あるデータ領域に記録されているデータを前記他のデータ領域に記録し、（ｄ）前記他のデータ領域に対応する前記管理領域に記録されている状態情報を有効状態に書き換え、（ｅ）前記あるデータ領域に対応する前記管理領域に記録されている状態情報を無効状態に書き換えることを特徴とする情報処理装置である。
【００１２】
請求項１にかかる発明によれば、データ領域に記憶されるデータを、他のデータ領域に記憶させる処理を行う際に、その処理過程の進行に応じて移動元のデータ領域の状態情報が有効状態→旧有効状態→無効状態といった順序で書き換えられ、移動先のデータ領域の状態情報が空き状態→確保状態→有効状態といった順序で書き換えられる。したがって、あるデータ領域から他のデータ領域にデータを移動させる処理中に、電源がオフにされるといった事態が発生した場合であっても、移動元および移動先のデータ領域の状態情報を参照すれば処理中のどの過程で電源がオフになされたか、つまりどの程度処理が進んでいるかを把握することができ、その後いずれのデータ領域のデータを使用すればよいかを把握することができる。したがって、不完全なデータを利用してしまうことに起因する不具合等の発生を抑制できる。
【００１３】
また、請求項２にかかる発明は、請求項１にかかる発明の構成において、前記記録手段は、（ｆ）電源が投入された際に前記管理領域に記録される状態情報が確保状態である場合において、当該管理領域に記録される状態情報以外の情報および対応する前記データ領域のデータが未記録のときには当該管理領域に記録される状態情報を空き状態に書き換える一方で、未記録でないときには状態情報を無効に書き換え、（ｇ）電源が投入された際に前記管理領域に記録される状態情報が旧有効である場合において、当該管理領域に対応する前記データ領域に記録されるデータと同一のデータが他の前記データ領域に記録されており、かつ当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効であるときには当該管理領域に記録される前記状態情報を旧有効から無効に書き換える一方で、同一のデータが他の前記データ領域に記録されていない、または記録されている場合であっても当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効以外であるときには当該管理領域の状態情報を旧有効から有効に書き換えることを特徴とする。
【００１４】
請求項２にかかる発明によれば、電源が投入された際の状態情報が確保状態や旧有効状態である場合に、上記のような条件にしたがってデータ領域の状態が示す状態情報を空き状態、無効状態、有効状態のいずれかに書き換えられることで、当該処理後のデータ領域の真の状態を示す状態情報である有効、無効、空きのいずれかとなり、その後はこの状態情報を参照してデータ読み出し処理等を行うことができる。したがって、不完全なデータが読み出されて使用されるといった不具合の発生を抑制できる。
【００１５】
また、請求項３にかかる発明は、請求項１または２にかかる発明の構成において、前記フラッシュＲＯＭの前記消去ブロックは、複数の前記データ領域を連続して配置するデータ領域配置エリアと、複数の前記管理領域を連続して配置する管理領域配置エリアとを有することを特徴とする。
【００１６】
請求項３にかかる発明によれば、データ領域が連続して配置されるデータ領域配置エリアがあるので、仮想記憶システムにおいてスワップファイル等をフラッシュＲＯＭのデータ領域に記憶する際に、スワップファイルをそのデータ領域配置エリアに含まれるデータ領域に保持することができ、仮想記憶システムとの親和性を高めることができる。
【００１７】
また、請求項４にかかる発明は、請求項１ないし３のいずれかにかかる発明の構成において、前記管理領域に記録される状態情報は、空き状態、確保状態、有効状態、旧有効状態、無効状態のいずれかであり、かかる順序で状態情報を変更する際にビット値を１から０への変更で行えるようなビット値によって各状態情報が表されることを特徴とする。
【００１８】
請求項４にかかる発明によれば、フラッシュＲＯＭはビット値を０から１に変更する、つまり消去するには、３２ｋビットといった単位で消去を行わなくてはならないが、ビット値を１から０に変更するだけで足り、状態情報の変更が容易となる。
【００１９】
また、請求項５にかかる発明は、複数のデータ領域と、これらのデータ領域に対応する管理領域であって、対応する前記データ領域に記録されるデータの状態情報を記録する管理領域とを有する消去ブロックを複数備えたフラッシュＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）へのデータ記録／消去を管理するフラッシュＲＯＭ管理方法であって、ある前記データ領域に記録されているデータを他の前記データ領域に記録させる際に、当該あるデータ領域に対応する前記管理領域に記録される前記状態情報が有効であり、前記他のデータ領域に対応する前記管理領域に記録される前記状態情報が空き状態である場合に以下の（ａ）〜（ｅ）の処理を順次行う
（ａ）前記あるデータ領域に対応する前記管理領域に記録されている状態情報を確保状態に書き換え、（ｂ）前記あるデータ領域に対応する前記管理領域に記録されている状態情報を旧有効状態に書き換え、（ｃ）前記あるデータ領域に記録されているデータを前記他のデータ領域に記録し、（ｄ）前記他のデータ領域に対応する前記管理領域に記録されている状態情報を有効状態に書き換え、（ｅ）前記あるデータ領域に対応する前記管理領域に記録されている状態情報を無効状態に書き換えることを特徴とするフラッシュＲＯＭ管理方法である。
【００２０】
請求項５にかかる発明によれば、データ領域に記憶されるデータを、他のデータ領域に記憶させる処理を行う際に、その処理過程の進行に応じて移動元のデータ領域の状態情報が有効状態→旧有効状態→無効状態といった順序で書き換えられ、移動先のデータ領域の状態情報が空き状態→確保状態→有効状態といった順序で書き換えられる。したがって、あるデータ領域から他のデータ領域にデータを移動させる処理中に、電源がオフにされるといった事態が発生した場合であっても、移動元および移動先のデータ領域の状態情報を参照すれば処理中のどの過程で電源がオフになされたか、つまりどの程度処理が進んでいるかを把握することができ、その後いずれのデータ領域のデータを使用すればよいかを把握することができる。したがって、不完全なデータを利用してしまうことに起因する不具合等の発生を抑制できる。
【００２１】
また、請求項６にかかる発明は、請求項５にかかる発明の構成において、前記フラッシュＲＯＭを備える装置に電源が投入された際に前記管理領域に記録される状態情報が確保状態である場合において、当該管理領域に対応する前記データ領域のデータが未記録のときには当該管理領域に記録される状態情報を空き状態に書き換える一方で、未記録でないときには状態情報を無効に書き換えるステップと、前記フラッシュＲＯＭを備える装置に電源が投入された際に前記管理領域に記録される状態情報が旧有効であある場合において、当該管理領域に対応する前記データ領域に記録されるデータと同一のデータが他の前記データ領域に記録されており、かつ当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効であるときには当該管理領域に記録される前記状態情報を旧有効から無効に書き換える一方で、同一のデータが他の前記データ領域に記録されていない、または記録されている場合であっても当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効以外であるときには当該管理領域の状態情報を旧有効から有効に書き換えるステップとを具備することを特徴とする。
【００２２】
請求項６にかかる発明によれば、電源が投入された際の状態情報が確保状態や旧有効状態である場合に、上記のような条件にしたがってデータ領域の状態が示す状態情報を空き状態、無効状態、有効状態のいずれかに書き換えられることで、当該処理後のデータ領域の真の状態を示す状態情報である有効、無効、空きのいずれかとなり、その後はこの状態情報を参照してデータ読み出し処理等を行うことができる。したがって、不完全なデータが読み出されて使用されるといった不具合の発生を抑制できる。
【００２３】
また、請求項７にかかる発明は、複数のデータ領域と、これらのデータ領域に対応する管理領域とを有する消去ブロックを複数備えたフラッシュＲＯＭ（ＲｅａｄＯｎｌｙ  Ｍｅｍｏｒｙ）へのデータの記録／消去を制御するコンピュータを、前記フラッシュＲＯＭの前記データ領域にデータを記録するとともに、前記フラッシュＲＯＭの前記管理領域に対応する前記データ領域に記憶されるデータの状態情報を記録する手段であって、ある前記データ領域に記録されているデータを他の前記データ領域に記録させる際に、当該あるデータ領域に対応する前記管理領域に記録される前記状態情報が有効であり、前記他のデータ領域に対応する前記管理領域に記録される前記状態情報が空き状態である場合に以下の（ａ）〜（ｅ）の処理を順次行う記録手段
（ａ）前記あるデータ領域に対応する前記管理領域に記録されている状態情報を確保状態に書き換え、（ｂ）前記あるデータ領域に対応する前記管理領域に記録されている状態情報を旧有効状態に書き換え、（ｃ）前記あるデータ領域に記録されているデータを前記他のデータ領域に記録し、（ｄ）前記他のデータ領域に対応する前記管理領域に記録されている状態情報を有効状態に書き換え、（ｅ）前記あるデータ領域に対応する前記管理領域に記録されている状態情報を無効状態に書き換える、として機能させることを特徴とするプログラムである。
【００２４】
請求項７にかかる発明によれば、データ領域に記憶されるデータを、他のデータ領域に記憶させる処理を行う際に、その処理過程の進行に応じて移動元のデータ領域の状態情報が有効状態→旧有効状態→無効状態といった順序で書き換えられ、移動先のデータ領域の状態情報が空き状態→確保状態→有効状態といった順序で書き換えられる。したがって、あるデータ領域から他のデータ領域にデータを移動させる処理中に、電源がオフにされるといった事態が発生した場合であっても、移動元および移動先のデータ領域の状態情報を参照すれば処理中のどの過程で電源がオフになされたか、つまりどの程度処理が進んでいるかを把握することができ、その後いずれのデータ領域のデータを使用すればよいかを把握することができる。したがって、不完全なデータを利用してしまうことに起因する不具合等の発生を抑制できる。
【００２５】
また、請求項８にかかる発明は、請求項７にかかる発明の構成において、前記記録手段は、（ｆ）電源が投入された際に前記管理領域に記録される状態情報が確保状態である場合において、当該管理領域に記録される状態情報以外の情報および対応する前記データ領域のデータが未記録のときには当該管理領域に記録される状態情報を空き状態に書き換える一方で、未記録でないときには状態情報を無効に書き換え、（ｇ）電源が投入された際に前記管理領域に記録される状態情報が旧有効である場合において、当該管理領域に対応する前記データ領域に記録されるデータと同一のデータが他の前記データ領域に記録されており、かつ当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効であるときには当該管理領域に記録される前記状態情報を旧有効から無効に書き換える一方で、同一のデータが他の前記データ領域に記録されていない、または記録されている場合であっても当該他の前記データ領域に対応する前記管理領域に記録される状態情報が有効以外であるときには当該管理領域の状態情報を旧有効から有効に書き換えることを特徴とする。
【００２６】
請求項８にかかる発明によれば、電源が投入された際の状態情報が確保状態や旧有効状態である場合に、上記のような条件にしたがってデータ領域の状態が示す状態情報を空き状態、無効状態、有効状態のいずれかに書き換えられることで、当該処理後のデータ領域の真の状態を示す状態情報である有効、無効、空きのいずれかとなり、その後はこの状態情報を参照してデータ読み出し処理等を行うことができる。したがって、不完全なデータが読み出されて使用されるといった不具合の発生を抑制できる。
【００２７】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかる情報処理装置、フラッシュＲＯＭ管理方法およびプログラムの好適な実施の形態を詳細に説明する。
【００２８】
まず、図１は本発明の一実施形態にかかる情報処理装置のハードウェア構成を示すブロック図である。同図に示すように、この情報処理装置１００は、互いにバスＢＵＳを介して接続されるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１、ＲＯＭ１０２、ＲＡＭ１０３、フラッシュＲＯＭ１０４およびハードディスクドライブ（ＨＤＤ）１０５の他、図示せぬＦＤＤ、メモリディスク等の記憶装置を備えている。
【００２９】
このような情報処理装置としては、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）やＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）などがあるが、これらに限定されるものではなく種々の情報処理装置に適用が可能である。
【００３０】
ＣＰＵ１０１は、各種演算処理を行うとともに各部を制御する。ＲＯＭ１０２はＣＰＵ１０１に読み出された実行されるプログラム群等を格納する。ＲＡＭ１０３は、ＣＰＵ１０１のワークメモリとして使用される。ハードディスクドライブ１０５等の記憶装置はＣＰＵ１２０に読み出されて実行されるオペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）やアプリケーションプログラム等のプログラム群を格納している。
【００３１】
上記構成の下、情報処理装置１００の電源を投入すると、ＣＰＵ１０１が、ファイル管理、メモリ管理、入出力の管理、ユーザインターフェース等の提供を行う基本ソフトウェアであるＯＳを読み出して起動し、その後ユーザが指定したアプリケーション等がＣＰＵ１０１によって読み出されて実行される。
【００３２】
ここで、図２にＯＳやアプリケーションが起動されている際のファイルシステムの階層構造を模式的に示す。同図に示すように、最上位の層がユーザアプリケーション２０１であり、ユーザアプリケーション２０１はファイルの入出力操作を行う際に、ＯＳの基本機能を実行するカーネル２０２に対してファイルの入出力要求を行う。
【００３３】
カーネル２０２は、ファイル操作インターフェース部２０３にこのファイル入出力要求を処理させるが、当該処理要求がファイルシステム上のファイルに対する操作である場合、その処理を当該ファイルが存在しているファイルシステムに応じた処理を行うファイルシステム２０４に依頼する。
【００３４】
ファイルシステム部２０４は、ＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）、ＦＦＳ（Ｆａｓｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、ＲＯＭＦＳ（ＲＯＭ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、ＦＬＡＳＨＦＳ（Ｆｌａｓｈ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、ＩＳＯ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｏｒｇａｎｉｚａｔｉｏｎ  ｆｏｒ  Ｓｔａｎｄａｒｄｉｚａｔｉｏｎ）０９６６０（ＣＤ−ＲＯＭの論理ファイルフォーマット規格）などの各ファイルシステムに応じた処理を行う。なお、上記依頼に応じて実際にデバイスに対してアクセスを行う場合には、各々のデバイス（ＦＤＤ、ＨＤＤ、メモリディスク、フラッシュＲＯＭ）に対応するデバイスドライバ２０５を呼び出して依頼に応じた処理を行う。
【００３５】
かかる階層構造を採用することで、複数の記録デバイス上に複数のファイルシステムを混在させて使用することができるようになっている。
【００３６】
以上が本発明の適用されるファイルシステムであり、このうちのフラッシュファイルシステム（現実の動作主体はＣＰＵであるが説明の便宜上ファイルシステムを主体とする）が上位ユーザアプリケーション２０１等からの書き込み／消去要求等に応じてフラッシュＲＯＭ１０４に対してデータの記録／消去処理、後述するガベージコレクション（Ｇａｒｂａｇｅ  Ｃｏｌｌｅｃｔｉｏｎ）等の処理を行う記録手段として機能する。本実施形態は、このようなフラッシュＲＯＭ１０４に対する処理を行うフラッシュファイルシステムに特徴があり、以下その特徴点を中心に説明する。
【００３７】
まず、図３に、フラッシュＲＯＭ１０４の領域構成を示す。同図に示すように、このフラッシュＲＯＭ１０４は、複数の消去ブロック（＃０〜＃Ｎ）を備えている。上述したようにフラッシュＲＯＭは、ビット値１を０に変更するのはいつもで可能であるのに対し、ビット値０を１に変更する、つまりビット値の消去を行うにはビット境界の操作ではない複雑な処理が要求される。現在のフラッシュＲＯＭでは、例えば３２ｋバイトといったサイズのブロック単位でしか消去を行うことができず、ここでいう消去ブロックはフラッシュＲＯＭ１０４において消去できる単位ブロックである。
【００３８】
フラッシュＲＯＭ１０４は、複数の消去ブロック３０１を備えているが、各消去ブロックは、複数のレコード領域（データ領域）３０２（＃０、＃１‥‥）と、各々のデータ領域に対応するレコードヘッダ３０３（＃０、＃１‥‥）といった２つの領域を有している。このフラッシュＲＯＭ１０４では、レコードヘッダ３０３と、これに対応するレコード領域３０２とが隣接して配置されるような領域構成となっている。つまり、レコードヘッダ＃０の隣に対応するデータ領域＃０、レコードヘッダ＃１の隣に対応するデータ領域＃１が配置されるといったようにレコードヘッダ３０３とレコード領域３０２とが交互に隙間なく配置される領域構成となっている。
【００３９】
ここで、レコード領域３０２は、ファイルを構成するデータを記録するための領域である。レコードヘッダ３０３には、対応するレコード領域３０２の状態に関する状態情報、対応するレコード領域３０２に記録されるデータを含むファイルを識別するためのファイル番号および対応するレコード領域３０２に記録されるデータが当該ファイル中のどの位置にあるものかを示すレコード番号といった情報が記録される領域がある。なお、レコード番号とは、対応するレコード領域３０２に記録されるデータがある１０個のデータから構成されるファイルの中の５番目のデータである場合には、「５番」や「５番／１０個」等を意味するデータである。
【００４０】
レコードヘッダ３０３に記録される状態情報とは、対応するレコード領域３０２に記録されているデータの状態を示す情報であり、本実施形態においては、「空き」、「確保」、「有効」、「旧有効」および「無効」といった５種類の情報のいずれかが記録されるようになっている。
【００４１】
ここで、「空き」とは、対応するレコード領域３０２が未使用であることを意味する状態情報であり、新たなデータ等をフラッシュＲＯＭ１０５に記録する際には、かかる状態情報が記録されているレコードヘッダ３０３に対応するレコード領域３０２にデータを記録することができる。
【００４２】
「有効」とは、対応するレコード領域３０２が使用されている、つまり有効なデータが記録されていることを意味する状態情報である。
【００４３】
「無効」とは、対応するレコード領域３０２にデータが記録されているものの、そのデータが無効であることを意味する状態情報である。例えば、ファイル中のあるレコード領域に記録されていたデータについて変更するといいった処理があると、そのレコード領域３０２に記録されているデータはとりあえずそのまま残され、対応するレコードヘッダ３０３の状態情報を無効とするとともに、変更後のデータを別の「空き」状態のレコード領域３０２に記録するといった処理が行われる。このような場合に状態情報が「無効」となるのである。
【００４４】
なお、状態情報が「無効」であるレコードヘッダ３０３に対応するレコード領域３０２には、上記のような変更前のデータ等が記録されているので、消去を行わずには新たなデータを書き込むといった再利用はできない。このようなレコード領域３０２の再利用を行うには、ガベージコレクションを行わなくてはならないが、かかるガベージコレクションの詳細については後述する。
【００４５】
また、本実施形態では、レコードヘッダ３０３の状態情報として記録される各々の状態「空き」、「確保」、「有効」、「旧有効」、「無効」といった情報は、それぞれ「０ｘｆｆ」、「０ｘｆｅ」、「０ｘｆｃ」、「０ｘｆ８」、「０ｘｆ０」といった値が用いられている。このような値を用いることで、「空き」→「確保」→「有効」→「旧有効」→「無効」といった順序で状態情報を変更する場合、ビット値を１から０に変更するのみで足り、０から１に変更する必要がない。すなわち、上記のようにフラッシュＲＯＭ１０４のビット値を０から１に変更するには消去ブロック単位で行わなくてはならないといった制限があるが、以上のようにビット値を１から０に変更するだけで足りる値を用いることで、上記の順序で状態情報の変更が可能となる。
【００４６】
なお、状態情報「確保」、「旧有効」は、後述するデータ移動処理（図９参照）によって用いられる状態情報であるが、かかる状態およびデータ移動処理についての詳細は後述する。
【００４７】
次に、本実施形態におけるフラッシュファイルシステムでは、フラッシュＲＯＭ１０４をファイルシステムに適合させるために、前処理として図４に示すようなファイルテーブルおよびレコードリストを作成し、ＲＡＭ１０３に格納する。
【００４８】
同図に示すように、ファイルテーブル４０１は、フラッシュＲＯＭ１０４に記録されるファイル名と、ファイルを識別するファイル番号と、ファイルサイズと、レコードリスト４０２とが対応つけられたテーブルである。レコードリスト４０２には、そのファイルに含まれるレコード番号と、フラッシュＲＯＭ１０４におけるアドレス情報とを含むレコード情報がリスト形式で含まれている。
【００４９】
すなわち、あるファイルが、複数のレコード領域３０２（図３参照）に記録されるデータから構成される場合、レコードリスト４０２には、これらのレコード領域３０２に対応するレコードヘッダ３０３に記録されるレコード番号と、これらのレコード領域３０２のフラッシュＲＯＭ１０４におけるアドレス情報とを有するレコード情報が含まれているのである。したがって、このコードリスト４０２を参照し、当該レコードリスト４０２のレコード情報をたどることで、当該ファイルを構成する各々のレコード領域３０２に記録されたデータをレコード番号順に順次読み出すことができ、ファイルデータ全体を読み出すことができる。
【００５０】
また、レコードヘッダ３０３に記録されている状態情報が「空き」であるレコード領域３０２については、空きレコードリストが作成される。空きレコードリストは、上記のような状態情報が「空き」であるレコードに関する情報（アドレス情報等）をリスト形式で格納したものであり、かかる空きレコードリストを参照することでどのレコードが「空き」であるかを判別することができるようになっている。
【００５１】
さらに、レコードヘッダ３０３に記録されている状態情報が「無効」であるレコード領域３０２については、無効レコードリストが作成される。無効レコードリストは、上記のような状態情報が「無効」であるレコードに関する情報（アドレス情報等）をリスト形式で格納したものであり、かかる無効レコードリストを参照することでどのレコードが「無効」であるかを判別することができるようになっている。また、状態情報は、データの書き換えやデータ移動処理等が行われると、「有効」等から「無効」に書き換えられることがある。書き換え処理等によって状態情報が「無効」に書き換えられた場合には、そのレコードに関するアドレス情報等が無効レコードリストに追加される。
【００５２】
なお、上記のようにレコード番号およびアドレス情報といったレコード情報をリスト形式で格納するレコードリスト４０２に代えて、図５に示すように上記情報を配列形式、つまり順序を決めて並べる形式で格納するようにしてもよい。このようにすることで、ファイルに含まれる途中のデータを読み出す際にも、レコードリスト４０２を参照してその順序をたどるといった必要がなく、処理を高速化できる。ただし、ファイル中に新たなデータを含める等データの追加処理を行う際には、リスト形式では追加するデータに関する情報を単にリストに追加すればよいのに対し、配列形式では順序にしたがって並べる必要があるので追加処理は若干煩雑となる。
【００５３】
以上のような構成のファイルテーブル４０１およびレコードリスト４０２は、ＣＰＵ１０１がソフトウェアを実行することによって機能するファイルシステム部２０４によって以下のような手順で作成される。
【００５４】
まず、フラッシュＲＯＭ１０４にあるすべての消去ブロックに含まれるすべてのレコードヘッダ３０３（図３参照）に記録されているデータを読み出し、状態情報が「有効」であるものについてレコードヘッダ３０３に記録されているファイル番号を抽出する。そして、抽出したすべてのファイル番号ごとにレコードリスト４０２を作成し、各々のファイル番号をファイルテーブル４０１のファイル番号を記録する領域に記録する。
【００５５】
また、レコードヘッダ３０３に記録されている状態情報が「空き」であるものについては、そのアドレス情報等を取得して空きレコードリストを作成する。同様に、レコードヘッダ３０３に記録されている状態情報が「無効」であるものについては、そのアドレス情報等を取得して無効レコードリストを作成する。
【００５６】
一般的に行われるファイル管理において、特殊なファイル番号（例えば「０」）は、ディレクトリファイルを表すファイル番号として使用されており、このようなディレクトリファイルを表すファイル番号のレコードリストをたどってレコードデータを読み出すことで、各ファイル番号に対応するファイル名、ファイルサイズ、その他の属性情報を取得することができる。このように取得したファイル名等の情報をファイルテーブル４０１にセットする。
【００５７】
以上のような処理が終了すると、ファイルテーブル４０１に登録されたすべてのファイルのレコードリスト４０２を参照してたどる等して、抜けているレコードがないか、もしくはファイルテーブル４０１に登録されているファイルサイズとファイルに含まれるレコードの個数から求まるファイルサイズとの整合性が取れているか等のチェックを行い、チェック結果が正常である場合にはテーブル作成処理が完了する。以上が、ファイルシステムによって行われるファイルテーブル作成処理である。
【００５８】
次に、上記のようなファイルテーブル４０１等を用いてファイルの読み出し等を行うファイルシステム部２０４の動作について説明する。
【００５９】
（ファイル読み出し時の動作）
まず、ファイルデータの読み出し時の処理動作について説明する。上位層であるユーザアプリケーション２０１から、あるファイルデータの読み出し指示を受けると、ファイルテーブル４０１およびレコードリスト４０２を参照し、その指示によって特定されるファイル番号に対応したレコードリスト４０２をたどることで、読み出し指示に対応するファイルデータを構成するデータを各レコード領域３０２から順次読み出す。これによりユーザアプリケーション２０１から指示されたファイルデータの読み出しが完了する。
【００６０】
（ファイル書き換え時の動作）
次に、ファイルデータを書き換える際の処理動作について図６を参照しながら説明する。ここでは、あるファイルを構成するデータのうち、ユーザアプリケーション２０１から、図６に示すレコード領域３０２ｂに格納されているデータが新たなデータに書き換えられた場合について説明する。
【００６１】
かかる場合においては、ファイルシステム部２０４は、フラッシュＲＯＭ１０４における状態情報が「空き」となっているレコードヘッダ３０３を検索する。ここでは、レコードヘッダ３０３ｄの状態情報が「空き」となっており、かかるレコードヘッダ３０３ｄに対応するレコード領域３０２ｄに新たなデータを書き込めると判断する。
【００６２】
そして、ファイルシステム部２０４は、上記のように検索したレコード領域３０２ｄに書き換え後のデータを書き込むとともに、当該レコード領域３０２ｄに対応するレコードヘッダ３０３ｄの状態情報を「空き」から「有効」に書き換える。また、ファイルシステム部２０４は、レコードを書き換えられる前のファイルデータを格納するレコード領域３０２ｂに対応するレコードヘッダ３０３ｂの状態情報を「有効」から「無効」に書き換える。
【００６３】
以上がファイル中のあるレコードに格納されるデータを新たなデータに書き換えた際にファイルシステム部２０４によって行われる動作である。
【００６４】
（ガベージコレクション時の動作）
上記のような書き換え動作等が行われると、状態情報が「無効」となっているレコードヘッダ３０３の数が増加することになる。しかし、状態情報が「無効」であるレコードヘッダ３０３に対応するレコード領域３０２には新たなデータを書き込むことができないため、フラッシュＲＯＭ１０４の記憶領域を有効活用するためには、かかる状態情報が「無効」のレコードヘッダ３０３に対応するレコード領域３０２に記録されたデータを消去して再利用できるようにする必要がある。かかる再利用を可能とするためにファイルシステム部２０４によって行われる処理がガベージコレクションであり、以下ガベージコレクション実行時の動作について図７および図８を参照しながら説明する。
【００６５】
まず、ガベージコレクションでは、フラッシュＲＯＭ１０４におけるいずれかの消去ブロックを、消去対象ブロックとして選択する（ステップＳａ１）。ここで、ファイルシステム部２０４は、フラッシュＲＯＭ１０４に存在する複数の消去ブロックの中から、状態情報が「無効」であるレコードヘッダ３０３を多数含むといった基準（所定個数以上含むという基準）、状態情報が「有効」であるレコードヘッダ３０３の数が少ないという基準（所定個数より少ないという基準）、もしくは「無効」の数が所定個数以上であり、かつ「有効」の数が所定個数よりも少ないといった基準で消去ブロックを選択する。
【００６６】
上記のように消去ブロックを選択すると、選択した消去ブロックに含まれる状態情報として「有効」が記録されているレコードヘッダ３０３に対応するレコード領域３０２に記憶されているデータを、他の消去ブロックに含まれるレコード領域３０２に移動（コピー）する処理を行う（ステップＳａ２）。
【００６７】
ここで、データのコピー先である他の消去ブロックに含まれるレコード領域３０２は、対応するレコードヘッダ３０３に記録されている状態情報が「空き」となっているものである。図８に示す例では、レコードヘッダ３０３ａに対応するレコード領域３０２ａに格納されたデータＡを他の消去ブロックのレコード領域３０２Ｂに移動させ、レコードヘッダ３０３ｄに対応するレコード領域３０２ｄに格納されるデータＤを他の消去ブロックのレコード領域３０２Ｃに移動させる処理を行うことになる。なお、本例では、図を使った説明の便宜上、選択された消去ブロック中に含まれる「有効」データのすべて（図示の例では２つ）を同一の他の消去ブロック中のレコードに移動させることとしているが、異なる消去ブロック中のレコードに移動させるようにしてもよい。
【００６８】
次に、図９および図１０を参照しながら、ステップＳａ２におけるデータの移動処理の詳細について説明する。図９に示すように、ファイルシステム部２０４は、移動先のレコード領域３０２に対応するレコードヘッダ３０３の状態情報を「空き」から「確保」に書き換える（ステップＳｂ１）。例えば、図８に示すレコード領域３０２ａに格納されている「データＡ」をレコード領域３０２Ｂに移動させる場合には、移動先のレコード領域３０２Ｂに対応するレコードヘッダ３０３Ｂの状態情報を「空き」から「確保」に書き換える。
【００６９】
次に、ファイルシステム部２０４は、移動下のレコード領域３０２に対応するレコード領域３０２の状態情報を「有効」から「旧有効」に書き換える（ステップＳｂ２）。図８に示す例では、移動元であるレコード領域３０２ａに対応するレコードヘッダ３０３ａの状態情報を「有効」から「旧有効」に書き換える。
【００７０】
以上のように移動先および移動元のレコードヘッダ３０３の状態情報を書き換えると、ファイルシステム部２０４は、移動元のレコード領域３０２に格納されているデータおよび移動元のレコードヘッダ３０３に格納されている状態情報以外のデータ（レコード番号やファイル番号等のデータ）を移動先のレコードに移動、つまりコピーする処理を行う（ステップＳｂ３）。図８に示す例では、レコード領域３０２ａに格納されている「データＡ」をレコード領域３０２Ｂにコピーする処理を行う。
【００７１】
データのコピーが終了すると、ファイルシステム部２０４は、移動先のレコード領域３０２に対応するレコードヘッダ３０３の状態情報を「確保」から「有効」に書き換える。図８に示す例では、「データＡ」がコピーされる他の消去ブロックのレコード領域３０２Ｂに対応するレコードヘッダ３０３Ｂの状態情報を「確保」から「有効」に書き換える（ステップＳｂ４）。
【００７２】
そして、ファイルシステム部２０４は、移動元のレコード領域３０２に対応するレコードヘッダ３０３の状態情報を「旧有効」から「無効」に書き換える（ステップＳｂ５）。図８に示す例では、移動元であるレコード領域３０２ａに対応するレコードヘッダ３０３ａの状態情報を「旧有効」から「無効」に書き換える。
【００７３】
本実施形態におけるファイルシステム部２０４は、あるレコード領域３０２に格納されたデータを他のレコードに移動（コピー）させる際に上記のような処理を行うのである。
【００７４】
なお、図１０は、上記データ移動処理の各過程における移動元のレコード領域３０２に対応するレコードヘッダ３０３に記録される状態情報と、移動先のレコード領域３０２に対応するレコードヘッダ３０３に記録される状態情報とを示している。
【００７５】
以上のようなデータ移動処理をあるレコードに格納されたデータについて行うと、ファイルシステム部２０４は、選択した消去ブロック中に他の状態情報が「有効」となっているレコードヘッダ３０３が存在するか否かを判別する（ステップＳａ３）。そして、状態情報が「有効」となっているレコードヘッダ３０３が存在する場合には、そのレコードヘッダ３０３に対応するレコード領域３０２に格納されているデータについて上記のデータ移動処理を行う（ステップＳａ２）。
【００７６】
以上のように選択した消去ブロック中に状態情報が「有効」であるレコードヘッダ３０３が存在しなくなるまでデータ移動処理を行い、すべての状態情報が「有効」であったデータについての移動処理を完了すると（ステップＳａ３の判別「Ｙｅｓ」）、選択した消去ブロックについてデータの消去処理を行う（ステップＳａ４）。図８に示すように、選択した消去ブロック中のすべての「有効」データについてのデータ移動処理が終了すると、選択した消去ブロックには状態情報が「有効」となるデータは存在せず、状態情報が「有効」であった「データＡ」および「データＢ」は他の消去ブロック中に格納されている。したがって、選択した消去ブロックのデータをすべて消去することができるのである。
【００７７】
以上のように選択した消去ブロックのデータをすべて消去すると、当該消去ブロック中の各レコードヘッダ３０３の状態情報に「空き」である旨を記述する（ステップＳａ５）。この結果、以降当該消去ブロック中のレコード領域３０２を空き領域として新たなデータを記録する等に利用することができるようになる。
【００７８】
以上がガベージコレクション実行時の動作の詳細である。本実施形態では、以上のようなガベージコレクションを行うことで、選択された消去ブロック中のレコード領域３０２に格納されたデータを他の消去ブロックのレコード領域３０２に移動させる際に、レコードヘッダに記述されたデータ（ファイル番号やレコード番号）をともに移動させることにより、ファイルテーブル４０１に格納される情報等を大幅に変更することなく、移動後のデータ格納状態でファイルシステムとしての整合性を維持することができる。したがって、ガベージコレクション時の動作が簡易となるといった利点がある。
【００７９】
また、本実施形態では、ガベージコレクション時におけるデータの移動処理時に、上記のように移動元、移動先のレコードヘッダ３０３に格納される状態情報を遷移させるとともに（図９、図１０参照）、以下のような状態情報整合処理を電源投入後に行うことで、データ移動処理時に電源がオフにされた場合であっても、電源オフに起因するデータの不整合等の不具合の発生を抑制することができるようになっている。以下、このような状態情報整合処理について図１１を参照しながら説明する。
【００８０】
電源が投入されると、ファイルシステム部２０４は、フラッシュＲＯＭ１０４中のすべてのレコードヘッダ３０３について以下の処理を行う。まず、ファイルシステム部２０４は、処理対象となっているレコードヘッダ３０３の状態情報が「空き」であるか否かを判別し（ステップＳｃ１）、状態情報が「空き」である場合には、状態情報の書き換え処理等を行わずそのレコードヘッダ３０３についての処理を終了する。すなわち、このレコードヘッダの状態情報は「空き」のままである。
【００８１】
次に、状態情報が「空き」ではない場合（ステップＳｃ１の判別「Ｎｏ」）、ファイルシステム部２０４は、状態情報が「確保」であるか否かを判別する（ステップＳｃ２）。状態情報が「確保」である場合、このレコードヘッダ３０３に格納されている状態情報以外のデータ（レコード番号やファイル番号）が未記録状態（例えばデータが０ｘｆｆ）であるか否かを判別する（ステップＳｃ３）。
【００８２】
ここで、レコードヘッダの状態情報以外が未記録である場合には、当該レコードヘッダ３０３の状態情報を「確保」から「空き」に書き換え、当該レコードヘッダ３０３についての処理を終了する（ステップＳｃ４）。
【００８３】
すなわち、レコードヘッダの状態情報が「確保」であり、かつ状態情報以外のデータが未記録ということは、データ移動処理のステップＳｂ１の後、ステップＳｂ３のデータコピーがなされる前に電源がオフになされたと考えられるので、かかるレコードヘッダ３０３に対応するレコード領域３０２は未記録であると考えられる。よって、上記のようにこのレコードヘッダ３０３の状態情報を「確保」から「空き」に書き換えるのである。
【００８４】
一方、ステップＳｃ３の判別において、レコードヘッダ３０３の状態情報以外のデータが未記録ではない場合（判別「Ｎｏ」）、つまりレコード番号やファイル番号等のデータが格納されている場合には、レコードヘッダ３０３の状態情報を「確保」から「無効」に書き換え（ステップＳｃ５）、当該レコードヘッダについての処理を終了する。
【００８５】
すなわち、レコードヘッダの状態情報が「確保」であり、かつ状態情報以外のデータが記録されているということは、データ移動処理のステップＳｂ３のデータコピーが実行されている途中、もしくはコピー後ステップＳｃ４の処理がなされる前に電源がオフになされたと考えられる。この場合、すべてのデータがきちんとコピーされているか否かが不明であるため、このデータを有効にすることはできず、上記のようにこのレコードヘッダ３０３の状態情報を「確保」から「無効」に書き換えるのである。
【００８６】
次に、レコードヘッダ３０３の状態情報が「確保」ではない場合（ステップＳｃ２の判別「Ｎｏ」）、状態情報が「無効」であるか否かを判別する（ステップＳｃ６）。状態情報が「無効」である場合には、状態情報の書き換え処理等は行わず、そのまま当該レコードヘッダについての処理を終了する。
【００８７】
一方、レコードヘッダの状態情報が「無効」でない場合には、状態情報が「旧有効」であるか否かを判別する（ステップＳｃ７）。状態情報が「旧有効」である場合には、当該レコードヘッダ３０３に記録されているレコード番号と同一のレコード番号が、フラッシュＲＯＭ１０４の他のレコードヘッダ３０３に記録されており、かつ当該他のレコードヘッダ３０３の状態情報が「有効」であるものが存在するか否かを判別する（ステップＳｃ８）。
【００８８】
同一のレコード番号が他のレコードヘッダ３０３に記録されおり、かつ同一レコード番号を記録するレコードヘッダ３０３の状態情報が「有効」であるものが存在する場合には、処理対象であるレコードヘッダ３０３の状態情報を「旧有効」から「無効」に書き換え（ステップＳｃ９）、当該レコードヘッダについての処理を終了する。
【００８９】
一方、同一のレコード番号が他のレコードヘッダ３０３に記録されおり、かつ同一レコード番号を記録するレコードヘッダ３０３の状態情報が「有効」であるものが存在しない場合には（ステップＳｃ８の判別「Ｎｏ」）、処理対象であるレコードヘッダ３０３の状態情報を「旧有効」から「有効」に書き換え（ステップＳｃ１０）、当該レコードヘッダについての処理を終了する。
【００９０】
すなわち、レコードヘッダ３０３の状態情報が「旧有効」である場合には、図９に示すデータ移動処理中のステップＳｂ２以降ステップＳｂ４のいずれかの過程において電源がオフされたものと考えられる。そして、同一のレコード番号を記録する他のレコードヘッダが存在し、そのレコードヘッダの状態情報が「有効」である場合には、ステップＳｂ４の処理が終了した後ステップＳｂ５の処理が行われる前に電源がオフになされたと考えられ、この場合移動先のデータ、つまり同一のレコード番号が記録されている他のレコードヘッダ３０３、およびこれに対応するレコード領域３０２には完全にデータが移動させられており、有効なデータとして扱える状態となっている。したがって、状態情報が「旧有効」のレコードヘッダ３０３に対応するレコード領域３０２のデータは不要であるから、かかる状態情報を「無効」とするのである。
【００９１】
これに対し、同一のレコード番号を記録する他のレコードヘッダが存在しない、もしくは存在してもそのレコードヘッダの状態情報が「有効」でない場合には、データ移動処理におけるステップＳｂ３のコピー処理が完了した後に電源がオフされたか否かが不明であるので、移動先のデータが完全に有効なものとして扱えるか否かが不明である。したがって、「旧有効」となっている状態情報を「有効」に書き換えることで、かかるレコードヘッダ３０３に格納されるレコード番号やファイル番号のデータ、およびこれに対応するレコード領域３０２に格納されたデータを有効なものとして扱うようにするのである。
【００９２】
なお、ステップＳｃ７の判別において、状態情報が「旧有効」でない場合には（判別「Ｎｏ」）、状態情報が「有効」であるか否かを判別する（ステップＳｃ１１）。そして、状態情報が「有効」である場合には、そのまま状態情報の書き換えを行わずに当該レコードヘッダについての処理を終了する。一方、状態情報が「有効」でない場合には、かかる状態情報は「空き」、「確保」、「無効」、「旧有効」および「有効」のいずれでもないことを意味しており、これは記録エラー等に起因するものと考えられるので、状態情報を「無効」に書き換える（ステップＳｃ１２）。
以上が電源投入時にファイルシステム部２０４によって行われる状態情報整合処理である。
【００９３】
上述したようにデータ移動処理（図９参照）の際に処理の進行にしたがって、移動元のレコードヘッダ３０３の状態情報を「有効」→「旧有効」→「無効」といったように順次書き換えるとともに、移動先のレコードヘッダ３０３の状態情報を「空き」→「確保」→「有効」といったように順次書き換えることで、図１０に示すように、データ移動処理の途中のいずれの過程において電源がオフになされた場合であっても、電源投入後の移動元および移動先の状態情報等を参照することで、電源オフ直前の移動元および移動先のレコード領域３０２およびレコードヘッダ３０３のいずれが使用できるもの（完全なデータ）であるか否かを判別することができる。より具体的には、図１０に示すように、データ移動処理中のステップＳｂ１〜ステップＳｂ３までの処理中に電源がオフにされた場合には、移動元のレコードに記録されたデータを使用すればよく、ステップＳｂ４以降に電源がオフになされた場合には移動先のレコードに記録されたデータを使用すればよいことがわかる。
【００９４】
このように移動元および移動先の状態情報等を参照することで、電源オフ直前の状態を判別できるようにすることが可能なデータ移動処理を行うとともに、電源投入後に上記のように状態情報等を参照して状態情報の整合性を図る状態情報整合処理（図１１参照）を行うことで、その後フラッシュＲＯＭ１０４に記録されているデータを通常通り利用することができる。
【００９５】
すなわち、従来では、データをあるレコードから他のレコードに移動させる処理中に電源がオフになされると、その処理が何処まで進んでいたかを把握することができず、移動元のデータと移動先のデータのいずれを利用すればよいかが判別できないことがある。また、誤った判別をした場合には、書き込み途中のデータを利用してしまうといったように正確なデータを利用できないという不都合が生じていた。これに対し、本実施形態では、上記のような処理を行うことで、データ移動処理中に電源がオフになされるといった事態が発生した場合にもそれによって生じる上記のような不具合の発生を抑制することができるのである。また、かかる不具合の発生を抑止するためにデータの書き換え処理等を頻繁に行う必要もなく、フラッシュＲＯＭ１０４の寿命短縮化を抑制することもできる。
【００９６】
（変形例）
以上が本発明の一実施形態にかかる情報処理装置および当該情報処理装置が行うフラッシュＲＯＭの管理方法であるが、本発明は上記実施形態に限定されるものではなく、以下に例示するような種々の変形が可能である。
【００９７】
上述した実施形態においては、フラッシュＲＯＭ１０４の領域構成は、レコードヘッダ３０３とこれに対応するレコード領域３０２とが隣り合う位置に配置される、つまりレコードヘッダ３０３とレコード領域３０２とが交互に配置されるようになっていた。
【００９８】
フラッシュＲＯＭ１０４の領域構成は、レコードヘッダ３０３とこれに対応するレコード領域３０２とが設けられている構成であれば上記のようなものに限らず、例えば図１２または図１３に示すような領域構成としてもよい。図１２および図１３に示すように、これらの変形例におけるフラッシュＲＯＭ１０４の各消去ブロック３０１は、レコードヘッダ領域１０４ａと、データ領域１０４ｂとに２分割されており、複数のレコードヘッダ３０３がレコードヘッダ領域１０４ａにまとめて配置されるとともに、当該レコードヘッダ３０３の各々に対応するレコード領域３０２がデータ１０４ｂにまとめて配置されるといった構成をとっている。
【００９９】
このようにレコードヘッダ領域１０４ａとデータ領域１０４ｂとを２分割する領域構成を採用する場合においては、データ領域１０４ｂの記憶容量を、ＣＰＵ１０１が実行する仮想記憶処理におけるページサイズ（スワップファイルサイズ）等と同じ容量とすることが好ましい。このようにすることで、仮想記憶処理におけるスワップファイルをそのままフラッシュＲＯＭ１０４のデータ領域１０４ｂに保持することができるので、仮想記憶処理を行うシステムとの親和性を高めることができる。
【０１００】
また、上述した実施形態では、図９に示すデータ移動処理をガベージコレクション中において行う場合について説明したが、ガベージコレクション実行時以外であってもある消去ブロックのあるレコード領域３０２に格納されたデータを、他の消去ブロックのレコード領域３０２に移動させる際には上記データ移動処理を行うことで、処理中に電源がオフにされた場合であっても上記実施形態と同様に不完全なデータを利用してしまうといった不都合を回避することができる。
【０１０１】
また、上述した実施形態では、ＣＰＵ１０１がプログラムにしたがって動作することにより、上述したデータ移動処理（図９参照）や状態情報整合処理（図１１参照）を含むファイル管理処理を行う、つまりファイルシステムとして機能するようになっていたが、コンピュータにこのような処理を実行させるためのプログラムをインターネット等の通信回線を介してユーザに提供するようにしてもよいし、当該プログラムをＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などのコンピュータ読み取り可能な記録媒体に記録してユーザに提供するようにしてもよい。
【０１０２】
【発明の効果】
以上説明したように、請求項１にかかる発明によれば、あるデータ領域から他のデータ領域にデータを移動させる処理中に、電源がオフにされるといった事態が発生した場合であっても、移動元および移動先のデータ領域の状態情報を参照すれば処理中のどの過程で電源がオフになされたか、つまりどの程度処理が進んでいるかを把握することができ、その後いずれのデータ領域のデータを使用すればよいかを把握することができる。したがって、不完全なデータを利用してしまうことに起因する不具合等の発生を抑制できるという効果を奏する。
【０１０３】
また、請求項２にかかる発明によれば、各データ領域の状態を示す状態情報が、真の状態を示す状態情報である有効、無効、空きのいずれかとなり、その後はこの状態情報を参照してデータ読み出し処理等を行うことができる。したがって、不完全なデータが読み出されて使用されるといった不具合の発生を抑制できるという効果を奏する。
【０１０４】
また、請求項３にかかる発明によれば、仮想記憶システムにおいてスワップファイル等をフラッシュＲＯＭのデータ領域に記憶する際に、スワップファイルをそのデータ領域配置エリアに含まれるデータ領域に保持することができ、仮想記憶システムとの親和性を高めることができる。
【０１０５】
また、請求項４にかかる発明によれば、フラッシュＲＯＭはビット値を０から１に変更する、つまり消去するには、３２ｋビットといった単位で消去を行わなくてはならないが、ビット値を１から０に変更するだけで足り、状態情報の変更が容易となるという効果を奏する。
【０１０６】
また、請求項５にかかる発明によれば、あるデータ領域から他のデータ領域にデータを移動させる処理中に、電源がオフにされるといった事態が発生した場合であっても、移動元および移動先のデータ領域の状態情報を参照すれば処理中のどの過程で電源がオフになされたか、つまりどの程度処理が進んでいるかを把握することができ、その後いずれのデータ領域のデータを使用すればよいかを把握することができる。したがって、不完全なデータを利用してしまうことに起因する不具合等の発生を抑制できるという効果を奏する。
【０１０７】
また、請求項６にかかる発明によれば、各データ領域の状態を示す状態情報が、真の状態を示す状態情報である有効、無効、空きのいずれかとなり、その後はこの状態情報を参照してデータ読み出し処理等を行うことができる。したがって、不完全なデータが読み出されて使用されるといった不具合の発生を抑制できるという効果を奏する。
【０１０８】
また、請求項７にかかるプログラムをコンピュータに実行させることで、あるデータ領域から他のデータ領域にデータを移動させる処理中に、電源がオフにされるといった事態が発生した場合であっても、移動元および移動先のデータ領域の状態情報を参照すれば処理中のどの過程で電源がオフになされたか、つまりどの程度処理が進んでいるかを把握することができ、その後いずれのデータ領域のデータを使用すればよいかを把握することができる。したがって、不完全なデータを利用してしまうことに起因する不具合等の発生を抑制できるという効果を奏する。
【０１０９】
また、請求項８にかかるプログラムをコンピュータに実行させることで、各データ領域の状態を示す状態情報が、真の状態を示す状態情報である有効、無効、空きのいずれかとなり、その後はこの状態情報を参照してデータ読み出し処理等を行うことができる。したがって、不完全なデータが読み出されて使用されるといった不具合の発生を抑制できるという効果を奏する。
【図面の簡単な説明】
【図１】本発明の一実施形態にかかる情報処理装置のハードウェア構成を示すブロック図である。
【図２】前記情報処理装置のファイルシステムの階層構造を示す図である。
【図３】前記情報処理装置の構成要素であるフラッシュＲＯＭの領域構成を示す図である。
【図４】前記ファイルシステムによって作成されるファイルテーブルの内容を示す図である。
【図５】前記ファイルテーブルによって作成されるレコード情報の配列形式を示す図である。
【図６】前記ファイルシステムによるフラッシュＲＯＭに記録されたデータの書き換え処理の内容を説明するための図である。
【図７】前記ファイルシステムによって行われるガベージコレクションの手順を示すフローチャートである。
【図８】前記ガベージコレクションの内容を説明するための図である。
【図９】前記ガベージコレクション時に前記ファイルシステムによって行われるデータ移動処理の手順を示すフローチャートである。
【図１０】前記データ移動処理の各過程におけるデータの移動元レコードの状態と移動先レコードの状態とを示す図である。
【図１１】前記ファイルシステムが電源投入後に行う状態情報整合処理の手順を示すフローチャートである。
【図１２】前記フラッシュＲＯＭの領域構成の変形例を示す図である。
【図１３】前記フラッシュＲＯＭの領域構成の他の変形例を示す図である。
【符号の説明】
１００  情報処理装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  フラッシュＲＯＭ
１０４ｂ  データ領域
１０４ａ  レコードヘッダ領域
１０５  ハードディスクドライブ
２０１  ユーザアプリケーション
２０２  カーネル
２０３  ファイル操作インターフェース部
２０４  ファイルシステム部
２０５  デバイスドライバ
３０１  消去ブロック
３０２  レコード領域
３０３  レコードヘッダ
４０１  ファイルテーブル
４０２  レコードリスト
【図１】
2004213263.tif 000003
【図２】
2004213263.tif 000004
【図３】
2004213263.tif 000005
【図４】
2004213263.tif 000006
【図５】
2004213263.tif 000007
【図６】
2004213263.tif 000008
【図７】
2004213263.tif 000009
【図８】
2004213263.tif 000010
【図９】
2004213263.tif 000011
【図１０】
2004213263.tif 000012
【図１１】
2004213263.tif 000013
【図１２】
2004213263.tif 000014
【図１３】
2004213263.tif 000015