(57)【要約】【課題】複数の用途でメモリを共用する場合にも、メモリの断片化を抑制し、大きな連続領域を取得できる可能性の高いメモリ管理方法を提供する。【解決手段】使用中領域、未使用領域のそれぞれについて使用用途を管理しておき、メモリ領域を開放する際に、開放対象領域の前後の領域の使用用途が同一の場合は、開放対象領域の使用用途を前後の領域の使用用途と同じ使用用途に決定し、その後、開放対象領域の前後の領域のうち、前記決定後の開放対象領域と使用用途が同一で未使用の領域と開放対象領域とを結合する。【選択図】図５
2007310625.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）などが使用される。
【００４１】
画像形成装置１０は、システムメモリ１５に対するメモリ領域の取得と開放を制御するメモリ管理機能を有している。メモリ管理機能は、プロセッサ１２が制御プログラム内のメモリ管理プログラムを実行することで実現される。メモリ管理プログラムは、他のプログラムからの要求に応じて、その要求されたサイズのメモリ領域をシステムメモリ１５から確保して要求元のプログラムに提供する。また、確保済みの領域に対する開放指令を他のプログラムから受けると、該当するメモリ領域を未使用領域（空き領域）として開放するように動作する。
【００４２】
図２は、画像領域を複数に分けて処理する場合のブロック分けの一例を示している。画像形成装置１０は、同図に示すように画像データを複数のブロックに分けて処理する。この例では、１ページ分の画像データ３０は、垂直方向５ブロック×水平方向４ブロックの２０ブロックに分けられ、各ブロック３１は、画素３３を４×４に配列した単位ユニット３２を縦２５６ユニット×横２５６ユニットの行列状に配置した構成になっている。カラー画像を扱う場合、各ユニット３２は、Ｃ（シアン）、Ｍ（マゼンタ）、Ｙ（イエロ）、Ｋ（ブラック）の各色について４画素×４画素の領域を備える。実際の画像データのサイズは垂直方向５ブロック×水平方向４ブロックの領域サイズよりもある程度小さく、周辺のブロックにおいては画像データの格納に使用されない、余り領域が生じる。
【００４３】
画像データを格納する領域をシステムメモリ１５から効率よく確保するには、垂直方向５ブロック分を連続領域に確保することが望ましい。そのとき必要となるメモリ領域は、５ブロック分ｘ４となる。このように５ブロック分ずつ連続に確保できた場合、確保した領域内で画像データの格納に使用されない余りサイズが、１ブロックずつ確保した場合の１／５になる。また、システムメモリ１５に充分な空き領域がない場合においても、なるべく垂直方向で連続となる領域を確保するとよい。たとえば、５ブロック分の領域を３ブロックと２ブロックとに分けて確保できるのであれば、無駄になる余り領域のサイズを、１ブロック毎に確保する場合の２／５に削減することができる。
【００４４】
このように画像データを格納するために使用するメモリ領域は、プロセッサ１２がプログラムを実行する際のワークエリアに使用する領域などに比べて、大きな領域サイズが要求される。
【００４５】
図３は、メモリ管理プログラムが管理するシステムメモリ１５の使用状況の一例と該システムメモリ１５を管理するために使用するメモリ管理テーブル４０およびヘッダ部４５の一例を示している。図中の斜線部分は使用中領域を示し、白色部分は未使用領域（空き領域）を示している。メモリ管理テーブル４０は、使用中領域の管理に使用される第１管理テーブル４０Ａと、未使用領域の管理に使用される第２管理テーブル４０Ｂとに分けて構成されており、各管理テーブル４０Ａ、４０Ｂは、該当する領域を、たとえば、アドレスの小さいものから順に、リスト化して管理している。管理テーブル４０Ａ、４０Ｂには、各領域の先頭アドレスあるいはシステムメモリ１５の先頭アドレスからのオフセット値などが登録される。
【００４６】
また、使用中領域および未使用領域の先頭にはそれぞれヘッダ部４５を設けてあり、該ヘッダ部４５にそのメモリ領域に関する各種の管理情報を格納するようになっている。管理情報としては、メモリ領域が使用中か未使用かを示す状態情報４５ａ、領域のサイズを示すサイズ情報４５ｂ、メモリ領域の用途を示す用途情報４５ｃ、メモリ領域の使用期間を示すメモリ使用期間情報４５ｄなどが登録される。
【００４７】
ここで、「用途情報」とはメモリ領域の使用用途を判別するための情報であり、使用用途としては、画像データの格納用（以後、画像用と呼ぶ。）と、プログラムの格納用やプログラムを実行する際のワークエリアとして使用されるソフトウェア用の用途がある。
【００４８】
「メモリ使用期間情報」は、そのメモリ領域が取得されてから開放されるまでの期間の長さを判別するための情報であり、たとえば、開放予定日時を示す日時情報、開放までの残り期間を示す残時間情報のほか、使用期間の長さを複数段階（長、中、短など）で示す情報などがある。
【００４９】
なお、ヘッダ部４５に登録する用途情報などの管理情報を、メモリ管理テーブル４０Ａ、４０Ｂに併せて登録してもよいし、別途の管理テーブルに各メモリ領域に関する管理情報を登録して管理してもよい。
【００５０】
次に、画像形成装置１０が有するメモリ管理機能によるメモリ領域の開放処理について説明する。
【００５１】
図４は、メモリ領域の開放処理の流れを示している。開放処理においては、まず、それまで使用中であった開放対象領域を未使用領域に変更し（ステップＳ１０１）、物理アドレスにおいて該領域の前後に位置する２つの領域について、それらの使用用途が同一か否かを判断する（ステップＳ１０２）。前後の領域の使用用途が相互に同一の場合は(ステップＳ１０２；Ｙ)、開放対象領域の使用用途と該前後の領域の使用用途が同一か否かをさらに判断する（ステップＳ１０３）。
【００５２】
開放対象領域の使用用途とその前後の領域の使用用途とが異なる場合は（ステップＳ１０３；Ｎ）、開放対象領域の使用用途を該前後の領域の使用用途に変更する（ステップＳ１０４）。前後の領域の使用用途が同一であって（ステップＳ１０２；Ｙ）該使用用途と開放対象領域の使用用途とが同一の場合（ステップＳ１０３；Ｙ）、および前後の領域の使用用途が相違する場合（ステップＳ１０２；Ｎ）には、開放対象領域の使用用途は変更されず、開放前と同じ使用用途のままにされる。
【００５３】
ここまでの処理により、開放対象領域の前後の領域の使用用途が同一の場合は、開放対象領域の使用用途は該前後の領域の使用用途と同一にされる。前後の領域の使用用途が異なる場合は、開放対象領域の使用用途は開放前と同一のままにされる。
【００５４】
使用用途の変更に関する上記の処理（ステップＳ１０２〜Ｓ１０４）を行なった後、未使用領域の結合に関する処理が行なわれる。詳細には、開放対象領域の前後の領域のうち、前の領域が未使用領域か否かを調べ（ステップＳ１０５）、未使用領域の場合は（ステップＳ１０５；Ｙ）、該前の領域と開放対象領域の使用用途（ステップＳ１０４で変更された場合は変更後の使用用途）とが同一か否かを判断し（ステップＳ１０６）、同一の場合は(ステップＳ１０６；Ｙ)、前の領域と開放対象領域とを結合する(ステップＳ１０７)。前の領域と開放対象領域の使用用途が異なる場合（ステップＳ１０６；Ｎ）もしくは前の領域が未使用領域でない場合は(ステップＳ１０５；Ｎ)、前の領域と開放対象領域とを結合しない。
【００５５】
さらに、開放対象領域の前後の領域のうち、後ろの領域が未使用領域か否かを調べ（ステップＳ１０８）、未使用領域の場合は（ステップＳ１０８；Ｙ）、該後ろの領域の使用用途と開放対象領域の使用用途（ステップＳ１０４で変更された場合は変更後の使用用途）とが同一か否かを判断し（ステップＳ１０９）、同一の場合は(ステップＳ１０９；Ｙ)は、後ろの領域と開放対象領域（ステップＳ１０７で前の領域と結合されている場合は結合後の領域）とを結合して(ステップＳ１１０)処理を終了する（エンド）。
【００５６】
後ろの領域の使用用途と開放対象領域の使用用途が異なる場合（ステップＳ１０９；Ｎ）もしくは後ろの領域が未使用領域でない場合は(ステップＳ１０８；Ｎ)、後ろの領域と開放対象領域（ステップＳ１０７で前の領域と結合されている場合は結合後の領域）とを結合しないで処理を終了する(エンド)。
【００５７】
図５は、図４に示す開放処理を行なった場合における、開放前と開放後の状態を各種のケースについて模擬表示したものである。図中、斜線部分は使用中領域を、白色部分は未使用領域を、斑点部分は開放対象領域を示している。また、用途０は使用用途が画像用であることを、用途１はソフトウェア用であることをそれぞれ示している。
【００５８】
同図（ａ）は、用途０の開放対象領域に対してその前後の領域が共に未使用領域であって共に用途１の場合を示している。開放対象領域の用途は用途０から用途１に変更され、さらに前後の領域と結合されて１つの未使用領域として開放される。
【００５９】
この場合、開放対象領域の用途を前後の領域の用途と同一に変更して開放しているので、前後の領域と開放対象領域とを１つの領域に結合することができ、大きな未使用領域を確保することができる。前後の領域が同じ用途で該用途と開放対象領域の用途とが異なる場合は、この開放対象領域を取得した際に、歯抜けとなるような採り方をしていたと考えられるので、歯抜けが少なくなるように、開放対象領域の用途をその前後の領域の用途に合わせて、１つの未使用領域にまとめている。
【００６０】
同図（ｂ）は、用途０の開放対象領域に対してその前後の領域が共に未使用領域でありかつ共に用途０の場合を示している。開放対象領域の用途は用途０のままにされ、さらに前後の領域と結合されて１つの未使用領域として開放される。
【００６１】
同図（ｃ）は、用途０の開放対象領域に対してその前後の領域が共に使用中領域でありかつ共に用途１の場合を示している。開放対象領域の用途は用途０から用途１に変更され、前後の領域と結合されずに開放される。
【００６２】
この場合、開放対象領域の用途を前後の領域の用途と同一に変更して開放しているので、前または後ろの領域が開放されたときにメモリ領域が結合されて大きな未使用領域の確保される可能性が高まる。
【００６３】
すなわち、前後の領域が同じ用途で該用途と開放対象領域の用途とが異なる場合は、該開放対象領域を取得した際に、歯抜けとなるような採り方をしていたと考えられるので、歯抜けが少なくなるように、開放対象領域の用途をその前後の領域の用途に合わせている。
【００６４】
同図（ｄ）は、用途０の開放対象領域に対してその前後の領域が共に使用中領域であって共に用途０の場合を示している。開放対象領域の用途は用途０のままにされ、前後の領域のいずれとも結合されずに開放される。
【００６５】
同図（ｅ）は、用途０の開放対象領域に対してその前後の領域が共に未使用領域であり、該前後の領域のうちの一方の領域が用途１で他方の領域が用途０の場合を示している。開放対象領域の用途は用途０のままにされ、かつ前後の領域のうち用途０の領域と結合されて開放される。
【００６６】
同図（ｆ）は、用途０の開放対象領域に対してその前後の領域の一方が未使用領域かつ用途０で、他方が使用中かつ用途１の場合を示している。開放対象領域の用途は用途０のままにされ、かつ前後の領域のうち未使用かつ用途０の領域と結合されて開放される。
【００６７】
同図（ｇ）は、用途０の開放対象領域に対してその前後の領域の一方が未使用領域かつ用途１で、他方が使用中かつ用途０の場合を示している。開放対象領域の用途は用途０のままにされ、かつ前後の領域のいずれとも結合されずに開放される。
【００６８】
同図（ｅ）から（ｇ）に示すケースでは、開放対象領域の前後にある２つの領域の用途が相違している。たとえば、用途０のメモリ領域を確保する場合はメモリの先頭から末尾に向けて未使用領域を検索して領域を確保し、用途１のメモリ領域を確保する場合はメモリの末尾から先頭に向けて未使用領域を検索して領域を確保するような場合には、用途０の領域がメモリの先頭側に集中し、用途１の領域がメモリの末尾側に集中するように、用途によってメモリ内で棲み分けが行なわれる。そして、その境界部分でメモリ領域を開放する場合には、開放対象領域の前後の領域の一方が用途０で他方が用途１という状態が発生する。
【００６９】
このとき、図５（ｅ）〜（ｇ）に示すように開放することで、用途毎の棲み分けの境界が適当に維持される。また、用途別にメモリを固定的に区分けしなくても、用途別の棲み分けが維持されるので、用途毎の必要メモリ量の変動に応じて境界位置が自然に変化し、メモリ領域を有効に活用することができる。
【００７０】
なお、使用中の領域を開放するとき、この領域の使用用途が画像用であった場合には、使用中に書き込まれたデータが該領域の開放後に不正に参照されることを防止するために、開放後の領域に「０」などの特定データを上書きし、セキュリティを強化するようになっている。該処理は、たとえば、メモリの開放処理において行なわれる。
【００７１】
図６は、使用用途が画像用のメモリ領域を開放した際に、開放された領域５１ａの全体に特定データ「０」を上書きして、使用中のデータが消去された様子（領域５１ｂ）を例示している。なお、上書きするデータは「０」に限定されず、他のデータ、たとえば、オール「１」などでもよい。また、画像用の領域を開放した場合に限定せず、メモリ領域を開放したときは、その領域のデータを常に消去するように構成してもかまわない。
【００７２】
次に、メモリ内にバウンダリ管理された領域が含まれる場合について説明する。
【００７３】
システムメモリ１５上で使用されるデータ、特にハードウェア制御で用いるデータでは、扱うデータのアドレスにバウンダリの制限がある場合がある。バウンダリとは、扱うデータを所定の固定長サイズを単位に管理するものであり、通常は、固定長サイズの単位領域の開始アドレスの下位数ビットが「０」で始まるように設定される。たとえば、バウンダリの単位領域の固定長サイズが４キロバイト（４０９６バイト）の場合、各単位領域の開始アドレスの下位１２ビットが「０」で始まるようにバウンダリが設定される。
【００７４】
図７に示すように、バウンダリで管理されたデータを扱うハードウェアに対して、メモリ管理機能がバウンダリの開始アドレスを考慮せずにメモリ領域６１を割り当てると、任意の位置に確保されたメモリ領域６１の先頭からバウンダリの開始アドレスまでの間の領域６１ａはハードウェア側で使用することができず、無駄になってしまう。また、メモリ領域を確保するときには、最大の無駄領域が生じる場合を考慮して要求サイズに予め余裕を持たせなくてはならない。
【００７５】
図７の例では、ハードウェア側のバウンダリ（単位領域６２）の固定長サイズは４キロバイトで、開始アドレスは下位１２ビットが「０」でなければならないので、獲得したメモリ領域６１の先頭アドレス０ｘ１２１２３ＮＮＮから０ｘＮＮＮだけの無駄領域６１ａが生じ、実際にハードウェア側で使用可能な領域６１ｂは０ｘ１２１２４０００以降になっている。また、メモリ領域の確保を要求するときは、無駄領域６１ａの最大は（４０９６−１）バイトになるので、該サイズを必要サイズに加えたサイズ以上を要求サイズにしなければならない。
【００７６】
そこで、図８（ａ）に示すように、予めシステムメモリ１５内に、任意のアドレスから任意サイズの領域を取得可能なフリーサイズ領域７１と、固定長サイズでバウンダリ管理された特定バウンダリ領域７２とを固定的に割り当てて区分けしておく。そして、任意サイズのメモリ領域を確保するときはフリーサイズ領域７１からメモリ領域を取得し、バウンダリに従ってメモリ領域を確保するときは特定バウンダリ領域７２からメモリ領域を取得するようにする。
【００７７】
どちらの領域７１、７２からメモリ領域を取得するかは、たとえば、確保要求の引数（パラメータ）としてもよいし、確保要求されたメモリ領域のサイズから自動判定してもよい。自動判定の場合、たとえば、（１）確保要求されたメモリ領域のサイズがバウンダリの固定長サイズの整数倍と一致する場合は特定バウンダリ領域７２から取得し、それ以外はフリーサイズ領域７１から取得する、（２）確保要求されたメモリ領域のサイズがバウンダリの固定長サイズ以下の場合はフリーサイズ領域７１から取得し、バウンダリの固定長サイズ以上の場合は特定バウンダリ領域７２から取得する、などのようにすればよい。
【００７８】
上記のようにフリーサイズ領域７１と特定バウンダリ領域７２とを区分けしている場合に、フリーサイズ領域７１がほぼ全部使用中の状態になると、フリーサイズ領域７１から取得すべきメモリ領域をフリーサイズ領域７１から取得できなくなる。このような場合は、特定バウンダリ領域７２から、特定バウンダリ領域７２のバウンダリに従うサイズでフリーサイズ領域用拡張領域７３を確保して要求元に使用させる。
【００７９】
図８（ｂ）の例では、確保要求されたサイズは６４バイトであるが、該サイズのメモリ領域をフリーサイズ領域７１から確保できないため、特定バウンダリ領域７２からバウンダリの最小単位（４キロバイト）でフリーサイズ領域用拡張領域７３を取得している。要求元は、フリーサイズ領域用拡張領域７３の中の６４バイト（領域７３ａ）だけを使用する。図８（ｃ）に示すように、使用後、フリーサイズ領域用拡張領域７３は元の特定バウンダリ領域７２に属する未使用領域として開放される。
【００８０】
これにより、通常状態では、取得サイズに応じてフリーサイズ領域７１と特定バウンダリ領域７２とを使い分けることで、図７に示すような無駄領域６１ａが生じないようにメモリを利用することができる。また、必要なメモリ領域をフリーサイズ領域７１から確保できない場合は特定バウンダリ領域７２をフリーサイズ領域７１の代用として一時的に使用できるので、システムメモリ１５全体としては必要サイズの未使用領域があるにもかかわらずフリーサイズ領域７１と特定バウンダリ領域７２との固定的な区分けが弊害となってメモリ領域を確保できないという事態が防止され、メモリを有効活用することができる。
【００８１】
なお、特定バウンダリ領域７２は１種類に限定されず、固定長サイズが異なる複数種類のバウンダリ領域を設けてもかまわない。この場合、確保要求されたサイズに応じて、どのバウンダリ領域もしくはフリーサイズ領域７１から領域を取得するかを判断するとよい。つまり、確保要求されたサイズといずれかのバウンダリの固定長サイズ（もしくはその整数倍）とが一致するときは、その一致するバウンダリ領域を領域の取得先に選択するようにすればよい。
【００８２】
以上、本発明の実施の形態を図面によって説明してきたが、具体的な構成は実施の形態に示したものに限られるものではなく、本発明の要旨を逸脱しない範囲における変更や追加があっても本発明に含まれる。
【００８３】
たとえば、実施の形態では、画像形成装置１０が有するシステムメモリ１５を対象に本発明に係わるメモリ管理方法を説明したが、メモリから領域の開放と取得を行なう他の構成の装置やシステムにも本発明は適用することができる。
【００８４】
実施の形態の図４においては、開放対象領域の用途の変更を判断した後、必要な変更を行なった後に前後領域との結合可否を判断するようにしたが、最終的に判断結果が同一になれば、判断の手順はこれに限定されるものではなく、用途の変更と結合とを各種条件から一度に判断するように構成してもよい。
【００８５】
また、画像用とソフトウェア用を例に説明したが、メモリの用途はこれらに限定されない。また、設定する用途の種類は３種類以上であってもかまわない。また、用途に代えて、メモリ使用期間を基準に開放状態を判断してもよい。たとえば、図４、図５における用途１を使用期間が長期のもの、用途０を使用期間が短期のものとし、図４、図５と同様に開放することができる。
【図面の簡単な説明】
【００８６】
【図１】本発明の実施の形態に係わる画像形成装置の構成を示すブロック図である。
【図２】本発明の実施の形態に係わる画像形成装置が画像領域を複数に分けて処理する場合のブロック分けの一例を示す説明図である。
【図３】メモリ領域の管理情報の一例を示す説明図である。
【図４】本発明の実施の形態に係わるメモリ領域の開放処理を示す流れ図である。
【図５】図４に示す開放処理を行なった場合における、開放前と開放後の状態を各種のケースについて模擬表示した説明図である。
【図６】画像用のメモリ領域を開放した場合のメモリ内容の一例を示す説明図である。
【図７】バウンダリで管理されたメモリ領域を任意アドレスに取得した様子を示す説明図である。
【図８】メモリにフリーサイズ領域と特定バウンダリ領域とを設けた場合における領域の取得と開放を模擬表示した説明図である。
【図９】従来から行なわれるメモリ開放処理における隣接メモリ領域の結合を示す説明図である。
【符号の説明】
【００８７】
１０…画像形成装置
１１…システム制御部
１２…プロセッサ
１３…周辺制御部
１４…ＬＣＤパネル
１５…システムメモリ
１６…システム画像処理部
１７…ＣＣＤ
１８…読取画像処理部
１９…ＬＤ
２１…記録画像処理部
２２…ＲＯＭ
２３…小容量ストレージデバイス
２４…大容量ストレージデバイス
２５…不揮発メモリ
２６…外部インターフェイス部
４０…メモリ管理テーブル
４５…ヘッダ部
４５ａ…状態情報
４５ｂ…サイズ情報
４５ｃ…用途情報
４５ｄ…メモリ使用期間情報
５１ａ…開放前のメモリ内容
５１ｂ…開放後のメモリ内容
６１…任意の位置に確保されたメモリ領域
６１ａ…無駄領域
６２…バウンダリの単位領域
７１…フリーサイズ領域
７２…特定バウンダリ領域
７３…フリーサイズ領域用拡張領域
７３ａ…フリーサイズ領域用拡張領域内で実際に使用される領域
【図１】
2007310625.tif 000003
【図２】
2007310625.tif 000004
【図３】
2007310625.tif 000005
【図４】
2007310625.tif 000006
【図５】
2007310625.tif 000007
【図６】
2007310625.tif 000008
【図７】
2007310625.tif 000009
【図８】
2007310625.tif 000010
【図９】
2007310625.tif 000011