(57)【特許請求の範囲】
【請求項１】
フラッシュメモリにアクセスする複数のタスク毎に、起動を開始する起点時刻と、起動間隔とが設定されたタスク起動条件テーブルを記憶するタスク起動条件記憶手段と、
前記タスク起動条件テーブルに基づいて、前記フラッシュメモリの保守に関する保守処理の実行スケジュールを作成する保守処理スケジュール作成手段と、
前記作成された実行スケジュールに従って、前記保守処理を実行する保守処理実行手段と、を備え、
前記保守処理スケジュール作成手段は、現時点から、前記フラッシュメモリに対して何れの前記タスクもアクセスしない状態が継続する未アクセス時間を求め、該未アクセス時間を前記実行スケジュールに含め、
前記保守処理実行手段は、前記保守処理として、前記未アクセス時間に基づいて削除可能なセクタ数を算出し、算出した削除可能なセクタ数を限度として、前記フラッシュメモリに格納されているデータの削除を行う、
ことを特徴とするメモリ保守装置。
【請求項２】
前記保守処理実行手段は、前記保守処理として、ガベージコレクションを実行する、
ことを特徴とする請求項１に記載のメモリ保守装置。
【請求項３】
フラッシュメモリにアクセスする複数のタスク毎に、起動を開始する起点時刻と、起動間隔とが設定されたタスク起動条件テーブルに基づいて、前記フラッシュメモリの保守に関する保守処理の実行スケジュールを作成する保守処理スケジュール作成ステップと、
前記実行スケジュールに従って、前記保守処理を実行する保守処理実行ステップと、を有し、
前記保守処理スケジュール作成ステップでは、現時点から、前記フラッシュメモリに対して何れの前記タスクもアクセスしない状態が継続する未アクセス時間を求め、該未アクセス時間を前記実行スケジュールに含め、
前記保守処理実行ステップでは、前記保守処理として、前記未アクセス時間に基づいて削除可能なセクタ数を算出し、算出した削除可能なセクタ数を限度として、前記フラッシュメモリに格納されているデータの削除を行う、
ことを特徴とするメモリ保守方法。
【請求項４】
フラッシュメモリと、
他の装置からデータを取得し、前記フラッシュメモリに格納するデータ収集手段と、
前記フラッシュメモリに格納されているデータを読み出し、該読み出したデータを所定のネットワークを介して接続するサーバに送信するデータ転送手段と、
少なくとも、前記データ収集手段と前記データ転送手段のそれぞれ毎に、起動を開始する起点時刻と、起動間隔とが設定されたタスク起動条件テーブルを記憶するタスク起動条件記憶手段と、
前記タスク起動条件テーブルに基づいて、前記フラッシュメモリの保守に関する保守処理の実行スケジュールを作成する保守処理スケジュール作成手段と、
前記作成された実行スケジュールに従って、前記保守処理を実行する保守処理実行手段と、を備え、
前記保守処理スケジュール作成手段は、現時点から、前記フラッシュメモリに対して前記データ収集手段と前記データ転送手段の何れもアクセスしない状態が継続する未アクセス時間を求め、該未アクセス時間を前記実行スケジュールに含め、
前記保守処理実行手段は、前記保守処理として、前記未アクセス時間に基づいて削除可能なセクタ数を算出し、算出した削除可能なセクタ数を限度として、前記フラッシュメモリに格納されているデータの削除を行う、
ことを特徴とするデータ転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチタスク環境におけるメモリアクセス技術に関する。
【背景技術】
【０００２】
従来より、複数のタスクが共通のフラッシュメモリ（フラッシュＲＯＭともいう。）にアクセスする環境において、各タスクが効率よくフラッシュメモリにアクセスできるようにするための技術が、種々提案されている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平９−９７２０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、フラッシュメモリでは、上書き動作が行えないため、ガベージコレクションを適宜実行して、空き容量を確保する必要がある。ガベージコレクションでは、多数のセクタに対する読み込み、書き込み、及び削除が発生し、長時間、フラッシュメモリを占有する。このため、ガベージコレクションが、フラッシュメモリへのアクセスが混み合うタイミングで発生すると、各タスクにおける処理の遅延等を招き、ひいては、装置全体の性能低下をもたらす要因にもなり得る。
【０００５】
しかしながら、従来においては、フラッシュメモリへのアクセスの混み状況を勘案して、ガベージコレクション等のようなフラッシュメモリの保守処理を実行する有効な技術についての提案がなされていないのが実情である。
【０００６】
本発明は、上記実情に鑑みてなされたものであり、フラッシュメモリの保守処理を各タスクの実行に支障が出ないように実行するメモリ保守装置等を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明に係るメモリ保守装置は、
フラッシュメモリにアクセスする複数のタスク毎に、起動を開始する起点時刻と、起動間隔とが設定されたタスク起動条件テーブルを記憶するタスク起動条件記憶手段と、
前記タスク起動条件テーブルに基づいて、前記フラッシュメモリの保守に関する保守処理の実行スケジュールを作成する保守処理スケジュール作成手段と、
前記作成された実行スケジュールに従って、前記保守処理を実行する保守処理実行手段と、を備え、
前記保守処理スケジュール作成手段は、現時点から、前記フラッシュメモリに対して何れの前記タスクもアクセスしない状態が継続する未アクセス時間を求め、該未アクセス時間を前記実行スケジュールに含め、
前記保守処理実行手段は、前記保守処理として、前記未アクセス時間に基づいて削除可能なセクタ数を算出し、算出した削除可能なセクタ数を限度として、前記フラッシュメモリに格納されているデータの削除を行う、ことを特徴とする。
【０００８】
また、本発明に係るデータ転送装置は、
フラッシュメモリと、
他の装置からデータを取得し、前記フラッシュメモリに格納するデータ収集手段と、
前記フラッシュメモリに格納されているデータを読み出し、該読み出したデータを所定のネットワークを介して接続するサーバに送信するデータ転送手段と、
少なくとも、前記データ収集手段と前記データ転送手段のそれぞれ毎に、起動を開始する起点時刻と、起動間隔とが設定されたタスク起動条件テーブルを記憶するタスク起動条件記憶手段と、
前記タスク起動条件テーブルに基づいて、前記フラッシュメモリの保守に関する保守処理の実行スケジュールを作成する保守処理スケジュール作成手段と、
前記作成された実行スケジュールに従って、前記保守処理を実行する保守処理実行手段と、を備え、
前記保守処理スケジュール作成手段は、現時点から、前記フラッシュメモリに対して前記データ収集手段と前記データ転送手段の何れもアクセスしない状態が継続する未アクセス時間を求め、該未アクセス時間を前記実行スケジュールに含め、
前記保守処理実行手段は、前記保守処理として、前記未アクセス時間に基づいて削除可能なセクタ数を算出し、算出した削除可能なセクタ数を限度として、前記フラッシュメモリに格納されているデータの削除を行う、ことを特徴とする。
【発明の効果】
【０００９】
本発明は、フラッシュメモリの保守に関する保守処理の実行スケジュールを各タスクの起動条件を勘案して作成するため、フラッシュメモリの保守処理を各タスクの実行に支障が出ないように実行することが可能になる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態に係るデータ転送装置の構成を示すブロック図である。
【図２】図１のデータ記憶部のメモリ構造を概略的に示す図である。
【図３】タスク起動条件テーブルの一例を示す図である。
【図４】データ収集部の処理手順を示すフローチャートである。
【図５】データ転送部の処理手順を示すフローチャートである。
【図６】ＧＣ実行部の処理手順を示すフローチャートである。
【図７】ＧＣ実行部によって実行されるＧＣ処理の手順を示すフローチャートである。
【図８】バックアップデータ削除部の処理手順を示すフローチャートである。
【図９】バックアップデータ削除部によって実行されるバックアップデータ削除処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について図面を参照して詳細に説明する。
【００１２】
図１は、本実施形態に係るデータ転送装置１０の構成を示すブロック図である。データ転送装置１０は、例えば、太陽光発電システムにおける複数のパワーコンディショナ等と接続し、各パワーコンディショナ等の運転状態に関するデータ（ログデータ）を収集する装置（いわゆる、データロガー）である。データ転送装置１０は、収集したログデータを、インターネット等の広域ネットワークＮを介して、データ収集サーバ２０に転送する。
【００１３】
データ転送装置１０は、ハードウェア的には、何れも図示しないが、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、フラッシュメモリ、メモリインタフェース、ユーザインタフェース、パワーコンディショナ等とのインタフェース、広域ネットワークＮを介してデータ通信を行うためのインタフェース等から構成される。
【００１４】
データ転送装置１０は、機能的には、データ収集部１０１と、データ記憶部１０２と、データ転送部１０３と、メモリアクセス管理部１０４と、タスク起動条件記憶部１０５と、タスク起動指令部１０６と、保守処理スケジュール作成部１０７と、ＧＣ実行部１０８と、バックアップデータ削除部１０９と、を備える。なお、タスク起動条件記憶部１０５、保守処理スケジュール作成部１０７、ＧＣ実行部１０８及びバックアップデータ削除部１０９は、本発明のメモリ保守装置を構成する。
【００１５】
上記の各構成部の機能は、データ転送装置１０に実装されている所定のＯＳ（Operating System）の制御下で、ＣＰＵ等が、ＲＯＭ等に記憶されている１又は複数の所定のプログラムを実行することで実現される。
【００１６】
データ収集部１０１（データ収集タスク）は、太陽光発電システムにおける所定装置（例えば、パワーコンディショナ、太陽電池、各種センサ等）から送信された発電量等のログデータを受信する。データ収集部１０１は、受信したログデータをデータ記憶部１０２に保存する。
【００１７】
データ記憶部１０２は、フラッシュメモリで構成される。図２に示すように、データ記憶部１０２のメモリ領域は、複数のブロック（消去ブロック）で構成される。消去ブロックは、データの消去における処理単位である。本実施形態では、１消去ブロックのサイズは、１２８ＫＢ（キロバイト）であり、データ記憶部１０２の全容量は、８ＭＢ（メガバイト）である。データ記憶部１０２用のファイルシステム（例えば、ＦＡＴ（File Allocation Table）等の公知のファイルシステム）は、ＯＳにより構築され、管理される。
【００１８】
各消去ブロックは、ファイルシステムにおけるデータの管理単位であるセクタで分割されている。本実施形態では、１セクタのサイズは、５１２バイトである。セクタは、「セクタ番号」領域と、「セクタ状態」領域と、「データ」領域と、から構成される。
【００１９】
「セクタ番号」領域には、当該ファイルシステムが管理するセクタ毎に割り振られた番号（セクタ番号）が格納される。
【００２０】
「セクタ状態」領域には、当該セクタの利用状態（セクタ状態）を示す情報が格納される。この「セクタ状態」領域を参照することで、当該セクタが、“未使用”、“使用中”又は“削除”の何れかの状態であるかが判る。例えば、ブロックが消去された直後は、当該ブロックの全てのセクタは、“未使用”を示す。「データ」領域には、「セクタ番号」領域に格納されているセクタ番号に対応するデータが格納される。
【００２１】
図１に戻り、データ転送部１０３（データ転送タスク）は、データ記憶部１０２からログデータを読み出し、読み出したログデータを広域ネットワークＮを介して、データ収集サーバ２０に送信する。
【００２２】
メモリアクセス管理部１０４は、例えば、セマフォ等により構成され、複数のタスク（ここでは、データ収集部１０１とデータ転送部１０３）によるデータ記憶部１０２の同時アクセスを禁止する排他制御を行う。
【００２３】
タスク起動条件記憶部１０５は、各タスク（データ収集部１０１、データ転送部１０３）の起動条件が設定されたタスク起動条件テーブルを記憶する。本実施形態のタスク起動条件テーブルには、図３に示すように、各タスク毎に、起動を開始する起点時刻と、起動間隔と、が設定されている。
【００２４】
図３の例では、データ収集タスク（即ち、データ収集部１０１）が、毎日の午前０時に起動され、以降、５分間隔（即ち、０時５分、０時１０分、０時１５分、…）で起動されることが示されている。また、データ転送タスク（即ち、データ転送部１０３）が、毎日の午前０時３分に起動され、以降、１０分間隔（即ち、０時１３分、０時２３分、０時３３分、…）で起動されることが示されている。なお、タスク起動条件テーブルの内容は、初期設定時等において、ユーザにより外部から設定可能にしてもよい。
【００２５】
タスク起動指令部１０６は、タスク起動条件記憶部１０５に記憶されているタスク起動条件テーブルの内容に基づいて、何れかのタスク（データ収集部１０１又はデータ転送部１０３）を起動させる。
【００２６】
保守処理スケジュール作成部１０７は、タスク起動条件記憶部１０５に記憶されているタスク起動条件テーブルの内容に基づいて、データ記憶部１０２の保守に関する保守処理の実行スケジュールを作成する。本実施形態では、この保守処理には、後述するＧＣ実行部１０８が実行するガベージコレクション（ＧＣ）と、後述するバックアップデータ削除部１０９が実行するバックアップデータの削除処理が含まれる。
【００２７】
より詳細には、保守処理スケジュール作成部１０７は、ＧＣ実行部１０８又はバックアップデータ削除部１０９から実行スケジュール作成の要求を受けると、現在時刻を取得し、現時点から、データ記憶部１０２に対して何れのタスクもアクセスしない状態が継続する時間（未アクセス時間）を求める。そして、求めた未アクセス時間を実行スケジュールとして、要求元であるＧＣ実行部１０８又はバックアップデータ削除部１０９に返す。
【００２８】
ＧＣ実行部１０８は、データ収集部１０１において、データ記憶部１０２へのログデータの書き込みが完了する度に起動し、所定条件の下、保守処理スケジュール作成部１０７によって作成された実行スケジュールに従って、ＧＣを実行する。
【００２９】
バックアップデータ削除部１０９は、データ転送部１０３において、データ記憶部１０２から読み出されたログデータのデータ収集サーバ２０への転送が完了する度に起動し、所定条件の下、保守処理スケジュール作成部１０７によって作成された実行スケジュールに従って、データ記憶部１０２に保存されているバックアップデータを削除する。
【００３０】
次に、各構成部の動作について説明する。図４は、本実施形態におけるデータ収集部１０１の処理手順を示すフローチャートである。データ収集部１０１は、上述したように、タスク起動指令部１０６によって起動される。起動後、データ収集部１０１は、他の装置からのログデータを収集する処理を実行する（ステップＳ１０１）。
【００３１】
データ収集部１０１は、例えば、接続する全ての装置（例えば、パワーコンディショナ、太陽電池、各種センサ等）に対して、ログデータの送信要求メッセージを発行する。各装置は、この送信要求メッセージに応答して、それぞれが保持するログデータをデータ転送装置１０に送信する。データ収集部１０１は、各装置から送信されたログデータを受信し、受信したデータをＲＡＭ等に一時的に格納する。
【００３２】
次に、データ収集部１０１は、メモリアクセス管理部１０４に対して、データ記憶部１０２へのアクセスが可能であるか否かの問い合わせを行う（ステップＳ１０２）。その結果、メモリアクセス管理部１０４からアクセス不可の応答が返ってきた場合（ステップＳ１０２；ＮＯ）、データ収集部１０１は、所定時間、処理の実行を待機し（ステップＳ１０３）、再度、メモリアクセス管理部１０４に対して、上記の問い合わせを行う（ステップＳ１０２）。
【００３３】
一方、メモリアクセス管理部１０４からアクセス可の応答が返ってきた場合（ステップＳ１０２；ＹＥＳ）、データ収集部１０１は、メモリアクセス管理部１０４に対して、他のタスクによるデータ記憶部１０２へのアクセスを禁止する旨の要求を発行する（ステップＳ１０４）。これにより、他のタスクからのデータ記憶部１０２へのアクセスが禁止される。
【００３４】
次に、データ収集部１０１は、ＲＡＭに格納していたログデータをデータ記憶部１０２に書き込む（ステップＳ１０５）。それから、データ収集部１０１は、ＧＣ実行部１０８に対して、処理の実行を要求する。かかる要求に応答して、ＧＣ実行部１０８は、後述する処理を実行する（ステップＳ１０６）。
【００３５】
ＧＣ実行部１０８の処理が完了すると、データ収集部１０１は、メモリアクセス管理部１０４に対して、他のタスクによるデータ記憶部１０２へのアクセスを許可する旨の要求を発行し（ステップＳ１０７）、本処理を終了する。これにより、他のタスクからのデータ記憶部１０２へのアクセスが可能となる。
【００３６】
続いて、データ転送部１０３の処理について、図５のフローチャートを参照して説明する。データ転送部１０３も、上述したように、タスク起動指令部１０６によって起動される。起動後、データ転送部１０３は、メモリアクセス管理部１０４に対して、データ記憶部１０２へのアクセスが可能であるか否かの問い合わせを行う（ステップＳ２０１）。その結果、メモリアクセス管理部１０４からアクセス不可の応答が返ってきた場合（ステップＳ２０１；ＮＯ）、データ転送部１０３は、所定時間、処理の実行を待機し（ステップＳ２０２）、再度、メモリアクセス管理部１０４に対して、上記の問い合わせを行う（ステップＳ２０１）。
【００３７】
一方、メモリアクセス管理部１０４からアクセス可の応答が返ってきた場合（ステップＳ２０１；ＹＥＳ）、データ転送部１０３は、メモリアクセス管理部１０４に対して、他のタスクによるデータ記憶部１０２へのアクセスを禁止する旨の要求を発行する（ステップＳ２０３）。これにより、他のタスクからのデータ記憶部１０２へのアクセスが禁止される。
【００３８】
次に、データ転送部１０３は、データ記憶部１０２からログデータを読み込む（ステップＳ２０４）。データ転送部１０３は、読み込んだログデータを、広域ネットワークＮを介して、データ収集サーバ２０に転送する（ステップＳ２０５）。
【００３９】
それから、データ転送部１０３は、転送したログデータを、バックアップデータとして、データ記憶部１０２に格納する（ステップＳ２０６）。本実施形態のデータ転送装置１０は、収集したログデータをデータ収集サーバ２０に転送した後、バックアップデータとして所定期間保存する。１日分のバックアップデータは、１つのバックアップファイルとして管理される。つまり、新たなバックアップデータは、当該日のバックアップファイルに追記される態様で、データ記憶部１０２に格納される。なお、当該読み出したログデータは、データ記憶部１０２から削除される。即ち、元の格納先のセクタのセクタ状態が、“削除”に変更される。
【００４０】
本実施形態のデータ転送装置１０では、予め決められた所定ファイル数分のバックアップファイルが保存される。即ち、予め決められた日数分のバックアップファイルが保存される。ファイル数が所定数を超えた場合は、後述するバックアップデータ削除部１０９の処理によって、最も古いバックアップファイルのデータから削除される。
【００４１】
次に、データ転送部１０３は、バックアップデータ削除部１０９に対して、処理の実行を要求する。かかる要求に応答して、バックアップデータ削除部１０９は、後述する処理を実行する（ステップＳ２０７）。
【００４２】
バックアップデータ削除部１０９の処理が完了すると、データ転送部１０３は、メモリアクセス管理部１０４に対して、他のタスクによるデータ記憶部１０２へのアクセスを許可する旨の要求を発行し（ステップＳ２０８）、本処理を終了する。これにより、他のタスクからのデータ記憶部１０２へのアクセスが可能となる。
【００４３】
続いて、ＧＣ実行部１０８の処理について、図６のフローチャートを参照して説明する。先ず、ＧＣ実行部１０８は、データ記憶部１０２の空きセクタ（即ち、セクタ状態が、“未使用”のセクタ）の数が、予め決められた所定値以下であるか否かを判定する（ステップＳ３０１）。
【００４４】
その結果、空きセクタの数が、上記の所定値より大きい場合（ステップＳ３０１；ＮＯ）、空き容量が十分であるとして、ＧＣ実行部１０８は、ＧＣを実行せず、本処理を終了する。一方、空きセクタの数が、上記の所定値以下の場合（ステップＳ３０１；ＹＥＳ）、ＧＣ実行部１０８は、保守処理スケジュール作成部１０７に対して、実行スケジュール作成の要求を行う。
【００４５】
保守処理スケジュール作成部１０７は、かかる要求を受けると、タスク起動条件記憶部１０５に記憶されているタスク起動条件テーブルの内容と、現在時刻と、に基づいて、上述したように未アクセス時間を求める。例えば、現在時刻が、０時１１分であり、タスク起動条件テーブルに、図３に示す内容が設定されている場合、次に起動予定のタスク（データ転送タスク）の起動予定時刻が０時１３分であるため、２分間は、データ記憶部１０２に対して何れのタスクもアクセスしない状態が継続すると判定される。したがって、この場合は、未アクセス時間＝２分となる。
【００４６】
保守処理スケジュール作成部１０７は、求めた未アクセス時間を実行スケジュールとして、要求元であるＧＣ実行部１０８に返す。ＧＣ実行部１０８は、これを受け取ることで、実行スケジュール、即ち、未アクセス時間を取得する（ステップＳ３０２）。次に、ＧＣ実行部１０８は、取得した未アクセス時間に基づいて、実行可能なＧＣの回数を算出する（ステップＳ３０３）。
【００４７】
具体的には、ＧＣ実行部１０８は、未アクセス時間を、１回当たりのＧＣの所要時間で除算することで、実行可能なＧＣの回数を求める。１回当たりのＧＣの所要時間は、出荷前の計測等によって、予め決定された時間が与えられているものとする。例えば、未アクセス時間が２分であり、１回当たりのＧＣの所要時間が１分である場合には、実行可能なＧＣの回数は、２（回）となる。
【００４８】
ＧＣ実行部１０８は、算出した実行可能なＧＣの回数が１以上であるか否かを判定する（ステップＳ３０４）、算出した実行可能なＧＣの回数が０の場合（ステップＳ３０４；ＮＯ）、ＧＣ実行部１０８は、ＧＣを実行せず、本処理を終了する。一方、算出した実行可能なＧＣの回数が１以上である場合（ステップＳ３０４；ＹＥＳ）、ＧＣ実行部１０８は、その回数分、後述するＧＣを実行し（ステップＳ３０５）、本処理を終了する。
【００４９】
次に、ＧＣ実行部１０８によって実行されるＧＣ（ガベージコレクション）処理について、図７のフローチャートを参照して説明する。先ず、ＧＣ実行部１０８は、セクタ状態が“削除”を示すセクタを最も多く含む消去ブロックをデータ記憶部１０２から検索し、該当する消去ブロックを消去対象ブロックとして決定する（ステップＳ４０１）。
【００５０】
ＧＣ実行部１０８は、消去対象ブロック中のセクタ状態が“使用中”を示すセクタを、他の消去ブロックのセクタ状態が“未使用”を示すセクタにコピーする（ステップＳ４０２）。そして、ＧＣ実行部１０８は、当該消去対象ブロックを消去する（ステップＳ４０３）。これにより、当該消去ブロックの全セクタは、“未使用”となる。
【００５１】
続いて、バックアップデータ削除部１０９の処理について、図８のフローチャートを参照して説明する。先ず、バックアップデータ削除部１０８は、データ記憶部１０２に記憶されているバックアップファイルのファイル数が、予め決められた上限値を超えているか否かを判定する（ステップＳ５０１）。
【００５２】
その結果、ファイル数が、予め決められた上限値を超えていない場合（ステップＳ５０１；ＮＯ）、バックアップファイルを削除する必要はないとして、バックアップデータ削除部１０９は、本処理を終了する。一方、ファイル数が、予め決められた上限値を超えている場合（ステップＳ５０１；ＹＥＳ）、バックアップデータ削除部１０９は、保守処理スケジュール作成部１０７に対して、実行スケジュール作成の要求を行う。
【００５３】
保守処理スケジュール作成部１０７は、かかる要求を受けると、タスク起動条件記憶部１０５に記憶されているタスク起動条件テーブルの内容と、現在時刻と、に基づいて、上述したように未アクセス時間を求める。そして、保守処理スケジュール作成部１０７は、求めた未アクセス時間を実行スケジュールとして、要求元であるバックアップデータ削除部１０９に返す。バックアップデータ削除部１０９は、これを受け取ることで、実行スケジュール、即ち、未アクセス時間を取得する（ステップＳ５０２）。
【００５４】
次に、バックアップデータ削除部１０９は、取得した未アクセス時間に基づいて、削除可能なセクタ数を算出する（ステップＳ５０３）。具体的には、バックアップデータ削除部１０９は、未アクセス時間を、１セクタを削除するのに要する時間（１セクタ削除時間）で除算することで、削除可能なセクタ数を求める。１セクタ削除時間は、出荷前の計測等によって、予め決定された時間が与えられているものとする。
【００５５】
バックアップデータ削除部１０９は、算出した削除可能なセクタ数が１以上であるか否かを判定する（ステップＳ５０４）、算出した削除可能なセクタ数が０の場合（ステップＳ５０４；ＮＯ）、バックアップデータ削除部１０９は、本処理を終了する。一方、算出した削除可能なセクタ数が１以上である場合（ステップＳ５０４；ＹＥＳ）、バックアップデータ削除部１０９は、後述するバックアップデータの削除処理を実行し（ステップＳ５０５）、本処理を終了する。
【００５６】
次に、バックアップデータ削除部１０９によって実行されるバックアップデータ削除処理について、図９のフローチャートを参照して説明する。先ず、バックアップデータ削除部１０９は、データ記憶部１０２に保存されているバックアップファイルの内、最も古いバックアップファイルを削除対象ファイルとして決定する（ステップＳ６０１）。次に、バックアップデータ削除部１０９は、算出した削除可能なセクタ数が、決定した削除対象ファイルを構成する全セクタの数以上であるか否かを判定する（ステップＳ６０２）。
【００５７】
バックアップデータ削除部１０９は、削除対象ファイルを構成するセクタの数を、図示しないファイル管理テーブルを参照して取得する。このファイル管理テーブルは、ファイル名、ファイルサイズ、当該ファイルを構成するセクタの番号（セクタ番号）等を対応付けたテーブルであり、一般的なファイルシステムによって管理される周知のテーブルである。
【００５８】
上記判定の結果、算出した削除可能なセクタ数が、削除対象ファイルを構成する全セクタの数以上である場合（ステップＳ６０２；ＹＥＳ）、バックアップデータ削除部１０９は、データ記憶部１０２にアクセスして、当該削除対象ファイルの全セクタのセクタ状態を“削除”に変更する（ステップＳ６０３）。これにより、削除対象となったバックアップファイルが削除される。
【００５９】
一方、算出した削除可能なセクタ数が、削除対象ファイルを構成する全セクタの数未満である場合（ステップＳ６０２；ＮＯ）、バックアップデータ削除部１０９は、削除対象ファイルを構成する全セクタの内、算出した削除可能なセクタ数分のセクタについて、そのセクタ状態を“削除”に変更する（ステップＳ６０４）。この場合、バックアップデータ削除部１０９は、削除対象ファイルの末尾のセクタから、先頭方向に向かって、算出した削除可能なセクタ数分のセクタを削除状態にする。これにより、削除対象となったバックアップファイルを構成する一部のバックアップデータが削除される。
【００６０】
ステップＳ６０３又はＳ６０４の処理後、バックアップデータ削除部１０９は、上記のファイル管理テーブル等のファイルシステムによって管理されるテーブルの内容を更新する（ステップＳ６０５）。例えば、ステップＳ６０３の処理後の場合は、当該バックアップファイルについての情報を消去する。また、ステップＳ６０４の処理後の場合は、新たに末尾となったセクタが判るような情報を付加する等を行う。
【００６１】
以上のように、本実施形態に係るデータ転送装置（メモリ保守装置）によれば、タスク起動条件記憶部１０５に記憶されたタスク起動条件テーブルに基づいて、保守処理スケジュール作成部１０７が、データ記憶部１０２（即ち、フラッシュメモリ）の状態を保守する処理の実行スケジュールを作成する。そして、作成された実行スケジュールに従って、ＧＣ実行部１０８及びバックアップデータ削除部１０９（保守処理実行手段）が、それぞれに対応した保守処理を実行する。したがって、フラッシュメモリの保守処理を各タスクの実行に支障が出ないように実行することが可能になる。
【００６２】
即ち、ガベージコレクションのように長時間、フラッシュメモリを占有する処理であっても、上記の実行スケジュールに則って実行することで、他のタスクの実行の妨げにならずに、空き容量を確保することが可能になる。
【００６３】
また、例えば、５分間隔でログデータを収集した場合、１日分のバックアップファイルは、２８８回分のログデータ（バックアップデータ）を含み、大きなサイズとなる。そして、これを１回の処理で削除しようとすると、長時間、フラッシュメモリを占有し、他の処理の遅延等を招く。しかし、本実施形態のデータ転送装置（メモリ保守装置）では、バックアップデータの削除処理において、未アクセス時間の長短に応じて、削除するセクタ数を調整する。したがって、他のタスクの実行の妨げにならずに、バックアップデータを削除することが可能となる。
【００６４】
なお、本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【符号の説明】
【００６５】
１０  データ転送装置
１０１  データ収集部
１０２  データ記憶部
１０３  データ転送部
１０４  メモリアクセス管理部
１０５  タスク起動条件記憶部
１０６  タスク起動指令部
１０７  保守処理スケジュール作成部
１０８  ＧＣ実行部
１０９  バックアップデータ削除部
２０  データ収集サーバ
【図１】
0005687096.tif 000002
【図２】
0005687096.tif 000003
【図３】
0005687096.tif 000004
【図４】
0005687096.tif 000005
【図５】
0005687096.tif 000006
【図６】
0005687096.tif 000007
【図７】
0005687096.tif 000008
【図８】
0005687096.tif 000009
【図９】
0005687096.tif 000010