JP2001195299A - メモリ管理方法及び装置及び記憶媒体及びそれを用いた印刷装置 - Google Patents

メモリ管理方法及び装置及び記憶媒体及びそれを用いた印刷装置

Info

Publication number
JP2001195299A
JP2001195299A JP2000002928A JP2000002928A JP2001195299A JP 2001195299 A JP2001195299 A JP 2001195299A JP 2000002928 A JP2000002928 A JP 2000002928A JP 2000002928 A JP2000002928 A JP 2000002928A JP 2001195299 A JP2001195299 A JP 2001195299A
Authority
JP
Japan
Prior art keywords
area
variable
memory
length
size
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.)
Withdrawn
Application number
JP2000002928A
Other languages
English (en)
Inventor
Hideyuki Kitani
秀之 木谷
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.)
Canon Inc
Original Assignee
Canon 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 Canon Inc filed Critical Canon Inc
Priority to JP2000002928A priority Critical patent/JP2001195299A/ja
Publication of JP2001195299A publication Critical patent/JP2001195299A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Memory System (AREA)

Abstract

(57)【要約】 【課題】可変長メモリ領域のサイズ変更処理を迅速に
し、メモリ領域の細分化を防止する。 【解決手段】クライアントは、要求する領域が固定長で
あれば固定長領域要求を、可変長であれば可変長領域要
求をメモリ管理モジュールに対して発行する。メモリ管
理モジュールは、要求に応じて、未使用領域を検索し
(S3002)、要求されたサイズよりも大きなサイズ
の未使用領域があれば、その未使用領域から要求された
サイズの領域を確保する(S3007)。この際、固定
長領域は未使用領域内で後詰めに、可変長領域は前詰め
に確保される。可変長領域はその後側が可変する領域で
あるので、その部分が空き領域となる率が高まる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、例えば情報処理装
置など、メモリを使用する機器におけるメモリ管理方法
及び装置及び記憶媒体及びそれを用いた印刷装置に関す
るものである。
【0002】
【従来の技術】一般に各種情報処理装置は物理アドレス
でアクセスされるメモリ(RAM)と、それを管理する
メモリ管理モジュールとを有している。このメモリ管理
モジュールに対してメモリを要求するプロセスをクライ
アントと称する。
【0003】クライアントがメモリ管理モジュールに対
してメモリを要求すると、メモリ管理モジュールはそれ
が管理しているメモリ空間から未使用領域を検索し、要
求されたサイズの未使用領域をクライアントに割り当て
る。クライアントには割り当てられた領域を示すメモリ
アドレスが渡される。メモリ管理モジュールはその領域
を使用中領域として管理する。
【0004】尚、クライアントから要求されたサイズと
同じサイズの未使用領域が存在しない場合や、未使用領
域の検索を高速化している場合には、メモリ管理モジュ
ールは要求されたサイズより大きな未使用領域を分割
し、それをクライアントに渡すことがよくある。
【0005】また、この種のメモリ管理モジュールの持
つ一般的な機能としてクライアントに渡されたメモリ領
域のサイズ変更機能があり、これにはクライアントが獲
得済のメモリ領域が不足した場合により大きなサイズに
拡張する機能と、クライアントが獲得済のメモリ領域が
余った場合により小さなサイズに縮小する機能とがあ
る。この機能は、クライアントが必要とするメモリ領域
のサイズがメモリを獲得する時点では決定されない場合
に用いられる。
【0006】一般的には、メモリ管理モジュールはクラ
イアントからのメモリ拡張要求に対して、クライアント
に割り当てられた元のメモリ領域の後に未使用領域が隣
接しており、その未使用領域のサイズがメモリ領域を後
方へ拡張するのに十分な大きさであれば、その未使用領
域の一部又は全部を元のメモリ領域と結合してクライア
ントに渡す。一方、クライアントに渡された元のメモリ
の後に隣接している領域が使用されている領域である
か、又は、未使用領域であってもそのサイズがメモリ領
域を後方へ拡張するのに十分な大きさではない場合に
は、メモリ管理モジュールは拡張後のサイズの未使用領
域を検索し、新たに確保した領域をクライアントに渡
す。この時、元の領域に記憶されている内容は新たな領
域にコピーされ、元の領域は未使用領域としてメモリ管
理モジュールに管理される。
【0007】また、一般的にメモリ管理モジュールはク
ライアントからのメモリ縮小要求に対して、割り当てら
れた元のメモリ領域の前方を新たな領域として残し、後
方の部分を未使用領域として管理する。その後ろに隣接
する領域が未使用領域であるならば、メモリ管理モジュ
ールはそれを元のメモリ領域の縮小によってできた新た
な未使用領域と結合させ、より大きな未使用領域として
管理する。
【0008】
【発明が解決しようとする課題】このように、クライア
ントからのメモリ拡張要求に応じて、クライアントに割
り当てられた領域を拡張する場合、元のメモリ領域の後
に十分なサイズの未使用領域が存在する場合には非常に
効率よく拡張できる。
【0009】しかしながら、元のメモリ領域の後に十分
なサイズの未使用領域が存在しない場合には、全く新た
な領域を獲得して元のメモリに記憶されている内容を新
たに獲得された領域にコピーしなければならない。
【0010】また、この場合、元のメモリは解放されて
未使用領域となるが、その前後の領域が使用中領域であ
る場合には未使用領域が1つ増えることになる。未使用
領域の数が増えると、メモリ管理モジュールがクライア
ントからのメモリ獲得要求に対して必要なサイズの未使
用領域を検索する際の検索速度が低下することになる。
【0011】更に、未使用領域のサイズの総和が一定で
あっても、未使用領域がより多くの領域に分断されてい
れば未使用領域の最大サイズはより小さくなり、大きな
サイズのメモリ獲得要求に応えられなくなる可能性が高
くなる。そのような場合にはガベージコレクションと呼
ばれるメモリ再配置を行なうメモリ管理方法も考案され
ている。しかし、ガベージコレクションが発生すると、
メモリ管理モジュールから割り当てられたメモリへクラ
イアントから物理アドレスでアクセスするタイミングは
著しく制限される。それに加えて、ガベージコレクショ
ン処理は非常に時間のかかる処理であり、可能な限りそ
の回数は減らされるべきである。
【0012】一方、クライアントからのメモリ縮小要求
に応じて割り当てられた領域を縮小する場合も、元のメ
モリの後に使用中領域が隣接しているとメモリ領域の縮
小により未使用領域が1つ増える。これにより、メモリ
管理モジュールがクライアントからのメモリ獲得要求に
対して必要なサイズの未使用領域を検索する際の検索速
度が低下することになる。
【0013】図10及び図11は、複数のメモリ領域が
クライアントに割り当てられている状態からひとつのメ
モリ領域のサイズを拡張する場合の一例を示す図であ
る。図10,11において、領域M001,M002,
M003,M004,M005はクライアントに渡され
ている使用中領域である。図10(a)の領域M002
の後(下位アドレス)には領域M003が隣接してい
る。この状態から領域M002のサイズ拡張要求がある
と、図10(b)のようにメモリ管理モジュールは新た
に領域M006を確保し、領域M002に格納されてい
る内容を領域M006にコピーしてM006のアドレス
をクライアントに渡す。領域M002は解放されて未使
用領域となり、未使用領域の数は2個から3個に増え
る。
【0014】一方、図11(a)の領域M003の後
(下位アドレス)は未使用領域である。この状態から領
域M003のサイズ拡張要求があると、メモリ管理モジ
ュールは新たに領域を確保する必要はなく、図11
(b)のようにM003のサイズを大きくするだけで済
み、M003に格納されている内容をコピーする必要も
ない。また、未使用領域の数にも変化がない。
【0015】図12及び図13は、複数のメモリ領域が
クライアントに割り当てられている状態からひとつのメ
モリ領域のサイズを縮小する場合の一例を示す図であ
る。図12(a)の領域M002の後(下位アドレス)
には領域M003が隣接している。この状態から領域M
002のサイズ縮小要求があると、メモリ管理モジュー
ルは図12(b)のように領域M002のサイズを指定
されたサイズに小さくする。空いた部分は新たな未使用
領域となり、これにより未使用領域の数は2個から3個
に増える。
【0016】一方、図13(a)の領域M003の後
(下位アドレス)は未使用領域である。この状態から領
域M003のサイズ縮小要求があると、メモリ管理モジ
ュールは図13(b)のように領域M003のサイズを
指定されたサイズに小さくする。空いた部分は未使用領
域となるが、うしろに隣接する未使用領域と結合される
ため未使用領域の数に変化はない。
【0017】このように、割り当て済のメモリ領域のサ
イズを変更する場合、サイズが変更される領域のうしろ
に隣接する領域が使用中領域であるか未使用領域である
かによって、そのメモリ領域のサイズ変更の処理時間だ
けでなく、変更後のメモリ使用効率などにも大きな違い
が出てくる。
【0018】一般に、クライアントからのメモリ要求
と、割り当て済のメモリ領域のサイズ変更要求は、メモ
リ管理モジュールから見るとランダムに発生する。その
ため、割り当て済のメモリ領域のサイズ変更を行なう場
合に、その後に隣接する領域が使用中領域であるか未使
用領域であるかは全くの偶然に委ねられていた。
【0019】このため、メモリ領域のサイズ変更時に、
サイズが変更される領域の後ろに隣接する領域が使用中
領域である場合も多く、メモリ領域のサイズ変更処理の
ための未使用領域が細分化され、その結果メモリ領域の
サイズ変更に要する処理時間の増大、すなわち処理速度
の低下やメモリの使用効率の低下を招くという問題点が
あった。
【0020】本発明は上記従来例に鑑みて成されたもの
で、未使用のメモリ領域の細分化を防止し、処理速度の
低下やメモリ使用効率の低下を防止するメモリ管理方法
及び装置及び記憶媒体及びそれを用いた印刷装置を提供
することを目的とする。
【0021】
【課題を解決するための手段】上記目的を達成するため
に本発明は次のような構成からなる。
【0022】クライアントからの要求に応じて、要求さ
れたサイズの、固定長領域あるいは領域の一端が固定さ
れ他端が可変の可変長領域をメモリ上の空き領域に割り
当てるメモリ割当工程と、クライアントからの要求に応
じて割り当て済みの可変長領域のサイズを変更するサイ
ズ変更工程とを備え、前記メモリ割当工程は、可変長領
域を、その可変側が空くように空き領域内に割り当て、
固定長領域を、可変長領域の固定側に対応する側が空く
ように、空き領域内に割り当てる。
【0023】更に好ましくは、前記サイズ変更工程は、
可変長領域を拡張する場合、前記可変長領域の可変側に
十分なサイズの空き領域があればその空き領域側に可変
長領域を拡張し、なければ、別の空き領域に新たに変更
後のサイズの可変長領域を割り当てる。
【0024】更に好ましくは、割り当て済みの可変長領
域あるいは固定長領域を空き領域として解放し、それに
より複数の空き領域が連続する場合には、それらを新た
な空き領域として結合する領域解放工程を更に備える。
【0025】
【発明の実施の形態】[第1の実施の形態]以下、図面
に基づいて本発明の第1の実施形態であるメモリ管理モ
ジュールについて詳細に説明する。
【0026】図1は本実施形態におけるメモリ管理モジ
ュールが管理するメモリ空間の概念図である。
【0027】領域M1001はメモリ空間の初期状態の
メモリ領域を表しており、メモリ空間全体が単一の未使
用領域である。領域M1002は、クライアントからの
要求によりメモリの割り当てや解放を何度か行なった結
果、複数の使用中領域と複数の未使用領域が存在するメ
モリ領域を表している。各々の使用中領域の先頭アドレ
スはクライアントに渡され、クライアントは各領域に必
要な情報を格納している。
【0028】使用中領域及び未使用領域には各々ヘッダ
とフッタが付き、メモリ空間を管理するために必要な情
報が記憶されている。図2は使用中領域及び未使用領域
の構成を説明するための図である。
【0029】使用中領域M2001は、ヘッダM200
2、ボディ部M2005及びフッタM2007で構成さ
れる。ヘッダM2002は、1ビットの使用中フラグM
2003と31ビットのサイズ格納領域M2004の3
2ビット(=4バイト)で構成される。使用中フラグM
2003には1がセットされており、これによってこの
領域が使用中領域であることが示される。サイズ格納領
域M2004にはボディ部M2005のバイト数が格納
されている。
【0030】ボディ部M2005はそのアドレスがクラ
イアントに渡されており、その領域はクライアントによ
って使用されている。
【0031】フッタM2006はサイズ格納領域M20
07のみで構成されており、常にヘッダのサイズ格納領
域M2004と同じ値が格納されている。尚、フッタM
2006の大きさは4バイトである。
【0032】未使用領域M2011は、使用中領域M2
001と同様に、ヘッダM2002、ボディ部M200
5及びフッタM2007で構成される。但し、使用中フ
ラグM2003には0がセットされている。また、ボデ
ィ部M2005にはその先頭に他の未使用領域の物理ア
ドレスを示すリンクポインタM2012がある。メモリ
空間内に存在する全ての未使用領域はこのリンクポイン
タでリンクされている。なお、未使用領域がリンクされ
ていない場合には、リンクポインタの値は識別可能な特
定の値とする。特定の値としては、例えば、ROMのア
ドレスや、リンクポインタ自身のアドレスなどが利用で
きる。
【0033】メモリ管理モジュールはクライアントが新
規にメモリを獲得するための関数として、 FixMemoryAlloc(int size) FlexMemoryAlloc(int size) の2つの関数を提供する。ここで、"int"はパラメータs
izeが整数型であることを示す。パラメータsizeは、ク
ライアントが要求するメモリ領域のサイズである。
【0034】両関数共に、要求されたsizeバイト以
上のボディ部のサイズを持つ未使用領域を検索し、必要
なサイズに調整してそれを使用中領域としてクライアン
トに返す関数である。サイズの調整を行なう際に、関数
FixMemoryAlloc()はのちにそのサイズが変更されるこ
とがない固定長メモリとしてサイズの調整を行ない、関
数FlexMemoryAlloc()はのちにそのサイズが変更され
る可変長メモリとしてサイズの調整を行なう。
【0035】また、獲得されたメモリは、メモリ管理モ
ジュールが提供する関数 FlexMemoryRalloc(void *address,int new_size) によってそのサイズを拡張又は縮小することができる。
ここで、"void"はポインタaddressによって指し示され
る領域のデータ型が特定されないことを示す。"int"は
パラメータnew_sizeが整数型であることを示す。パラメ
ータnew_sizeは、縮小または拡張後のメモリ領域のサイ
ズである。
【0036】<関数FixMemoryAlloc> 次に、固定長メモリ領域の獲得関数であるFixMemoryAll
oc()の処理手順を図3のフローチャートを参照して説
明する。
【0037】まず最初にステップS3001でリンクさ
れている未使用領域の先頭のアドレスを取得し、そのア
ドレスを注目未使用領域のアドレスとする。図2を参照
して説明したように、未使用領域はその内部に持ってい
るリンクポインタM2012でリンクされている。な
お、注目未使用領域は処理中に未使用領域でなくなるた
めに、その場合には単に注目領域と呼ぶことにする。
【0038】次にステップS3002に進んで、そのア
ドレスが有効か否か、即ち注目未使用領域が存在するか
否かを判断する。注目未使用領域が存在しない場合はメ
モリを獲得できなかったものとして処理を終了し、クラ
イアントにはメモリ領域は割り当てられない。なお、未
使用領域の先頭アドレスは、メモリ内の特定の位置を先
頭アドレス格納部として格納しておいても良い。未使用
領域がない場合には、その先頭アドレス格納部の内容と
して、クライアントには割り当てられることのない特定
のアドレスやそれ自身のアドレスを格納することでその
旨を示すことができる。
【0039】注目未使用領域が存在する場合にはステッ
プS3003に進み、クライアントから要求されたサイ
ズと注目未使用領域のボディ部のサイズとを比較する。
図2を参照して説明したように未使用領域のボディ部の
サイズは未使用領域のヘッダM2002内のサイズ格納
領域M2004に保持されいる。その注目未使用領域の
ボディ部のサイズが要求されているサイズに満たない場
合、その未使用領域は使えないので、ステップS300
4で、注目未使用領域の内部に持っているリンクポイン
タM2012で指し示される次の未使用領域のアドレス
を取得し、それを新たな注目未使用領域のアドレスとす
る。次の注目未使用領域についてステップS3002か
ら繰り返し、必要な大きさの未使用領域を検索する。
【0040】ボディ部のサイズが要求されたサイズ以上
である未使用領域が見つかったらステップS3005に
進んで、その未使用領域を未使用領域のリンクから切り
離す。すなわち、注目未使用領域を指し示すリンクポイ
ンタを、注目未使用領域のリンクポインタの値に書き替
える。この処理と共に、注目未使用領域のヘッダM20
02内の使用中フラグM2003を1にセットすること
で、注目未使用領域を使用中領域に変更する。
【0041】次にステップS3006に進み、ステップ
S3005で切り離されて使用中領域となった注目領域
のボディ部のサイズと要求されているサイズとを比較
し、丁度よい程度の大きさであるか、それとも大きすぎ
るかを判断する。丁度よい程度の大きさである場合はそ
のまま処理を終了し、クライアントにはそのボディ部の
アドレスが渡される。
【0042】ステップS3005で切り離された領域が
大きすぎる場合はステップS3007に進み、注目領域
を、要求されたサイズのボディ部を持つ使用中領域と余
りの未使用領域の2つに分割することでサイズ調整を行
なう。ステップS3008で余った未使用領域を未使用
領域のリンクの先頭にリンクして処理を終了し、クライ
アントにはサイズ調整された領域のボディ部のアドレス
が渡される。
【0043】尚、余った領域を未使用領域とすることが
できるのは、それがヘッダM2002とフッタM200
6の各々4バイトと、未使用領域へのリンクポインタM
2012の4バイト、計12バイトを確保できるだけの
大きさを持つ場合に限られる。従って、ステップS30
06での判断基準は、ボディ部のサイズが(要求されて
いるサイズ+12バイト)以上であるか、それともそれ
未満であるかとなる。
【0044】次に、ステップS3007におけるサイズ
調整処理について図4を参照して説明する。
【0045】図4は、ステップS3005で注目未使用
領域のリンクから切り離されて使用中領域に変更された
サイズ調整前の領域M401を、要求されたサイズの領
域と余りの領域とに分割し、余りの領域を末使用領域M
403にする様子を示している。見て判る通り、サイズ
調整後の領域M402はサイズ調整前領域M401の後
半(下位アドレス)に割り付けられ、余りとなる前半
(上位アドレス)部が未使用領域M403となる。尚、
サイズ調整後の領域のヘッダのサイズ記憶部M2003
及びフッタのサイズ記憶部M2007は調整後のサイズ
に変更され、また、新しくできた未使用領域のヘッダの
サイズ記憶部M2003及びフッタのサイズ記憶部M2
007にもそのボディ部のサイズが記憶される。
【0046】<関数FlexMemoryAlloc>次に、可変長メ
モリ領域の獲得関数であるFlexMemoryAlloc()の処理
手順を説明する。ただし、全体の処理の流れは図3のフ
ローチャートを参照して説明した、固定長メモリ領域の
獲得関数FixMemoryAlloc()の処理手順と同じであるの
で説明は省略する。ここではステップS3007おける
サイズ調整処理について図5を参照して説明する。
【0047】図4と同じく、図5もステップS3005
で未使用領域のリンクから切り離され、使用中領域に変
更されたサイズ調整前の注目領域M501を、要求され
たサイズと余りの領域とに分割し、余りの領域を未使用
領域M503にする様子を示している。見て判る通り、
サイズ調整後の領域M502はサイズ調整前の前半(上
位アドレス)部が使用され、余りとなる後半(下位アド
レス)部が未使用領域となる。尚、サイズ調整後の領域
のヘッダのサイズ記憶部M2003及びフッタのサイズ
記憶部M2007は調整後のサイズに変更され、また、
新しくできた未使用領域のヘッダのサイズ記憶部M20
03及びフッタのサイズ記憶部M2007にもそのボデ
ィ部のサイズが記憶される。
【0048】以上が固定長メモリの獲得関数であるFixM
emoryAlloc()及び可変長メモリの獲得関数であるFlex
MemoryAlloc()の処理手順である。このように、クラ
イアントが要求する領域のサイズが、見いだされた未使
用領域のサイズよりも小さい場合、固定長メモリ領域は
未使用領域の下位アドレス側に、可変長メモリ領域は未
使用領域の上位アドレス側に確保される。
【0049】<関数FlexMemoryRalloc>次に、割り当て
済メモリのサイズ変更関数であるFlexMemoryRalloc()
の処理手順を図6のフローチャートを参照して説明す
る。
【0050】まず最初にステップS6001において、
クライアントから渡されたメモリ領域のアドレスから、
その領域(元の領域と呼ぶ)のヘッダを取得する。クラ
イアントから渡されるアドレスは使用中領域のボディ部
の先頭アドレスであり、ヘッダはその前に隣接している
ため容易にヘッダのアドレスを読み出すことができる。
【0051】次にステップS6002において、新たに
要求されたサイズと、ステップS6001で取得したヘ
ッダに格納されているボディ部のサイズとを比較し、既
に丁度よい程度の大きさであるならば何も行なわずに処
理を終了する。クライアントにはボディ部のアドレスが
そのまま返される。丁度よい程度の大きさとは、ボディ
部のサイズが、要求されたサイズ以上でかつ(要求サイ
ズ+12バイト)未満である場合を意味する。余りの部
分のサイズが12バイト未満である場合にはそれを新た
な未使用領域にはできないためにそのままにしておく。
【0052】実際にサイズの拡張又は縮小処理が必要で
ある場合にはステップS6003に進んで、元の領域の
うしろ(下位アドレス)に隣接する領域のヘッダを読み
出す。元の領域のボディ部のサイズはそのヘッダから判
っているので、そのうしろに隣接する領域のヘッダを読
み出すことは容易である。次にステップS6004で、
要求サイズと元の領域のボディ部のサイズとを再度比較
する。
【0053】要求されているサイズの方が大きい場合に
はステップS6005に進んで、ステップS6003で
取得したヘッダ情報を元に、うしろ(下位アドレス)に
隣接する領域が未使用領域であるか否かを判断する。そ
れが未使用領域である場合には更にステップS6006
に進んで、その未使用領域がサイズを拡張するのに十分
な大きさを持っているか否かを判断する。サイズを拡張
するのに十分な大きさとは、元の領域とその直後の領域
とをつなげて要求されたサイズのボディ部が確保できる
程度の大きさをいう。
【0054】元の領域のうしろに隣接する領域が、使用
中領域であるか又は未使用領域であってもサイズが小さ
すぎる場合には、ステップS6011に進んで新たな可
変長メモリ領域を獲得する。尚、可変長メモリ領域の獲
得処理は、図3のフローチャート及び図5を参照して説
明したFlexMemoryAlloc()による処理そのものであ
る。新たに可変長メモリ領域を獲得したら、ステップS
6012に進んで、元の領域のメモリのボディ部の内容
をステップS6011で獲得したメモリのボディ部にコ
ピーする。
【0055】そして最後にステップS6013で元の領
域を未使用領域に変更して未使用領域のリンクにつなぎ
処理を終了する。クライアントにはステップS6011
で獲得された領域のボディ部のアドレスが返される。
【0056】ステップS6005及びステップS600
6において、元の領域のうしろに隣接する領域が未使用
領域であり、かつそのサイズが領域を拡張するために必
要な大きさを持っていると判断された場合には、ステッ
プS6007に進んで、元の領域のうしろに隣接する領
域を未使用領域のリンクから一旦切り離す。そしてステ
ップS6008で2つの領域を結合してひとつの大きな
使用中領域にする。
【0057】このままではサイズが大きすぎるので、次
にステップS6009に進んでサイズの調節を行ない、
更にステップS6010で余りの領域を新たな未使用領
域として未使用領域のリンクの先頭にリンクして処理を
終了する。この処理は、図3におけるステップS300
7及びステップS3008と同様である。クライアント
には元の領域のボディ部のアドレスがそのまま返され
る。
【0058】この場合、ボディ部の内容のコピー処理は
発生しないため処理速度は非常に速く、且つ未使用領域
の数も増えることはないためメモリの使用効率も悪化し
ない。
【0059】一方、ステップS6004において要求サ
イズがボディ部のサイズより小さいと判断された場合、
即ちサイズの縮小を指示された場合にはステップS60
14に進んで、元の領域の後ろ(下位アドレス)に隣接
する領域が未使用領域であるか否かを判断し、それが未
使用領域である場合にはステップS6007に進む。
【0060】既に説明したように、ステップS6007
からの処理では元の領域のうしろ(下位アドレス)に隣
接する未使用領域と一旦結合してサイズの調整を行な
い、余りの領域を新たな未使用領域とする。そのために
未使用領域の数は変化しない。また、元の領域の直後の
未使用領域は拡張される。
【0061】元の領域のうしろ(下位アドレス)に隣接
する領域が使用中領域である場合はステップS6009
に進んで、元の領域のサイズの調整を行ない、余りの領
域を未使用領域のリンクにつなげる。この場合には元の
領域を分割することになるので、新たな未使用領域が生
成されることになる。
【0062】このように、可変長領域のサイズ変更処理
においては、サイズ変更の結果2つの未使用領域がメモ
リ上で隣接する場合、それら2つの未使用領域は1つの
未使用領域に結合される。
【0063】次に、ステップS6013におけるある領
域を未使用領域にする処理の処理手順を、図7のフロー
チャートを参照して説明する。なお、この処理は本メモ
リ管理モジュールがクライアントからの要求により割り
当て済のメモリ領域を解放する関数 MemoryFree(void *address) によるメモリ解放処理と全く同じであるので合わせて説
明する。パラメータaddressにより、解放される領域の
ボディ部のアドレスが指定される。
【0064】まずステップS7001で、指定されたメ
モリ領域のヘッダを読み出す。尚、クライアントからは
ボディ部のアドレスが指定されるが、ヘッダはボディ部
の前(上位アドレス)に隣接しているため容易に読み出
すことができる。
【0065】次にステップS7002に進んで、その指
定された領域の前(上位アドレス)に隣接している領域
が使用中領域であるかそれとも未使用領域であるかを調
べる。尚、前(上位アドレス)に隣接している領域のフ
ッタから、隣接している領域のサイズは容易に知ること
ができ、従って隣接している領域のヘッダも容易に読み
出すことができる。指定された領域の前(上位アドレ
ス)に隣接している領域が未使用領域である場合には、
ステップS7004でその領域を未使用領域のリンクか
ら切り離し、更にステップS7005に進んで、指定さ
れた領域とその前の隣接する領域とを結合し、より大き
な1つの領域とする。
【0066】次にステップS7006に進んで、指定さ
れた領域のうしろ(下位アドレス)に隣接している領域
が使用中領域であるかそれとも未使用領域であるかを調
べる。尚、うしろ(下位アドレス)に隣接している領域
のヘッダは指定された領域の直後にあるため、容易に読
み出すことができる。うしろ(下位アドレス)に隣接し
ている領域が未使用領域である場合には、ステップS7
008でその領域を未使用領域のリンクから切り離し、
更にステップS7009に進んで、指定された領域とそ
のうしろに隣接する未使用領域とを結合し、より大きな
1つの領域とする。
【0067】この様にしてステップS7005及びステ
ップS7009で結合された領域は、最後にステップS
7010で、未使用領域のリンクの先頭にリンクされて
メモリの解放処理は終了する。
【0068】このようにして、使用中領域の開放する
と、2つあるいは3つの未使用領域がメモリ上で連続す
るであろう場合には、それら未使用領域を結合してひと
つの未使用領域とする。
【0069】この構成により、本発明ではクライアント
からのメモリ獲得要求を2種類に別ける。
【0070】ひとつはサイズ変更を行なわない、或いは
行なう可能性が低いメモリを獲得する固定長メモリ獲得
要求と、もう一つはサイズ変更を行なう、或いは行なう
可能性が高いメモリを獲得する可変長メモリ獲得要求で
ある。
【0071】クライアントは獲得するメモリの用途に応
じて固定長メモリ獲得要求と可変長メモリ獲得要求とを
使い分け、メモリ管理モジュールはメモリ獲得要求の種
類に応じて検索した未使用領域からのメモリの分割手順
を切り替えることで、可変長メモリはメモリ空間の前方
(上位アドレス)から、固定長メモリはメモリ空間の後
方(下位アドレス)から獲得するようにする。この手法
によればサイズ変更される可能性のある可変長メモリの
後は未使用領域として残る可能性が高くなり、サイズ拡
張及びサイズ縮小による未使用領域の分散やサイズ拡張
によるメモリコピーが発生する確率が低くなる。
【0072】可変長メモリはサイズの拡張と縮小が幾度
か行なわれ、最終的に固定サイズに落ち着くようなメモ
リ獲得シーケンスを必要とするクライアントが単一で動
作する場合には効果が非常に大きく、サイズの変更によ
る未使用領域の分散やサイズ拡張によるメモリコピーが
発生する確率はほぼゼロになる。
【0073】例え上記のようなクライアントが複数であ
っても、あるクライアントが獲得した可変長メモリが固
定サイズに落ち着く前に別のクライアントが可変長メモ
リを獲得しない限り、本メモリ管理方法のメリットは失
われない。仮に、クライアントが獲得した可変長メモリ
が固定サイズに落ち着く前に別のクライアントが可変長
メモリを獲得したとしても、後で獲得された可変長メモ
リに対しては本メモリ管理方法のメリットは残る。
【0074】また、本メモリ管理方法を実現するための
プログラムは従来のメモリ管理方法と比較しても殆んど
複雑さは変らず、メモリの獲得及びサイズ変更処理の処
理速度についても従来のメモリ管理方法の処理速度を維
持することができる。
【0075】以上のように本実施形態におけるメモリ管
理方法では、新規に割り当てられるメモリ領域は固定長
メモリ領域と可変長メモリ領域とに分類され、固定長メ
モリ領域は未使用領域の後方(下位アドレス)から、可
変長メモリ領域は未使用領域の前方(上位アドレス)か
ら確保される。このため、可変長メモリ領域と固定長メ
モリ領域とがメモリに割り当てられると、可変長メモリ
の後方(下位アドレス)、すなわち可変側に隣接する領
域は未使用領域として残る可能性が高くなり、可変長メ
モリのサイズを変更する際の処理速度及び変更後のメモ
リ使用効率が極めて良くなる。
【0076】図14に本実施例のメモリ管理装置を応用
した印刷装置のブロック図を示す。
【0077】図14において、ホストコンピュータ20
0は、ROM3のプログラム用ROMに記憶された文書
処理プログラム等に基づいて図形、イメージ、文字、表
(表計算等を含む)等が混在した文書処理を実行するC
PU1を備え、システムバス4に接続される各デバイス
をCPU1が統括的に制御する。RAM2は、CPU1
の主メモリ、ワークエリア等として機能する。キーボー
ドコントローラ(KBC)5は、キーボード9や不図示
のポインティングデバイスからのキー入力を制御する。
CRTコントローラ(CRTC)6は、CRTディスプ
レイ10の表示を制御する。ディスクコントローラ(D
KC)7は、ブートプログラム、種々のアプリケーショ
ン、フォントデータ、ユーザファイル、編集ファイル等
を記憶するハードディスク(HD)、フロッピーディス
ク(FD)等の外部メモリ11とのアクセスを制御す
る。プリンタコントローラ(PRTC)8は、所定の双
方向インターフェース(双方向I/F)21を介してプ
リンタ1000に接続されて、プリンタ1000との通
信制御処理を実行する。なお、CPU1は、例えばRA
M2上に設定された表示情報RAMヘのアウトラインフ
ォントの展開(ラスタライズ)処理を実行し、CRT1
0上でのWYSIWYG(表示内容と印刷内容とを一致
させる機能)を可能としている。また、CPU1はCR
T10上の不図示のマウスカーソル等で指示されたコマ
ンドに基づいて登録された種々のウィンドウを開き、種
々のデータ処理を実行する。
【0078】プリンタ100においては、プリンタCP
U12は、ROM13のプログラム用ROMに記憶され
た制御プログラム等に記憶された制御プログラムを実行
することでシステムバス15に接続される各種のデバイ
スとのアクセスを統括的に制御し、印刷部I/F16を
介して接続される印刷部(プリンタエンジン)17に出
力情報としての画像信号を出力する。CPU12は双方
向I/F21を介してホストコンピュータとの通信処理
が可能となっており、プリンタ内の情報等をホストコン
ピュータ3000に通知可能に構成されている。RAM
19はCPU21の主メモリ、ワークエリア等として機
能するRAMである。入力部18はホストコンピュータ
3000と双方向インターフェース21を介して印刷状
態情報などのステータス情報などの交信を制御し、プリ
ンタ内の情報等をホストコンピュータ3000に通知可
能に構成されている。メモリコントローラ(MC)20
は、ブートプログラム、種々のアプリケーション、フォ
ントデータ、ユーザファイル、編集ファイル等を記憶す
るハードディスク(HD)、フロッピーディスク(F
D)等の外部メモリ14とのアクセスを制御する。操作
部1012は、表示パネルやキーボードを含んでおり、
オペレータへの情報の提供や、オペレータからの指示の
入力を行わせる。
【0079】ここで図14の印刷装置100において
は、図3,図6,図7の手順のプログラムコードは、R
OM13に制御プログラムの一部として格納されてい
る。
【0080】[第2の実施の形態]第1の実施の形態で
は使用中領域及び未使用領域にはフッタ領域M2007
が設けられており、ボディ部のサイズが格納されてい
た。このサイズはある領域の前(上位アドレス)に隣接
する領域のアドレスを取得するために利用されている。
【0081】フッタ領域は4バイトのメモリを消費して
いるが、フッタ領域を設けなくても第1の実施の形態と
同等のメモリ管理機能を実現することも可能である。本
実施形態ではフッタ領域を使用せずに、ある領域の前
(上位アドレス)に隣接する領域のアドレスを取得する
メモリ管理方法を説明する。
【0082】図8は使用中領域及び未使用領域の構成を
説明するための図である。
【0083】使用中領域M8001は、使用中フラグM
8003とボディ部のサイズが格納されるサイズ格納領
域M8004とで構成されるヘッダM8002とボディ
部M8005とで構成される。
【0084】未使用領域M8011は、使用中領域M8
001の構成に加え、ボディ部M8005の先頭に設け
られた未使用領域へのリンクポインタM8012により
構成されている。
【0085】各領域の用途は第1の実施の形態で図2を
参照して説明したものと同じであり、フッタが存在しな
いこと以外に違いはない。
【0086】本実施形態における固定長メモリ及び可変
長メモリの獲得手暇、獲得済メモリのサイズ変更手順は
第1の実施の形態と同じであるので説明は省略する。
【0087】また、メモリの解放処理の全体の流れにつ
いても第1の実施の形態と同じであるので説明は省略
し、図7のステップS7002において前(上位アドレ
ス)に隣接する領域のアドレスを取得する手順を図9の
フローチャートを参照して説明する。なお、図9のプロ
グラムコードも、第1の実施形態と同様に、プリンタ1
00においてはROM13に格納される。
【0088】まず最初にステップS9001でメモリ管
理モジュールが管理するメモリ空間の先頭アドレスを注
目領域のアドレスとして取得し、ステップS9002に
おいてそのアドレスが指定された領域そのものであるか
否かを判断する。もしメモリ空間の先頭に位置する領域
が指定された領域そのものであれば、その前(上位アド
レス)に隣接する領域は存在しないので処理を終了す
る。
【0089】指定された領域がメモリ空間の先頭の領域
でないなら、ステップS9003に進んで、注目領域の
アドレスからそのヘッダを読み出し、ステップS900
4で、注目領域のうしろ(下位アドレス)に隣接する領
域が、指定された領域であるか否かを判断する。ヘッダ
にはボディ部のサイズが保持されているため、注目領域
のうしろ(下位アドレス)に隣接する領域のアドレスは
容易に取得できる。したがって、うしろに隣接する領域
が指定された領域であるか否かも簡単に判断することが
できる。
【0090】注目領域のうしろ(下位アドレス)に隣接
する領域が指定された領域でないならば、ステップS9
005に進んで、現在の注目領域のうしろに隣接する領
域を新たな注目領域とするよう、注目領域のアドレスを
更新する。この後ステップS9003に戻って処理を繰
り返す。注目領域のアドレスの更新は、ヘッダに保持さ
れているボディ部のサイズを利用すれば容易に行なうこ
とができる。
【0091】この様にメモリ空間の先頭に位置する領域
から順に調べていき、ステップS9004で、注目領域
のうしろ(下位アドレス)に隣接する領域が指定された
領域であると判断されたら処理を終了する。その時点で
注目している領域が指定された領域の前(下上位アドレ
ス)に隣接する領域である。
【0092】この様に本実施形態におけるメモリ管理方
法では使用中領域及び未使用領域にフッタを設ける必要
がなくメモリの使用効率を高めることが可能となる。第
1の実施の形態のメモリ管理方法はメモリ解放時の処理
速度を優先した方法であるのに対し、第2の実施の形態
のメモリ管理方法はメモリの使用効率を優先した方法で
あるということができる。
【0093】[他の実施の形態]なお、上述したメモリ
管理モジュールは、汎用の情報処理機器の他に、特定用
途に利用される機器、例えば印刷装置や複写機、これら
の機能を兼ね備えるデジタル複合機などに適用すること
ができる。特定用途に利用される機器に関しては、メモ
リの使用方法がある程度特定できるために、後者の機器
を制御するための組み込み型プログラムに対しては大き
な効果を期待することができる。
【0094】例えば、ダブルバッファを用いたPDL対
応の印刷装置であれば、データ解析プロセスによってP
DLデータから中間データが生成され、レンダリングプ
ロセスによって中間データからバンドごとのビットマッ
プデータが生成される。この場合、データ解析プロセス
は、クライアントとしてメモリ制御モジュールに対して
中間データを格納するための領域を要求する。中間デー
タのサイズはオブジェクトの数や複雑さによって変動す
るため、メモリ領域の要求時点でそのサイズを固定する
ことはできない。そのため、データ解析プロセスは可変
長領域を要求する。
【0095】一方、レンダリングプロセスは、ビットマ
ップデータを格納するためのバンド領域をメモリ管理モ
ジュールに要求する。バンドのサイズは可変であるにし
ても、レンダリング処理前にバンドサイズを決定してお
けば、メモリ領域を要求する時点でそのサイズを固定す
ることができる。
【0096】このように、印刷装置においては、可変長
領域が必要なプロセスと固定長領域でよいプロセスとが
混在しており、しかもプロセスに応じて、確保すべき領
域が可変長領域かそれとも固定長領域かある程度決まっ
ている。このような装置では、上記実施形態のメモリ管
理モジュールを利用することで、未使用領域の細分化を
防止し、メモリの使用効率の向上及びメモリ割り当て処
理の迅速化という効果を格別に得ることができる。
【0097】これは、印刷装置以外の機器にも同様であ
る。例えば、ファクシミリであれば、受信あるいは送信
する符号化データのサイズは、画像に応じて変動する。
しかしながら、読み込む画像データのサイズや、復号後
の画像データのサイズは、サイズによって決まってお
り、画像サイズを予め獲得しておけば固定サイズとして
扱える。
【0098】このように、固定長のデータと予測できな
いサイズのデータとを扱う機器においては、本発明の適
用が大きな効果を奏する。
【0099】また、上記実施形態では、固定長領域は未
使用領域において後詰めで確保され、可変調領域は未使
用領域において前詰めで確保されるものとされている。
しかしながら、この逆に、固定長領域は未使用領域にお
いて前詰めで確保され、可変調領域は未使用領域におい
て後詰めで確保されてもよい。この場合には、図6で
は、指定された領域はその前に隣接する未使用領域と結
合される必要がある。また、ヘッダとフッタの内容は入
れ替えられなければならない。
【0100】なお、本発明は、複数の機器(例えばホス
トコンピュータ、インタフェイス機器、リーダー、プリ
ンタなど)から構成されるシステムに適用しても、一つ
の機器からなる装置(複写機、プリンタ、ファクシミリ
装置など)に適用してもよい。
【0101】また、本発明の目的は、前述した実施形態
の機能を実現する、図3,図6,図7あるいはそれに加
えて図9の手順のプログラムコードを記憶した記憶媒体
を、システムあるいは装置のコンピュータ(またはCP
UやMPU)が記憶媒体に格納されたプログラムコード
を読出し実行することによっても達成される。
【0102】この場合、記憶媒体から読み出されたプロ
グラムコード自体が前述した実施形態の機能を実現する
ことになり、そのプログラムコードを記憶した記憶媒体
は本発明を構成することになる。
【0103】プログラムコードを供給するための記憶媒
体としては、例えば、フロッピーディスク、ハードディ
スク、光ディスク、光磁気ディスク、CD−ROM、C
D−R、磁気テープ、不揮発性のメモリカード、ROM
などを用いることができる。
【0104】また、コンピュータが読み出したプログラ
ムコードを実行することにより、前述した実施形態の機
能が実現されるだけでなく、そのプログラムコードの指
示に基づき、コンピュータ上で稼動しているOS(オペ
レーティングシステム)などが実際の処理の一部または
全部を行い、その処理によって前述した実施形態の機能
が実現される場合も含まれる。
【0105】さらに、記憶媒体から読出されたプログラ
ムコードが、コンピュータに挿入された機能拡張ボード
やコンピュータに接続された機能拡張ユニットに備わる
メモリに書き込まれた後、そのプログラムコードの指示
に基づき、その機能拡張ボードや機能拡張ユニットに備
わるCPUなどが実際の処理の一部または全部を行い、
その処理によって前述した実施形態の機能が実現される
場合も含まれる。
【発明の効果】以上説明したように本発明によれば、可
変長領域の可変側に隣接する領域を未使用領域として残
すことができ、可変長領域のサイズ拡張時の処理速度が
飛躍的に向上する。さらに、サイズ縮小を含めたサイズ
変更に伴う未使用領域の細分化を抑えることができ、メ
モリの使用効率の面でも大きな効果を得ることができ
る。
【図面の簡単な説明】
【図1】第1の実施の形態及び第2の実施の形態におけ
るメモリ管理モジュールが管理するメモリ空間の概念図
である。
【図2】第1の実施の形態における使用中領域及び未使
用領域の構成を説明するための図である。
【図3】第1の実施の形態及び第2の実施の形態におけ
る固定長メモリ及び可変長メモリの新規獲得処理の処理
手順を説明するためのフローチャートである。
【図4】第1の実施の形態の固定長メモリの新規獲得処
理におけるサイズ調整処理の概念図である。
【図5】第1の実施の形態の可変長メモリの新規獲得処
理におけるサイズ調整処理の概念図である。
【図6】第1の実施の形態及び第2の実施の形態におけ
る獲得済メモリのサイズ変更処理の処理手順を説明する
ためのフローチャートである。
【図7】第1の実施の形態及び第2の実施の形態におけ
る獲得済メモリの解放処理の処理手順を説明するための
フローチャートである。
【図8】第2の実施の形態における使用中領域及び未使
用領域の構成を説明するための図である。
【図9】第2の実施の形態におけるある領域の前(上位
アドレス)に隣接する領域のアドレスを取得する処理手
順を説明するためのフローチャートである。
【図10】後(下位アドレス)に使用中領域が隣接する
場合に、領域のサイズ拡張を行なう場合の状態の変化を
説明するための概念図である。
【図11】後(下位アドレス)に使用中領域が隣接しな
い場合に、領域のサイズ拡張を行なう場合の状態の変化
を説明するための概念図である。
【図12】後(下位アドレス)に使用中領域が隣接する
場合に、領域のサイズ縮小を行なう場合の状態の変化を
説明するための概念図である。
【図13】後(下位アドレス)に使用中領域が隣接しな
い場合に、領域のサイズ縮小を行なう場合の状態の変化
を説明するための概念図である。
【図14】メモリ管理装置を応用したプリンタのブロッ
ク図である。
【符号の説明】
M1001 メモリ空間(初期状態) M1002 メモリ空間 M2001 使用中領域 M2002 ヘッダ M2003 使用中フラグ M2004 サイズ格納部 M2005 ボディ部 M2006 ヘッダ M2007 サイズ格納部 M2011 未使用領域 M2012 未使用領域のリンクポインタ M8001 使用中領域 M8002 ヘッダ M8003 使用中フラグ M8004 サイズ格納部 M8005 ボディ部 M8011 未使用領域 M8012 未使用領域のリンクポインタ M001 使用中領域 M002 使用中領域 M003 使用中領域 M004 使用中領域 M005 使用中領域 M006 使用中領域

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 クライアントからの要求に応じて、要求
    されたサイズの、固定長領域あるいは領域の一端が固定
    され他端が可変の可変長領域をメモリ上の空き領域に割
    り当てるメモリ割当工程と、 クライアントからの要求に応じて割り当て済みの可変長
    領域のサイズを変更するサイズ変更工程とを備え、 前記メモリ割当工程は、可変長領域を、その可変側が空
    くように空き領域内に割り当て、固定長領域を、可変長
    領域の固定側に対応する側が空くように、空き領域内に
    割り当てることを特徴とするメモリ管理方法。
  2. 【請求項2】 前記サイズ変更工程は、可変長領域を拡
    張する場合、前記可変長領域の可変側に十分なサイズの
    空き領域があればその空き領域側に可変長領域を拡張
    し、なければ、別の空き領域に新たに変更後のサイズの
    可変長領域を割り当てることを特徴とする請求項1のメ
    モリ管理方法。
  3. 【請求項3】 割り当て済みの可変長領域あるいは固定
    長領域を空き領域として解放し、それにより複数の空き
    領域が連続する場合には、それらを新たな空き領域とし
    て結合する領域解放工程を更に備えることを特徴とする
    請求項1のメモリ管理方法。
  4. 【請求項4】 クライアントからの要求に応じて、要求
    されたサイズの、固定長領域あるいは領域の一端が固定
    され他端が可変の可変長領域をメモリ上の空き領域に割
    り当てるメモリ割当手段と、 クライアントからの要求に応じて割り当て済みの可変長
    領域のサイズを変更するサイズ変更手段とを備え、 前記メモリ割当手段は、可変長領域を、その可変側が空
    くように空き領域内に割り当て、固定長領域を、可変長
    領域の固定側に対応する側が空くように、空き領域内に
    割り当てることを特徴とするメモリ管理装置。
  5. 【請求項5】 前記サイズ変更手段は、可変長領域を拡
    張する場合、前記可変長領域の可変側に十分なサイズの
    空き領域があればその空き領域側に可変長領域を拡張
    し、なければ、別の空き領域に新たに変更後のサイズの
    可変長領域を割り当てることを特徴とする請求項4のメ
    モリ管理装置。
  6. 【請求項6】 割り当て済みの可変長領域あるいは固定
    長領域を空き領域として解放し、それにより複数の空き
    領域が連続する場合には、それらを新たな空き領域とし
    て結合する領域解放手段を更に備えることを特徴とする
    請求項4のメモリ管理装置。
  7. 【請求項7】 コンピュータにより、 クライアントからの要求に応じて、要求されたサイズ
    の、固定長領域あるいは領域の一端が固定され他端が可
    変の可変長領域をメモリ上の空き領域に割り当てるメモ
    リ割当手段と、 クライアントからの要求に応じて割り当て済みの可変長
    領域のサイズを変更するサイズ変更手段とを実現し、 前記メモリ割当手段は、可変長領域を、その可変側が空
    くように空き領域内に割り当て、固定長領域を、可変長
    領域の固定側に対応する側が空くように、空き領域内に
    割り当てるためのコンピュータプログラムを格納するこ
    とを特徴とするコンピュータ可読の記憶媒体。
  8. 【請求項8】 前記サイズ変更手段は、可変長領域を拡
    張する場合、前記可変長領域の可変側に十分なサイズの
    空き領域があればその空き領域側に可変長領域を拡張
    し、なければ、別の空き領域に新たに変更後のサイズの
    可変長領域を割り当てることを特徴とする請求項7のコ
    ンピュータ可読の記憶媒体。
  9. 【請求項9】 割り当て済みの可変長領域あるいは固定
    長領域を空き領域として解放し、それにより複数の空き
    領域が連続する場合には、それらを新たな空き領域とし
    て結合する領域解放手段を更に備えることを特徴とする
    請求項7のコンピュータ可読の記憶媒体。
  10. 【請求項10】 メモリと、 請求項1乃至3のいずれかに記載のメモリ管理方法によ
    りメモリを管理する管理手段と、 前記管理手段により管理されるメモリ領域を用いるクラ
    イアントプロセスとを備えることを特徴とする情報処理
    装置。
  11. 【請求項11】 サイズ変更を行わない、或いは行う可
    能性が低い固定長メモリを獲得する固定長メモリ獲得要
    求に応じて、未使用領域の後方に固定長メモリ領域を割
    り当てる手段と、 サイズ変更を行う、或いは行う可能性が高い可変長メモ
    リを獲得する可変長メモリ獲得要求に応じて、未使用領
    域の前方に可変長メモリ領域を割り当てる手段とを有す
    ることを持徴とするメモリ管埋装置。
  12. 【請求項12】 可変長領域のサイズの拡張を行う際、
    可変長領域の後ろに未使用領域が無い場合、或いは可変
    長領域の後ろの未使用領域の広さが十分でない場合、新
    たな可変長メモリ領域を獲得し、元の可変長領域のデー
    タをコピーし、元の可変長領域を未使用領域にする手段
    を更に有することを特徴とする請求項11記載のメモリ
    管理装置。
  13. 【請求項13】 元の領域を未使用領域にする際、連続
    する未使用領域が複数できる場合、一つにまとめる手段
    を更に有することを特徽とする請求項12記載のメモリ
    管理装置。
  14. 【請求項14】 入カされた印刷データに基づき生成さ
    れる中間データを格納するための可変長メモリの獲得要
    求に応じて、未使用領域の前方に可変長メモリ領域を割
    り当てる手段と、 中問データに基づき生成されるピットマップデータを格
    納するための固定長メモリの獲得要求に応じて、未使用
    領域の後方に固定長メモリ領域を割り当てる手段とを有
    することを特徴とする印刷装置。
  15. 【請求項15】 可変長領域のサイズの拡張を行う際、
    可変長領域の後ろに未使用領域が無い場合、或いは可変
    長領域の後ろの未使用領域の広さが十分でない場合、新
    たな可変長メモリ領域を獲得し、元の可変長領域のデー
    タをコピーし、元の可変長領域を未使用領域にする手段
    を更に有することを特徴とする請求項14記載の印刷装
    置。
  16. 【請求項16】 元の可変長領域を未使用領域にする
    際、連続する未使用領域が複数できる場合、一つにまと
    める手段を更に有することを特徴とする請求項15記載
    の印刷装置。
