(57)【要約】【課題】メモリサイズが小さいシステムに好適なファイルシステムを実現する。【解決手段】ファイル管理システム２０は、ファイルデータが格納されるメモリ空間であるデータ領域２２と、ファイルデータに関する属性情報が格納されるメモリ空間である管理領域２４を備える。データ領域２２は、複数のセクタに分割されており、１つのファイルデータは、連続するセクタに格納される。１つのファイルデータがデータ領域２２に格納される場合、管理領域２４には、当該ファイルデータの識別名称と、当該ファイルが格納された連続するセクタの先頭位置を示す１つの属性情報が格納される。【選択図】図２
2020135656.tif 000002
【特許請求の範囲】
【請求項１】
ファイルデータが格納されるメモリ空間であるデータ領域と、ファイルデータに関する属性情報が格納されるメモリ空間である管理領域と、を備え、
前記データ領域は、複数のセクタに分割されており、１つのファイルデータは、連続するセクタに格納され、
前記１つのファイルデータが前記データ領域に格納される場合、前記管理領域には、前記１つのファイルデータの識別名称と、前記連続するセクタの先頭位置とを示す１つの属性情報が格納されることを特徴とするファイル管理システム。
【請求項２】
複数の管理領域を書き換え可能なＲＯＭに備え、
第１の管理領域に格納された属性情報がＲＡＭに読み出され、当該属性情報が更新された場合、前記第１の管理領域とは異なる第２の管理領域に更新後の属性情報を格納することを特徴とする請求項１に記載のファイル管理システム。
【請求項３】
前記管理領域はＲＯＭに設けられ、
本ファイル管理システムの起動時に、前記管理領域に格納された属性情報をもとに、前記データ領域へのファイルデータの書き込み可否を判断するためのデータであって、前記データ領域の各セクタの使用状態を示すデータをＲＡＭに格納する生成部をさらに備えることを特徴とする請求項１または２に記載のファイル管理システム。
【請求項４】
前記データ領域に格納されたファイルデータを削除すべき場合、前記データ領域に格納されたファイルデータを消去せず残し、当該ファイルデータに対応する属性情報に削除したことを記録する削除部と、
前記データ領域に新たなファイルデータを格納すべき場合、削除したことが記録された属性情報が示すセクタに前記新たなファイルデータを格納する書込部と、
をさらに備えることを特徴とする請求項１から３のいずれかに記載のファイル管理システム。
【請求項５】
前記書込部は、前記新たなファイルデータの格納先として、削除したことが記録された属性情報が示すセクタよりも空き状態のセクタを優先して選択することを特徴とする請求項４に記載のファイル管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示はデータ処理技術に関し、特にファイル管理システムに関する。
【背景技術】
【０００２】
様々な機器が通信ネットワークに接続されるＩｏＴ（Internet of Things）が進展している。通信ネットワークに接続される家電製品やセンサ装置等に組み込まれるコンピュータシステム（組み込みシステムとも呼ばれる）では、マイクロコントローラ（ワンチップマイコンとも呼ばれる）が使用されることがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４７４５３３７号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＰＣ等と同様に、組み込みシステムにおいても、ファイルシステムが利用できることのメリットは大きい。しかし、マイクロコントローラのメモリサイズは、大きくても数ＭＢである。そのため、組み込みシステムにおいて従来のファイルシステムを利用することは困難であった。
【０００５】
本開示はこうした状況に鑑みてなされたものであり、１つの目的は、メモリサイズが小さいシステムに好適なファイルシステムを実現することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様のファイル管理システムは、ファイルデータが格納されるメモリ空間であるデータ領域と、ファイルデータに関する属性情報が格納されるメモリ空間である管理領域と、を備える。データ領域は、複数のセクタに分割されており、１つのファイルデータは、連続するセクタに格納され、１つのファイルデータがデータ領域に格納される場合、管理領域には、１つのファイルデータの識別名称と、連続するセクタの先頭位置とを示す１つの属性情報が格納される。
【０００７】
なお、以上の構成要素の任意の組合せ、本開示の表現を、装置、方法、コンピュータプログラム、コンピュータプログラムを記録した記録媒体などの間で変換したものもまた、本開示の態様として有効である。
【発明の効果】
【０００８】
本開示によれば、メモリサイズが小さいシステムに好適なファイルシステムを実現することができる。
【図面の簡単な説明】
【０００９】
【図１】実施例のマイクロコントローラのハードウェア構成を示す図である。
【図２】実施例のファイル管理システムの機能ブロックを示すブロック図である。
【図３】管理領域に格納される管理情報の構成を示す図である。
【図４】管理情報のウェアレベリングを模式的に示す図である。
【図５】ファイル管理システムの起動時の動作を示すフローチャートである。
【図６】ファイルデータ書き込み時の動作を示すフローチャートである。
【図７】ファイルデータ削除時の動作を示すフローチャートである。
【図８】ファイルデータが削除された状態を模式的に示す図である。
【図９】図９（ａ）と図９（ｂ）は、ファイルデータを非連続のセクタ群に書き込む例を示す図である。
【発明を実施するための形態】
【００１０】
本開示における装置または方法の主体は、コンピュータを備えている。このコンピュータがプログラムを実行することによって、本開示における装置または方法の主体の機能が実現される。コンピュータは、プログラムにしたがって動作するプロセッサを主なハードウェア構成として備える。プロセッサは、プログラムを実行することによって機能を実現することができれば、その種類は問わない。プロセッサは、半導体集積回路（IC）、またはＬＳＩ（large scale integration）を含む１つまたは複数の電子回路で構成される。ここではＩＣやＬＳＩと呼んでいるが、集積の度合いによって呼び方が変わり、システムＬＳＩ、ＶＬＳＩ（very large scale integration）もしくはＵＳＬＩ（ultra large scale integration）と呼ばれるものであってもよい。ＬＳＩの製造後にプログラムされる、フィールド・プログラマブル・ゲート・アレイ（FPGA）、又はＬＳＩ内部の接合関係の再構成又はＬＳＩ内部の回路区画のセットアップができる再構成可能な論理デバイスも同じ目的で使うことができる。複数の電子回路は、１つのチップに集積されてもよいし、複数のチップに設けられてもよい。複数のチップは１つの装置に集約されていてもよいし、複数の装置に備えられていてもよい。プログラムは、コンピュータが読み取り可能なＲＯＭ、光ディスク、ハードディスクドライブなどの非一時的記録媒体に記録される。プログラムは、記録媒体に予め格納されていてもよいし、インターネット等を含む広域通信網を介して記録媒体に供給されてもよい。
【００１１】
実施例の概要を説明する。組み込みシステムで使用されるＣＰＵやＳｏＣ（System-On-a-Chip）（実施例ではマイクロコントローラ）は、ＲＯＭ（Read Only Memory）およびＲＡＭ（Random Access Memory）のサイズが非常に小さい。例えば、ＯＳにＬｉｎｕｘ（登録商標）を搭載する組み込みシステムでは、ＲＯＭおよびＲＡＭの最低サイズがそれぞれ６４ＭＢ程度となるが、マイクロコントローラにおけるＲＯＭおよびＲＡＭのサイズは大きくても２ＭＢ程度である。
【００１２】
ＰＣ等においてＲＯＭやＲＡＭのデータを活用する場合、ファイルシステムを使用して、ファイル単位でデータを管理することが一般的である。組み込みシステムにおいても、ＯＳがファイルシステムの機能を提供する場合（組み込みＬｉｎｕｘ等）、ファイル単位でデータを管理することができる。しかし、リアルタイムＯＳ等、ファイルシステムを前提としない軽量なＯＳを使用する場合、ＰＣ等で使用されているファイルシステムを移植するか、もしくは、ファイルシステムを使用せずにＲＯＭのデータを直に管理する必要がある。
【００１３】
ファイルシステムの従来例としてＦＡＴファイルシステムがある。ＦＡＴファイルシステムでは、種々の管理用データをユーザデータと同様にＲＯＭに配置し、また、「File Allocation Table（ＦＡＴ）」と呼ばれる参照テーブルを設ける。ＦＡＴは、ＲＯＭやハードディスク上で断片化したデータを１つのファイルとして管理するためのテーブルであるが、ＲＯＭの容量に応じて一定のメモリ領域を占有する。また、ＦＡＴファイルシステムでは、ファイルの他にディレクトリ（フォルダとも呼ばれる）の概念もあり、フォルダもファイルと同様に管理され、一定のメモリ領域を占有する。
【００１４】
ファイルシステムの別の従来例としてＪＦＦＳ２（Journaling Flash File System, version 2）がある。ＪＦＦＳ２は、組み込みシステムに搭載されるＬｉｎｕｘで使用されるファイルシステムであり、フラッシュＲＯＭ等の不揮発性メモリの使用を前提に作られている。フラッシュＲＯＭは、複数のセクタにより構成され、各セクタは、フラッシュＲＯＭのデータを消去する際の消去単位である。ＪＦＦＳ２では、１つのセクタに複数のノード（データの塊）が記録され、１つのファイルは複数のノードにより構成される。
【００１５】
ＲＯＭおよびＲＡＭのサイズが小さい組み込みシステムにおいてもファイルシステムが利用できることのメリットは大きい。ファイルシステムを使用することで、例えば、複数のプログラムで共通のＡＰＩ（Application Programming Interface）を利用してファイルを管理でき、また、データの追加や削除も容易になる。一方、従来のファイルシステム（上記のＦＡＴファイルシステムやＪＦＦＳ２等）は、ファイルやディレクトリの管理情報によりＲＯＭ領域を大量に使用するため、ＲＯＭおよびＲＡＭのサイズが小さい組み込みシステムでは使用が困難であった。
【００１６】
ＲＯＭおよびＲＡＭのサイズが小さい組み込みシステムでは、記憶すべきデータのサイズは、大きくても数百ＫＢと想定される。また、組み込みシステムでは、基本的には最初（例えば工場出荷時）にＲＯＭに書かれたデータがそのまま使い続けられ、データの追加や削除は稀である。また、組み込みシステムではファイルの種類も少ないため、ディレクトリや拡張子でファイルを分類する必要はない。これらを考慮し、実施例では、ＲＯＭおよびＲＡＭのサイズが小さい組み込みシステムに好適なファイルシステムを提案する。
【００１７】
図１は、実施例のマイクロコントローラ１０のハードウェア構成を示す。マイクロコントローラ１０は、ＣＰＵコア１２、ＲＯＭ１４、ＲＡＭ１６、入出力装置１８を備える。ＣＰＵコア１２は、各種データ処理を実行する。ＲＯＭ１４およびＲＡＭ１６は、ＣＰＵコア１２によるデータ処理において参照され、または更新されるデータを記憶する。実施例のＲＯＭ１４は、書き換え可能なフラッシュＲＯＭである。また、実施例のＲＡＭ１６は、ＳＤＲＡＭ（Synchronous Dynamic RAM）である。入出力装置１８は、外部機器とデータを送受信する。
【００１８】
図２は、実施例のファイル管理システム２０の機能ブロックを示すブロック図である。実施例のファイル管理システム２０は、図１のマイクロコントローラ１０に導入され、マイクロコントローラ１０においてファイル単位でデータを管理するためのファイルシステムを実現する。
【００１９】
ファイル管理システム２０は、ＲＯＭ１４内にデータ領域２２と管理領域２４とを備える。データ領域２２は、ファイルとして管理すべきデータであるファイルデータが格納されるメモリ空間である。データ領域２２は、複数の固定長のセクタに分割されており、１つのファイルデータは、原則として連続するセクタに格納される。実施例では、各セクタのサイズは、５１２バイトとする。
【００２０】
図２では、データ領域２２に、５つのファイルデータ（ファイルｆ１〜ファイルｆ５）が格納されている。ＲＯＭ１４では、ファイルデータはセクタ単位で配置される。例えば、ファイルｆ１は、セクタｓ０の先頭アドレスからセクタｓ２に亘り配置される。セクタｓ０およびセクタｓ１の全領域はファイルｆ１のデータで埋められ、ファイルｆ１の残りのデータが、セクタｓ２の一部または全領域に配置される
【００２１】
管理領域２４は、ファイルデータに関する属性情報が格納されるメモリ空間である。１つのファイルデータがデータ領域（典型的には連続する１つ以上のセクタ）に格納される場合、管理領域２４には、１つの属性情報（実施例では「管理ブロック」とも呼ぶ）が格納される。以下、１つのセクタまたは複数のセクタを総称して「セクタ群」とも呼ぶ。例外として、１つのファイルデータが非連続のセクタ群に分散して格納される場合、管理領域２４には、非連続のセクタ群ごとに１つの管理ブロックが格納される。
【００２２】
１つのファイルデータに対応する管理ブロックには、上記１つのファイルデータの識別名称（典型的にはファイル名）と、上記１つのファイルデータが格納された連続するセクタの先頭位置とが記録される。管理領域２４には、データ領域２２に格納された複数のファイルデータに対応する複数の管理ブロックを含む管理情報が格納される。
【００２３】
図２の管理領域２４には、管理ブロック２６ａ、管理ブロック２６ｂ、管理ブロック２６ｃ（これらを総称する場合「管理ブロック２６」と呼ぶ）が格納されている。管理ブロック２６ａは、ファイルｆ１に対応し、開始セクタとしてセクタｓ０が記録される。管理ブロック２６ｂは、ファイルｆ２に対応し、開始セクタとしてセクタｓ３が記録される。管理ブロック２６ｃは、ファイルｆ３に対応し、開始セクタとしてセクタｓ５が記録される。
【００２４】
図３は、管理領域２４に格納される管理情報の構成を示す。管理情報は、管理ヘッダ（１６バイト）と、管理されるファイル数分の管理ブロック（１つの管理ブロックのサイズは１６バイト）を含む。管理ブロックにおけるデータ種別「start sector」には、ファイルデータが格納される先頭位置、実施例では、ファイルデータが格納される先頭のセクタ番号が記録される。変形例として、「start sector」には、ファイルデータが格納されるセクタの先頭位置のアドレスが記録されてもよい。
【００２５】
管理ブロックにおけるデータ種別「status」には、ファイルデータの記憶に関する状態が記録され、例えば、使用中、空き、削除状態のいずれかが記録される。後述するが、「使用中」は、非連続のセクタ群に分割して格納されるファイルデータのどの部分に対応するかを示すよう細分化されてもよい。例えば、使用中（先頭）、使用中（中間）、使用中（末尾）のいずれかが記録されてもよい。
【００２６】
管理ブロックにおけるデータ種別「ext info」には、ファイルデータが連続するセクタ群に格納される場合（すなわち分割なし）、または、ファイルデータが非連続のセクタ群に分散して格納され（すなわち分割あり）かつファイルデータの先頭部分である場合、ファイルデータ（の先頭部分）が格納された連続するセクタ群のセクタ数が記録される。一方、ファイルデータが非連続のセクタに分散して格納され（すなわち分割あり）かつファイルデータの先頭以外の部分である場合、「ext info」には、ファイルデータの分割態様に応じた通し番号（すなわち複数の管理ブロックの何番目に該当するかを示す番号）が記録される。
【００２７】
管理ブロックにおけるデータ種別「size」には、ファイルデータが連続するセクタ群に格納される場合（すなわち分割なし）、または、ファイルデータが非連続のセクタ群に分散して格納され（すなわち分割あり）かつファイルデータの先頭部分である場合、ファイルデータの全体サイズが記録される。一方、ファイルデータが非連続のセクタ群に分散して格納され（すなわち分割あり）かつファイルデータの先頭以外の部分である場合、当該管理ブロックに対応するセクタ群に格納されたファイルデータのサイズが記録される。
【００２８】
実施例のファイル管理システム２０では、原則として、１つのファイルデータは連続するセクタ群に格納され、１つのファイルデータを管理するために必要な最低限の属性を含む１つの管理ブロックが管理領域２４に格納される。これにより、ＲＯＭ１４およびＲＡＭ１６のサイズが小さいマイクロコントローラ１０であっても、ＲＯＭ１４のデータをファイル単位で管理可能なファイルシステムであって、かつ、ＲＯＭ１４およびＲＡＭ１６の消費量や処理量が小さいファイルシステムを実現できる。
【００２９】
例えば、実施例のファイル管理システム２０では、管理領域２４のサイズが４ＫＢである場合、（４０９６／１６）−１  ＝  ２５５個のファイルデータを管理可能である。
【００３０】
図２に戻り、ファイル管理システム２０は、ＲＡＭ１６内にセクタマップ２８を備える。セクタマップ２８は、データ領域２２へのファイルデータの書き込み可否を判断するためのデータであって、かつ、データ領域２２の各セクタの使用状態を示すデータである。各セクタの使用状態は、使用中、空き、削除状態を含む。
【００３１】
ファイル管理システム２０は、制御部３０を備える。制御部３０は、起動処理部３１、読出部３２、書込部３３、管理領域更新部３４、削除部３５を含む。これら複数の機能ブロックに対応する複数のモジュールを含むコンピュータプログラムが記録媒体に格納され、その記録媒体を介して上記コンピュータプログラムがＲＯＭ１４にインストールされてもよい。または、外部装置がマイクロコントローラ１０へ上記コンピュータプログラムを送信して、上記コンピュータプログラムがＲＯＭ１４にインストールされてもよい。マイクロコントローラ１０のＣＰＵコア１２は、上記コンピュータプログラムをＲＡＭ１６に読み出して実行することにより、各機能ブロックの機能を発揮してもよい。
【００３２】
また、読出部３２、書込部３３、管理領域更新部３４、削除部３５は、ファイル管理システム２０が提供するファイルシステムを利用するアプリケーションプログラムに動的または静的にリンクされるライブラリプログラムとして実装されてもよい。
【００３３】
起動処理部３１は、ファイル管理システム２０の起動時の処理を実行する。起動処理部３１は、管理領域２４に格納された管理情報（すなわち複数の管理ブロックの情報）を読み出してＲＡＭ１６に格納する。また、起動処理部３１は、管理領域２４に格納された管理情報をもとに、データ領域２２の各セクタの使用状態を示すセクタマップ２８をＲＡＭ１６内に生成する。ＲＡＭ１６（実施例ではＳＤＲＡＭ）へのアクセス速度は、ＲＯＭ１４（実施例ではフラッシュＲＯＭ）へのアクセス速度より高速であるため、管理領域２４の管理情報と、セクタマップ２８をＲＡＭ１６に配置することで、ファイルデータの読み書きに要する時間を短縮することができる。
【００３４】
読出部３２は、データ領域２２に格納されたファイルデータの読み出しが要求された場合、ファイルデータの読み出し処理を実行する。書込部３３は、データ領域２２へのファイルデータの書き込みが要求された場合、ファイルデータの書き込み処理を実行する。削除部３５は、データ領域２２に格納されたファイルデータの削除が要求された場合、ファイルデータの削除処理を実行する。読み出し、書き込み、および削除の要求元は、典型的にはＣＰＵコア１２で実行中のアプリケーションプログラムとなる。
【００３５】
なお、削除部３５は、データ領域２２に格納されたファイルデータを削除すべき場合、データ領域２２に格納された当該ファイルデータを消去せず残し、すなわち、削除すべきファイルデータが格納されたセクタをイレースしない。一方、削除部３５は、削除すべきファイルデータに対応する管理ブロックに、ファイルデータを削除したことを記録する。具体的には、削除部３５は、削除すべきファイルデータの名称が記録された管理ブロックのstatusに「削除状態」を記録する。後述するが、書込部３３は、データ領域２２に新たなファイルデータを格納すべき場合、削除状態が記録された管理ブロックが示すセクタに新たなファイルデータを格納する。
【００３６】
管理領域更新部３４は、ＲＡＭ１６に格納された管理情報が更新された場合、更新前の管理情報が格納されたＲＯＭ１４の領域とは異なるＲＯＭ１４の領域に、更新後の管理情報を格納する。ＲＯＭ１４（実施例ではフラッシュＲＯＭ）には書き換え限度回数が存在するが、管理情報の書き込み領域を分散させること（すなわちウェアレベリング）により、ＲＯＭ１４の使用寿命を延ばすことができる。
【００３７】
図４は、管理情報のウェアレベリングを模式的に示す。管理領域更新部３４は、ＲＡＭ１６に読み出された管理情報が更新される都度、更新された管理情報を、第１管理領域２４ａ（セクタＮ）、第２管理領域２４ｂ（セクタＮ＋１）、第３管理領域２４ｃ（セクタＮ＋２）、第４管理領域２４ｄ（セクタＮ＋３）の順にサイクリックに格納する。なお、管理領域更新部３４は、更新後の管理情報を或るセクタ（例えばセクタＮ＋１）に格納する際、更新前の管理情報が格納されたセクタ（例えばセクタＮ）をイレースする。
【００３８】
以上の構成によるファイル管理システム２０の動作を説明する。
まず、ファイル管理システム２０の起動時の動作を説明する。図５は、ファイル管理システム２０の起動時の動作を示すフローチャートである。起動処理部３１は、複数の管理領域２４の中で管理情報が格納された管理領域２４から管理情報を読み出し、読み出した管理情報をＲＡＭ１６に格納する（Ｓ１０）。起動処理部３１は、ＲＡＭ１６に読み出した管理情報（管理領域２４の管理情報でもよい）をもとにセクタマップ２８を生成してＲＡＭ１６に格納する（Ｓ１２）。
【００３９】
次に、ファイルデータ読み込み時の動作を説明する。読出部３２は、ＣＰＵコア１２で実行中のコンピュータプログラムのプロセスから、ファイルデータの読み出し要求を受け付ける。このコンピュータプログラムは、ファイル管理システム２０が提供するファイルシステムを利用してＲＯＭ１４のファイルデータを読み出す処理が実装されたコンピュータプログラムである。読み出し要求では、読み出しの対象となるファイル名が指定される。
【００４０】
読出部３２は、ＲＡＭ１６に読み出された管理情報を参照して、読み出し要求で指定されたファイル名が記録された管理ブロック２６を特定し、その管理ブロック２６に記録された開始セクタとサイズを特定する。読出部３２は、特定したデータ領域２２の開始セクタから、特定したサイズ分のファイルデータを読み出し、読み出したファイルデータを要求元のプログラムへ出力する。
【００４１】
次に、ファイルデータ書き込み時の動作を説明する。図６は、ファイルデータ書き込み時の動作を示すフローチャートである。書込部３３は、ＣＰＵコア１２で実行中のコンピュータプログラムのプロセスから、ファイルデータの書き込み要求を受け付ける。このコンピュータプログラムは、ファイル管理システム２０が提供するファイルシステムを利用してＲＯＭ１４へファイルデータを書き込む処理が実装されたコンピュータプログラムである。書き込み要求では、ＲＯＭ１４への書き込み対象となるファイルデータについて、ＲＡＭ１６上でのアドレスとファイル名とが指定される。
【００４２】
書き込み要求を受け付けた書込部３３は、ＲＡＭ１６に読み込まれた管理情報を参照して、今回書き込むファイルデータ用の管理ブロック（典型的には新たな管理ブロック）を格納する空きが管理領域２４にあるか否かを確認する。また、書込部３３は、セクタマップ２８を参照して、ファイルデータを書き込み可能な空きセクタ（後述するように削除状態のセクタを含む）があるか否かを確認する。管理領域２４に空きがあり（Ｓ２０のＹ）、かつ、データ領域２２に空きセクタがあれば（Ｓ２２のＹ）、書込部３３は、書き込み対象となるファイルデータを、ＲＡＭ１６内に設けられたセクタキャッシュに書き込む（Ｓ２４）。
【００４３】
セクタキャッシュは、セクタ単位でデータを書き込むために設けられた、１つのセクタと同じサイズ（実施例では５１２バイト）の記憶領域である。セクタキャッシュは、ファイルデータの中の５１２バイト分のデータを一時的に記憶する。管理領域２４に空きがなく（Ｓ２０のＮ）、または、データ領域２２に空きセクタがなければ（Ｓ２２のＮ）、書込部３３は、要求元のプログラムへエラーを返し、書き込み処理を終了する（Ｓ２６）。
【００４４】
ファイルデータにおける最後のデータまでの書き込みが未完了であり（Ｓ２８のＮ）、セクタキャッシュに対する１セクタ分のデータの書き込みも未完了であれば（Ｓ３０のＮ）、Ｓ２４に戻り、セクタキャッシュへのファイルデータの書き込みを続ける。セクタキャッシュに対する１セクタ分のデータの書き込みが完了すると（Ｓ３０のＹ）、書込部３３は、セクタキャッシュに格納された１セクタ分のデータをデータ領域２２の空きセクタに書き込む（Ｓ３２）。書込部３３は、ファイルデータを書き込んだ空きセクタに対応するセクタマップ２８の領域に「使用中」を記録し（Ｓ３４）、Ｓ２４に戻る。すなわち、書込部３３は、セクタキャッシュに対してファイルデータの残りを書き込む。
【００４５】
セクタキャッシュに対してファイルデータにおける最後のデータまで書き込みが完了すると（Ｓ２８のＹ）、書込部３３は、セクタキャッシュに格納された１セクタ分のデータをデータ領域２２の空きセクタに書き込む（Ｓ３６）。書込部３３は、ファイルデータを書き込んだ空きセクタに対応するセクタマップ２８の領域に「使用中」を記録する（Ｓ３８）。ここでは、ファイルデータは、データ領域２２における連続するセクタ群に格納されたこととする。書込部３３は、書き込んだファイルデータに対応する管理ブロックであって、ファイル名や開始セクタ等を設定した管理ブロックを１つ生成し、ＲＡＭ１６に読み出された管理情報に当該管理ブロックを追加する（Ｓ４０）。
【００４６】
さらに書込部３３は、ＲＡＭ１６に読み出された管理情報における管理ヘッダを更新する（Ｓ４２）。例えば、書込部３３は、管理ヘッダにおけるファイル数をインクリメントする。管理領域更新部３４は、更新後の管理情報を、更新前の管理情報が格納された管理領域（例えば第１管理領域２４ａ）とは異なる管理領域（例えば第２管理領域２４ｂ）に格納する（Ｓ４４）。
【００４７】
次に、ファイルデータ削除時の動作を説明する。図７は、ファイルデータ削除時の動作を示すフローチャートである。削除部３５は、ＣＰＵコア１２で実行中のコンピュータプログラムのプロセスから、ファイルデータの削除要求を受け付ける。このコンピュータプログラムは、ファイル管理システム２０が提供するファイルシステムを利用してＲＯＭ１４からファイルデータを削除する処理が実装されたコンピュータプログラムである。削除要求では、削除対象となるファイルデータのファイル名が指定される。
【００４８】
削除部３５は、ＲＡＭ１６に読み出された管理情報を参照して、削除要求で指定されたファイル名が記録された管理ブロック（ここでは「対象管理ブロック」と呼ぶ）を特定する。削除部３５は、対象管理ブロックに記録された開始セクタおよびサイズをもとに、削除対象のファイルデータが格納されたデータ領域２２の１つ以上のセクタを特定する。削除部３５は、削除対象のファイルデータが格納された１つ以上のセクタの情報を「削除状態」とするようセクタマップ２８を更新する（Ｓ５０）。
【００４９】
また、削除部３５は、ＲＡＭ１６に読み出された管理情報における対象管理ブロックの「status」を削除状態に変更する（Ｓ５２）また、削除部３５は、ＲＡＭ１６に読み出された管理情報における管理ヘッダを更新し、例えば、管理ヘッダにおけるファイル数をデクリメントする（Ｓ５４）。管理領域更新部３４は、更新後の管理情報を、更新前の管理情報が格納された管理領域（例えば第１管理領域２４ａ）とは異なる管理領域（例えば第２管理領域２４ｂ）に格納する（Ｓ５６）。
【００５０】
図８は、ファイルデータが削除された状態を模式的に示す。データ領域２２のファイルｆ２を削除した場合、ファイルｆ２に対応する管理ブロック２６ｂには「削除状態」が記録され、かつ、セクタｓ３およびセクタｓ４に対応するセクタマップ２８の領域にも「削除状態」が記録される。ここで新たなファイルｆ６をデータ領域２２に格納する場合、実施例では、削除状態のセクタを再利用することより優先して、空きセクタの先頭（例えばセクタｓ１１）からファイルｆ６を格納する。
【００５１】
すなわち、書込部３３は、新たなファイルデータの格納先として、削除したことが記録された管理ブロック２６が示すセクタよりも空き状態のセクタを優先して選択する。これにより、データ領域２２の同じセクタに対する書き換え回数を低減し、データ領域２２の使用寿命を伸ばすことができる。なお、書込部３３は、削除したファイルｆ２に対応する管理ブロック２６ｂを、新たに追加するファイルｆ６用に再利用してもよい。この場合、管理ブロック２６ｂの「status」「ext info」「size」「name」をファイルｆ６にあわせて変更する一方、「start sector」は変更なしで使用することができる。
【００５２】
ファイル管理システム２０においてファイルデータの削除を繰り返すと、データ領域２２には「使用中」の領域と「削除状態」の領域が混在するようになる。空きセクタにファイルデータを書き込めなくなった場合、書込部３３は、削除状態のセクタを再利用する。例えば、書込部３３は、非連続のセクタ群に対して１つのファイルデータを書き込む。削除状態のセクタを有効活用することで、より多くのファイルデータをファイル管理システム２０で管理可能になる。
【００５３】
図９（ａ）と図９（ｂ）は、ファイルデータを非連続のセクタ群に書き込む例を示す。データ領域２２のセクタｓ３、セクタｓ４、セクタｓ７は使用中である。一方、データ領域２２のセクタｓ０〜セクタｓ２、セクタｓ５、セクタｓ６、セクタｓ８以降は、削除状態である。この例において、書き込むべきファイルｆ７は、８セクタを占有するサイズとする。
【００５４】
図９（ａ）に示すように、書込部３３は、セクタｓ０〜セクタｓ２にファイルｆ７の先頭部分を格納し、セクタｓ５とセクタｓ６にファイルｆ７の中間部分を格納し、セクタｓ８〜セクタｓ１０にファイルｆ７の末尾部分を格納する。書き込み先のセクタが削除状態の場合、そのセクタには削除対象のデータが消去されず残っているため、書込部３３は、そのセクタに対してイレース処理を実行後、そのセクタにデータを書き込む。
【００５５】
書込部３３は、非連続のセクタ群に対してファイルデータを書き込む場合、連続するセクタセクタ群ごとに１つの管理ブロック２６を割り当てる。図９（ａ）の例では、書込部３３は、管理ブロック２６ａと、管理ブロック２６ｂと、管理ブロック２６ｃを管理領域２４に格納する。管理ブロック２６ａは、ファイルｆ７の先頭部分（言い換えればセクタｓ０〜セクタｓ２）に対応し、その開始セクタにはセクタｓ０が記録される。管理ブロック２６ｂは、ファイルｆ７の中間部分（言い換えればセクタｓ５およびセクタｓ６）に対応し、その開始セクタにはセクタｓ５が記録される。管理ブロック２６ｃは、ファイルｆ７の末尾部分（言い換えればセクタｓ８〜セクタｓ１０）に対応し、その開始セクタにはセクタｓ８が記録される。
【００５６】
図９（ｂ）は、各管理ブロックに記録されるデータを示している。管理ブロック２６ａでは、先頭部分であることを示すフラグである「使用中（先頭）」がstatusに記録され、先頭部分のセクタ数（図９の例では「３」）がext infoに記録される。また、管理ブロック２６ａのsizeには、ファイルデータ全体のサイズが記録される。
【００５７】
管理ブロック２６ｂでは、中間部分であることを示すフラグである「使用中（中間）」がstatusに記録され、通し番号（図９の例では「１」）がext infoに記録される。また、管理ブロック２６ｂのsizeには、中間部分のセクタ数（図９の例では「２」）が記録される。ファイルｆ７の中間部分が格納されるセクタはその全領域がファイルｆ７のデータになるため、中間部分のセクタ数は、中間部分のデータサイズと実質的に同義である。
【００５８】
管理ブロック２６ｃでは、末尾部分であることを示すフラグである「使用中（末尾）」がstatusに記録され、通し番号（図９の例では「２」）がext infoに記録される。また、管理ブロック２６ｃのsizeには、使用サイズが記録される。最後のセクタ（図９の例ではセクタｓ１０）は一部領域が未使用の可能性があるため、管理ブロック２６ｃのsizeには、セクタ数でなく、末尾部分の実際のデータサイズが記録される。
【００５９】
図９（ａ）（ｂ）で示した断片化したファイルデータの読み出し処理を説明する。読出部３２は、ファイル名「test.bin」を指定した読み出し要求を受け付けると、管理領域２４の管理情報（実際にはＲＡＭ１６に読み出された管理情報、以下同じ。）を参照して、ファイル名に「test.bin」が記録され、かつ、statusに「使用中（先頭）」が記録された管理ブロック２６ａを特定する。読出部３２は、管理ブロック２６ａの開始セクタであるセクタｓ０から、ext infoに記録されたセクタ数分のデータを先頭部分のデータとして読み込む。
【００６０】
次に読出部３２は、管理領域２４の管理情報を参照して、ファイル名に「test.bin」が記録され、かつ、通し番号「１」が記録された管理ブロック２６ｂを特定する。読出部３２は、管理ブロック２６ｂの開始セクタであるセクタｓ５から、sizeに記録されたセクタ数分のデータを中間部分のデータとして読み込む。
【００６１】
次に読出部３２は、管理領域２４の管理情報を参照して、ファイル名に「test.bin」が記録され、かつ、通し番号「２」が記録された管理ブロック２６ｃを特定する。読出部３２は、管理ブロック２６ｃの開始セクタであるセクタｓ８から、sizeに記録された長さのデータを末尾部分のデータとして読み込む。読出部３２は、先頭部分のデータ、中間部分のデータ、および末尾部分のデータを合成することにより要求された「test.bin」のファイルデータを生成し、そのファイルデータを要求元のプログラムに返す。
【００６２】
以上、本開示を実施例をもとに説明した。この実施例は例示であり、各構成要素あるいは各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本開示の範囲にあることは当業者に理解されるところである。
【００６３】
上述した実施例および変形例の任意の組み合わせもまた本開示の実施の形態として有用である。組み合わせによって生じる新たな実施の形態は、組み合わされる実施例および変形例それぞれの効果をあわせもつ。また、請求項に記載の各構成要件が果たすべき機能は、実施例および変形例において示された各構成要素の単体もしくはそれらの連携によって実現されることも当業者には理解されるところである。
【００６４】
実施例および変形例に記載の技術は、以下の項目によって特定されてもよい。
［項目１］
ファイルデータが格納されるメモリ空間であるデータ領域（２２）と、ファイルデータに関する属性情報が格納されるメモリ空間である管理領域（２４）と、を備え、
前記データ領域（２２）は、複数のセクタに分割されており、１つのファイルデータは、連続するセクタに格納され、
前記１つのファイルデータが前記データ領域に格納される場合、前記管理領域には、前記１つのファイルデータの識別名称と、前記連続するセクタの先頭位置とを示す１つの属性情報が格納されることを特徴とするファイル管理システム（２０）。
［項目２］
複数の管理領域（２４）を書き換え可能なＲＯＭ（１４）に備え、
第１の管理領域（２４ａ）に格納された属性情報がＲＡＭ（１６）に読み出され、当該属性情報が更新された場合、前記第１の管理領域（２４ａ）とは異なる第２の管理領域（２４ｂ）に更新後の属性情報を格納することを特徴とする項目１に記載のファイル管理システム（２０）。
［項目３］
前記管理領域（２４）はＲＯＭ（１４）に設けられ、
本ファイル管理システム（２０）の起動時に、前記管理領域（２４）に格納された属性情報をもとに、前記データ領域（２２）へのファイルデータの書き込み可否を判断するためのデータであって、前記データ領域（２２）の各セクタの使用状態を示すデータ（２８）をＲＡＭ（１６）に格納する生成部（３１）をさらに備えることを特徴とする項目１または２に記載のファイル管理システム（２０）。
［項目４］
前記データ領域（２２）に格納されたファイルデータを削除すべき場合、前記データ領域（２２）に格納されたファイルデータを消去せず残し、当該ファイルデータに対応する属性情報に削除したことを記録する削除部（３５）と、
前記データ領域（２２）に新たなファイルデータを格納すべき場合、削除したことが記録された属性情報が示すセクタに前記新たなファイルデータを格納する書込部（３３）と、
をさらに備えることを特徴とする項目１から３のいずれかに記載のファイル管理システム（２０）。
［項目５］
前記書込部（３３）は、前記新たなファイルデータの格納先として、削除したことが記録された属性情報が示すセクタよりも空き状態のセクタを優先して選択することを特徴とする項目４に記載のファイル管理システム（２０）。
【符号の説明】
【００６５】
１０  マイクロコントローラ、  １４  ＲＯＭ、  １６  ＲＡＭ、  ２０  ファイル管理システム、  ２２  データ領域、  ２４  管理領域、  ３１  起動処理部、  ３３  書込部、  ３４  管理領域更新部、  ３５  削除部。
【図１】
2020135656.tif 000003
【図２】
2020135656.tif 000004
【図３】
2020135656.tif 000005
【図４】
2020135656.tif 000006
【図５】
2020135656.tif 000007
【図６】
2020135656.tif 000008
【図７】
2020135656.tif 000009
【図８】
2020135656.tif 000010
【図９】
2020135656.tif 000011