(57)【要約】【課題】固定長ブロック方式において、効率的なメモリ管理を実現可能とするメモリ管理装置及びメモリ管理方法を提供する。【解決手段】メモリ２内の未確保領域内に、複数の第１固定長ブロックに分割された領域を確保する領域確保部１１と、メモリ２の割り当て要求であって、割り当てるサイズの情報を含んだ要求を外部から受け付けた場合、要求されたサイズ以上の空き領域が上記確保した領域に存在するか否かを判定する空き領域判定部１２とを備え、領域確保部１１は、要求されたサイズ以上の空き領域が上記確保した領域内に存在しない場合、未確保領域内に、上記確保した領域に連続して新たに第１固定長ブロックを１つ以上確保して、要求されたサイズ以上の空き領域を確保する。【選択図】図１
2008033838.tif 000002
【特許請求の範囲】
【請求項１】
メモリ内の未確保領域内に、複数の第１固定長ブロックに分割された領域を確保する領域確保部と、
前記メモリの割り当て要求であって、割り当てるサイズの情報を含んだ要求を外部から受け付けた場合、要求されたサイズ以上の空き領域が前記確保した領域に存在するか否かを判定する空き領域判定部とを備え、
前記領域確保部は、前記要求されたサイズ以上の空き領域が前記確保した領域内に存在しない場合、前記未確保領域内に、前記確保した領域に連続して新たに前記第１固定長ブロックを１つ以上確保して、前記要求されたサイズ以上の空き領域を確保することを特徴とするメモリ管理装置。
【請求項２】
前記新たに確保した第１固定長ブロックの領域が解放された場合、前記解放された領域を未確保領域とする領域解放部をさらに備えることを特徴とする請求項１に記載のメモリ管理装置。
【請求項３】
前記領域確保部は、前記未確保領域内に、さらに、複数の第２固定長ブロックに分割された領域を確保することを特徴とする請求項１又は２に記載のメモリ管理装置。
【請求項４】
メモリ内の未確保領域内に、複数の第１固定長ブロックに分割された領域を確保するステップと、
前記メモリの割り当て要求であって、割り当てるサイズの情報を含んだ要求を外部から受け付けた場合、要求されたサイズ以上の空き領域が前記確保した領域に存在するか否かを判定するステップと、
前記要求されたサイズ以上の空き領域が前記確保した領域内に存在しない場合、前記未確保領域内に、前記確保した領域に連続して新たに前記第１固定長ブロックを１つ以上確保して、前記要求されたサイズ以上の空き領域を確保するステップ
とを含むことを特徴とするメモリ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組込みシステムに適用されるメモリ管理装置及びメモリ管理方法に関する。
【背景技術】
【０００２】
携帯電話等の組込みシステムは、パーソナルコンピュータ（ＰＣ）と比較して、処理能力の低いＣＰＵと小容量のメモリ等を具備する。また、組込みシステムでは、メモリが必要な場合、必要な領域をメモリブロック単位で確保し、不要になったら開放する「メモリプール機能」がオペレーションシステム（ＯＳ）の一機能として実装されている。
【０００３】
メモリプール機能には、使用可能なメモリブロックのサイズにより、固定長ブロック方式と可変長ブロック方式がある。「固定長ブロック方式」は、予め固定長のメモリブロックを複数用意し、固定長のメモリブロック単位でメモリを管理する方式である。固定長ブロック方式では、最初に用意したメモリブロックの個数だけメモリが確保できるが、実際に使用されていないにも関わらずメモリが確保されることによって、メモリの利用効率低下が生じ易い。
【０００４】
「可変長ブロック方式」は、可変長のメモリブロック単位で動的にメモリブロックを確保する方式である。よって、メモリの利用効率の観点からは有利であるが、異なったサイズのメモリブロック単位で確保と解放を繰り返すことにより、使用中のメモリブロックと空き領域が不連続に現れ、使用中のメモリブロックの間に小さな空き領域が現れる断片化（フラグメンテーション）が発生し易い。
【０００５】
可変長ブロック方式において断片化の発生を抑制する技術として、空き領域の探査方向をメモリアドレスの昇順とするか又は降順とするかを決するために用いる基準サイズを記憶する基準サイズ記憶手段を備え、データのサイズが、基準サイズ以上の場合は探査方向を降順、基準サイズ未満の場合は探査方向を昇順としつつ、データのサイズ以上のサイズを有するものとして最初に探査された空き領域を選択してデータに対するメモリの割り付けを行う手法が提案されている（特許文献１参照。）。
【特許文献１】特開２００５−１５７７１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
可変長ブロック方式を組込みシステムに適用する場合、実装負担が大きく、リアルタイム性も損なわれやすい。このため、組込みシステムに用いられるリアルタイムＯＳでは、可変長ブロック方式をサポートせず、固定長ブロック方式のみをサポートしている場合がある。このような場合は固定長ブロック方式が利用される。しかしながら、上述したように、固定長ブロック方式では、実際に使用されていないにも関わらずメモリが確保されてしまう。また、固定長ブロック方式では、メモリブロックのサイズを小さくすると断片化が発生し易くなる。さらに、固定長ブロック方式では、メモリブロックのサイズを大きくすると、小さなサイズのメモリ要求に対して１ブロック使用してしまう。したがって、固定長ブロック方式を用いると、効率的なメモリの管理は困難となる。
【０００７】
上記問題点を鑑み、本発明は、固定長ブロック方式において、効率的なメモリ管理を実現可能とするメモリ管理装置及びメモリ管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の第１の特徴は、メモリ内の未確保領域内に、複数の第１固定長ブロックに分割された領域を確保する領域確保部と、メモリの割り当て要求であって、割り当てるサイズの情報を含んだ要求を外部から受け付けた場合、要求されたサイズ以上の空き領域が上記確保した領域に存在するか否かを判定する空き領域判定部とを備え、領域確保部は、要求されたサイズ以上の空き領域が上記確保した領域内に存在しない場合、未確保領域内に、上記確保した領域に連続して新たに上記第１固定長ブロックを１つ以上確保して、要求されたサイズ以上の空き領域を確保するメモリ管理装置であることを要旨とする。
【０００９】
この特徴によれば、上記領域確保部は、要求されたサイズ以上の空き領域が上記確保した領域内に存在しない場合、未確保領域内に、上記確保した領域に連続して新たに第１固定長ブロックを１つ以上確保して、要求されたサイズ以上の空き領域を確保するので、メモリを効率的に使用可能とすると共に、断片化によるエラーを抑制することができる。
【００１０】
第２の特徴は、第１の特徴に係るメモリ管理装置において、新たに確保した第１固定長ブロックの領域が解放された場合、当該解放された領域を未確保領域とする領域解放部をさらに備えることを要旨とする。
【００１１】
この特徴によれば、新たに確保した第１固定長ブロックの領域が解放された場合、上記解放された領域を未確保領域とするので、メモリを効率的に使用できる。
【００１２】
第３の特徴は、第１又は第２の特徴に係るメモリ管理装置において、領域確保部は、未確保領域内に、さらに、複数の第２固定長ブロックに分割された領域を確保することを要旨とする。
【００１３】
この特徴によれば、領域確保部は、未確保領域内に、さらに、複数の第２固定長ブロックに分割された領域を確保するサイズの異なる固定長ブロックからなる２つのメモリ領域を確保するので、２つのメモリ領域を使い分けることが可能となり、メモリを効率的に使用できる。
【００１４】
本発明の第４の特徴は、メモリ内の未確保領域内に、複数の第１固定長ブロックに分割された領域を確保するステップと、メモリの割り当て要求であって、割り当てるサイズの情報を含んだ要求を外部から受け付けた場合、要求されたサイズ以上の空き領域が上記確保した領域に存在するか否かを判定するステップと、要求されたサイズ以上の空き領域が上記確保した領域内に存在しない場合、未確保領域内に、上記確保した領域に連続して新たに第１固定長ブロックを１つ以上確保して、要求されたサイズ以上の空き領域を確保するステップとを含むメモリ管理方法であることを要旨とする。
【発明の効果】
【００１５】
本発明によれば、固定長ブロック方式において、効率的なメモリ管理を実現可能とするメモリ管理装置及びメモリ管理方法を提供できる。
【発明を実施するための最良の形態】
【００１６】
次に、図面を参照して、本発明の実施形態を説明する。以下の実施形態における図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。
【００１７】
（メモリ管理装置）
本発明の実施形態に係るメモリ管理装置の説明の前に、メモリ管理装置の適用される組込みシステムのハードウェア構成について、図１（ａ）を用いて簡単に説明する。図１（ａ）の例では、携帯電話システムの概要を示している。当該システムは、ＣＰＵ１０と、メモリ２と、ＲＯＭ５と、通信装置６とを備えている。ＲＯＭ５は、ＣＰＵ１０において実行されるプログラムを格納するプログラム記憶装置等として機能する。メモリ２は、主に、ＣＰＵ１０におけるプログラム実行処理中に利用されるデータ等を一時的に格納し、あるいは作業領域として利用される一時的なデータメモリ等として機能する。ＲＯＭ５に格納されるプログラムとしては、各種のアプリケーションに加えて、ＣＰＵ１０を制御するＯＳ（リアルタイムＯＳ）が含まれる。このＯＳは、上述した固定長ブロック方式を用いてメモリ２を管理するメモリ管理機能を有している。通信装置６は、各種の通信処理を実行する。
【００１８】
次に、図１（ａ）のシステムの機能構成例を図１（ｂ）に示す。図１（ａ）のＣＰＵ１０は、図１（ｂ）の処理装置３及びメモリ管理装置１の機能を実行する。処理装置３は、各アプリケーションに対応する複数のモジュール３１，３２，・・・を備える。複数のモジュール３１，３２，・・・のそれぞれはメモリ２を共有して使用する。
【００１９】
メモリ管理装置１は、領域確保部１１と、空き領域判定部１２と、空き領域割り当て部１３と、領域解放部１４とを備える。領域確保部１１は、メモリ２内の未確保領域に対して、複数の固定長ブロックに分割されたメモリ領域を確保する。この結果、メモリ２は、モジュール３１，３２，・・・が使用可能なメモリ領域（以下「確保済領域」と称する）と、モジュール３１，３２，・・・が使用できない未確保領域の２つの領域に分けられる。
【００２０】
空き領域判定部１２は、メモリ２の割り当てを要求するメモリ要求をモジュール３１，３２，・・・から受信した場合、要求されたサイズ以上の空き領域が確保済領域内に存在するか否かを判定する。空き領域割り当て部１３は、要求されたサイズ以上の空き領域が確保済領域内に存在する場合、メモリ要求に対して空き領域を割り当てる。
【００２１】
また、領域確保部１１は、要求されたサイズ以上の空き領域が上記確保済領域内に存在しない場合、確保済領域に固定長ブロックを少なくとも１つ追加することで、未確保領域に向けて使用可能なメモリ領域を拡張する。つまり、領域確保部１１は、上記未確保領域内に上記確保済領域に連続して新たに固定長ブロックを１つ以上確保する。この際、領域確保部１１は、上記要求されたサイズ以上の空き領域を確保する。なお、以下では、モジュール３１，３２，・・・がメモリの割り当てを要求するサイズを「要求サイズ」と称する。拡張した領域（つまり、新たに使用可能となった領域）を、「拡張メモリ領域」と称する。
【００２２】
領域解放部１４は、上記拡張メモリ領域が解放された場合、当該解放された拡張メモリ領域を再度未確保領域とする。
【００２３】
以下に、領域確保部１１、空き領域判定部１２、空き領域割り当て部１３、及び領域解放部１４の各機能の詳細について説明する。
【００２４】
先ず、領域確保部１１の詳細について、図２を用いて説明する。図２のメモリ配置の例では、領域確保部１１が、所定のサイズの固定長ブロック（以下、「小容量ブロック」という。）からなる領域（以下、「第１確保済領域」という。）と、小容量ブロックよりもサイズの大きい固定長ブロック（以下、「大容量ブロック」という。）からなる領域（以下、「第２確保済領域」という。）を確保している。
【００２５】
また、第１確保済領域は、メモリ２の先頭アドレスから最後尾アドレスへ向けて配置されている。第２確保済領域は、メモリ２の最後尾アドレスから先頭アドレスへ向けて配置されている。
【００２６】
領域確保部１１は、最初に確保済領域を確保する時点では、必要最小限の数の固定長ブロックを用意する。したがって、第１確保済領域と第２確保済領域の間には、未確保領域が残されている。
【００２７】
次に、空き領域判定部１２及び空き領域割り当て部１３の詳細について、図３を用いて説明する。
【００２８】
空き領域判定部１２は、受信したメモリ要求の要求サイズに応じて、第１確保済領域及び第２確保済領域のいずれに割り当てを行うかを判定する。一例として、空き領域判定部１２は、要求サイズを閾値と比較して、閾値以下である場合は第１確保済領域に割り当てを行うと判断する。これに対して、閾値を超える場合は、空き領域判定部１２は、第２確保済領域に割り当てを行うと判断する。
【００２９】
第１確保済領域に割り当てを行うと判断された場合、空き領域判定部１２は、メモリ２の先頭アドレスから最後尾アドレスへ向けて空き領域を検索する。一方、第２確保済領域に割り当てを行うと判断された場合、空き領域判定部１２は、メモリ２の最後尾アドレスから先頭アドレスへ向けて空き領域を検索する。
【００３０】
第１確保済領域に割り当てを行う場合において、図３（ａ）に示すように、要求サイズを満たす連続した小容量ブロックからなる空き領域が存在するときは、空き領域割り当て部１３は、空き領域に割り当てを行う。
【００３１】
第１確保済領域に割り当てを行う場合において、図３（ｂ）に示すように、要求サイズを満たす連続した小容量ブロックからなる空き領域が存在しないときは、領域確保部１１は、上記第１確保済領域に対して小容量ブロックを少なくとも１つ（ここでは３つ）追加することで、未確保領域に向けて使用可能なメモリ領域を拡張する。なお、領域確保部１１は、要求サイズに応じて、追加するブロック数を決定する。この結果、拡張メモリ領域が作成され、空き領域割り当て部１３は、作成された拡張メモリ領域に対して割り当てを行う。
【００３２】
次に、領域解放部１４の詳細について、図４を用いて説明する。領域解放部１４は、図４（ａ）に示すように、拡張メモリ領域以外の領域が解放された場合、そのまま解放して空き領域とする。一方、領域解放部１４は、図４（ｂ）に示すように、拡張メモリ領域が解放された場合、解放された領域を未確保領域とする。
【００３３】
このように、拡張メモリ領域が解放された場合、解放された拡張メモリ領域を未確保領域とすることで、最初の第１確保済領域のサイズを維持でき、メモリを効率的に使用できる。
【００３４】
（メモリ管理方法）
次に、図５に示すフローチャートを参照して、本発明の実施形態に係るメモリ管理方法の概要を説明する。
【００３５】
ステップＳ１１において、領域確保部１１は、図２に示すように、第１及び第２確保済領域を作成する。
【００３６】
ステップＳ１２において、領域確保部１１、空き領域判定部１２、及び空き領域割り当て部１３は、モジュール３１，３２，・・・からのメモリ要求に応じて、メモリ２の割り当て処理を行う。
【００３７】
ステップＳ１３において、領域解放部１４は、モジュール３１，３２，・・・からの解放要求に応じて、メモリ２の解放処理を行う。
【００３８】
次に、図６に示すフローチャートを参照して、図５のステップＳ１２の詳細について説明する。
【００３９】
ステップＳ１０１において、モジュール３１，３２，・・・からメモリ要求を受け付けると、ステップＳ１０２に移行する。
【００４０】
ステップＳ１０２において、空き領域判定部１２は、ステップＳ１０１で受信したメモリ要求の要求サイズに応じて、第１確保済領域及び第２確保済領域のいずれに割り当てを行うかを判定する。第１確保済領域に割り当てを行う場合、ステップＳ１０４に移行する。第２確保済領域に割り当てを行う場合、ステップＳ１０３に移行する。
【００４１】
ステップＳ１０４において、空き領域判定部１２は、メモリ２の先頭アドレスから最後尾アドレスへ向けて空き領域を検索する。
【００４２】
ステップＳ１０５において、空き領域判定部１２は、要求サイズ以上の空き領域が第１確保済領域内に存在するか否かを判定する。要求サイズ以上の空き領域が第１確保済領域内に存在する場合、ステップＳ１０７に移行する。要求サイズ以上の空き領域が第１確保済領域内に存在しない場合、ステップＳ１０８に移行する。
【００４３】
ステップＳ１０６において、領域確保部１１は、未確保領域内に、第１確保済領域に連続して新たに小容量ブロックを１つ以上確保して、要求サイズ以上の空き領域を確保する。
【００４４】
ステップＳ１０７において、空き領域割り当て部１３は、ステップＳ１０１で受け付けたメモリ要求に対して空き領域を割り当てる。
【００４５】
一方、ステップＳ１０３において、空き領域判定部１２は、メモリ２の最後尾アドレスから先頭アドレスへ向けて空き領域を検索する。
【００４６】
ステップＳ１０９において、空き領域判定部１２は、要求サイズ以上の空き領域が第２確保済領域内に存在するか否かを判定する。要求サイズ以上の空き領域が第２確保済領域内に存在する場合、ステップＳ１１０に移行する。要求サイズ以上の空き領域が第２確保済領域内に存在しない場合、ステップＳ１１１に移行する。
【００４７】
ステップＳ１１０において、領域確保部１１は、未確保領域内に、第２確保済領域に連続して新たに大容量ブロックを１つ以上確保して、要求サイズ以上の空き領域を確保する。
【００４８】
ステップＳ１１１において、空き領域割り当て部１３は、ステップＳ１０１で受け付けたメモリ要求に対して空き領域を割り当てる。
【００４９】
次に、図７に示すフローチャートを参照して、図５のステップＳ１３の詳細について説明する。
【００５０】
ステップＳ２０１において、領域解放部１４は、モジュール３１，３２，・・・からの解放要求を受け付ける。
【００５１】
ステップＳ２０２において、領域解放部１４は、拡張メモリ領域が解放されたか否かを判定する。拡張メモリ領域が解放された場合、ステップＳ２０３に移行する。拡張メモリ領域以外の確保済領域が解放された場合、ステップＳ２０４に移行する。
【００５２】
ステップＳ２０３において、領域解放部１４は、開放された領域を未確保領域とする。
【００５３】
ステップＳ２０４において、領域解放部１４は、解放された領域を空き領域とする。
【００５４】
以上詳細に説明したように、本発明の実施形態によれば、要求されたサイズ以上の空き領域が確保済領域内に存在しない場合、未確保領域内に、確保済領域に連続して新たに固定長ブロックを１つ以上確保して、要求サイズ以上の空き領域を確保するので、連続した空き領域を確保して、メモリを効率的に使用可能とすると共に、断片化によるエラーを抑制することができる。
【００５５】
（その他の実施形態）
上記のように、本発明は実施形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施形態、実施例及び運用技術が明らかとなる。
【００５６】
例えば、上述した実施形態においては、領域確保部１１が、小容量ブロックからなる第１確保済領域と、大容量ブロックからなる第２確保済領域の２つの確保済領域を作成する一例を説明した。しかしながら、領域確保部１１は、２つの確保済領域を作成せずに、１つの確保済領域のみを作成しても良い。
【００５７】
あるいは、領域確保部１１は、小容量ブロック及び大容量ブロックのそれぞれとサイズの異なる固定長ブロックからなる第３確保済領域をさらに作成しても良い。固定長ブロックのサイズを３パターン用意することにより、より効率的なメモリ管理が実現できる。
【００５８】
このように本発明は、ここでは記載していない様々な実施形態等を包含するということを理解すべきである。したがって、本発明はこの開示から妥当な特許請求の範囲の発明特定事項によってのみ限定されるものである。
【図面の簡単な説明】
【００５９】
【図１】本発明の実施形態に係るメモリ管理システムの構成例を示すブロック図である。
【図２】本発明の実施形態に係る領域確保部の機能を説明するための模式図である。
【図３】本発明の実施形態に係る領域確保部及び空き領域割り当て部の機能を説明するための模式図である。
【図４】本発明の実施形態に係る領域解放部の機能を説明するための模式図である。
【図５】本発明の実施形態に係るメモリ管理方法の概要を示すフローチャートである。
【図６】本発明の実施形態に係るメモリ割り当て処理フローを示すフローチャートである。
【図７】本発明の実施形態に係るメモリ解放処理フローを示すフローチャートである。
【符号の説明】
【００６０】
１…メモリ管理装置
２…メモリ
３…処理装置
５…ＲＯＭ
６…通信装置
１０…ＣＰＵ
１１…領域確保部
１２…空き領域判定部
１３…空き領域割り当て部
１４…領域解放部
３１，３２，…モジュール
【図１】
2008033838.tif 000003
【図２】
2008033838.tif 000004
【図３】
2008033838.tif 000005
【図４】
2008033838.tif 000006
【図５】
2008033838.tif 000007
【図６】
2008033838.tif 000008
【図７】
2008033838.tif 000009