JP2000002928A 2000-01-11 2000-01-11 メモリ管理方法及び装置及び記憶媒体及びそれを用いた印刷装置 Withdrawn JP2001195299A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000002928A JP2001195299A (ja) 2000-01-11 2000-01-11 メモリ管理方法及び装置及び記憶媒体及びそれを用いた印刷装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000002928A JP2001195299A (ja) 2000-01-11 2000-01-11 メモリ管理方法及び装置及び記憶媒体及びそれを用いた印刷装置

Publications (1)

Publication Number Publication Date
JP2001195299A true JP2001195299A (ja) 2001-07-19

Family

ID=18531964

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000002928A Withdrawn JP2001195299A (ja) 2000-01-11 2000-01-11 メモリ管理方法及び装置及び記憶媒体及びそれを用いた印刷装置

Country Status (1)

Country Link
JP (1) JP2001195299A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003073721A1 (fr) * 2002-02-28 2003-09-04 Matsushita Electric Industrial Co., Ltd. Dispositif et procede de stockage
JP2018060316A (ja) * 2016-10-04 2018-04-12 富士通株式会社 情報処理装置、情報処理システム、情報処理装置の制御方法および情報処理装置の制御プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003073721A1 (fr) * 2002-02-28 2003-09-04 Matsushita Electric Industrial Co., Ltd. Dispositif et procede de stockage
US7117317B2 (en) 2002-02-28 2006-10-03 Matsushita Electric Industrial Co., Ltd. Apparatus and method for efficient storage of data streams that each comprise separately transmitted data blocks
JP2018060316A (ja) * 2016-10-04 2018-04-12 富士通株式会社 情報処理装置、情報処理システム、情報処理装置の制御方法および情報処理装置の制御プログラム

