(57)【要約】【課題】確保される領域サイズや確保されてから開放されるまでの使用期間の長さに大きな差がある複数の用途にメモリが共用される場合にもメモリの断片化が生じ難いメモリ管理方法を提供する。【解決手段】確保されるメモリ領域４０に対して、そのメモリ領域の用途や使用期間を示す管理情報４１を登録する。確保するメモリ領域の用途や使用期間と、既に確保されているメモリ領域の用途や使用期間とを比較し、確保するメモリ領域の用途や使用期間と近似する用途や使用期間を持つ確保済み領域が周辺（前後）に存在する未使用領域から優先的に領域を割り当てる。【選択図】図３
2007310626.tif 000002
【特許請求の範囲】
【請求項１】
メモリ領域の確保処理において、確保したメモリ領域の管理部分に、該メモリ領域の用途を表わす用途情報を登録する
ことを特徴とするメモリ管理方法。
【請求項２】
メモリ領域の確保処理において、確保したメモリ領域の管理部分に、該メモリ領域の使用期間に関する情報を登録する
ことを特徴とするメモリ管理方法。
【請求項３】
メモリ領域の確保処理において、確保の要求されたメモリ領域に対する用途に応じて、割り当て領域の検索方法を決定する
ことを特徴とするメモリ管理方法。
【請求項４】
メモリ領域の確保処理において、確保の要求されたメモリ領域に対する使用期間に応じて、割り当て領域の検索方法を決定する
ことを特徴とするメモリ管理方法。
【請求項５】
前記メモリ領域の確保処理において、確保済みのメモリ領域の管理部分に登録されている用途情報に基づいて、割り当て領域の取得先を選択する際の未使用領域の優先順位を決定する
ことを特徴とする請求項１に記載のメモリ管理方法。
【請求項６】
未使用領域の周辺に位置する確保済みのメモリ領域の管理部分に登録されている用途情報と、確保の要求されたメモリ領域に対する用途との比較結果に基づいて、前記優先順位を決定する
ことを特徴とする請求項５に記載のメモリ管理方法。
【請求項７】
未使用領域の前後に隣接するメモリ領域の状態情報が共に確保済みを示し、該メモリ領域の用途情報が互いに同一の用途を示し、かつ、該用途情報が、確保の要求されたメモリ領域に対する用途と相違する場合は、前記未使用領域に対する前記優先順位を低くする
ことを特徴とする請求項６に記載のメモリ管理方法。
【請求項８】
メモリ領域の用途には、ソフトウェア用と画像データ用とがあり、
未使用領域の前後に隣接するメモリ領域の状態情報が共に確保済みを示し、該メモリ領域の用途情報が共にソフトウェア用であることを示し、かつ、確保の要求されたメモリ領域に対する用途が画像データ用の場合は、前記未使用領域に対する前記優先順位を低レベルに決定する
ことを特徴とする請求項６に記載のメモリ管理方法。
【請求項９】
メモリ領域の用途には、ソフトウェア用と画像データ用とがあり、
未使用領域の前後に隣接するメモリ領域の状態情報が共に確保済みを示し、該メモリ領域の用途情報が共に画像データ用であることを示し、かつ、確保の要求されたメモリ領域に対する用途がソフトウェア用の場合は、前記未使用領域に対する前記優先順位を低レベルに決定する
ことを特徴とする請求項６に記載のメモリ管理方法。
【請求項１０】
前記メモリ領域の確保処理において、確保済みのメモリ領域の管理部分に登録されている使用期間に関する情報に基づいて、割り当て領域の確保先の検索に係わる未使用領域の優先順位を決定する
ことを特徴とする請求項２に記載のメモリ管理方法。
【請求項１１】
未使用領域の周辺に位置する確保済みのメモリ領域の管理部分に登録されている使用期間に関する情報と、確保の要求されたメモリ領域に対する使用期間との比較結果に基づいて、前記優先順位を決定する
ことを特徴とする請求項１０に記載のメモリ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ領域の取得と開放を行なうメモリ管理方法に係わり、特に、複数の用途で効率よくメモリを共用するための技術に関する。
【背景技術】
【０００２】
コンピュータ装置においては、メモリ資源を有効活用するために、各処理が必要なときに必要なサイズのメモリ領域を取得し、使い終わったら開放するという動的なメモリ管理が行なわれる。
【０００３】
このようなメモリ管理では、メモリ領域の取得サイズや開放時期が様々になるので、取得と開放を繰り返すうちに、未使用領域（空き領域）が歯抜けの状態となって断片化し、未使用領域の総量は充分に残っていても、連続する大きな空き領域を確保できないという事態が発生してしまう。
【０００４】
そこで、通常は、図１０に示すように、使用していたメモリ領域３０１の開放時に、該開放するメモリ領域３０１の前後に未使用領域が存在するか否かを調べ、隣接する未使用領域３０２、３０３が存在する場合はその未使用領域３０２、３０３と開放するメモリ領域３０１とを１つの未使用領域３０４に結合させる処理が行なわれる（たとえば、特許文献１参照。）。
【０００５】
【特許文献１】特開平５−１２０９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
開放時に、隣接する未使用領域を結合させる方法は、メモリ領域が開放されなければその効果を得ることはできないので、たとえば、未使用領域と未使用領域との間に長期間開放されない用途に使用されるメモリ領域が確保されている場合には、これらのメモリ領域が結合されて大きな未使用領域が生み出されることは長期に亘って実現されない。
【０００７】
また、一旦、小さいサイズのメモリ領域が各所に散在して確保されてしまうと、その後に大きな連続領域を生み出すことは難しくなる。たとえば、システムメモリを、画像処理を行なうための領域と、ソフトウェアが通常のデータ処理を行なうための領域とに共用する場合、画像用の領域とソフトウェア用の領域とでは、確保される領域のサイズや確保されてから開放されるまでの使用期間の長さに大きな差があるので、開放時に、隣接する未使用領域を単に結合させるだけでは、メモリ領域の断片化を充分に抑制することはできない。
【０００８】
本発明は、上記の問題を解決しようとするものであり、確保される領域サイズや確保されてから開放されるまでの使用期間の長さに大きな差がある複数の用途にメモリが共用される場合にもメモリの断片化が生じ難いメモリ管理方法を提供することを目的としている。
【課題を解決するための手段】
【０００９】
上記の目的は、以下に示す各項の発明により達成される。
【００１０】
（１）メモリ領域の確保処理において、確保したメモリ領域の管理部分に、該メモリ領域の用途を表わす用途情報を登録する
ことを特徴とするメモリ管理方法。
【００１１】
上記発明では、確保したメモリ領域の管理部分に、そのメモリ領域の用途情報が登録される。管理部分は、確保したメモリ領域の先頭あるいは末尾に設けられてもよいし、確保するメモリ領域とは別の領域に設けた管理テーブルなどとして設けられてもよい。用途情報は、各処理からメモリ領域の確保要求を受ける際のパラメータとして受け取るとよい。用途は、メモリ領域のサイズや使用期間、その他の制約（たとえば、バウンダリの有無）などの違いが反映されるように分類するとよい。
【００１２】
（２）メモリ領域の確保処理において、確保したメモリ領域の管理部分に、該メモリ領域の使用期間に関する情報を登録する
ことを特徴とするメモリ管理方法。
【００１３】
上記発明では、確保したメモリ領域の管理部分に、そのメモリ領域の使用期間に関する情報が登録される。管理部分は、確保したメモリ領域の先頭あるいは末尾に設けられてもよいし、確保するメモリ領域とは別の領域に設けた管理テーブルなどとして設けられてもよい。使用期間に関する情報は、使用期間の長さや解放する日時を具体的に数値などで示すものでもよいし、使用期間の長短を複数段階で示すようなものでもかまわない。
【００１４】
（３）メモリ領域の確保処理において、確保の要求されたメモリ領域に対する用途に応じて、割り当て領域の検索方法を決定する
ことを特徴とするメモリ管理方法。
【００１５】
上記発明では、たとえば、確保要求のパラメータとしてそのメモリ領域の用途情報を受け取り、この用途情報が示す用途に応じて、今回の確保要求に対する割り当て領域の検索方法を決定する。たとえば、メモリの先頭から検索するか末尾から検索するかを切り替えたり、要求されたサイズを取得可能な最小サイズの未使用領域から優先的に検索するか否かを用途に応じて決定したりする。
【００１６】
これにより、用途の同じメモリ領域が比較的近くに割り当てられるようになり、メモリ内で用途に基づく棲み分けが行なわれて断片化が抑制される。たとえば、用途によって領域サイズに大きな差がある場合は、大きなサイズのメモリ領域が確保される区域と比較的小さいサイズの領域が確保される区域とがメモリ内で分かれて存在するようになり、メモリの断片化が防止される。
【００１７】
（４）メモリ領域の確保処理において、確保の要求されたメモリ領域に対する使用期間に応じて、割り当て領域の検索方法を決定する
ことを特徴とするメモリ管理方法。
【００１８】
上記発明では、たとえば、確保要求のパラメータとしてそのメモリ領域の使用期間に関する情報を受け取り、この情報が示す使用期間に応じて、今回の確保要求に対する割り当て領域の検索方法を決定する。たとえば、メモリの先頭から検索するか末尾から検索するかを切り替えたり、要求されたサイズを取得可能な最小サイズの未使用領域から優先的に検索するか否かを使用期間に応じて決定したりする。
【００１９】
これにより、使用期間が近似するメモリ領域が比較的近くに割り当てられるようになり、メモリ内で使用期間の長短に基づく棲み分けが行なわれて断片化が抑制される。たとえば、使用期間の長いメモリ領域が確保される区域と比較的使用期間が短く直ぐに開放される区域とがメモリ内で分かれて存在するようになり、使用期間の大きく異なる領域同士が交互に混在するようなことがなくなって、メモリの断片化が防止される。
【００２０】
（５）前記メモリ領域の確保処理において、確保済みのメモリ領域の管理部分に登録されている用途情報に基づいて、割り当て領域の取得先を選択する際の未使用領域の優先順位を決定する
ことを特徴とする（１）に記載のメモリ管理方法。
【００２１】
上記発明では、確保の要求されたメモリ領域をどの未使用領域から割り当てるかを選択する際の各未使用領域の優先順位を、既に確保されて使用中のメモリ領域の用途に応じて決定する。
【００２２】
（６）未使用領域の周辺に位置する確保済みのメモリ領域の管理部分に登録されている用途情報と、確保の要求されたメモリ領域に対する用途との比較結果に基づいて、前記優先順位を決定する
ことを特徴とする（５）に記載のメモリ管理方法。
【００２３】
上記発明では、未使用領域の周辺に位置する確保済みのメモリ領域の用途と、確保するメモリ領域に対する用途とを比較し、用途の一致性に基づいて、割り当て時の優先順位を決定する。たとえば、前後の確保済み領域の用途が共にこれから確保するメモリ領域に対する用途と相違する場合は優先順位低、前後のうちの一方の用途がこれから確保するメモリ領域の用途と同じで他方が相違する場合は優先順位中、前後が共に確保するメモリ領域の用途と一致する場合は優先順位高などのように決定する。
【００２４】
すなわち、未使用領域の前後の確保済みメモリ領域の用途とこれから確保するメモリ領域の用途とが一致する未使用領域を、割り当て領域の取得先として優先的に使用することで、サイズや開放タイミングの近似するメモリ領域が近接するように取得され、開放時に隣のメモリ領域と結合されやすくなり、メモリの断片化が抑制される。周辺は、未使用領域の前後の領域に限定されず、より広い範囲に設定してもよい。
【００２５】
（７）未使用領域の前後に隣接するメモリ領域の状態情報が共に確保済みを示し、該メモリ領域の用途情報が互いに同一の用途を示し、かつ、該用途情報が、確保の要求されたメモリ領域に対する用途と相違する場合は、前記未使用領域に対する前記優先順位を低くする
ことを特徴とする（６）に記載のメモリ管理方法。
【００２６】
上記発明では、同一用途の確保済みメモリ領域の間にある未使用領域から、これら前後の領域と異なる用途に使用されるメモリ領域が新たに確保される確率を低くしている。これにより、後に、該未使用領域とその前後の領域とが１つの連続した未使用領域として繋がる可能性を高めている。
【００２７】
（８）メモリ領域の用途には、ソフトウェア用と画像データ用とがあり、
未使用領域の前後に隣接するメモリ領域の状態情報が共に確保済みを示し、該メモリ領域の用途情報が共にソフトウェア用であることを示し、かつ、確保の要求されたメモリ領域に対する用途が画像データ用の場合は、前記未使用領域に対する前記優先順位を低レベルに決定する
ことを特徴とする（６）に記載のメモリ管理方法。
【００２８】
上記発明では、未使用領域の前後が共にソフトウェア用の確保済みメモリ領域の場合に、該未使用領域から画像データ用のメモリ領域が新たに取得される確率が低くなり、メモリの断片化が防止される。
【００２９】
（９）メモリ領域の用途には、ソフトウェア用と画像データ用とがあり、
未使用領域の前後に隣接するメモリ領域の状態情報が共に確保済みを示し、該メモリ領域の用途情報が共に画像データ用であることを示し、かつ、確保の要求されたメモリ領域に対する用途がソフトウェア用の場合は、前記未使用領域に対する前記優先順位を低レベルに決定する
ことを特徴とする（６）に記載のメモリ管理方法。
【００３０】
上記発明では、未使用領域の前後が共に画像データ用の確保済みメモリ領域の場合に、該未使用領域からソフトウェア用のメモリ領域が新たに取得される確率が低くなり、メモリの断片化が防止される。
【００３１】
（１０）前記メモリ領域の確保処理において、確保済みのメモリ領域の管理部分に登録されている使用期間に関する情報に基づいて、割り当て領域の確保先の検索に係わる未使用領域の優先順位を決定する
ことを特徴とする（２）に記載のメモリ管理方法。
【００３２】
上記発明では、確保の要求されたメモリ領域をどの未使用領域から割り当てるかを選択する際の各未使用領域の優先順位を、既に確保されて使用中のメモリ領域の使用期間に応じて決定する。
【００３３】
（１１）未使用領域の周辺に位置する確保済みのメモリ領域の管理部分に登録されている使用期間に関する情報と、確保の要求されたメモリ領域に対する使用期間との比較結果に基づいて、前記優先順位を決定する
ことを特徴とする（１０）に記載のメモリ管理方法。
【００３４】
上記発明では、未使用領域の周辺に位置する確保済みのメモリ領域の使用期間と、確保するメモリ領域の使用期間とを比較し、使用期間の一致性に基づいて、割り当て時の優先順位を決定する。たとえば、前後の確保済み領域の使用期間が共にこれから確保するメモリ領域の使用期間と相違する場合は優先順位低、前後のうちの一方の使用期間がこれから確保するメモリ領域の使用期間と同じで他方が相違する場合は優先順位中、前後が共に確保するメモリ領域の使用期間と一致する場合は優先順位高などのように決定する。
【００３５】
すなわち、未使用領域の前後の確保済みメモリ領域の使用期間と、これから確保するメモリ領域の使用期間とが一致している未使用領域を、割り当て領域の取得先として優先的に使用することで、開放タイミングが類似する領域が近接して配置され、開放時に結合されやすくなってメモリの断片化が抑制される。周辺は、未使用領域の前後の領域に限定されず、より広い範囲に設定してもよい。
【発明の効果】
【００３６】
本発明に係わるメモリ管理方法によれば、確保したメモリ領域に関連付けてそのメモリ領域の用途や使用期間に関する情報を登録するようにしたので、確保の要求された領域をどの未使用領域から割り当てるかを、これらの情報を利用して制御することができ、メモリ領域を確保する段階から、断片化が生じ難いように対策することで、メモリの断片化をより効果的に抑制することができる。
【発明を実施するための最良の形態】
【００３７】
以下、図面に基づき本発明の各種実施の形態を説明する。まず、各実施の形態に共通する部分について説明した後、各実施の形態に関する部分について説明する。
【００３８】
＜各実施の形態の共通部分＞  
図１は、本発明に係わるメモリ管理方法が適用された装置の一例である画像形成装置１０の構成を示している。画像形成装置１０は、原稿画像を読み取ってその複製画像を記録紙上に作成して出力するコピー機能などを備えた装置であり、システム全体の動作を制御するシステム制御部１１と、演算処理機能を果たすプロセッサ１２と、各種周辺機能を制御する周辺制御部１３とを主たる制御部として備えている。
【００３９】
システム制御部１１には、プロセッサ１２および周辺制御部１３のほか、ＬＣＤ（Liquid Crystal Display）パネル１４と、システムメモリ１５、システム画像処理部１６が接続されている。ＬＣＤパネル１４は、ユーザからの各種操作の受け付けと各種操作画面や案内画面の表示を行なう。システムメモリ１５は、プロセッサ１２の動作プログラムの格納やプロセッサ１２が動作プログラムを実行する際のワークメモリ、画像データの格納などに共用されるメモリである。
【００４０】
システム画像処理部１６には、原稿画像の読み取り素子としてのＣＣＤ（Charge Coupled Device）１７が読取画像処理部１８を介して接続されると共に、レーザプリンタ方式の記録部のＬＤ（Laser Diode）１９が記録画像処理部２１を介して接続されている。原稿の読取動作では、ＣＣＤ１７から出力された画像データは読取画像処理部１８で各種の画像補正を施された後、システム画像処理部１６に入力され、システム画像処理部１６でさらに各種の画像処理を受けた後、システム制御部１１を通じてシステムメモリ１５に一旦格納される。記録紙への出力動作においては、システムメモリ１５に格納されている画像データはシステム制御部１１により読み出されてシステム画像処理部１６に入力され、各種の画像処理をシステム画像処理部１６で受けた後、記録画像処理部２１を経てＬＤ１９へ出力される。
【００４１】
周辺制御部１３には、起動用プログラムなどが予め記憶されたＲＯＭ（Read Only Memory）２２と、小容量ストレージデバイス２３と、大容量ストレージデバイス２４と、不揮発メモリ２５と、外部インターフェイス部２６とが接続されている。小容量ストレージデバイス２３は、制御プログラムの格納や汎用オペレーティング・システムのプログラムの格納などに使用される。ここでは、小容量ストレージデバイス２３としてフラッシュメモリを使用する。装置の立ち上げ時にＲＯＭ２２内の起動プログラムを実行することで、小容量ストレージデバイス２３内のプログラムがシステムメモリ１５に展開されて動作するようになっている。
【００４２】
大容量ストレージデバイス２４は、ハードディスク装置などで構成され、画像データの格納などに使用される。不揮発メモリ２５は、装置固有の各種パラメータの記憶などに使用される。外部インターフェイス部２６は、各種の通信方式で外部装置と接続して通信の制御を行なう機能を果たす。たとえば、接続にはＬＡＮ（Local Area Network）、ＵＳＢ（Universal Serial Bus）、ＩＥＥＥ１３９４（Institute of Electrical and Electronic Engineers 1394）などが使用される。
【００４３】
画像形成装置１０は、システムメモリ１５に対するメモリ領域の取得と開放を制御するメモリ管理機能を有している。メモリ管理機能は、プロセッサ１２が制御プログラム内のメモリ管理プログラムを実行することで実現される。メモリ管理プログラムは、他のプログラムからの要求に応じて、その要求されたサイズのメモリ領域をシステムメモリ１５から確保して要求元のプログラムに提供する。また、確保済みの領域に対する開放指令を他のプログラムから受けると、該当するメモリ領域を未使用領域（空き領域）として開放するように動作する。
【００４４】
図２は、画像領域を複数に分けて処理する場合のブロック分けの一例を示している。画像形成装置１０は、同図に示すように画像データを複数のブロックに分けて処理する。この例では、１ページ分の画像データ３０は、垂直方向５ブロック×水平方向４ブロックの２０ブロックに分けられ、各ブロック３１は、画素３３を４×４に配列した単位ユニット３２を縦２５６ユニット×横２５６ユニットの行列状に配置した構成になっている。カラー画像を扱う場合、各ユニット３２は、Ｃ（シアン）、Ｍ（マゼンタ）、Ｙ（イエロ）、Ｋ（ブラック）の各色について４画素×４画素の領域を備える。実際の画像データのサイズは垂直方向５ブロック×水平方向４ブロックの領域サイズよりもある程度小さく、周辺のブロックにおいては画像データの格納に使用されない、余り領域が生じる。
【００４５】
画像データを格納する領域をシステムメモリ１５から効率よく確保するには、垂直方向５ブロック分を連続領域に確保することが望ましい。そのとき必要となるメモリ領域は、５ブロック分ｘ４となる。このように５ブロック分ずつ連続に確保できた場合、確保した領域内で画像データの格納に使用されない余りサイズが、１ブロックずつ確保した場合の１／５になる。また、システムメモリ１５に十分な空き領域がない場合においても、なるべく垂直方向で連続となる領域を確保するとよい。たとえば、５ブロック分の領域を３ブロックと２ブロックとに分けて確保できるのであれば、無駄になる余り領域のサイズを、１ブロック毎に確保する場合の２／５に削減することができる。
【００４６】
このように画像データを格納するために使用するメモリ領域は、プロセッサ１２がプログラムを実行する際のワークエリアに使用する領域などに比べて、大きな領域サイズが要求される。
【００４７】
図３は、確保されたメモリ領域に関する管理情報の一例を示している。この例では、メモリ領域の管理部分として、確保したメモリ領域４０の先頭にヘッダ部４１を設け、該ヘッダ部４１に各種の管理情報を格納するようにしてある。別途のメモリ管理テーブルを管理部分として設け、該メモリ管理テーブルに各メモリ領域に関する管理情報を登録して管理するようにしてもよい。
【００４８】
管理情報には、メモリ割り当ての有効／無効（有効＝使用中、無効＝未使用）を示す状態情報４１ａ、領域のサイズを示すサイズ情報４１ｂ、メモリ領域の用途を示す用途情報４１ｃ、メモリ領域の使用期間に関するメモリ使用期間情報４１ｄなどがある。ここで、「用途情報」とはメモリ領域の用途を判別するための情報であり、用途としては、画像データの格納用（以後、画像用と呼ぶ。）、プログラムを実行する際のワークエリア用、プログラム格納用などがある。
【００４９】
「メモリ使用期間情報」は、そのメモリ領域が取得されてから開放されるまでの期間の長さを判別するための情報であり、たとえば、開放予定日時を示す日時情報、開放までの残り期間を示す残時間情報のほか、使用期間の長さを複数段階（長、中、短など）で示す情報などがある。
【００５０】
図３では、確保済みメモリ領域（使用中のメモリ領域）には網がけを施して示し、未使用領域は網がけのない白色で示してある。なお、未使用領域についても管理部分を設け、該管理部分に、割り当ての有効／無効、サイズ、用途情報などを登録するようにしてもよい。
【００５１】
以後、システムメモリ１５に対するメモリ管理機能のうちメモリ領域の確保処理について各種の実施の形態を説明する。
【００５２】
＜第１の実施の形態＞  
図４は、第１の実施の形態に係わるメモリ領域の確保処理の流れを示している。この処理では、割り当て領域の検索方法を要求されたメモリ領域の用途に応じて決定し、該決定した検索方法で割り当て領域を検索するようになっている。確保後の用途を示す情報は、たとえば、他の処理が確保処理を呼び出すときの引数（パラメータ）として受け取られる。確保処理は、確保の要求されたメモリ領域の用途が画像用か否かを調べ、画像用の場合は（ステップＳ１０１；Ｙ）、検索方法を、システムメモリ１５の末尾アドレスから先頭方向に未使用領域を検索するという第１検索方法に決定し、要求されたサイズのメモリ領域を、該第１検索方法で検索する（ステップＳ１０２）。
【００５３】
一方、確保の要求されたメモリ領域の用途が画像用でない場合は（ステップＳ１０１；Ｎ）、検索方法を、システムメモリ１５の先頭アドレスから末尾方向に未使用領域を検索するという第２検索方法に決定し、要求されたサイズのメモリ領域を、該第２検索方法で検索する（ステップＳ１０３）。
【００５４】
決定した検索方法に従って検索することにより、要求されたサイズ以上の未使用領域が検出された場合は（ステップＳ１０４；Ｙ）、今回の確保要求に対するメモリ領域をその未使用領域から割り当てて（ステップＳ１０５）処理を終了する（エンド）。なお、確保に成功したときは、確保したメモリ領域の先頭アドレスなどが要求元の処理に通知される。また、確保したメモリ領域の管理部分に管理情報を登録する。たとえば、確保したメモリ領域の先頭に図３のようなヘッダ部４１を管理部分として作成し、該ヘッダ部４１に用途情報などを登録する。
【００５５】
要求されたサイズ以上の未使用領域が検出されない場合は（ステップＳ１０４；Ｎ）、メモリ領域の確保に失敗したことを示す情報を要求元の処理に通知して（ステップＳ１０６）処理を終了する（エンド）。
【００５６】
これにより、用途の同じメモリ領域が比較的近くに割り当てられるようになり、システムメモリ１５内で用途に基づく棲み分けが行なわれて断片化が抑制される。
【００５７】
たとえば、システムメモリ１５が図５に示す状態にある時に、画像用のメモリ領域を確保する場合は、末尾アドレスから先頭方向（図中の矢印Ｆｗの方向）に未使用領域の検索を行なうので、未使用領域Ｇ、Ｆ、Ｅ、Ｄ、Ｃ、Ｂ、Ａの順に検索されてメモリ領域が割り当てられる。逆に、用途が画像用でないメモリ領域を確保する場合は未使用領域Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇの順（図中の矢印Ｂｗの方向）に検索されてメモリ領域が割り当てられる。その結果、画像用に確保されるメモリ領域とそれ以外の用途で確保されるメモリ領域とがシステムメモリ１５の末尾側と先頭側とに自然に別れるようになり、サイズの大きく異なる領域同士が交互に混在するようなことがなくなって、メモリ（空き領域）の断片化が防止される。
【００５８】
上記の例では、画像用とそれ以外とで用途を分類したが、検索方法を決定する基準となる用途の分類は例示したものに限定されない。なお、使用期間に基づいて検索方法を決定する場合も用途の場合と同様にすることができる。たとえば、使用期間を長期・短期の２つに分類し、長期の場合はメモリの先頭から末尾に向かって未使用領域を検索し、短期の場合はメモリの末尾から先頭に向けて未使用領域を検索するなどとすればよい。
【００５９】
＜第２の実施の形態＞  
第２の実施の形態では、メモリ領域の確保処理において、割り当て領域の取得先を選択する際の未使用領域の優先順位を、確保済みのメモリ領域の使用期間に関する情報に基づいて決定し、該決定した優先順位に従って未使用領域を検索してメモリ領域を割り当てるようになっている。
【００６０】
図６は、第２の実施の形態に係わるメモリ領域の確保処理の流れの一例を示している。この例では、未使用領域の優先順位を、その未使用領域の前後に位置する確保済みメモリ領域の使用期間と、確保の要求されたメモリ領域の使用期間との比較結果に基づいて決定する。確保の要求されたメモリ領域の使用期間を示す情報は、たとえば、他の処理が確保処理を呼び出すときの引数（パラメータ）として受け渡される。確保済みメモリ領域の使用期間は、そのメモリ領域の管理部分に登録された管理情報の中のメモリ使用期間情報から認識する。たとえば、図３のヘッダ部４１のメモリ使用期間情報４１ｄから認識する。
【００６１】
確保処理では、まず、要求されたサイズ以上の連続した未使用領域がシステムメモリ１５内に存在するか否かを調べ（ステップＳ２０１）、存在しない場合は（ステップＳ２０１；Ｎ）、メモリ領域の確保に失敗したことを示す情報を要求元に通知して（ステップＳ２０２）処理を終了する（エンド）。
【００６２】
要求されたサイズ以上の連続した未使用領域がシステムメモリ１５内に存在する場合は（ステップＳ２０１；Ｙ）、該当するすべての未使用領域の優先順位を、その未使用領域の前後に位置する確保済みメモリ領域の使用期間と、確保の要求されたメモリ領域の使用期間との比較結果に基づいて決定する（ステップＳ２０３）。そして、要求されたサイズのメモリ領域を優先順位の高い未使用領域から割り当てて（ステップＳ２０４）処理を終了する（エンド）。
【００６３】
なお、確保に成功したときは、確保したメモリ領域の先頭アドレスなどが要求元に通知される。また、確保したメモリ領域の管理部分に、該確保したメモリ領域の使用期間に関する情報などが登録される。ここでは、確保したメモリ領域の先頭に図３のようなヘッダ部を作成してメモリ使用期間情報４１ｄなどを登録する。
【００６４】
上記の確保処理における具体的な動作を、図７の状態のシステムメモリ１５を例に説明する。図７において、確保済みメモリ領域（使用中メモリ領域）には網がけを施してあり、未使用領域は白色で示してある。また、領域Ｌは確保済みメモリ領域であって使用期間が長期間の領域を、領域Ｍは確保済みメモリ領域であって使用期間が中期間の領域を、領域Ｓは確保済みメモリ領域であって使用期間が短期間の領域を示している。
【００６５】
たとえば、図７の状態のシステムメモリ１５から、使用期間が中期間のメモリ領域を確保する場合、未使用領域Ａ、Ｄ、Ｅはいずれも使用期間が短期間の領域Ｓに前後から囲まれており、未使用領域Ａ、Ｄ、Ｅから中期間のメモリ領域を確保すると、前後にある短期間のメモリ領域Ｓが比較的直ぐに開放されても、その間に確保した中期間のメモリ領域がなかなか開放されず、該開放されない領域が、連続した未使用領域の形成を阻害する要因、すなわち、断片化を生じさせる要因になりやすい。そこで、使用期間がこのような関係にある未使用領域Ａ、Ｄ、Ｅについては、優先順位を低く設定する。
【００６６】
一方、未使用領域Ｂは、確保の要求されたメモリ領域の使用期間（中期間）と同程度の使用期間の確保済み領域Ｍに前後を囲まれているので、該未使用領域Ｂから中期間のメモリ領域を確保すると、該確保したメモリ領域が前後の領域Ｍとほぼ同時期に開放されると考えられる。そこで、使用期間がこのような関係にある未使用領域Ｂについては、優先順位を高く設定する。
【００６７】
未使用領域Ｃ、Ｆはいずれも前後で使用期間の異なる確保済み領域に囲まれた未使用領域であるが、前後のうちの一方は中期間の確保済み領域Ｍであるので、未使用領域Ｂに与えた優先順位と、未使用領域Ａ、Ｄ、Ｅに与えた優先順位の中間の優先順位を設定する。
【００６８】
図７の例では、使用期間の対比によって優先順位を定めると共に、同一の優先順位の未使用領域が２以上存在する場合にはこれら同一の優先順位相互間でのさらに詳細な優先順位を「メモリの先頭側を高い優先順位にする」というルールで設定してある。図７の各未使用領域に示した「１」〜「６」の数字は、上記のようにして決定した優先順位（数字が小さいほど高優先順位）を示している。
【００６９】
なお、使用期間に基づく優先順位が同一の未使用領域が複数存在する場合に、これら複数の未使用領域相互間におけるさらに詳細な優先順位は、第１の実施の形態で示した手法を利用して決定してもよい。たとえば、確保するメモリ領域の使用期間が短期間の場合は、使用期間の対比による優先順位が同一の未使用領域に対してメモリの先頭から末尾に向かって優先順位付けし、確保するメモリ領域の使用期間が中期間または長期間の場合は、メモリの末尾から先頭に向かって優先順位付けするようにしてもよい。
【００７０】
このように、メモリ領域の使用期間に関する情報を比較し、使用期間が同じあるいは近似している確保済みメモリ領域が周辺に存在する未使用領域から優先的にメモリ領域を割り当てるようにしたので、開放されるタイミングが近いメモリ領域が近接して配置されるようになり、開放された領域の間に長期間開放されないメモリ領域が存在する確率が低減し、メモリの断片化が抑制される。
【００７１】
＜第３の実施の形態＞  
第３の実施の形態では、メモリ領域の確保処理において、割り当て領域の取得先を選択する際の未使用領域の優先順位を、その未使用領域の前後に位置する確保済みメモリ領域の用途と、確保の要求されたメモリ領域の用途との比較結果に基づいて決定し、該決定した優先順位に従って未使用領域を検索してメモリ領域を割り当てるようになっている。
【００７２】
第３の実施の形態に係わるメモリ領域の確保処理の流れは、図６に示すものに対して、ステップＳ２０３において優先順位を使用期間に基づいて決定する代わりに用途情報に基づいて決定する点で相違するほかは同一であり、流れ図および処理の詳細な説明は省略する。なお、確保の要求されたメモリ領域の用途を示す情報は、たとえば、他の処理が確保処理を呼び出す際の引数（パラメータ）として受け取られる。確保済みメモリ領域の用途は、そのメモリ領域に対応する管理部分に登録された管理情報の中の用途情報から認識する。たとえば、図３のヘッダ部４１の用途情報４１ｃから認識する。
【００７３】
図８に基づき、第３の実施の形態におけるメモリ領域の確保処理の具体例を説明する。図８では、確保済みメモリ領域（使用中メモリ領域）には網がけを施してあり、未使用領域は白色で示してある。また、領域Ｉは確保済みメモリ領域であって用途が画像用の領域を、領域Ｗは確保済みメモリ領域であって用途がプロセッサのワークエリア用の領域を、領域Ｐは確保済みメモリ領域であって用途がプログラム格納用の領域を示している。
【００７４】
たとえば、図８の状態のシステムメモリ１５から、ワークエリア用のメモリ領域を確保する場合、未使用領域Ａ、Ｄ、Ｅはいずれも画像用の領域Ｉに前後から囲まれており、未使用領域Ａ、Ｄ、Ｅからワークエリア用のメモリ領域を確保すると、前後にある画像用のメモリ領域Ｉが開放された後、その間に確保されたワークエリア用のメモリ領域がなかなか開放されず、該開放されない領域が、連続した未使用領域の形成を阻害する要因、すなわち、断片化を生じさせる要因になりやすい。そこで、このような関係にある未使用領域Ａ、Ｄ、Ｅについては、優先順位を低く設定する。
【００７５】
一方、未使用領域Ｂは、確保の要求されたメモリ領域の用途と同じ用途（ワークエリア用）の確保済み領域Ｗに前後を囲まれているので、該未使用領域Ｂからワークエリア用のメモリ領域を確保すると、該確保したメモリ領域が前後の領域Ｗとほぼ同時期に開放されると考えられる。そこで、このような関係にある未使用領域Ｂについては、優先順位を高く設定する。
【００７６】
未使用領域Ｃ、Ｆはいずれも前後から用途の異なる確保済み領域に囲まれた未使用領域であるが、一方はワークエリア用の確保済み領域Ｗであるので、未使用領域Ｂに割り当てた優先順位と、未使用領域Ａ、Ｄ、Ｅに割り当てた優先順位の中間の優先順位を設定する。
【００７７】
図８の例では、用途の対比によって優先順位を定めると共に、同一の優先順位の未使用領域が２以上存在する場合にはこれら同一優先順位相互間でのさらに細かい優先順位を「メモリの先頭側を高くする」というルールで設定してある。図８の各未使用領域に示した「１」〜「６」の数字は、上記のようにして決定した優先順位（数字の小さいものほど高優先順位）を示している。
【００７８】
なお、用途の対比によって決定した優先順位が同一の未使用領域が複数存在する場合に、これら複数の未使用領域相互間におけるさらに細かい優先順位を、第１の実施の形態で示した手法を利用して決定してもよい。たとえば、確保するメモリ領域の用途が画像用の場合は、用途の対比による優先順位が同一の未使用領域に対してメモリの先頭から末尾に向かって優先順位付けし、確保するメモリ領域の用途が画像用以外の場合は、メモリの末尾から先頭に向かって優先順位付けするようにしてもよい。
【００７９】
このように、メモリ領域の用途情報を比較し、用途が同じあるいは近似している確保済みメモリ領域が周辺に存在する未使用領域から優先的にメモリ領域を割り当てるようにしたので、開放されるタイミングや領域サイズの類似するメモリ領域が近接して配置されるようになり、大きな未使用領域の間に小さい確保済みメモリ領域や長期間開放されないメモリ領域の存在する確率が低減され、メモリの断片化が抑制される。
【００８０】
次に、未使用領域の前後に隣接するメモリ領域が共に確保済み領域であってそれらの用途が互いに同一であり、かつ、該用途が、確保の要求されたメモリ領域に対する用途と相違する場合には、その未使用領域に対する優先順位を低くするというアルゴリズムで領域を取得する場合について説明する。
【００８１】
図９は、上記アルゴリズムを使用したメモリ領域の確保処理の流れを示している。確保の要求されたメモリ領域の用途を示す情報は、たとえば、他の処理が確保処理を呼び出す際の引数（パラメータ）として受け取られる。確保済みメモリ領域の用途は、そのメモリ領域に対応する管理部分に登録された管理情報の中の用途情報から認識する。たとえば、図３のヘッダ部４１の用途情報４１ｃから認識する。
【００８２】
ここでは、用途として、ソフトウェア用と画像用との２種類があるものとする。
【００８３】
まず、要求サイズに近い（要求サイズ以上で最も小さい）未使用領域を検索し、該条件を満たすいずれか１つの未使用領域を決定領域とする（ステップＳ３０１）。上記条件を満たす未使用領域（決定領域）が存在する場合は(ステップＳ３０２；Ｙ)、該決定領域の前後に隣接する確保済みメモリ領域（使用中領域）の用途を調べ、これら前後の確保済みメモリ領域の用途が互いに同一用途であってこれから確保するメモリ領域に対する用途と異なる場合は（ステップＳ３０３；Ｙ）、該決定領域を低優先領域に設定した上で(ステップＳ３０４)、ステップＳ３０１に戻り、次の決定領域を検索する。なお、低優先領域はステップＳ３０１での検索対象にされない。
【００８４】
たとえば、決定領域の前後に隣接する確保済み領域の用途が共にソフトウェア用であり、かつ、確保の要求されたメモリ領域の用途が画像用の場合には、該決定領域は優先順位の低い低優先領域に設定される。また、決定領域の前後に隣接する確保済み領域の用途が共に画像用であり、かつ、確保の要求されたメモリ領域の用途がソフトウェア用の場合にも、該決定領域は優先順位の低い低優先領域に設定される。
【００８５】
決定領域の前後の確保済みメモリ領域の用途の少なくとも一方がこれから確保するメモリ領域に対する用途と同一の場合は(ステップＳ３０３；Ｎ)、該決定領域を、今回の確保処理での割り当て領域の取得先の未使用領域に最終決定し、該未使用領域の中から要求されたサイズ分の領域を割り当て領域として取得し、該割り当て領域の先頭アドレスとサイズを要求元の処理に、返却用パラメータに設定するなどにより通知して（ステップＳ３０８）処理を終了する(エンド)。
【００８６】
たとえば、決定領域の前後の確保済み領域の一方がソフトウェア用で他方が画像用の場合には、該決定領域から割り当て領域を取得する。また、決定領域の前後の確保済み領域の双方がソフトウェア用でありかつ確保の要求されたメモリ領域の用途もソフトウェア用の場合、もしくは決定領域の前後の確保済み領域の双方が画像用でありかつ確保の要求されたメモリ領域の用途も画像用の場合にも、決定領域から割り当て領域が取得される。
【００８７】
ステップＳ３０１の条件を満たす決定領域が存在しない場合は（ステップＳ３０２；Ｎ）、ステップＳ３０４において低優先領域に設定された未使用領域が存在するか否かを調べ（ステップＳ３０５）、存在しない場合は（ステップＳ３０５；Ｎ）、領域を確保できなかった旨のエラー情報を要求元の処理に通知して（ステップＳ３０６）処理を終了する（エンド）。
【００８８】
一方、低優先領域に設定された未使用領域が存在する場合は（ステップＳ３０５；Ｙ）、該低優先領域の中から割り当て領域を決定し(ステップＳ３０７)、該決定した領域の先頭アドレスとサイズを要求元の処理に通知して（ステップＳ３０８）終処理了する（エンド）。
【００８９】
低優先領域は、その前後の確保済み領域の用途が互いに同一でかつ該用途が確保要求されたメモリ領域の用途と相違しているので、低優先領域からメモリを確保すると、同一用途の使用中領域の間に異なる用途のメモリを割り込んで確保することとなり、開放のタイミングなどが相違して、開放時に隣接するメモリ領域が結合されて１つに繋がる可能性が低くなる。そこで、未使用領域の前後にある使用中領域の用途が同一でかつこれから確保するメモリ領域に対する用途と異なる場合には、その未使用領域の優先順位を低く設定し、該未使用領域から割り当て領域をなるべく取得しないようにしている。
【００９０】
以上、本発明の実施の形態を図面によって説明してきたが、具体的な構成は実施の形態に示したものに限られるものではなく、本発明の要旨を逸脱しない範囲における変更や追加があっても本発明に含まれる。
【００９１】
たとえば、システムメモリ１５をメモリ管理機能の対象とした場合を例に説明したが、開放と確保が動的に行なわれるメモリを対象にするものであればよい。
【００９２】
第１の実施の形態では、用途や使用期間に応じて、メモリの先頭から末尾に向けて検索するか末尾から先頭に向けて検索するかを変更するようにしたが、用途や使用期間に応じて決定する検索方法はこれらに限定されない。たとえば、用途や使用期間に応じて（１）最もフィットするサイズの未使用領域を優先的に検索する方法、（２）大きな未使用領域から優先的に検索する方法、などを切り替えてもよい。また、使用期間と用途の双方を勘案して検索方法を決定するように構成してもよい。
【００９３】
また、第２の実施の形態では、確保しようとするメモリ領域の使用期間と、未使用領域の前後の確保済みメモリ領域の使用期間とが、前後とも一致する場合を優先順位（高）、一方のみ一致する場合を優先順位（中）、双方とも相違する場合を優先順位（低）とする例を示したが、使用期間に基づく優先順位の決定基準は上記に限定されない。
【００９４】
たとえば、確保の要求されたメモリ領域の使用期間と未使用領域の前後の確保済み領域の使用期間とを比較し、前者が後者より短い場合は優先順位を高くし、前者が後者より長い場合は優先度を低くするというような基準で優先順位を決定してもかまわない。すなわち、隣接する確保済みメモリ領域の使用期間がこれから確保するメモリ領域の使用期間より長ければ、これから確保するメモリ領域の方が早期に開放される可能性が高いので、使用期間の長い確保済み領域の近くに使用期間の短いメモリ領域を確保しても、該確保したメモリ領域の存在が連続領域の形成を阻害する要因になる可能性は少ないことによる。
【００９５】
たとえば、中期間のメモリ領域を確保する場合において、図７の未使用領域Ｃは使用期間が中期間の確保済み領域Ｍと短期間の確保済み領域Ｓとに囲まれており、未使用領域Ｆは使用期間が長期間の確保済み領域Ｌと中期間の確保済み領域Ｍとに囲まれている。この場合、前後のうちの一方のみ使用期間が一致するという条件では、同じ優先順位になるが、未使用領域Ｆは、前後のうちの他方が長期間の確保済み領域Ｌと隣接しているので、短期間の確保済み領域Ｓと隣接している未使用領域Ｃよりも未使用領域Ｆの優先順位を高く設定する。これにより、未使用領域Ｃに隣接する短期間のメモリ領域Ｓが開放されたとき、未使用領域Ｃと結合して１つの未使用領域に拡張される可能性を高めることができ、メモリの断片化がより一層抑制される。
【００９６】
また、実施の形態では、未使用領域の前後の領域を対象に優先順位を判断したが、より広い範囲の周辺を対象にして優先順位を決定してもよい。たとえば、隣接する確保済み領域のサイズが小さい場合はそのさらに隣の確保済み領域までを含めて優先順位を判断してもよい。また、未使用領域の前後の所定アドレス範囲に含まれる領域を判断の対象にするなどとしてもかまわない。
【００９７】
本発明に係わるメモリ管理方法の対象とするメモリは半導体メモリに限定されず、ハードディスク装置などの記憶装置に適用してもかまわない。
【図面の簡単な説明】
【００９８】
【図１】本発明の実施の形態に係わる画像形成装置の構成を示すブロック図である。
【図２】本発明の実施の形態に係わる画像形成装置が画像領域を複数に分けて処理する場合のブロック分けの一例を示す説明図である。
【図３】メモリ領域の管理情報の一例を示す説明図である。
【図４】本発明の第１の実施の形態に係わる画像形成装置が行なうメモリ領域の確保処理を示す流れ図である。
【図５】メモリの使用状態と、該状態における割り当て領域の検索方法とを例示した説明図である。
【図６】本発明の第２の実施の形態に係わる画像形成装置が行なうメモリ領域の確保処理を示す流れ図である。
【図７】本発明の第２の実施の形態のメモリ領域の確保処理における領域確保の具体例を示す説明図である。
【図８】本発明の第３の実施の形態のメモリ領域の確保処理における領域確保の具体例を示す説明図である。
【図９】未使用領域の前後にある使用中領域の用途が互いに同一の場合であってこれから確保するメモリ領域の用途と異なる場合にその未使用領域の優先順位を低レベルに設定するようにしたメモリ確保処理を示す流れ図である。
【図１０】メモリ領域の開放時に前後の領域と開放領域とが結合される様子の一例を示す説明図である。
【符号の説明】
【００９９】
１０…画像形成装置
１１…システム制御部
１２…プロセッサ
１３…周辺制御部
１４…ＬＣＤパネル
１５…システムメモリ
１６…システム画像処理部
１７…ＣＣＤ
１８…読取画像処理部
１９…ＬＤ
２１…記録画像処理部
２２…ＲＯＭ
２３…小容量ストレージデバイス
２４…大容量ストレージデバイス
２５…不揮発メモリ
２６…外部インターフェイス部
４０…確保したメモリ領域
４１…ヘッダ部（管理部分）
４１ａ…状態情報
４１ｂ…サイズ情報
４１ｃ…用途情報
４１ｄ…メモリ使用期間情報
Ｂｗ…先頭から末尾への検索方法
Ｆｗ…末尾から先頭への検索方法
Ｓ…使用期間が短期間の確保済み領域
Ｍ…使用期間が中期間の確保済み領域
Ｌ…使用期間が長期間の確保済み領域
Ｉ…画像用の確保済み領域
Ｗ…ワークエリア用の確保済み領域
Ｐ…プログラム格納用の確保済み領域
【図１】
2007310626.tif 000003
【図２】
2007310626.tif 000004
【図３】
2007310626.tif 000005
【図４】
2007310626.tif 000006
【図５】
2007310626.tif 000007
【図６】
2007310626.tif 000008
【図７】
2007310626.tif 000009
【図８】
2007310626.tif 000010
【図９】
2007310626.tif 000011
【図１０】
2007310626.tif 000012