(57)【要約】【課題】ＲＡＭの容量が小さな組み込み機器において、動的メモリを使用したシステムではメモリが枯渇してシステムが不安定になる、または動作しなくなる可能性があるという課題を有する。【解決手段】メモリブロックを動的に獲得、返却する動的メモリ管理方式において、獲得したメモリブロックにデータ書き込みが完了した後にデータを書き換えないことを示すデータを付加するステップと、メモリブロックが参照されている数を計測しデータに付加するステップと、書き込み完了時のデータの内容を他のメモリブロックのデータ内容と比較するステップと、前記比較するステップによる比較結果が同一の場合に一方のメモリブロックのみを保持し他方のメモリブロックを返却するステップとを含むことによって、使用するメモリ量を削減し、メモリの枯渇を防ぐことでシステム全体の安定性を向上させる。【選択図】図１
2008065735.tif 000002
【特許請求の範囲】
【請求項１】
書き換え可能なメモリにおいて、必要な期間のみ必要なサイズのメモリブロックを動的に獲得、返却する動的メモリ管理方式であって、
獲得したメモリブロックへのデータ書き込みが完了した後にデータを書き換えないことを示すデータを付加するステップと、
メモリブロックが参照されている数を計測しデータに付加するステップと、
書き込み完了時のデータの内容を他のメモリブロックのデータ内容と比較するステップと、
前記比較するステップによる比較結果が同一の場合に、一方のメモリブロックのみを保持し他方のメモリブロックを返却するステップとを含む動的メモリ管理方式。
【請求項２】
請求項１記載の動的メモリ管理方式であって、
メモリを一定サイズのメモリブロック単位で管理するステップと、
メモリブロック単位でデータの比較を行なうステップとをさらに含む動的メモリ管理方式。
【請求項３】
請求項１記載の動的メモリ管理方式であって、
メモリブロックのサイズが不定長である場合にメモリのサイズをデータに付加するステップと、
同一サイズのメモリブロック間でのみデータを比較するステップとをさらに含む動的メモリ管理方式。
【請求項４】
請求項１記載の動的メモリ管理方式であって、
メモリブロックのサイズが不定長である場合にメモリのサイズをデータに付加するステップと、
前記メモリブロックのサイズ以上のサイズを持ったメモリブロックの中から前記メモリブロックのサイズ分だけデータを比較するステップとをさらに含む動的メモリ管理方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ランダムアクセスメモリ（ＲＡＭ）を使用する機器においてメモリのサイズを小さくするための動的メモリ管理方式に関するものである。
【背景技術】
【０００２】
従来の一般的な動的メモリ管理方式では、獲得要求時にはメモリが無くなるまで無条件に割り当てを行なっていた。従ってある特定の処理がメモリを大量に消費してシステム全体のメモリ資源が枯渇すると、他の全ての処理がメモリを獲得できなくなり、システムが異常動作したり停止するという課題があった。
【０００３】
前記課題の対策についての従来技術として、メモリの使用量や処理の優先度を考慮してメモリ獲得の制限を行なうことで、重要な処理が動作不能になることを防ぐ技術（特許文献１）が存在するが、比較的重要度の低い処理の場合にはメモリが残っていても動作できなくなり、システムの信頼性が低下する、若しくは重要度の高い処理が異常に大量のメモリを消費した場合には効果がないなどの課題があった。
【０００４】
また、データを書き換えない静的なメモリであるリードオンリーメモリ（ＲＯＭ）において同一データに対してアドレス変換を行うことで仮想的に容量を拡大する技術（特許文献２）が存在するが、データが常に変化するランダムアクセスメモリには適用できないものである。
【特許文献１】特開２００４−０４６４６２号公報
【特許文献２】特開平６−３４８５８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来の動的メモリ管理方式では、ある特定の処理がメモリを大量に消費するなどしてメモリの残り容量が少なくなるとメモリが割り当てられなくなり、必要な処理ができず、システムが異常動作を起こすなど不安定になる、もしくは停止してしまうなどの課題があった。
【課題を解決するための手段】
【０００６】
本発明は、上記課題を解決するものであり、書き換え可能なメモリにおいて、必要な期間のみ必要なサイズのメモリブロックを動的に獲得、返却する動的メモリ管理方式であって、獲得したメモリブロックへのデータ書き込みが完了した後にデータを書き換えないことを示すデータを付加するステップと、メモリブロックが参照されている数を計測しデータに付加するステップと、書き込み完了時のデータの内容を他のメモリブロックのデータ内容と比較するステップと、前記比較するステップによる比較結果が同一の場合に、一方のメモリブロックのみを保持し他方のメモリブロックを返却するステップとを含む。
【発明の効果】
【０００７】
以上のように本発明によれば、同一データの異常な繰り返し入力やメモリの返却漏れによる同一データの使用が蓄積する場合など、同一データを多数使用した際のメモリの使用量を減らすことができ、メモリの枯渇を防ぎシステム全体の安定性を向上させることができる。
【発明を実施するための最良の形態】
【０００８】
本発明を実施するための形態について、図面を用いて説明する。
【０００９】
（実施の形態１）
図１において１はＲＡＭ回路全体、２はＲＡＭの一部を動的に割り当てるために一定サイズのメモリブロックを複数用意している動的メモリ（メモリプール）をそれぞれ示している。メモリプールはＲＡＭのアドレスの範囲として定義し、各メモリブロックには管理用に書き込み完了を示すフラグと参照数を記憶するエリアを付加しておく。
【００１０】
このように構成されるＲＡＭ回路１において、動的にメモリを獲得、返却する際の動作を図２から図５のフローチャートを用いて説明する。
【００１１】
ＲＡＭ回路１の全体の動作を図２に示す。ＲＡＭ回路１は、まずメモリの獲得処理を行う（ステップ１００）。メモリ獲得処理の詳細を図３に示す。
【００１２】
処理１０がメモリを必要とする場合、メモリの獲得を要求する。ＲＡＭ回路１はメモリプールの中から参照数が０である未使用のメモリブロックを探し（ステップ１１０）、メモリブロックが存在する場合（ステップ１１０で「ＹＥＳ」の場合）には、そのメモリブロック２０の完了フラグを０、参照数のデータを１にした（ステップ１２０）後に、メモリブロック２０のアドレスを返す（ステップ１３０）。未使用のメモリブロックが存在しない場合（ステップ１１０で「ＮＯ」の場合）には、エラーを返す（ステップ１４０）。
【００１３】
処理１０は、その後、図２に示すように獲得したアドレスのメモリブロック２０に対して、データの書き込みを行う（ステップ２００）。
【００１４】
その後、ＲＡＭ回路１は、メモリチェック処理を行う（ステップ３００）。メモリチェック処理の詳細を図４に示す。
【００１５】
処理１０が書き込んだデータを以後メモリプールに返却するまで書き換えない場合、ＲＡＭ回路１に書き込み完了を通知する。ＲＡＭ回路１は書き込み完了通知を受信すると、メモリブロックの完了フラグに１を書き込む（ステップ３１０）。この時のメモリプールの状態を図５に示す。ＲＡＭ回路１は、参照数が０より大きく、完了フラグが１で、かつメモリブロック内の全データが一致するものがあるかどうかを検索する（ステップ３２０）。図５の状態では、該当するメモリブロックは存在しないため、書き込んだメモリブロックのアドレスを返して（ステップ３６）、処理を終了する。
【００１６】
次に処理１０がメモリを獲得した後に、処理１１がメモリを必要する場合について説明する。処理１１はメモリブロック２１を獲得し（ステップ１００）、データを書き込み（ステップ２００）、データの書き込み完了を通知すると、完了フラグに１が書き込まれる（ステップ３１０）。この時のメモリプールの状態を図６に示す。動的メモリの中で参照数が０より大きく、完了フラグが１で、かつメモリブロック内の全データが一致するものがあるかどうかを検索する（ステップ３２０）。図６の状態では、メモリブロック２０が該当するため、メモリブロック２０の参照数を１増加し（ステップ３３０）、メモリブロック２１を返却し（ステップ３４０）、メモリブロック２０のアドレスを返し、処理１１は以後メモリブロック２０を参照して処理を続ける（ステップ３５０）。この時のメモリプールの状態を図７に示す。
【００１７】
このようなメモリブロックの使用例として、例えばテレビにおいてリモコンにより次々と入力されるキーに対応するリモコンコードをそれぞれの処理が完了するまで記憶しておくような場合、一旦入力されたリモコンコードをメモリブロックに記録した後は処理が完了するまで書き換えることはない。従って、このような処理においては、リモコンコードの書き込みが完了した時点で、同一データを検索し一つにまとめる処理を行なうことによって、メモリの使用量を減らすことができ、メモリの枯渇を防ぎシステム全体の安定性を向上させることができる。
【００１８】
図１において、処理１２はメモリブロック２１を獲得し、同じデータを書き込むが、完了を通知しない限り今後書き換える可能性があるので上記処理は行わない。処理１３はメモリブロック２２を獲得し、データを書き込み完了を通知するが、メモリブロック２２はデータ内容が一致しないため同様に上記処理は行わない。
【００１９】
処理１０が処理を終え、メモリブロック２０の返却を要求した場合の処理フローを図８に示す。この場合、メモリブロック２０の参照数を１減少させる（ステップ４００）。参照数が０にならない限りメモリブロックはまだ使用中であり、他の処理がメモリ獲得を要求しても割り当てすることはない。  （実施の形態２）
実施の形態１ではメモリブロックのデータのサイズを一定としたが、任意のサイズのメモリを割り当てる不定長の動的メモリ管理においても、メモリのサイズを比較の条件に加えることで本発明を実施することができるのは明らかである。
【００２０】
（実施の形態３）
実施の形態１では未使用または使用中のメモリブロックの検索を参照数が０か否かを条件として実施しているが、検索を高速に行なうために未使用または使用中のメモリアドレスをリスト構造で管理する場合でも本発明を実施することができるのは明らかである。
【産業上の利用可能性】
【００２１】
本発明の動的メモリ管理方式は、特にＲＡＭの容量が小さな組み込み機器などで動的メモリを使用する場合に、メモリの枯渇を防ぎ、システムが安定して動作することができるため、有用である。
【図面の簡単な説明】
【００２２】
【図１】本発明の一実施の形態におけるメモリ管理の概念図
【図２】本発明の一実施の形態における動的メモリ管理全体のフローチャート
【図３】本発明の一実施の形態におけるメモリ獲得処理のフローチャート
【図４】本発明の一実施の形態におけるメモリチェック処理のフローチャート
【図５】本発明の一実施の形態におけるメモリブロック確保時の概念図
【図６】本発明の一実施の形態における複数のメモリブロック確保時の概念図
【図７】本発明の一実施の形態におけるメモリチェック処理後の概念図
【図８】本発明の一実施の形態におけるメモリ返却処理のフローチャート
【符号の説明】
【００２３】
１    ランダムアクセスメモリ（ＲＡＭ）回路
２    動的メモリ（メモリプール）
１０〜１３    メモリブロックを使用する処理
２０〜２４    メモリブロック
【図１】
2008065735.tif 000003
【図２】
2008065735.tif 000004
【図３】
2008065735.tif 000005
【図４】
2008065735.tif 000006
【図５】
2008065735.tif 000007
【図６】
2008065735.tif 000008
【図７】
2008065735.tif 000009
【図８】
2008065735.tif 000010