Similar Documents

Publication Publication Date Title
US6456388B1 (en) Printer enclosing network computer and computer network system employing the same
JP4053115B2 (ja) 文書画像データの記憶制御方式
EP0870246B1 (en) Optimum access to electronic documents
US7268909B2 (en) Document processing method and apparatus
US6992785B1 (en) Method, data structure and apparatus for identifying resources prior to printing
US20040111675A1 (en) Document processing apparatus and method
JP4934462B2 (ja) 部分的な書類画像にアクセスするための方法、サーバー及びコンピュータプログラム
US20040088155A1 (en) Method and apparatus for localization of applications
US7253914B2 (en) Print data processing apparatus, print control method, and print control program
EP0803794A2 (en) Interchangeable storage medium, method of controlling same and computer system using same
US20070229900A1 (en) Systems and methods for display list management
US6211881B1 (en) Image format conversion with transparency color adjustment
US6975416B2 (en) Print control apparatus and method
JP2014063481A (ja) クラウドにより支援されるレンダリング
US6903829B2 (en) Data processing apparatus capable of communicating with output apparatus and its data processing method
CN110795386B (zh) 一种数据写入方法和服务端
US6016155A (en) Character processing apparatus, character processing method, and memory
JP2001195299A (ja) メモリ管理方法及び装置及び記憶媒体及びそれを用いた印刷装置
US7730100B2 (en) Information processing apparatus, information processing method, and storage medium
GB2280522A (en) Data processor having page turning function for managing a plurality of data sets
JP2004078413A (ja) データ処理装置、データ処理方法およびそのプログラム
JP2004258865A (ja) 情報処理方法
JP2809668B2 (ja) 情報検索装置
JPH09198296A (ja) 画像情報処理システム
JP2001282482A (ja) データ処理装置、および、該データの処理方法

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20070403