JP4158121B2 - メモリ管理方法 - Google Patents

メモリ管理方法 Download PDF

Info

Publication number
JP4158121B2
JP4158121B2 JP2006138667A JP2006138667A JP4158121B2 JP 4158121 B2 JP4158121 B2 JP 4158121B2 JP 2006138667 A JP2006138667 A JP 2006138667A JP 2006138667 A JP2006138667 A JP 2006138667A JP 4158121 B2 JP4158121 B2 JP 4158121B2
Authority
JP
Japan
Prior art keywords
area
target area
release target
memory
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006138667A
Other languages
English (en)
Other versions
JP2007310625A (ja
Inventor
泰保 西村
友弘 鈴木
史景 内田
哲也 石川
祐二 田村
智哉 小川
尚 諸見里
正之 安加賀
宗利 江口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Konica Minolta Business Technologies Inc
Original Assignee
Konica Minolta Business Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Konica Minolta Business Technologies Inc filed Critical Konica Minolta Business Technologies Inc
Priority to JP2006138667A priority Critical patent/JP4158121B2/ja
Priority to US11/706,247 priority patent/US7613895B2/en
Publication of JP2007310625A publication Critical patent/JP2007310625A/ja
Application granted granted Critical
Publication of JP4158121B2 publication Critical patent/JP4158121B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Description

本発明は、メモリ領域の取得と開放とを動的に行なうメモリ管理方法に係わり、特に、複数の用途で効率よくメモリを共用するための技術に関する。
コンピュータ装置においては、メモリ資源を有効活用するために、各処理が必要なときに必要なサイズの領域を取得し、使い終わったら開放するという動的なメモリ管理が行なわれる。
このようなメモリ管理では、領域の取得サイズや開放時期が様々なので、取得と開放を繰り返すうちに、未使用領域(空き領域)が歯抜けの状態となって断片化し、未使用領域の総量は充分にあっても、連続する大きな空き領域を確保できないという事態が発生してしまう。
そこで、通常は、図9に示すように、使用していた領域301の開放時に、該開放する領域301の前後に未使用領域が存在するか否かを調べ、隣接する未使用領域302、303がある場合はその未使用領域302、303と開放する領域301とを1つの未使用領域304として結合させる処理が行なわれる(たとえば、特許文献1参照。)。
特開平5−12099号公報
取得する領域サイズや開放までの使用期間が大きく異なる複数の用途でメモリを共用する場合には、歯抜けが生じて大きな連続領域を取得できなくなる可能性が高まる。たとえば、システムメモリを、画像処理を行なうための領域と、ソフトウェアが通常のデータ処理を行なうための領域とに共用する場合、画像用の領域と通常のソフトウェア用の領域とでは、必要な領域サイズや開放までの使用期間に大きな差があるので、断片化の問題が顕著に現れてしまい、単に、開放時に隣接する未使用領域を結合させるという従来のメモリ管理方法では、歯抜けの発生を充分に抑制することはできない。
また、システムメモリを共用して上記の画像処理などをハードウェアで行なう場合、ハードウェア側の処理の都合上、メモリ領域をバウンダリで管理する必要の生じることがある。かかる場合にシステムメモリを一律にバウンダリで管理すると、ソフトウェア用の領域を取得する際に無駄が生じてメモリを有効活用することができなくなってしまう。同様に、バウンダリの固定長サイズなどが異なる複数のハードウェアでメモリを共用する場合においていずれか1つのハードウェアに合わせた固定長サイズで一律にメモリを管理すると、他のハードウェアで使用する領域を取得する際にメモリに無駄が生じてしまう。
本発明は、上記の問題を解決しようとするものであり、複数の用途でメモリを共用する場合にも、メモリの断片化を抑制し、大きな連続領域を取得できる可能性の高いメモリ管理方法を提供することを目的としている。
また、バウンダリの有無やバウンダリの固定長サイズが相違する複数の用途が混在する場合でも、メモリを効率よく割り当てることのできるメモリ管理方法を提供することを目的としている。
上記の目的は、以下に示す各項の発明により達成される。
(1)メモリ領域を開放する際に、
開放対象領域の前後の領域の用途情報と前記開放対象領域の用途情報とに基づいて、前記開放対象領域の開放後の使用用途を決定する
ことを特徴とするメモリ管理方法。
上記発明では、メモリ領域の使用用途を用途情報によって管理しておき、領域を開放するとき、その前後の領域の使用用途と開放対象領域の使用用途に応じて、開放対象領域の開放後の使用用途を決定する。
(2)メモリ領域を開放する際に、
開放対象領域の前後の領域の用途情報および状態情報と前記開放対象領域の用途情報とに基づいて、前記開放対象領域の開放後の使用用途と、前記開放対象領域とその前後の領域との結合状態とを決定する
ことを特徴とするメモリ管理方法。
上記発明では、メモリ領域の使用用途を用途情報によって管理しておき、領域を開放するとき、その前後の領域の使用用途と開放状態(使用中/未使用)と開放対象領域の使用用途とに応じて、開放対象領域の開放後の使用用途および、該開放対象領域とその前後の領域との結合状態を決定する。
(3)メモリ領域を開放する際に、
開放対象領域の前後の領域の用途情報が同一の場合は、前記開放対象領域の用途情報を前記前後の領域の用途情報と同一の用途とし、
前記開放対象領域の前後の領域のうち、状態情報が未使用を示す領域と前記開放対象領域とを結合する
ことを特徴とするメモリ管理方法。
上記発明では、開放対象領域の前後の領域の使用用途が同一の場合には、該前後の領域とこれに挟まれた開放対象領域の使用用途とを同一にしておけば、前後の領域が未使用の場合あるいは将来開放されて未使用になった場合に、同一用途の1つの領域に結合することが可能になる。そこで、前後の領域の使用用途が同一の場合は、今回開放する領域の使用用途を前後の領域の使用用途と同一に決定して開放する。さらに、開放対象領域の前後に、決定後の使用用途と使用用途が同一であって未使用の領域が存在する場合は、該領域と開放対象領域とを結合して1つの未使用領域にする。
なお、開放対象領域の前後の領域の使用用途が異なる場合は、開放対象領域の使用用途は変更することなく、開放前と同じ使用用途に決定すればよい。
(4)メモリ領域を開放する際に、
開放対象領域の前後の領域の状態情報が共に未使用を示しており、かつ前記前後の領域の用途情報が共に前記開放対象領域の用途情報と同じ場合は、前記開放対象領域とその前後の領域とを同一使用用途の1つの未使用領域として結合させ、
開放対象領域の前後の領域の状態情報が共に未使用を示しており、かつ前記前後の領域の用途情報が同一かつ前記開放対象領域の用途情報と異なる場合は、前記開放対象領域の前記用途情報を該前後の領域の用途情報と同一の用途情報に書き換えて、1つの未使用領域として結合させる
ことを特徴とする(1)または(2)に記載のメモリ管理方法。
上記発明では、開放対象領域の前後の領域が共に未使用であってそれら前後の領域の使用用途が互いに同一の場合は、開放対象領域と前後の領域とを該前後の領域の使用用途を属性に持つ1つの未使用領域として結合させる。すなわち、元々、開放対象領域の使用用途と前後の領域の使用用途とが一致していれば、そのままの使用用途で1つの未使用領域に結合し、開放対象領域の使用用途と前後の領域の使用用途とが異なる場合は、開放対象領域の使用用途を前後の領域の使用用途に変更して1つの未使用領域に結合させる。
(5)メモリ領域を開放する際に、
開放対象領域の前後の領域の状態情報が共に使用中を示しており、かつ前記前後の領域の用途情報が共に前記開放対象領域の用途情報と同じ場合は、前記開放対象領域を開放前と同じ用途情報のまま開放し、
開放対象領域の前後の領域の状態情報が共に使用中を示しており、かつ前記前後の領域の用途情報が同一かつ前記開放対象領域の用途情報と異なる場合は、前記開放対象領域の前記用途情報を前記前後の領域の用途情報と同一の用途情報に書き換えて、開放する
ことを特徴とする(1)または(2)に記載のメモリ管理方法。
上記発明では、開放対象領域の前後の領域が共に使用中でそれらの使用用途が同一の場合は、開放対象領域を前後の領域と同じ使用用途を属性に持つ未使用領域とし、前後の領域と結合させずに開放する。すなわち、元々、開放対象領域の使用用途と前後の領域の使用用途とが一致していれば、そのままの使用用途で、前後の領域と結合させずに開放し、開放対象領域の使用用途と前後の領域の使用用途とが異なる場合は、開放対象領域の使用用途を前後の領域の使用用途に変更した上で前後の領域と結合させずに開放する。
(6)メモリ領域を開放する際に、
開放対象領域の前後の領域の状態情報が共に未使用を示すと共に、前記前後の領域の一方の領域の用途情報が前記開放対象領域の用途情報と同一で他方の領域の用途情報が前記開放対象領域の用途情報と異なる場合は、前記開放対象領域と前記一方の領域とを同一使用用途の1つの未使用領域として結合させ、前記開放対象領域と前記他方の領域とを結合させない
ことを特徴とする(1)または(2)に記載のメモリ管理方法。
上記発明では、開放対象領域の前後の領域が共に未使用であって、その一方の領域のみ開放対象領域と使用用途が一致する場合は、該一方の領域と開放対象領域とをそのままの使用用途で1つに結合して開放し、他方の領域とは結合させない。
(7)メモリ領域を開放する際に、
開放対象領域の前後の領域のうち一方の領域の状態情報が未使用を示し他方の領域の状態情報が使用中を示し、かつ前記開放対象領域の用途情報と前記一方の領域の用途情報とが同一の場合は、前記開放対象領域と前記一方の領域とを同一使用用途の1つの未使用領域として結合させる
ことを特徴とする(1)または(2)に記載のメモリ管理方法。
上記発明では、開放対象領域の前後の領域の一方が未使用で他方が使用中の場合は、該未使用の領域の使用用途と開放対象領域の使用用途とが一致する場合だけ、該未使用の領域と開放対象領域とをそのままの使用用途で1つに結合して開放する。なお、隣接する未使用の領域の使用用途と開放対象領域の使用用途とが一致しない場合は、開放対象領域はそのままの使用用途で他の領域と結合させずに開放する。
(8)メモリ領域を開放する際に、開放対象領域の使用用途が画像用であった場合は、前記開放対象領域に特定のデータを上書きする
ことを特徴とする(1)乃至(7)のいずれか1つに記載のメモリ管理方法。
上記発明では、画像用に使用した領域を開放すると、その開放される領域に対して自動的に特定のデータが上書きされて内容が破壊され、情報漏えいに対するセキュリティが確保される。
(9)メモリを、バウンダリの有無およびまたはバウンダリの固定長サイズに基づいて複数の管理領域に区分しておき、
前記メモリから領域を取得する際に、要求されたサイズに応じて、該領域の取得先の管理領域を選定する
ことを特徴とする(1)乃至(8)のいずれか1つに記載のメモリ管理方法。
上記発明では、バウンダリの有無およびまたはバウンダリの固定長サイズに基づいてメモリを複数の管理領域に区分して管理している場合に、要求された領域をどの管理領域から割り当てるべきかを、要求された領域のサイズに応じて選定する。たとえば、バウンダリの固定長サイズが要求されたサイズ以上で最小となる管理領域が選定される。
(10)前記選定した管理領域から、前記要求されたサイズの空き領域を取得できない場合は、他の管理領域から、当該他の管理領域のバウンダリに従って領域を取得する
ことを特徴とする(9)に記載のメモリ管理方法。
上記発明では、サイズ的に最適な管理領域に充分な空き領域がなくて領域を割り当てることができない場合は、他の管理領域からその管理領域のバウンダリに従って領域が割り当てられる。
本発明に係わるメモリ管理方法によれば、画像用領域とソフトウェア用領域などのように、領域サイズや開放までの使用期間などが大きく異なる複数の用途でメモリを共用する場合にも、大きな連続領域を取得できる可能性が高まり、複数の用途でメモリを効率よく活用することができる。
また、画像用の領域を開放する際にその領域に特定のデータを上書きするようにしたので、使用中に書き込まれた内容が破壊され、情報漏洩に対するセキュリティを高めることができる。
また、バウンダリを有する複数の管理領域に区分されたメモリから領域を取得する際に、要求された領域サイズに基づいて、その領域の取得先の管理領域を選定するものでは、ハードウェアの都合上、特定のバウンダリでメモリを管理する必要がある用途と他の用途との共用を可能にしつつ、バウンダリによる固定長サイズと他の用途で実際に必要となる領域サイズとの違いによって生じる無駄な領域を少なく抑えることができ、メモリを有効に利用することができる。
以下、図面に基づき本発明の実施の形態を説明する。
図1は、本発明に係わるメモリ管理方法が適用された装置の一例である画像形成装置10の構成を示している。画像形成装置10は、原稿画像を読み取ってその複製画像を記録紙上に作成して出力するコピー機能などを備えた装置であり、システム全体の動作を制御するシステム制御部11と、演算処理機能を果たすプロセッサ12と、各種周辺機能を制御する周辺制御部13とを主たる制御部として備えている。
システム制御部11には、プロセッサ12および周辺制御部13のほか、LCD(Liquid Crystal Display)パネル14と、システムメモリ15、システム画像処理部16が接続されている。LCDパネル14は、ユーザからの各種操作の受け付けと各種操作画面や案内画面の表示を行なう。システムメモリ15は、プロセッサ12の動作プログラムの格納やプロセッサ12が動作プログラムを実行する際のワークメモリ、画像データの格納などに共用されるメモリである。
システム画像処理部16には、原稿画像の読み取り素子としてのCCD(Charge Coupled Device)17が読取画像処理部18を介して接続されると共に、レーザプリンタ方式の記録部のLD(Laser Diode)19が記録画像処理部21を介して接続されている。原稿の読取動作では、CCD17から出力された画像データは読取画像処理部18で各種の画像補正を施された後、システム画像処理部16に入力され、システム画像処理部16でさらに各種の画像処理を受けた後、システム制御部11を通じてシステムメモリ15に一旦格納される。記録紙への出力動作においては、システムメモリ15に格納されている画像データはシステム制御部11により読み出されてシステム画像処理部16に入力され、各種の画像処理をシステム画像処理部16で受けた後、記録画像処理部21を経てLD19へ出力される。
周辺制御部13には、起動用プログラムなどが予め記憶されたROM(Read Only Memory)22と、小容量ストレージデバイス23と、大容量ストレージデバイス24と、不揮発メモリ25と、外部インターフェイス部26とが接続されている。小容量ストレージデバイス23は、制御プログラムの格納や汎用オペレーティング・システムのプログラムの格納などに使用される。ここでは、小容量ストレージデバイス23としてフラッシュメモリを使用する。装置の立ち上げ時にROM22内の起動プログラムを実行することで、小容量ストレージデバイス23内のプログラムがシステムメモリ15に展開されて動作するようになっている。
大容量ストレージデバイス24は、ハードディスク装置などで構成され、画像データの格納などに使用される。不揮発メモリ25は、装置固有の各種パラメータの記憶などに使用される。外部インターフェイス部26は、各種の通信方式で外部装置と接続して通信の制御を行なう機能を果たす。たとえば、接続にはLAN(Local Area Network)、USB(Universal Serial Bus)、IEEE1394(Institute of Electrical and Electronic Engineers 1394)などが使用される。
画像形成装置10は、システムメモリ15に対するメモリ領域の取得と開放を制御するメモリ管理機能を有している。メモリ管理機能は、プロセッサ12が制御プログラム内のメモリ管理プログラムを実行することで実現される。メモリ管理プログラムは、他のプログラムからの要求に応じて、その要求されたサイズのメモリ領域をシステムメモリ15から確保して要求元のプログラムに提供する。また、確保済みの領域に対する開放指令を他のプログラムから受けると、該当するメモリ領域を未使用領域(空き領域)として開放するように動作する。
図2は、画像領域を複数に分けて処理する場合のブロック分けの一例を示している。画像形成装置10は、同図に示すように画像データを複数のブロックに分けて処理する。この例では、1ページ分の画像データ30は、垂直方向5ブロック×水平方向4ブロックの20ブロックに分けられ、各ブロック31は、画素33を4×4に配列した単位ユニット32を縦256ユニット×横256ユニットの行列状に配置した構成になっている。カラー画像を扱う場合、各ユニット32は、C(シアン)、M(マゼンタ)、Y(イエロ)、K(ブラック)の各色について4画素×4画素の領域を備える。実際の画像データのサイズは垂直方向5ブロック×水平方向4ブロックの領域サイズよりもある程度小さく、周辺のブロックにおいては画像データの格納に使用されない、余り領域が生じる。
画像データを格納する領域をシステムメモリ15から効率よく確保するには、垂直方向5ブロック分を連続領域に確保することが望ましい。そのとき必要となるメモリ領域は、5ブロック分x4となる。このように5ブロック分ずつ連続に確保できた場合、確保した領域内で画像データの格納に使用されない余りサイズが、1ブロックずつ確保した場合の1/5になる。また、システムメモリ15に充分な空き領域がない場合においても、なるべく垂直方向で連続となる領域を確保するとよい。たとえば、5ブロック分の領域を3ブロックと2ブロックとに分けて確保できるのであれば、無駄になる余り領域のサイズを、1ブロック毎に確保する場合の2/5に削減することができる。
このように画像データを格納するために使用するメモリ領域は、プロセッサ12がプログラムを実行する際のワークエリアに使用する領域などに比べて、大きな領域サイズが要求される。
図3は、メモリ管理プログラムが管理するシステムメモリ15の使用状況の一例と該システムメモリ15を管理するために使用するメモリ管理テーブル40およびヘッダ部45の一例を示している。図中の斜線部分は使用中領域を示し、白色部分は未使用領域(空き領域)を示している。メモリ管理テーブル40は、使用中領域の管理に使用される第1管理テーブル40Aと、未使用領域の管理に使用される第2管理テーブル40Bとに分けて構成されており、各管理テーブル40A、40Bは、該当する領域を、たとえば、アドレスの小さいものから順に、リスト化して管理している。管理テーブル40A、40Bには、各領域の先頭アドレスあるいはシステムメモリ15の先頭アドレスからのオフセット値などが登録される。
また、使用中領域および未使用領域の先頭にはそれぞれヘッダ部45を設けてあり、該ヘッダ部45にそのメモリ領域に関する各種の管理情報を格納するようになっている。管理情報としては、メモリ領域が使用中か未使用かを示す状態情報45a、領域のサイズを示すサイズ情報45b、メモリ領域の用途を示す用途情報45c、メモリ領域の使用期間を示すメモリ使用期間情報45dなどが登録される。
ここで、「用途情報」とはメモリ領域の使用用途を判別するための情報であり、使用用途としては、画像データの格納用(以後、画像用と呼ぶ。)と、プログラムの格納用やプログラムを実行する際のワークエリアとして使用されるソフトウェア用の用途がある。
「メモリ使用期間情報」は、そのメモリ領域が取得されてから開放されるまでの期間の長さを判別するための情報であり、たとえば、開放予定日時を示す日時情報、開放までの残り期間を示す残時間情報のほか、使用期間の長さを複数段階(長、中、短など)で示す情報などがある。
なお、ヘッダ部45に登録する用途情報などの管理情報を、メモリ管理テーブル40A、40Bに併せて登録してもよいし、別途の管理テーブルに各メモリ領域に関する管理情報を登録して管理してもよい。
次に、画像形成装置10が有するメモリ管理機能によるメモリ領域の開放処理について説明する。
図4は、メモリ領域の開放処理の流れを示している。開放処理においては、まず、それまで使用中であった開放対象領域を未使用領域に変更し(ステップS101)、物理アドレスにおいて該領域の前後に位置する2つの領域について、それらの使用用途が同一か否かを判断する(ステップS102)。前後の領域の使用用途が相互に同一の場合は(ステップS102;Y)、開放対象領域の使用用途と該前後の領域の使用用途が同一か否かをさらに判断する(ステップS103)。
開放対象領域の使用用途とその前後の領域の使用用途とが異なる場合は(ステップS103;N)、開放対象領域の使用用途を該前後の領域の使用用途に変更する(ステップS104)。前後の領域の使用用途が同一であって(ステップS102;Y)該使用用途と開放対象領域の使用用途とが同一の場合(ステップS103;Y)、および前後の領域の使用用途が相違する場合(ステップS102;N)には、開放対象領域の使用用途は変更されず、開放前と同じ使用用途のままにされる。
ここまでの処理により、開放対象領域の前後の領域の使用用途が同一の場合は、開放対象領域の使用用途は該前後の領域の使用用途と同一にされる。前後の領域の使用用途が異なる場合は、開放対象領域の使用用途は開放前と同一のままにされる。
使用用途の変更に関する上記の処理(ステップS102〜S104)を行なった後、未使用領域の結合に関する処理が行なわれる。詳細には、開放対象領域の前後の領域のうち、前の領域が未使用領域か否かを調べ(ステップS105)、未使用領域の場合は(ステップS105;Y)、該前の領域と開放対象領域の使用用途(ステップS104で変更された場合は変更後の使用用途)とが同一か否かを判断し(ステップS106)、同一の場合は(ステップS106;Y)、前の領域と開放対象領域とを結合する(ステップS107)。前の領域と開放対象領域の使用用途が異なる場合(ステップS106;N)もしくは前の領域が未使用領域でない場合は(ステップS105;N)、前の領域と開放対象領域とを結合しない。
さらに、開放対象領域の前後の領域のうち、後ろの領域が未使用領域か否かを調べ(ステップS108)、未使用領域の場合は(ステップS108;Y)、該後ろの領域の使用用途と開放対象領域の使用用途(ステップS104で変更された場合は変更後の使用用途)とが同一か否かを判断し(ステップS109)、同一の場合は(ステップS109;Y)は、後ろの領域と開放対象領域(ステップS107で前の領域と結合されている場合は結合後の領域)とを結合して(ステップS110)処理を終了する(エンド)。
後ろの領域の使用用途と開放対象領域の使用用途が異なる場合(ステップS109;N)もしくは後ろの領域が未使用領域でない場合は(ステップS108;N)、後ろの領域と開放対象領域(ステップS107で前の領域と結合されている場合は結合後の領域)とを結合しないで処理を終了する(エンド)。
図5は、図4に示す開放処理を行なった場合における、開放前と開放後の状態を各種のケースについて模擬表示したものである。図中、斜線部分は使用中領域を、白色部分は未使用領域を、斑点部分は開放対象領域を示している。また、用途0は使用用途が画像用であることを、用途1はソフトウェア用であることをそれぞれ示している。
同図(a)は、用途0の開放対象領域に対してその前後の領域が共に未使用領域であって共に用途1の場合を示している。開放対象領域の用途は用途0から用途1に変更され、さらに前後の領域と結合されて1つの未使用領域として開放される。
この場合、開放対象領域の用途を前後の領域の用途と同一に変更して開放しているので、前後の領域と開放対象領域とを1つの領域に結合することができ、大きな未使用領域を確保することができる。前後の領域が同じ用途で該用途と開放対象領域の用途とが異なる場合は、この開放対象領域を取得した際に、歯抜けとなるような採り方をしていたと考えられるので、歯抜けが少なくなるように、開放対象領域の用途をその前後の領域の用途に合わせて、1つの未使用領域にまとめている。
同図(b)は、用途0の開放対象領域に対してその前後の領域が共に未使用領域でありかつ共に用途0の場合を示している。開放対象領域の用途は用途0のままにされ、さらに前後の領域と結合されて1つの未使用領域として開放される。
同図(c)は、用途0の開放対象領域に対してその前後の領域が共に使用中領域でありかつ共に用途1の場合を示している。開放対象領域の用途は用途0から用途1に変更され、前後の領域と結合されずに開放される。
この場合、開放対象領域の用途を前後の領域の用途と同一に変更して開放しているので、前または後ろの領域が開放されたときにメモリ領域が結合されて大きな未使用領域の確保される可能性が高まる。
すなわち、前後の領域が同じ用途で該用途と開放対象領域の用途とが異なる場合は、該開放対象領域を取得した際に、歯抜けとなるような採り方をしていたと考えられるので、歯抜けが少なくなるように、開放対象領域の用途をその前後の領域の用途に合わせている。
同図(d)は、用途0の開放対象領域に対してその前後の領域が共に使用中領域であって共に用途0の場合を示している。開放対象領域の用途は用途0のままにされ、前後の領域のいずれとも結合されずに開放される。
同図(e)は、用途0の開放対象領域に対してその前後の領域が共に未使用領域であり、該前後の領域のうちの一方の領域が用途1で他方の領域が用途0の場合を示している。開放対象領域の用途は用途0のままにされ、かつ前後の領域のうち用途0の領域と結合されて開放される。
同図(f)は、用途0の開放対象領域に対してその前後の領域の一方が未使用領域かつ用途0で、他方が使用中かつ用途1の場合を示している。開放対象領域の用途は用途0のままにされ、かつ前後の領域のうち未使用かつ用途0の領域と結合されて開放される。
同図(g)は、用途0の開放対象領域に対してその前後の領域の一方が未使用領域かつ用途1で、他方が使用中かつ用途0の場合を示している。開放対象領域の用途は用途0のままにされ、かつ前後の領域のいずれとも結合されずに開放される。
同図(e)から(g)に示すケースでは、開放対象領域の前後にある2つの領域の用途が相違している。たとえば、用途0のメモリ領域を確保する場合はメモリの先頭から末尾に向けて未使用領域を検索して領域を確保し、用途1のメモリ領域を確保する場合はメモリの末尾から先頭に向けて未使用領域を検索して領域を確保するような場合には、用途0の領域がメモリの先頭側に集中し、用途1の領域がメモリの末尾側に集中するように、用途によってメモリ内で棲み分けが行なわれる。そして、その境界部分でメモリ領域を開放する場合には、開放対象領域の前後の領域の一方が用途0で他方が用途1という状態が発生する。
このとき、図5(e)〜(g)に示すように開放することで、用途毎の棲み分けの境界が適当に維持される。また、用途別にメモリを固定的に区分けしなくても、用途別の棲み分けが維持されるので、用途毎の必要メモリ量の変動に応じて境界位置が自然に変化し、メモリ領域を有効に活用することができる。
なお、使用中の領域を開放するとき、この領域の使用用途が画像用であった場合には、使用中に書き込まれたデータが該領域の開放後に不正に参照されることを防止するために、開放後の領域に「0」などの特定データを上書きし、セキュリティを強化するようになっている。該処理は、たとえば、メモリの開放処理において行なわれる。
図6は、使用用途が画像用のメモリ領域を開放した際に、開放された領域51aの全体に特定データ「0」を上書きして、使用中のデータが消去された様子(領域51b)を例示している。なお、上書きするデータは「0」に限定されず、他のデータ、たとえば、オール「1」などでもよい。また、画像用の領域を開放した場合に限定せず、メモリ領域を開放したときは、その領域のデータを常に消去するように構成してもかまわない。
次に、メモリ内にバウンダリ管理された領域が含まれる場合について説明する。
システムメモリ15上で使用されるデータ、特にハードウェア制御で用いるデータでは、扱うデータのアドレスにバウンダリの制限がある場合がある。バウンダリとは、扱うデータを所定の固定長サイズを単位に管理するものであり、通常は、固定長サイズの単位領域の開始アドレスの下位数ビットが「0」で始まるように設定される。たとえば、バウンダリの単位領域の固定長サイズが4キロバイト(4096バイト)の場合、各単位領域の開始アドレスの下位12ビットが「0」で始まるようにバウンダリが設定される。
図7に示すように、バウンダリで管理されたデータを扱うハードウェアに対して、メモリ管理機能がバウンダリの開始アドレスを考慮せずにメモリ領域61を割り当てると、任意の位置に確保されたメモリ領域61の先頭からバウンダリの開始アドレスまでの間の領域61aはハードウェア側で使用することができず、無駄になってしまう。また、メモリ領域を確保するときには、最大の無駄領域が生じる場合を考慮して要求サイズに予め余裕を持たせなくてはならない。
図7の例では、ハードウェア側のバウンダリ(単位領域62)の固定長サイズは4キロバイトで、開始アドレスは下位12ビットが「0」でなければならないので、獲得したメモリ領域61の先頭アドレス0x12123NNNから0xNNNだけの無駄領域61aが生じ、実際にハードウェア側で使用可能な領域61bは0x12124000以降になっている。また、メモリ領域の確保を要求するときは、無駄領域61aの最大は(4096−1)バイトになるので、該サイズを必要サイズに加えたサイズ以上を要求サイズにしなければならない。
そこで、図8(a)に示すように、予めシステムメモリ15内に、任意のアドレスから任意サイズの領域を取得可能なフリーサイズ領域71と、固定長サイズでバウンダリ管理された特定バウンダリ領域72とを固定的に割り当てて区分けしておく。そして、任意サイズのメモリ領域を確保するときはフリーサイズ領域71からメモリ領域を取得し、バウンダリに従ってメモリ領域を確保するときは特定バウンダリ領域72からメモリ領域を取得するようにする。
どちらの領域71、72からメモリ領域を取得するかは、たとえば、確保要求の引数(パラメータ)としてもよいし、確保要求されたメモリ領域のサイズから自動判定してもよい。自動判定の場合、たとえば、(1)確保要求されたメモリ領域のサイズがバウンダリの固定長サイズの整数倍と一致する場合は特定バウンダリ領域72から取得し、それ以外はフリーサイズ領域71から取得する、(2)確保要求されたメモリ領域のサイズがバウンダリの固定長サイズ以下の場合はフリーサイズ領域71から取得し、バウンダリの固定長サイズ以上の場合は特定バウンダリ領域72から取得する、などのようにすればよい。
上記のようにフリーサイズ領域71と特定バウンダリ領域72とを区分けしている場合に、フリーサイズ領域71がほぼ全部使用中の状態になると、フリーサイズ領域71から取得すべきメモリ領域をフリーサイズ領域71から取得できなくなる。このような場合は、特定バウンダリ領域72から、特定バウンダリ領域72のバウンダリに従うサイズでフリーサイズ領域用拡張領域73を確保して要求元に使用させる。
図8(b)の例では、確保要求されたサイズは64バイトであるが、該サイズのメモリ領域をフリーサイズ領域71から確保できないため、特定バウンダリ領域72からバウンダリの最小単位(4キロバイト)でフリーサイズ領域用拡張領域73を取得している。要求元は、フリーサイズ領域用拡張領域73の中の64バイト(領域73a)だけを使用する。図8(c)に示すように、使用後、フリーサイズ領域用拡張領域73は元の特定バウンダリ領域72に属する未使用領域として開放される。
これにより、通常状態では、取得サイズに応じてフリーサイズ領域71と特定バウンダリ領域72とを使い分けることで、図7に示すような無駄領域61aが生じないようにメモリを利用することができる。また、必要なメモリ領域をフリーサイズ領域71から確保できない場合は特定バウンダリ領域72をフリーサイズ領域71の代用として一時的に使用できるので、システムメモリ15全体としては必要サイズの未使用領域があるにもかかわらずフリーサイズ領域71と特定バウンダリ領域72との固定的な区分けが弊害となってメモリ領域を確保できないという事態が防止され、メモリを有効活用することができる。
なお、特定バウンダリ領域72は1種類に限定されず、固定長サイズが異なる複数種類のバウンダリ領域を設けてもかまわない。この場合、確保要求されたサイズに応じて、どのバウンダリ領域もしくはフリーサイズ領域71から領域を取得するかを判断するとよい。つまり、確保要求されたサイズといずれかのバウンダリの固定長サイズ(もしくはその整数倍)とが一致するときは、その一致するバウンダリ領域を領域の取得先に選択するようにすればよい。
以上、本発明の実施の形態を図面によって説明してきたが、具体的な構成は実施の形態に示したものに限られるものではなく、本発明の要旨を逸脱しない範囲における変更や追加があっても本発明に含まれる。
たとえば、実施の形態では、画像形成装置10が有するシステムメモリ15を対象に本発明に係わるメモリ管理方法を説明したが、メモリから領域の開放と取得を行なう他の構成の装置やシステムにも本発明は適用することができる。
実施の形態の図4においては、開放対象領域の用途の変更を判断した後、必要な変更を行なった後に前後領域との結合可否を判断するようにしたが、最終的に判断結果が同一になれば、判断の手順はこれに限定されるものではなく、用途の変更と結合とを各種条件から一度に判断するように構成してもよい。
また、画像用とソフトウェア用を例に説明したが、メモリの用途はこれらに限定されない。また、設定する用途の種類は3種類以上であってもかまわない。また、用途に代えて、メモリ使用期間を基準に開放状態を判断してもよい。たとえば、図4、図5における用途1を使用期間が長期のもの、用途0を使用期間が短期のものとし、図4、図5と同様に開放することができる。
本発明の実施の形態に係わる画像形成装置の構成を示すブロック図である。 本発明の実施の形態に係わる画像形成装置が画像領域を複数に分けて処理する場合のブロック分けの一例を示す説明図である。 メモリ領域の管理情報の一例を示す説明図である。 本発明の実施の形態に係わるメモリ領域の開放処理を示す流れ図である。 図4に示す開放処理を行なった場合における、開放前と開放後の状態を各種のケースについて模擬表示した説明図である。 画像用のメモリ領域を開放した場合のメモリ内容の一例を示す説明図である。 バウンダリで管理されたメモリ領域を任意アドレスに取得した様子を示す説明図である。 メモリにフリーサイズ領域と特定バウンダリ領域とを設けた場合における領域の取得と開放を模擬表示した説明図である。 従来から行なわれるメモリ開放処理における隣接メモリ領域の結合を示す説明図である。
符号の説明
10…画像形成装置
11…システム制御部
12…プロセッサ
13…周辺制御部
14…LCDパネル
15…システムメモリ
16…システム画像処理部
17…CCD
18…読取画像処理部
19…LD
21…記録画像処理部
22…ROM
23…小容量ストレージデバイス
24…大容量ストレージデバイス
25…不揮発メモリ
26…外部インターフェイス部
40…メモリ管理テーブル
45…ヘッダ部
45a…状態情報
45b…サイズ情報
45c…用途情報
45d…メモリ使用期間情報
51a…開放前のメモリ内容
51b…開放後のメモリ内容
61…任意の位置に確保されたメモリ領域
61a…無駄領域
62…バウンダリの単位領域
71…フリーサイズ領域
72…特定バウンダリ領域
73…フリーサイズ領域用拡張領域
73a…フリーサイズ領域用拡張領域内で実際に使用される領域

Claims (10)

  1. メモリ領域を開放する際に、
    開放対象領域の前後の領域の用途情報と前記開放対象領域の用途情報とに基づいて、前記開放対象領域の開放後の使用用途を決定する
    ことを特徴とするメモリ管理方法。
  2. メモリ領域を開放する際に、
    開放対象領域の前後の領域の用途情報および状態情報と前記開放対象領域の用途情報とに基づいて、前記開放対象領域の開放後の使用用途と、前記開放対象領域とその前後の領域との結合状態とを決定する
    ことを特徴とするメモリ管理方法。
  3. メモリ領域を開放する際に、
    開放対象領域の前後の領域の用途情報が同一の場合は、前記開放対象領域の用途情報を前記前後の領域の用途情報と同一の用途とし、
    前記開放対象領域の前後の領域のうち、状態情報が未使用を示す領域と前記開放対象領域とを結合する
    ことを特徴とするメモリ管理方法。
  4. メモリ領域を開放する際に、
    開放対象領域の前後の領域の状態情報が共に未使用を示しており、かつ前記前後の領域の用途情報が共に前記開放対象領域の用途情報と同じ場合は、前記開放対象領域とその前後の領域とを同一使用用途の1つの未使用領域として結合させ、
    開放対象領域の前後の領域の状態情報が共に未使用を示しており、かつ前記前後の領域の用途情報が同一かつ前記開放対象領域の用途情報と異なる場合は、前記開放対象領域の前記用途情報を該前後の領域の用途情報と同一の用途情報に書き換えて、1つの未使用領域として結合させる
    ことを特徴とする請求項1または2に記載のメモリ管理方法。
  5. メモリ領域を開放する際に、
    開放対象領域の前後の領域の状態情報が共に使用中を示しており、かつ前記前後の領域の用途情報が共に前記開放対象領域の用途情報と同じ場合は、前記開放対象領域を開放前と同じ用途情報のまま開放し、
    開放対象領域の前後の領域の状態情報が共に使用中を示しており、かつ前記前後の領域の用途情報が同一かつ前記開放対象領域の用途情報と異なる場合は、前記開放対象領域の前記用途情報を前記前後の領域の用途情報と同一の用途情報に書き換えて、開放する
    ことを特徴とする請求項1または2に記載のメモリ管理方法。
  6. メモリ領域を開放する際に、
    開放対象領域の前後の領域の状態情報が共に未使用を示すと共に、前記前後の領域の一方の領域の用途情報が前記開放対象領域の用途情報と同一で他方の領域の用途情報が前記開放対象領域の用途情報と異なる場合は、前記開放対象領域と前記一方の領域とを同一使用用途の1つの未使用領域として結合させ、前記開放対象領域と前記他方の領域とを結合させない
    ことを特徴とする請求項1または2に記載のメモリ管理方法。
  7. メモリ領域を開放する際に、
    開放対象領域の前後の領域のうち一方の領域の状態情報が未使用を示し他方の領域の状態情報が使用中を示し、かつ前記開放対象領域の用途情報と前記一方の領域の用途情報とが同一の場合は、前記開放対象領域と前記一方の領域とを同一使用用途の1つの未使用領域として結合させる
    ことを特徴とする請求項1または2に記載のメモリ管理方法。
  8. メモリ領域を開放する際に、開放対象領域の使用用途が画像用であった場合は、前記開放対象領域に特定のデータを上書きする
    ことを特徴とする請求項1乃至7のいずれか1つに記載のメモリ管理方法。
  9. メモリを、バウンダリの有無およびまたはバウンダリの固定長サイズに基づいて複数の管理領域に区分しておき、
    前記メモリから領域を取得する際に、要求されたサイズに応じて、該領域の取得先の管理領域を選定する
    ことを特徴とする請求項1乃至8のいずれか1つに記載のメモリ管理方法。
  10. 前記選定した管理領域から、前記要求されたサイズの空き領域を取得できない場合は、他の管理領域から、当該他の管理領域のバウンダリに従って領域を取得する
    ことを特徴とする請求項9に記載のメモリ管理方法。
JP2006138667A 2006-05-18 2006-05-18 メモリ管理方法 Expired - Fee Related JP4158121B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006138667A JP4158121B2 (ja) 2006-05-18 2006-05-18 メモリ管理方法
US11/706,247 US7613895B2 (en) 2006-05-18 2007-02-15 Memory administrating method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006138667A JP4158121B2 (ja) 2006-05-18 2006-05-18 メモリ管理方法

Publications (2)

Publication Number Publication Date
JP2007310625A JP2007310625A (ja) 2007-11-29
JP4158121B2 true JP4158121B2 (ja) 2008-10-01

Family

ID=38713257

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006138667A Expired - Fee Related JP4158121B2 (ja) 2006-05-18 2006-05-18 メモリ管理方法

Country Status (2)

Country Link
US (1) US7613895B2 (ja)
JP (1) JP4158121B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101038167B1 (ko) 2008-09-09 2011-05-31 가부시끼가이샤 도시바 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법
JP2011186563A (ja) * 2010-03-04 2011-09-22 Toshiba Corp メモリ管理装置およびメモリ管理方法
US9244614B2 (en) * 2011-08-04 2016-01-26 Intel Corporation Memory coalescing computer-implemented method, system, apparatus and computer-readable media
US8838929B2 (en) * 2011-10-05 2014-09-16 Arm Limited Allocation and deallocation of bounded time relative portions of a graphics memory

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04112249A (ja) 1990-09-03 1992-04-14 Matsushita Electric Ind Co Ltd メモリ管理方式
JPH0512099A (ja) 1991-07-03 1993-01-22 Meiden Eng Kk コンピユータシステムの高速動的メモリ管理方式
JP3353376B2 (ja) 1993-04-23 2002-12-03 三菱電機株式会社 記憶領域管理方式
US6195389B1 (en) * 1998-04-16 2001-02-27 Scientific-Atlanta, Inc. Motion estimation system and methods
EP1079625A3 (en) * 1999-06-15 2003-03-12 Canon Research Centre France S.A. Digital signal coding, decoding and transmission, with decomposition into frequency sub-bands and segmentation
US7100009B2 (en) * 2003-09-18 2006-08-29 International Business Machines Corporation Method and system for selective memory coalescing across memory heap boundaries

Also Published As

Publication number Publication date
JP2007310625A (ja) 2007-11-29
US7613895B2 (en) 2009-11-03
US20070271408A1 (en) 2007-11-22

Similar Documents

Publication Publication Date Title
US7652671B2 (en) Image processing device and method and storage medium storing program
KR101139076B1 (ko) 메모리 장치 및 파일 시스템
JP4158121B2 (ja) メモリ管理方法
JP2011164968A (ja) 主記憶装置へのアクセスを高速化する方法および記憶装置システム
JP2008009696A (ja) 画像処理装置及びプログラム
EP1383301A1 (en) Image processing device
JP4129693B2 (ja) メモリ管理方法
US7721065B2 (en) Reducing memory fragmentation by learning memory allocation patterns
JP2006268377A (ja) プログラム起動制御装置及びプログラム起動制御方法
JP4196299B2 (ja) 画像処理装置
EP1308793A1 (en) Image forming device having a memory assignment unit
JP2007223163A (ja) 画像形成装置、画像表示方法
JP2005322049A (ja) 画像処理装置およびプログラム
JP2014124925A (ja) 画像処理装置
JP5091694B2 (ja) 情報処理システム及び情報処理プログラム
JP2007323393A (ja) 画像処理装置及びプログラム
JP5008936B2 (ja) メモリ管理装置およびメモリ管理方法
JP5986132B2 (ja) 電子機器およびメモリー管理方法
JP5047139B2 (ja) 画像処理装置及びプログラム
JP2011181112A (ja) 画像形成装置
JP2002207634A (ja) 記憶領域管理方法及び記憶装置
JP2009217588A (ja) ファイルシステム、電子カメラ、ファイルアクセス方法及びプログラム
JP6078954B2 (ja) 画像処理装置
JP2008139968A (ja) 画像処理装置及びプログラム
JP4920725B2 (ja) 画像処理装置及びプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080317

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080619

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080702

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110725

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees