(57)【特許請求の範囲】
【請求項１】
作成モジュール（１１）と、標記モジュール（１２）と、同期モジュール（１３）と、裏込めモジュール（１４）とを含むフラッシュメモリファイルシステムであって、
作成モジュール（１１）は、ファイルシステムの作成時に、フラッシュメモリをファイルシステムエリアとフラッシュメモリバッファエリアとに分けるように設けられ、
標記モジュール（１２）は、書き込まれるデータがあり、かつ書き込まれるデータ量が、メモリキャッシュに書き込まれた、データの粒度に従って標記する必要のあるデータ量のサイズを表示するための、メモリページサイズより小さいマーク閾値以下の場合に、メモリキャッシュにおいて、書き込みデータを汚データとして標記するように設けられ、
同期モジュール（１３）は、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込み、フラッシュメモリバッファエリアがフルになった時に裏込めモジュール（１４）に通知するように設けられ、
裏込めモジュール（１４）は、同期モジュール（１３）の通知を受け取り、フラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、フラッシュメモリバッファエリアを消去するように設けられる、フラッシュメモリファイルシステム。
【請求項２】
前記フラッシュメモリバッファエリアが第１のフラッシュメモリバッファエリアと、第２のフラッシュメモリバッファエリアとを含むフラッシュメモリファイルシステムであって、
前記同期モジュール（１３）は、データを同期する必要がある場合に、前記メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第１のフラッシュメモリバッファエリアに書き込み、第１のフラッシュメモリバッファエリアがフルになった時に、第１通知を裏込めモジュール（１４）に送り、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第２のフラッシュメモリバッファエリアに書き込み、第２のフラッシュメモリバッファエリアがフルになった時に、第２通知を裏込めモジュール（１４）に送り、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第１のフラッシュメモリバッファエリアに書き込むように設けられ、
裏込めモジュール（１４）は、前記同期モジュール（１３）の第１通知を受け取った時に、第１のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第１のフラッシュメモリバッファエリアを消去し、同期モジュール（１３）の第２通知を受け取った時に、第２のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第２のフラッシュメモリバッファエリアを消去するように設けられる、請求項１に記載のフラッシュメモリファイルシステム。
【請求項３】
前記標記モジュール（１２）は、書き込まれるデータがあり、かつ書き込まれるデータ量が前記マーク閾値以下である場合に、前記書き込みデータに対応するファイルの索引ノード番号、データセグメントのあるページ番号、ページ内のオフセット量、データセグメントの長さおよびデータセグメントの内容をレコードにパッケージし、予め設定された汚データリストにレコードを追加するとともに、書き込みデータに対応するメモリキャッシュページの参照カウントに１を加える、請求項１に記載のフラッシュメモリファイルシステム。
【請求項４】
前記同期モジュール（１３）は、
前記書き込みデータに対応するファイルの索引ノード番号を基に、当該ファイルの全てのレコードを検索し、新しいメモリページを申請し、複数のレコードの内容を順に前記新しいメモリページにコピーし、前記新しいメモリページにおける内容を順にフラッシュメモリバッファエリアに書き込むように設けられる、請求項３に記載のフラッシュメモリファイルシステム。
【請求項５】
フラッシュメモリファイルシステムの再起動時に、フラッシュメモリバッファエリア内に汚データがあるかどうかを検出し、フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアの全ての汚データを読み出し、各汚データを基に前記メモリキャッシュの内容を更新するように設けられる回復モジュール（１５）をさらに備える、請求項１に記載のフラッシュメモリファイルシステム。
【請求項６】
ファイルシステムの作成時に、フラッシュメモリファイルシステムは、フラッシュメモリをファイルシステムエリアとフラッシュメモリバッファエリアとに分け（ステップＳ８０１）、
書き込まれるデータがあり、かつ書き込まれるデータ量が、メモリキャッシュに書き込まれた、データの粒度に従って標記する必要のあるデータ量のサイズを表示するための、メモリページサイズより小さいマーク閾値以下の場合に、フラッシュメモリファイルシステムは、メモリキャッシュにおいて、書き込みデータを汚データとして標記し（ステップＳ８０２）、
データを同期する必要がある場合に、フラッシュメモリファイルシステムは、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込み（ステップＳ８０３）、
フラッシュメモリバッファエリアがフルになった時に、フラッシュメモリファイルシステムは、フラッシュメモリバッファエリアにおける汚データを読み出してファイルシステムエリアに書き込み、フラッシュメモリバッファエリアを消去する（ステップＳ８０４）ことを含む、フラッシュメモリファイルシステムのデータ管理方法。
【請求項７】
前記フラッシュメモリバッファエリアが第１のフラッシュメモリバッファエリアと、第２のフラッシュメモリバッファエリアとを含むデータ管理方法であって、
データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第１のフラッシュメモリバッファエリアに書き込み、
第１のフラッシュメモリバッファエリアがフルになった時に、第２のフラッシュメモリバッファエリアを目下のバッファエリアとし、データを同期する必要がある場合に、メモリキャッシュに書き込まれた全ての汚データまたは同期しようとするファイルの汚データが使用するのに用い、同時に、第１のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第１のフラッシュメモリバッファエリアを消去し、
第２のフラッシュメモリバッファエリアがフルになった時に、第１のフラッシュメモリバッファエリアを目下のバッファエリアとし、データを同期する必要がある場合に、メモリキャッシュに書き込まれた全ての汚データまたは同期しようとするファイルの汚データが使用するのに用い、同時に、第２のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第２のフラッシュメモリバッファエリアを消去する、請求項６に記載のデータ管理方法。
【請求項８】
メモリキャッシュにおいて、書き込みデータを汚データとして標記することは、
前記書き込みデータに対応するファイルの索引ノード番号、データセグメントのあるページ番号、ページ内のオフセット量、データセグメントの長さおよびデータセグメントの内容をレコードにパッケージし、予め設定された汚データリストにレコードを追加するとともに、書き込みデータに対応するメモリキャッシュページの参照カウントに１を加えることを含む、請求項６に記載のデータ管理方法。
【請求項９】
前記汚データリストにおける汚データをまとめてからフラッシュメモリバッファエリアに書き込むことは、
書き込みデータに対応するファイルの索引ノード番号を基に、当該ファイルの全てのレコードを検索し、新しいメモリページを申請し、複数のレコードの内容を順に前記新しいメモリページにコピーし、前記新しいメモリページにおける内容を順にフラッシュメモリバッファエリアに書き込むことを含む、請求項８に記載のデータ管理方法。
【請求項１０】
フラッシュメモリファイルシステムの再起動時に、フラッシュメモリバッファエリア内に汚データがあるかどうかを検出し、
フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアの全ての汚データを読み出し、各汚データを基に前記メモリキャッシュの内容を更新することをさらに含む、請求項６に記載のデータ管理方法。
【請求項１１】
コンピュータが実行可能なプログラムを記憶し、前記プログラムをコンピュータに実行させることによって、請求項６〜１０のいずれか一項に記載のデータ管理方法を実現する、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ技術分野に関するがこれに限定されるものではなく、具体的にフラッシュメモリファイルシステム及びそのデータ管理方法に関するものである。
【背景技術】
【０００２】
フラッシュメモリ（Flash Memory）は、電子式消去可能プログラムメモリであり、従来の磁気ディスク媒体と比べて、読み書きの帯域幅が高く、アクセスの遅延が低く、電力消費が低く、安定性が高いという特徴があり、現在、データセンター、パソコン、モバイル機器などにおいて普及し始めている。フラッシュメモリはページ単位で読み書きを行い、ページを書き換える前に消去操作を行う必要がある。フラッシュメモリはブロック単位で消去を行い、１つのフラッシュメモリブロックには数百個のフラッシュメモリページが含まれている。フラッシュメモリユニットは、有限回数の消去操作を備え、即ち、各フラッシュメモリユニットは限られた寿命を有する。
【０００３】
ファイルシステムでは、ページキャッシュを使用して、最近操作したデータをキャッシュし、読み書きプロセスを加速する。データの読み取りが必要な場合は、まずページキャッシュにおいて当該部分の内容がメモリ内にあるかどうかを調べ、見つかればそのままデータに戻り、見つからなければフラッシュメモリ内において読み取る。書き込み操作が必要な場合は、デバイスにデータを直接書き込むのではなく、ページキャッシュにデータを書き込んだあと、該当ページを汚ページとして標記して、そのまま戻る。ユーザが同期呼び出しまたはオペレーティングシステムのバックグラウンドスレッドの同期動作を開始した時に、ページキャッシュにおける汚ページをフラッシュメモリデバイスに書き込む。
【発明の概要】
【課題を解決するための手段】
【０００４】
［発明の内容］
以下は本発明で詳しく説明した主題の概要である。本概要は、請求項の請求範囲を制限するためのものではない。
【０００５】
本発明の実施例は、不要なデータ書き込みを回避することができるフラッシュメモリファイルシステム及びそのデータ管理方法を提供する。
【０００６】
本発明の実施例の技術案は次のように実現される。
本発明の実施例では、作成モジュールと、標記モジュールと、同期モジュールと、裏込めモジュールとを含むフラッシュメモリファイルシステムであって、
作成モジュールは、ファイルシステムの作成時に、フラッシュメモリをファイルシステムエリアとフラッシュメモリバッファエリアとに分けるように設けられ、
標記モジュールは、書き込まれるデータがあり、かつ書き込まれるデータ量が、メモリキャッシュに書き込まれた、データの粒度に従って標記する必要のあるデータ量のサイズを表示するための、予め設定されたマーク閾値以下の場合に、メモリキャッシュにおいて、書き込みデータを汚データとして標記するように設けられ、
同期モジュールは、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込み、フラッシュメモリバッファエリアがフルになった時に裏込めモジュールに通知するように設けられ、
裏込めモジュールは、同期モジュールの通知を受け取り、フラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、フラッシュメモリバッファエリアを消去するように設けられる、フラッシュメモリファイルシステムを提供する。
【０００７】
任意で、前記フラッシュメモリバッファエリアが第１のフラッシュメモリバッファエリアと、第２のフラッシュメモリバッファエリアとを含み、
前記同期モジュールは、データを同期する必要がある場合に、前記メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第１のフラッシュメモリバッファエリアに書き込み、第１のフラッシュメモリバッファエリアがフルになった時に、第１通知を裏込めモジュールに送り、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第２のフラッシュメモリバッファエリアに書き込み、第２のフラッシュメモリバッファエリアがフルになった時に、第２通知を裏込めモジュールに送り、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第１のフラッシュメモリバッファエリアに書き込むように設けられ、
前記裏込めモジュールは、前記同期モジュールの第１通知を受け取った時に、第１のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第１のフラッシュメモリバッファエリアを消去し、同期モジュールの第２通知を受け取った時に、第２のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第２のフラッシュメモリバッファエリアを消去するように設けられる。
【０００８】
任意で、前記標記モジュールは、書き込まれるデータがあり、かつ書き込まれるデータ量が前記マーク閾値以下である場合に、前記書き込みデータに対応するファイルの索引ノード番号、データセグメントのあるページ番号、ページ内のオフセット量、データセグメントの長さおよびデータセグメントの内容をレコードにパッケージし、予め設定された汚データリストにレコードを追加するとともに、書き込みデータに対応するメモリキャッシュページの参照カウントに１を加える。
【０００９】
任意で、前記同期モジュールは、
前記書き込みデータに対応するファイルの索引ノード番号を基に、当該ファイルの全てのレコードを検索し、新しいメモリページを申請し、複数のレコードの内容を順に前記新しいメモリページにコピーし、前記新しいメモリページにおける内容を順にフラッシュメモリバッファエリアに書き込むように設けられる。
【００１０】
任意で、前記システムは、フラッシュメモリファイルシステムの再起動時に、フラッシュメモリバッファエリア内に汚データがあるかどうかを検出するように設けられる回復モジュールをさらに備え、
フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアの全ての汚データを読み出し、各汚データを基に前記メモリキャッシュの内容を更新する。
【００１１】
本発明の実施例では、
ファイルシステムの作成時に、フラッシュメモリをファイルシステムエリアとフラッシュメモリバッファエリアとに分け、
書き込まれるデータがあり、かつ書き込まれるデータ量が、メモリキャッシュに書き込まれた、データの粒度に従って標記する必要のあるデータ量のサイズを表示するための、予め設定されたマーク閾値以下の場合に、メモリキャッシュにおいて、書き込みデータを汚データとして標記し、
データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込み、
フラッシュメモリバッファエリアがフルになった時にフラッシュメモリバッファエリアにおける汚データを読み出してファイルシステムエリアに書き込み、フラッシュメモリバッファエリアを消去することを含む、フラッシュメモリファイルシステムのデータ管理方法を提供する。
【００１２】
任意で、前記フラッシュメモリバッファエリアが第１のフラッシュメモリバッファエリアと、第２のフラッシュメモリバッファエリアとを含み、
データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第１のフラッシュメモリバッファエリアに書き込み、
第１のフラッシュメモリバッファエリアがフルになった時に、第２のフラッシュメモリバッファエリアを目下のバッファエリアとし、データを同期する必要がある場合に、書き込みデータが使用するのに用い、同時に、第１のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第１のフラッシュメモリバッファエリアを消去し、
第２のフラッシュメモリバッファエリアがフルになった時に、第１のフラッシュメモリバッファエリアを目下のバッファエリアとし、データを同期する必要がある場合に、書き込みデータが使用するのに用い、同時に、第２のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第２のフラッシュメモリバッファエリアを消去する。
【００１３】
任意で、前記の、メモリキャッシュにおいて、書き込みデータを汚データとして標記することは、前記書き込みデータに対応するファイルの索引ノード番号、データセグメントのあるページ番号、ページ内のオフセット量、データセグメントの長さおよびデータセグメントの内容をレコードにパッケージし、予め設定された汚データリストにレコードを追加するとともに、書き込みデータに対応するメモリキャッシュページの参照カウントに１を加えることを含む。
【００１４】
任意で、前記汚データリストにおける汚データをまとめてからフラッシュメモリバッファエリアに書き込むことは、
書き込みデータに対応するファイルの索引ノード番号を基に、当該ファイルの全てのレコードを検索し、新しいメモリページを申請し、複数のレコードの内容を順に前記新しいメモリページにコピーし、前記新しいメモリページにおける内容を順にフラッシュメモリバッファエリアに書き込むことを含む。
【００１５】
任意で、前記のデータ管理方法は、
フラッシュメモリファイルシステムの再起動時に、フラッシュメモリバッファエリア内に汚データがあるかどうかを検出し、
フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアの全ての汚データを読み出し、各汚データを基に前記メモリキャッシュの内容を更新することをさらに含む。
【００１６】
本発明の実施例のフラッシュメモリファイルシステム及びそのデータ管理方法は、汚データを標記してまとめてからフラッシュメモリに書き込むことにより、不要なデータ書き込みを回避し、同期動作の遅延を低減し、フラッシュメモリの寿命を延ばしており、
さらに、第１のフラッシュメモリバッファエリアと第２のフラッシュメモリバッファエリアを設けることにより、システムがその中の１つのフラッシュメモリバッファエリアを裏込めする期間において、別のバッファエリアが目下のバッファエリアとして機能し、期間の同期動作は順に他のバッファエリア内に書き込まれるため、裏込めによってシステム全体が停止し待機するという状況にはならず、２つのバッファエリアを交互に使うことで、システムの正常運行が保証される。
【００１７】
図面および詳しい記載を閲読し理解すれば、その他の態様が分かる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施例に係るフラッシュメモリファイルシステムの構造模式図である。
【図２】本発明の実施例に係るフラッシュメモリファイルシステムのデータ構造模式図である。
【図３】本発明の実施例に係る合併レコードのデータ構造模式図である。
【図４】本発明の実施例に係る書き込みフラッシュメモリバッファエリアのデータ構造模式図である。
【図５】本発明の実施例に係る裏込め操作のデータ構造模式図である。
【図６】本発明の実施例に係る別のフラッシュメモリファイルシステムの構造模式図である。
【図７】本発明の実施例に係る故障回復のデータ構造模式図である。
【図８】本発明の実施例に係るフラッシュメモリファイルシステムのデータ管理方法のフロー模式図である。
【発明を実施するための形態】
【００１９】
［本発明を実施するための形態］
本発明の実施例の説明において、理解すべきことは、「中心」、「縦方向」、「横方向」、「上」、「下」、「前」、「後」、「左」、「右」、「鉛直」、「水平」、「頂」、「底」、「内」、「外」等の技術用語が指す方向または位置関係は、図面に示される方位または位置関係に基づくものであり、本発明の実施例の説明に便宜を計り説明を容易にするためのものに過ぎず、言及するデバイスまたは部品が特定の方向、特定の方向での構造と操作を有していなければならないということを指したり示唆したりするのではないため、本発明に対する制限であると理解することはできない。さらに、「第１」、「第２」という技術用語は説明だけを目的とし、相対的な重要性を指したり示唆したりするものと理解することはできない。
【００２０】
本発明の実施例の説明では、特に明確な規定と限定がない限り、「インストール」、「相連なる」、「接続」という技術用語は広義的に理解すべきであり、例えば固定接続であってよく、取り外し可能な接続、または一体的な接続であってもよく、機械的接続であってよく、電気的接続であってもよく、直接接続であってよく、中間媒体を介して間接的に接続してもよく、２つの部材内部の接続であってもよい。本発明の実施例における上記技術用語の意味は、当業者にとって具体的な状況に基づいて理解され得る。
【００２１】
以下の説明および図面を参照すれば、本発明の実施例のこれらおよび他の点が明らかになる。これらの説明および図面では、本発明の実施例の一部の特定の実施形態が公開され、本発明の実施例の原理を実施するいくつかの形態が示されているが、本発明の実施例の範囲はこの限りでないと理解されるべきである。対照的に、本発明の実施例は、添付の特許請求の範囲の精神および内包の範囲内に含まれるすべての変化、修正、および均等物を含む。
【００２２】
一回の書き込み操作でページ全体を汚ページとして標記するため、今回の書き込みがページのほんの一部に係るものに過ぎないとしても、同期操作を行うと、ページ全体がフラッシュメモリデバイスに書き込まれることになる。これにより、書き込みデータ量が大幅に増加し、同期操作の遅延が増加するだけでなく、システムの性能が低下し、フラッシュメモリデバイスの摩耗が増加し、その寿命は大幅に低下する。
【００２３】
これを基に、図１に示す通り、本発明の実施例では、作成モジュール１１と、標記モジュール１２と、同期モジュール１３と、裏込めモジュール１４とを含むフラッシュメモリファイルシステムを提供し、
作成モジュール１１は、ファイルシステムの作成時に、フラッシュメモリをファイルシステムエリアとフラッシュメモリバッファエリアとに分けるように設けられ、
標記モジュール１２は、書き込まれるデータがあり、かつ書き込まれるデータ量が、メモリキャッシュに書き込まれた、データの粒度に従って標記する必要のあるデータ量のサイズを表示するための、予め設定されたマーク閾値以下の場合に、メモリキャッシュにおいて、書き込みデータを汚データとして標記するように設けられ、
同期モジュール１３は、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込み、フラッシュメモリバッファエリアがフルになった時に裏込めモジュールに通知するように設けられ、
裏込めモジュール１４は、同期モジュールの通知を受け取り、フラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、フラッシュメモリバッファエリアを消去するように設けられる。
【００２４】
なお、本発明の実施例における汚データとは、プロセスによって修正されたメモリキャッシュ内のデータを意味する。ファイルシステムはページをメモリキャッシュの単位とし、プロセスがメモリバッファ内のデータを修正した場合、当該ページは汚ページとして標記される。本発明の実施例は、不要なデータの書き込みを避けるために、バイトを粒度として、前記書き込みデータを汚データとして標記する。
【００２５】
任意で、前記フラッシュメモリバッファエリアのサイズは、ユーザによって指定されるか、またはシステムによって予め設定される。
【００２６】
任意で、ユーザによってフラッシュメモリバッファエリアのサイズが指定されると、ファイルシステムを作成してマウントする時に、ユーザが伝達するバッファエリアのサイズパラメータに基づいて、フラッシュメモリデバイスに単独のエリアを分割してバッファエリアとする。ファイルシステムが物理的空間割り当てを行う場合、割り当てられた空間はこのフラッシュメモリバッファエリア内にないため、フラッシュメモリバッファエリアはファイルシステムによって検索されない。
【００２７】
任意で、前記フラッシュメモリバッファエリアが第１のフラッシュメモリバッファエリアと、第２のフラッシュメモリバッファエリアとを含み、
前記同期モジュールは、データを同期する必要がある場合に、前記メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第１のフラッシュメモリバッファエリアに書き込み、第１のフラッシュメモリバッファエリアがフルになった時に、第１通知を裏込めモジュールに送り、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第２のフラッシュメモリバッファエリアに書き込み、第２のフラッシュメモリバッファエリアがフルになった時に、第２通知を裏込めモジュールに送り、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第１のフラッシュメモリバッファエリアに書き込むように設けられ、
前記裏込めモジュールは、同期モジュールの第１通知を受け取った時に、第１のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第１のフラッシュメモリバッファエリアを消去し、同期モジュールの第２通知を受け取った時に、第２のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第２のフラッシュメモリバッファエリアを消去するように設けられる。
【００２８】
２つのフラッシュメモリバッファエリアを設けることにより、システムがその中の１つのフラッシュメモリバッファエリアを裏込めする期間において、別のバッファエリアが目下のバッファエリアとして機能し、期間の同期動作は順に他のバッファエリア内に書き込まれるため、裏込めによってシステム全体が停止し待機するという状況にはならず、２つのバッファエリアを交互に使うことで、システムの正常運行が保証される。
【００２９】
任意で、前記メモリキャッシュはページキャッシュである。
任意で、前記標記モジュール１２は、書き込まれるデータがあり、かつ書き込まれるデータ量が、予め設けられたマーク閾値を上回る時、従来の入出力（ＩＯ）パスで処理を行うようにさらに設けられる。
【００３０】
本発明の一実施例において、前記従来のＩＯパスに従って行われる処理は、書き込みデータをページキャッシュに書き込み、データに対応するページを汚ページとして標記し、それから戻ることを含む。
【００３１】
任意で、前記マーク閾値のサイズは、具体的な読み取り加速プロセスに従って設定してよい。例えば、マーク閾値をメモリページサイズの半分（４０９６＊５０％＝２０４８バイト）、またはメモリページサイズの８０％（４０９６＊８０％＝３２７６．８バイト）に設定することができる。
【００３２】
任意で、標記モジュール１２は、書き込まれるデータがあり、かつ書き込まれるデータ量が、予め設けられたマーク閾値以下の時、書き込みデータに対応するファイルの索引ノード番号（inode number）、データセグメントのあるページ番号（page number）、ページ内のオフセット量（page offset）、データセグメントの長さ（length）およびデータセグメントの内容（data）をレコード（record）にパッケージし（即ち、〈inode number、page number、page offset、length、data〉の形式）、予め設定された汚データリストにレコードを追加するとともに、該当ページのキャッシュページの参照カウントに１を加える。
【００３３】
なお、本発明の実施例の標記モジュール１２は、予め設定された汚データリストを使用して汚データを標記してよく、他の方法で汚データを標記してもよい。前記の汚データリストは、配列、ツリーリスト、連結リストなどの任意のデータ構造を使用することができる。
【００３４】
なお、標記モジュール１２は、書き込みデータを汚データリストに追加する時、該当ページのキャッシュページを汚ページとしてマークするのではなく、該当ページのキャッシュページの参照カウントに強制的に１を加え、これによりページキャッシュ内の書き込みデータがフラッシュメモリデバイスに書き込まれないようにして、このページ分のキャッシュページを強制的に保存して、高速読み取りを可能にする。
【００３５】
任意で、前記レコード内のデータセグメントの内容は、データセグメントの具体的な内容であってよく、ページキャッシュに対応するページを指すデータポインター（data pointer）であってもよい。
【００３６】
任意で、標記モジュール１２は、基数ツリーおよびチェーンテーブルを使用して、同じファイルのすべてのレコードを構成し管理する。ラディックスツリーを使うのは検索を便利にするためで、チェーンを使うのは遍歴するのに便利であるからである。ラディックスツリー（radix_tree）は、あまり一般的ではないデータ構造で、Linux（登録商標）ファイルシステムの記憶方式の一種であり、ツリー構造は主に、ツリーのルートノードを指すルートポイント（root）、空いているノードチェーンを指すフリーポイント（free）、アイドルメモリブロックを指すスタートポイント（start）という３つのポイントを含み、各使用中のノードは、parent、left、rightポイントを使用して互いに接続され、空いているノードは、rightポイントを介してリンクテーブルに接続されている。索引ノード（inode）は、多くの種類のUnixファイルシステムのデータ構造の一種であり、各索引ノードはファイルシステム内の１つのファイルシステムオブジェクトの元の情報データを保存しているが、データコンテンツまたはファイル名は含まれていない。
【００３７】
図２に示すように、標記モジュール１２は、索引ノード番号を索引として、対応するノードがファイルを表す基数ツリーを維持し、遍歴するのに便利なように、基数ツリーにおける全てのリーフノードを連結リストで連結する。当該基数ツリーの各ノードも１つの基数ツリーを維持し、ページ番号を索引として、各ノードは某ページのレコードを表している。各レコードには、索引ノード番号、ページ番号、ページ内のオフセット量、データセグメントの長さおよびページキャッシュに対応するページを指すデータポインターという５つの要素を含み（即ち、〈inode number、page number、offset、data pointer〉という形式）、遍歴するのに便利なように、同一ファイルの全てのレコードも連結リストで連結する。
【００３８】
書き込み要求を受信した時、標記モジュール１２は、今回の書き込み操作の索引ノード番号を基に図２の基数ツリー内で検索を行うように設けられ、対応するノードが見つからなければ、新しくノードを作成し、これを基数ツリーとチェーンノードの連結リストに挿入し、当該ノードの基数ツリー内において今回の書き込み操作に関するページ番号を索引として対応するレコードを検索する。対応するレコードが見つからなければ、新しくレコードを作成し、この索引ノード番号、ページ番号、ページ内のオフセット量、データセグメントの長さおよびメモリページポインターを相応値に割り振る。対応するレコードが見つかれば、２つのレコードをまとめる必要があり、索引ノード番号、ページ番号、メモリページのポインターは変わらず、ページ内のオフセット量、データセグメントの長さを以下の通り更新する。
【００３９】
new offset = min（old offset，current offset）
new length =max（old offset + old length，current offset + current length）- new offset
そのうち、new offsetは新レコードのページ内のオフセット値、old offsetは元レコードのページ内のオフセット値、current offsetは目下の書き込み操作のページ内のオフセット値、new lengthは新レコードのデータセグメントの長さ、old lengthは元レコードのデータセグメントの長さ、current lengthは目下の書き込み操作のデータセグメントの長さを表す。上記状況を基に新レコードの１つまたは複数項の値を算出した後、これを基数ツリーと連結リストに挿入する。そして、ページキャッシュにおけるメモリページを引き続き更新するが、ファイルシステムにおいて当該メモリページの全ページをフラッシュメモリデバイスに書き込まないように、システムは当該ページを汚れとして標記しない。ページが汚れとして標記されないため、ファイルシステムによって随時回収されてしまう恐れがあり、データの効率的な読み取りと一致性を維持するために、メモリページの参照カウントに強制的に１を加え、回収されないようにする。このようにして、後続の読み取り操作は、ページキャッシュにおけるページを通して引き続き読み取られる。
【００４０】
任意で、同期モジュール（１３）は、書き込みデータに対応するファイルの索引ノード番号を基に当該ファイルの全てのレコードを検索し、新しいメモリページを申請し、複数のレコードの内容を順に前記新しいメモリページにコピーし、前記新しいメモリページにおける内容を順にフラッシュメモリバッファエリアに書き込むように設けられる。
【００４１】
任意で、図３に示すように、データを同期する必要がある場合に、同期モジュール１３は、図２に示す基数ツリー内において索引ノード番号を基に対応するノードを見つけ、新しいメモリページを申請し、その後、当該ノードの全てのレコードを遍歴し、各レコードの示すページキャッシュにおけるデータセグメントについて、これらをページキャッシュから前記新しいメモリページにコピーし、索引ノード番号、ページ番号、ページ内のオフセット量、データセグメントの長さなどの値を含む目下のレコード情報も併せて前記新しいメモリページにコピーしてから、レコード構造を図２のデータ構造から削除する。そして、図４を参照すると、前記新しいメモリページの内容をフラッシュメモリバッファエリアに順に書き込み、当該ファイルの全てのレコードの処理が完了するまで上記過程を繰り返す。
【００４２】
任意で、フラッシュメモリバッファエリアに書き込まれた新しいメモリページの内容が１ページ未満またはメモリページサイズの整数倍でない場合、新しいメモリページの内容が１ページを満たすかまたはメモリページサイズの整数倍になるように無意味データを補填する。
【００４３】
任意で、図５を参照すると、裏込めモジュール１４は、同期モジュール１３の通知を受信した時、まず、図２に示すデータ構造を遍歴し、そのうちの各ノードに対して、そのすべてのレコードを再び遍歴し、各レコードはページキャッシュにおけるメモリページを指し、これらの、レコードによって示されるメモリページを全て汚れとして標記し、参照カウントからを１を引く（書き込み要求を受信した時に、レコードを形成し、メモリページを強制的に保存するために、レコードが示すメモリページの参照カウントに１を加える）ように設けられ、その後、図２のデータ構造の中から当該レコードを削除し、１つのノードにおける全てのレコードの処理が完了した時に当該ノードを基数ツリーから削除する。基数ツリーにおける全てのノードの処理が完了したあと、バッファエリア全体を消去する。
【００４４】
任意で、図６を参照すると、フラッシュメモリファイルシステムの再起動時に、フラッシュメモリバッファエリア内に汚データがあるかどうかを検出するように設けられる回復モジュール１５をさらに備え、
フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアの全ての汚データを読み出し、各汚データを基に前記メモリキャッシュの内容を更新する。
【００４５】
突然の漏電などのアクシデントが発生した場合、システム障害の復旧が必要となる。任意で、図７に示すように、フラッシュメモリファイルシステムの再起動時に、回復モジュール１５はフラッシュメモリバッファエリア内に汚データがあるかどうかを検出し、フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアから全てのレコードを読み出し、そのうちの各レコードについて、その中の索引ノード番号とページ番号に基づいて、ファイルシステムエリアから該当データ（当該データは古いデータである）を読み出し、ページ内のオフセット値に従って、レコード内の内容をページキャッシュの対応ページにコピーし、全てのレコードの処理が完了するまで上記過程を繰り返す。このとき、システム全体は最新の状態に戻っており、故障回復過程は終了する。
【００４６】
図８に示すように、本発明の実施例では、
ファイルシステムの作成時に、フラッシュメモリをファイルシステムエリアとフラッシュメモリバッファエリアとに分けるステップ８０１と、
書き込まれるデータがあり、かつ書き込まれるデータ量が、メモリキャッシュに書き込まれた、データの粒度に従って標記する必要のあるデータ量のサイズを表示するための、予め設定されたマーク閾値以下の場合に、メモリキャッシュにおいて、書き込みデータを汚データとして標記するステップ８０２と、
データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込むステップ８０３と、
フラッシュメモリバッファエリアがフルになった時にフラッシュメモリバッファエリアにおける汚データを読み出してファイルシステムエリアに書き込み、フラッシュメモリバッファエリアを消去するステップ８０４とを含む、フラッシュメモリファイルシステムのデータ管理方法をさらに提供する。
【００４７】
なお、本発明の実施例における汚データとは、プロセスによって修正されたメモリキャッシュ内のデータを意味する。ファイルシステムはページをメモリキャッシュの単位とし、プロセスがメモリバッファ内のデータを修正した場合、当該ページは汚ページとして標記される。本発明の実施例は、不要なデータの書き込みを避けるために、バイトを粒度として、前記書き込みデータを汚データとして標記する。
【００４８】
任意で、前記フラッシュメモリバッファエリアのサイズは、ユーザによって指定されるか、またはシステムによって予め設定される。
【００４９】
任意で、ユーザによってフラッシュメモリバッファエリアのサイズが指定されると、ファイルシステムを作成してマウントする時に、ユーザが伝達するバッファエリアのサイズパラメータに基づいて、フラッシュメモリデバイスに単独のエリアを分割してバッファエリアとする。ファイルシステムが物理的空間割り当てを行う場合、割り当てられた空間はこのフラッシュメモリバッファエリア内にないため、フラッシュメモリバッファエリアはファイルシステムによって検索されない。
【００５０】
任意で、前記フラッシュメモリバッファエリアが第１のフラッシュメモリバッファエリアと、第２のフラッシュメモリバッファエリアとを含み、
データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第１のフラッシュメモリバッファエリアに書き込み、
第１のフラッシュメモリバッファエリアがフルになった時に、第２のフラッシュメモリバッファエリアを目下のバッファエリアとし、データを同期する必要がある場合に、書き込みデータが使用するのに用い、同時に、第１のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第１のフラッシュメモリバッファエリアを消去し、
第２のフラッシュメモリバッファエリアがフルになった時に、第１のフラッシュメモリバッファエリアを目下のバッファエリアとし、データを同期する必要がある場合に、書き込みデータが使用するのに用い、同時に、第２のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第２のフラッシュメモリバッファエリアを消去する。２つのフラッシュメモリバッファエリアを設けることにより、システムがその中の１つのフラッシュメモリバッファエリアを裏込めする期間において、別のバッファエリアが目下のバッファエリアとして機能し、期間の同期動作は順に他のバッファエリア内に書き込まれるため、裏込めによってシステム全体が停止し待機するという状況にはならず、２つのバッファエリアを交互に使うことで、システムの正常運行が保証される。
【００５１】
任意で、前記データ管理方法は、書き込まれるデータがあり、かつ書き込まれるデータ量がマーク閾値を上回る時、従来の入出力（ＩＯ）パスで処理を行うことをさらに含む。
【００５２】
本発明の一実施例において、前記従来のＩＯパスに従って行われる処理は、書き込みデータをページキャッシュに書き込み、データに対応するページを汚ページとして標記し、それから戻ることを含む。
【００５３】
任意で、前記メモリキャッシュはページキャッシュである。
任意で、前記マーク閾値のサイズは、具体的な読み取り加速プロセスに従って設定してよい。例えば、マーク閾値をメモリページサイズの半分（４０９６＊５０％＝２０４８バイト）、またはメモリページサイズの８０％（４０９６＊８０％＝３２７６.８バイト）に設定することができる。
【００５４】
任意で、前記メモリキャッシュにおいて、書き込みデータを汚データとして標記することは、書き込みデータに対応するファイルの索引ノード番号（inode number）、データセグメントのあるページ番号（page number）、ページ内のオフセット量（page offset）、データセグメントの長さ（length）およびデータセグメントの内容（data）をレコード（record）にパッケージすることを含み（即ち、〈inode number、page number、page offset、length、data〉の形式）、予め設定された汚データリストにレコードを追加するとともに、該当ページのキャッシュページの参照カウントに１を加える。
【００５５】
なお、本発明の実施例は、予め設定された汚データリストを使用して汚データを標記してよく、他の方法で汚データを標記してもよい。前記の汚データリストは、配列、ツリーリスト、連結リストなどの任意のデータ構造を使用することができる。
【００５６】
なお、本発明実施例のデータ管理方法は、書き込みデータを汚データリストに追加する時、該当ページのキャッシュページを汚ページとしてマークするのではなく、該当ページのキャッシュページの参照カウントに強制的に１を加え、これによりページキャッシュの書き込みデータがフラッシュメモリデバイスに書き込まれないようにして、このページ分のキャッシュページを強制的に保存して、高速読み取りを可能にする。
【００５７】
任意で、前記レコード内のデータセグメントの内容は、データセグメントの具体的な内容であってよく、ページキャッシュに対応するページを指すデータポインター（data pointer）であってもよい。
【００５８】
任意で、前記データ管理方法は、基数ツリーおよびチェーンテーブルを使用して、同じファイルのすべてのレコードを構成し管理する。ラディックスツリーを使うのは検索を便利にするためで、チェーンを使うのは遍歴するのに便利であるからである。ラディックスツリー（radix_tree）は、あまり一般的ではないデータ構造で、Linuxファイルシステムの記憶方式の一種であり、ツリー構造は主に、ツリーのルートノードを指すルートポイント（root）、空いているノードチェーンを指すフリーポイント（free）、アイドルメモリブロックを指すスタートポイント（start）という３つのポイントを含み、各使用中のノードは、parent、left、rightポイントを使用して互いに接続され、空いているノードは、rightポイントを介してリンクテーブルに接続されている。索引ノード（inode）は、多くの種類のUnixファイルシステムのデータ構造の一種であり、各索引ノードはファイルシステムの１つのファイルシステムオブジェクトの元の情報データを保存しているが、データコンテンツまたはファイル名は含まれていない。
【００５９】
図２に示すように、本発明実施例のファイルシステムは索引ノード番号を索引とした基数ツリーAを維持する。ノード１０１はファイル１を表し、ノード１０２はファイル２を表し、ノード１０３はファイル３を表す。ファイル１、ファイル２、ファイル３はそれぞれ基数ツリーＢ１、基数ツリーＢ２、基数ツリーＢ３と呼ばれる１つの基数ツリーを維持している。基数ツリーＢ１を例として述べると、前記基数ツリーＢ１はページ番号を索引とし、ノード１０１１はレコード１を表し、ノード１０１２はレコード２を表し、ノード１０１３はレコード３を表し、ノード１０１４はレコード４を表し、ノード１０１５はレコード５を表す。
【００６０】
各レコードには、索引ノード番号、ページ番号、ページ内のオフセット量、データセグメントの長さおよびページキャッシュに対応するページを指すデータポインターという５つの要素を含み〈即ち、inode number、page number、offset、data pointer〉という形式）、遍歴するのに便利なように、同一ファイルの全てのレコードも連結リストで連結する。図２に示すように、本発明実施例のファイルシステムは索引ノード番号を索引として、対応するノード１０１がファイルを表す基数ツリーを維持し、遍歴するのに便利なように、基数ツリーにおける全てのノード１０１を連結リストで連結する。当該基数ツリーの各ノードも１つの基数ツリーを維持し、ページ番号を索引として、各ノードはあるページのレコードを表している。各レコードには、索引ノード番号、ページ番号、ページ内のオフセット量、データセグメントの長さおよびページキャッシュに対応するページを指すデータポインターという５つの要素を含み（即ち、〈inode number、page number、offset、data pointer〉という形式）、遍歴するのに便利なように、同一ファイルの全てのレコードも連結リストで連結する。
【００６１】
書き込まれるデータがある場合、今回の書込み操作の索引ノード番号を基に図２の基数ツリー内で検索し、対応するノードが見つからなければ、新しくノードを作成し、これを基数ツリーとチェーンノードの連結リストに挿入し、当該ノードの基数ツリーにおいて今回の書き込み操作に関するページ番号を索引として対応するレコードを検索する。対応するレコードが見つからなければ、新しくレコードを作成し、この索引ノード番号、ページ番号、ページ内のオフセット量、データセグメントの長さおよびメモリページポインターを相応値に割り振る。対応するレコードが見つかれば、２つのレコードをまとめる必要があり、索引ノード番号、ページ番号、メモリページのポインターは変わらず、ページ内のオフセット量、データセグメントの長さを以下の通り更新する。
【００６２】
new offset = min（old offset，current offset）
new length =max（old offset + old length，current offset + current length）- new offset
そのうち、new offsetは新レコードのページ内のオフセット値、old offsetは元レコードのページ内のオフセット値、current offsetは目下の書き込み操作のページ内のオフセット値、new lengthは新レコードのデータセグメントの長さ、old lengthは元レコードのデータセグメントの長さ、current lengthは目下の書き込み操作のデータセグメントの長さを表す。上記状況を基に新レコードの１つまたは複数項の値を算出した後、これを基数ツリーと連結リストに挿入する。そして、ページキャッシュにおけるメモリページを引き続き更新するが、ファイルシステムにおいて当該メモリページの全ページをフラッシュメモリデバイスに書き込まないように、システムは当該ページを汚れとして標記しない。ページが汚れとして標記されないため、ファイルシステムによって随時回収されてしまう恐れがあり、データの効率的な読み取りと一致性を維持するために、メモリページの参照カウントに強制的に１を加え、回収されないようにする。このようにして、後続の読み取り操作は、ページキャッシュにおけるページを通して引き続き読み取られる。
【００６３】
任意で、同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込むことは、書き込みデータに対応するファイルの索引ノード番号を基に、当該ファイルの全てのレコードを検索し、新しいメモリページを申請し、複数のレコードの内容を順に前記新しいメモリページにコピーし、前記新しいメモリページにおける内容を順にフラッシュメモリバッファエリアに書き込むことを含む。
【００６４】
任意で、図３に示すように、データを同期する必要がある場合に、図２に示す基数ツリー内において索引ノード番号を基に対応するノードを見つけ、新しいメモリページを申請し、その後、当該ノードの全てのレコードを遍歴し、各レコードの示すページキャッシュにおけるデータセグメントについて、これらをページキャッシュから前記新しいメモリページにコピーし、索引ノード番号、ページ番号、ページ内のオフセット量、データセグメントの長さなどの値を含む目下のレコードの情報も併せて前記新しいメモリページにコピーしてから、レコード構造を図２のデータ構造から削除する。そして、図４を参照すると、前記新しいメモリページの内容をフラッシュメモリバッファエリアに順に書き込み、当該ファイルの全てのレコードの処理が完了するまで上記過程を繰り返す。
【００６５】
任意で、フラッシュメモリバッファエリアに書き込まれた新しいメモリページの内容が１ページ未満またはメモリページサイズの整数倍でない場合、新しいメモリページの内容が１ページを満たすかまたはメモリページサイズの整数倍になるように無意味データを補填する。
【００６６】
任意で、目下のバッファエリアがフルになった時、図５を参照すると、まず、図２に示すデータ構造を遍歴し、そのうちの各ノードに対して、そのすべてのレコードを再び遍歴し、各レコードは、ページキャッシュのメモリページを指し、これらの、レコードによって示されるメモリページを全て汚ページとして標記し、参照カウントからを１を引き（書き込み要求を受信した時に、レコードを形成し、メモリページを強制的に保存するために、レコードが示すメモリページの参照カウントに１を加える）、汚ページをファイルシステムエリア内に書き込み、その後、図２のデータ構造の中から当該レコードを削除し、１つのノードにおける全てのレコードの処理が完了した時に当該ノードを基数ツリーから削除する。基数ツリーにおける全てのノードの処理が完了したあと、バッファエリア全体を消去する。
【００６７】
任意で、前記データ管理方法は、フラッシュメモリファイルシステムの再起動時に、フラッシュメモリバッファエリア内に汚データがあるかどうかを検出し、
フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアの全ての汚データを読み出し、各汚データを基に前記メモリキャッシュの内容を更新することをさらに含む。
【００６８】
突然の漏電などのアクシデントが発生した場合、システム障害の復旧が必要となる。任意で、図７に示すように、フラッシュメモリファイルシステムの再起動時に、フラッシュメモリバッファエリア内に汚データがあるかどうかを検出し、フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアから全てのレコードを読み出し、そのうちの各レコードについて、その中の索引ノード番号とページ番号に基づいて、ファイルシステムエリアから該当データ（当該データは古いデータである）を読み出し、ページ内のオフセット値に従って、レコード内の内容をページキャッシュの対応ページにコピーし、全てのレコードの処理が完了するまで上記過程を繰り返す。このとき、システム全体は最新の状態に戻っており、故障回復過程は終了する。
【００６９】
本発明の実施例のフラッシュメモリファイルシステム及びそのデータ管理方法は、汚データを標記してまとめてからフラッシュメモリに書き込むことにより、不要なデータ書き込みを回避し、同期動作の遅延を低減し、フラッシュメモリの寿命を延ばしており、
任意で、第１のフラッシュメモリバッファエリアと第２のフラッシュメモリバッファエリアを設けることにより、システムがその中の１つのフラッシュメモリバッファエリアを裏込めする期間において、別のバッファエリアが目下のバッファエリアとして機能し、期間の同期動作は順に他のバッファエリア内に書き込まれるため、裏込めによってシステム全体が停止し待機するという状況にはならず、２つのバッファエリアを交互に使うことで、システムの正常運行が保証される。
【００７０】
本発明実施例では、コンピュータが実行可能な指令を記憶し、前記コンピュータが実行可能な指令がプロセッサによって実行される時に、上記実施例の方法を実現する、コンピュータ読み取り可能な記憶媒体をさらに提供する。
【００７１】
上記で公開された方法のすべてまたはあるステップ、システム、デバイス内の機能モジュール/ユニットは、ソフトウェア、ファームウェア、ハードウェア、およびそれらの適切な組み合わせで実施されてもよいということを当業者は理解することができる。ハードウェアの実施の形態では、上述した機能モジュール/ユニット間の区分は、必ずしも物理的ユニットの区分に対応しているとは限らない。例えば、１つの物理的な部品は、複数の機能を有してよく、あるいは、１つの機能またはステップは、いくつかの物理的な部品が共同で実行するものであってもよい。あるモジュールまたはすべての部品は、デジタル信号プロセッサまたはマイクロプロセッサのようなプロセッサにより実行されるソフトウェアとして実施されてよく、またはハードウェアとして実施されてもよく、または専用集積回路などの集積回路として実施されてもよい。このようなソフトウェアは、コンピュータ読み取り可能な媒体に分布することができ、コンピュータ読み取り可能な媒体は、コンピュータ記憶媒体（または非一時的媒体）および通信媒体（または一時的媒体）を含んでよい。当業者が周知のように、コンピュータ記憶媒体という技術用語は、情報を記憶するための（コンピュータ読み取り可能な指令、データ構造、プログラムモジュールまたは他のデータなど）全ての方法または技術で実施される揮発性および不揮発性、リムーバブルおよびリムーバブルでない媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多機能ディスク（DVD）または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置を含むが、これらに限定されず、あるいは所望の情報を記憶するために使用され、かつコンピュータによってアクセス可能なあらゆる媒体である。さらに、通信媒体が、一般的に、コンピュータ読み取り可能な指令、データ構造、プログラムモジュール、または搬送波あるいは他の伝送機構のような変調データ信号における他のデータを含み、全ての情報伝送媒体を含むことができるということは当業者にとって公知である。
【００７２】
上記は本発明の選択可能な実施例に過ぎず、本発明を限定するものではない。当業者にとって、本発明は様々な変更および変化があってよい。本発明の精神及び原則の範囲内において、なされた全ての修正、均等置換、改善等は、いずれも本発明の請求範囲内に含まれる。当業者は、上記方法における全てまたは一部のステップが、読み取り専用メモリ、磁気ディスク、または光ディスクなどのコンピュータで読み取り可能な記憶媒体に記憶できるプログラムによって、関連するハードウェアの完成を指示することができると理解することができる。任意で、上記実施例の全部または一部のステップは、１つまたは複数の集積回路を使用して実現してよく、これに応じて、上記実施例の各モジュール/モジュールは、ハードウェアとして実現してよく、ソフトウェア機能モジュールとして実現してもよい。本願は、いかなる特定の形態のハードウェアとソフトウェアの組み合わせにも限定されない。
【産業上の利用可能性】
【００７３】
［産業上の実用性］
本発明の実施例は、不要なデータの書き込みを回避することで、同期操作の遅延を低減し、フラッシュメモリの寿命を向上させ、さらには、２つのバッファエリアを交互に使用することで、システムの正常運転を保証している。
【図１】
0006920448.tif 000002
【図２】
0006920448.tif 000003
【図３】
0006920448.tif 000004
【図４】
0006920448.tif 000005
【図５】
0006920448.tif 000006
【図６】
0006920448.tif 000007
【図７】
0006920448.tif 000008
【図８】
0006920448.tif 000009