(57)【要約】【課題】管理情報を記憶する管理テーブルの容量が足りなくなってしまった場合に、メモリを確保できなくなってしまうという問題をなくし、かつ空きメモリ領域の探索を短時間とするメモリ管理方法とする。【解決手段】メモリブロック２内の先頭メモリ領域に自メモリブロック内の管理を行うメモリブロック管理テーブル３、最終メモリ領域に自メモリブロック内の記憶領域の管理情報を有するメモリ領域管理テーブル４を形成し、メモリ領域の確保または開放が行われた場合に、メモリ領域管理テーブル４が連続した領域となるように追加または削除を行う。【選択図】図１
2004086461.tif 000002
【特許請求の範囲】
【請求項１】
メモリの記憶領域を、自ブロックの管理情報と自ブロック内のメモリ領域の管理情報とを有する複数のメモリブロックに区切って管理するメモリ管理方法において、
前記メモリブロック内の先頭メモリ領域に自メモリブロック内の管理を行うメモリブロック管理テーブル、最終メモリ領域に自メモリブロック内の記憶領域の管理情報を有するメモリ領域管理テーブルを形成し、
メモリ領域の確保または開放が行われた場合に、前記メモリ領域管理テーブルが連続した領域となるように追加または削除を行うことを特徴とするメモリ管理方法。
【請求項２】
前記メモリ領域管理テーブルの直上のメモリ領域が空き状態なった場合に、隣接する空き状態のメモリ領域を統合して、１つの空きメモリ領域とすることを特徴とする請求項１記載のメモリ管理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリの記憶領域を自ブロックの管理情報と自ブロック内のメモリ領域の管理情報とを有する複数のメモリブロックに区切って管理するメモリ管理方法に関するものである。
【０００２】
【従来の技術】
従来のメモリには、物理的なメモリへのアクセスを頻繁にかつランダムに行った場合に、メモリの断片化が発生してしまい、実際に使用できるメモリ領域が少なくなってしまうという問題あった。
【０００３】
そこで、このような問題を解決するための従来のメモリ管理方法として、メモリ領域を個別に開放したり確保したりするように管理するのではなく、メモリ領域を複数格納できるメモリブロック毎に確保および解放を行うことで、細分化を防ぐ方法を採用している。
【０００４】
【発明が解決しようとする課題】
ところが、従来のメモリ管理方法においては、メモリ領域の管理情報をメモリブロックとは別に持っているため、メモリブロック以外にも複数のメモリを必要としていた。そのために、メモリブロック自体には空きメモリ領域が存在していても、管理情報を記憶する管理テーブルの容量が足りなくなってしまった場合には、メモリを確保できなくなってしまうという問題があった。また、メモリ領域の使用状態および空き状態をリスト構造で管理しているために、空きメモリ領域の探索に時間がかかってしまうという問題があった。
【０００５】
【課題を解決するための手段】
本発明は、上記問題に鑑みてなされたものであり、メモリの記憶領域を、自ブロックの管理情報と自ブロック内のメモリ領域の管理情報とを有する複数のメモリブロックに区切って管理するメモリ管理方法において、前記メモリブロック内の先頭メモリ領域に自メモリブロック内の管理を行うメモリブロック管理テーブル、最終メモリ領域に自メモリブロック内の記憶領域の管理情報を有するメモリ領域管理テーブルを形成し、メモリ領域の確保または開放が行われた場合に、前記メモリ領域管理テーブルが連続した領域となるように追加または削除を行うメモリ管理方法としたものである。
【０００６】
【発明の実施の形態】
以下、本発明の実施例について、図面を用いて説明する。
図１は、本発明のメモリ管理方法で必要となる構成を示す図である。メモリ管理部１１は、メモリブロック２内のメモリ領域を統合する統合手段を含み、メモリブロック２の先頭となるメモリ領域にメモリブロック管理テーブル３、最終となるメモリ領域にメモリ領域管理テーブル４を形成することにより、メモリブロック２内のメモリ領域の確保および解放の処理と、メモリ領域が使用状態または空き状態であるかの管理を行う。本実施例では、メモリブロック管理テーブル３とメモリ領域管理テーブル４との間にＭ１〜Ｍ４のメモリ領域に区分された状態で、Ｍ１〜Ｍ３は使用状態のメモリ領域、Ｍ４は空き状態のメモリ領域となっている場合について説明する。
【０００７】
メモリ領域管理テーブル４内のデータと管理されるメモリ領域の関係は、図１の矢印の通りである。図１に示すように、メモリ領域管理テーブル４の直上のメモリ領域Ｍ４から順に記憶することにより、メモリ領域の確保または開放が行われた場合に、メモリ領域管理テーブル４が連続した領域となるように追加または削除を行いやすくなる。なお、メモリ領域管理テーブル４の先頭は、終端フラグである。領域の変動が多いメモリ領域管理テーブル４を最終領域に連続して形成することにより、メモリ領域を有効に使用することが可能となる。
【０００８】
このように、図１に示すような構成により、メモリブロック２内にメモリブロック２およびメモリ領域の管理テーブルを持たせるために、管理テーブルを別に用意する必要がなくなる。
【０００９】
図２は、メモリブロック２のメモリブロック管理テーブル３を示す図である。メモリブロック管理テーブル３には、メモリブロック２自身の情報と、メモリ管理部１がメモリ領域の確保を行う際にメモリ領域が確保可能かどうかの判断基準となる空き状態のメモリ領域の大きさに関する情報を保存する。
【００１０】
空き状態のメモリ領域へのオフセットは、メモリブロック２のメモリ領域管理テーブル４内のメモリブロック２の空き状態のメモリ領域を示すテーブルデータへのオフセットを示している。メモリ領域管理テーブル４の空き状態のメモリ領域を示すテーブルデータは、確保可能だった場合に、メモリ領域の実際のアドレスを指定するために用いるメモリブロック２内の空き状態のメモリ領域へのオフセットが含まれている。図３は、メモリ領域管理テーブル４を示す図であり、メモリ管理部１がメモリ領域の確保または解放を行った際に、追加または削除することによってメモリブロック２内のメモリ領域を管理するために用いるものであり、メモリブロック２の最後尾から格納されることを特徴としている。
【００１１】
図４は、メモリブロック２におけるメモリ領域の確保処理のフローチャートを示す。まず、確保しようとするメモリ領域の大きさに関して充分な空き状態のメモリ領域を持つメモリブロックが存在するかどうかを調査する（ＳＴ４０１）。十分な空き状態のメモリ領域を持つメモリ領域があれば、メモリ領域確保後の空きメモリ領域のサイズを計算し（ＳＴ４０２）、メモリブロック管理テーブル３の空き状態のメモリ領域へのオフセットからメモリ領域管理テーブル４を通してメモリ領域のオフセットを得る（ＳＴ４０３）。その後、メモリ領域を確保する場合には、メモリ領域の確保によって更新されたメモリブロック２内の空き状態のメモリ領域の情報をメモリ領域管理テーブル４に追加し、メモリ領域管理テーブル４の終端を示すデータも移動する（ＳＴ４０４〜ＳＴ４０６）。一方、全てのメモリブロック２において十分な空き状態のメモリ領域が無い場合には、新規にメモリブロックを生成する（ＳＴ４０８）。その後、メモリブロックの初期値としてメモリブロック管理テーブルにはメモリブロックのサイズとそのサイズから得られる空き状態のメモリ領域のサイズ、空きメモリ領域へのオフセット、さらにメモリブロックを既存のメモリブロックの最後尾に付加するように前のメモリブロックへのポインタを設定する（ＳＴ４０９〜ＳＴ４１４）。次のメモリブロックへのポインタには、ＮＵＬＬを設定する。このような処理後、要求されたメモリ領域の確保を行う。
【００１２】
図５は、メモリ領域の確保処理に対するメモリブロック２の状態遷移を示す図である。図５（ａ）はメモリ領域全てが空き状態のメモリ領域Ｍ５となる場合を示す図であり、この図５（ａ）の状態から図５（ｂ）に示すようにメモリ領域Ｍ６を確保すると、メモリブロック２の最後尾のメモリ領域管理テーブル４に対して、確保したメモリ領域Ｍ５に関するデータを格納するために、メモリ領域管理テーブル４のサイズは確保前に比べて大きくなる。図５（ｂ）の状態から図５（ｃ）に示すようにメモリ領域Ｍ７を確保すると、さらにメモリ領域管理テーブル４のサイズが大きくなる。
【００１３】
図６は、メモリ領域の解放処理を示すフローチャートである。まず、指定されたメモリ領域へのポインタから、該当するメモリ領域管理テーブル４内のテーブルデータを探索し（ＳＴ６０１）、空き状態のメモリ領域の統合処理を行う（ＳＴ６０２〜ＳＴ６０７）。解放したメモリ領域がメモリブロック２の最後尾の空き状態のメモリ領域と隣接していた場合に限り、空き状態のメモリ領域を統合する。そして、メモリ領域解放処理、空きメモリ領域統合処理の結果をメモリ領域管理テーブルに反映させる（ＳＴ６０８、ＳＴ６０９）。
【００１４】
また、メモリブロック２内に空き状態のメモリ領域しか存在しなくなった場合には、メモリブロック２の解放処理を行う。図７は、メモリブロック２の解放処理については示すフローチャートであり、ＳＴ７０１〜ＳＴ７０５の手順に従って処理を行う。図７では、一連のメモリブロック群の先頭であるかをＳ判定し（ＳＴ７０１）、最後尾のメモリブロックであるかどうかを判定して（ＳＴ７０４）処理を行う。
【００１５】
このような処理により、図８に示すように、図８（ａ）から図８（ｂ）に示すように、最後尾の空き状態のメモリ領域Ｍ１１に隣接していないメモリ領域Ｍ９を開放した場合に、メモリブロック２内では途中の空き状態のメモリ領域Ｍ９がそのまま放って置かれることになるが、電子写真装置の描画モジュールで使用されるような比較的寿命の短いメモリ領域である場合にはそれほど大きな問題とはならず、逆に解放処理が高速に行えるという利点の方が大きい。また、解放処理において検索されるのは、連続した領域に格納されているメモリ領域管理テーブル４のみであるため、探索を高速に行うことが可能である。
【００１６】
図８（ｂ）から図８（ｃ）に示すようにメモリ領域Ｍ８を開放する場合もそのままとなり、図８（ｃ）から図８（ｄ）に示すようにメモリ領域Ｍ１０を開放する場合は、Ｍ８〜Ｍ１１が連続して開放するために、１つの空き状態のメモリ領域として統合処理を行う。
【００１７】
【発明の効果】
以上説明したように、本発明によれば、最終メモリ領域に自メモリブロック内の記憶領域の管理情報を有するメモリ領域管理テーブルを形成し、メモリ領域の確保または開放が行われた場合に、前記メモリ領域管理テーブルが連続した領域となるように追加または削除を行うメモリ管理方法により、メモリブロックを管理するためのデータをメモリブロック以外に持つ必要は無く、メモリブロックのみで完結するために、メモリの細分化を防ぎ、管理テーブルの容量不足によってメモリが確保できなくなることがなくなる。また、連続した領域にメモリ領域管理テーブルを持つため、メモリ領域へのアクセスが簡単な処理で行えることと、管理するメモリをモジュール内で用いるような比較的寿命の短いものに絞ることによってメモリ領域の解放処理を高速に行うことができるようになる。
【図面の簡単な説明】
【図１】本発明のメモリ管理方法で必要となる構成を示す図である。
【図２】メモリブロックのメモリブロック管理テーブルを示す図である。
【図３】メモリ領域管理テーブルを示す図である。
【図４】メモリブロックにおけるメモリ領域の確保処理のフローチャートを示す。
【図５】メモリ領域の確保処理に対するメモリブロックの状態遷移を示す図である。
【図６】メモリ領域の解放処理を示すフローチャートである。
【図７】メモリブロック２の解放処理について示すフローチャートである。
【図８】メモリブロックにおけるメモリ開放処理の状態遷移を示す図である。
【符号の説明】
１１：メモリ管理部
２：メモリブロック
３：メモリブロック管理テーブル
４：メモリ領域管理テーブル
Ｍ１〜Ｍ１１：メモリ領域
【図１】
2004086461.tif 000003
【図２】
2004086461.tif 000004
【図３】
2004086461.tif 000005
【図４】
2004086461.tif 000006
【図５】
2004086461.tif 000007
【図６】
2004086461.tif 000008
【図７】
2004086461.tif 000009
【図８】
2004086461.tif 000010