JP4323637B2 - メモリアロケーション方法及びメモリアロケーション装置並びに記憶媒体 - Google Patents

メモリアロケーション方法及びメモリアロケーション装置並びに記憶媒体 Download PDF

Info

Publication number
JP4323637B2
JP4323637B2 JP28320599A JP28320599A JP4323637B2 JP 4323637 B2 JP4323637 B2 JP 4323637B2 JP 28320599 A JP28320599 A JP 28320599A JP 28320599 A JP28320599 A JP 28320599A JP 4323637 B2 JP4323637 B2 JP 4323637B2
Authority
JP
Japan
Prior art keywords
memory block
empty
order
size
address
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
JP28320599A
Other languages
English (en)
Other versions
JP2000112814A (ja
JP2000112814A5 (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.)
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
Publication of JP2000112814A publication Critical patent/JP2000112814A/ja
Publication of JP2000112814A5 publication Critical patent/JP2000112814A5/ja
Application granted granted Critical
Publication of JP4323637B2 publication Critical patent/JP4323637B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Description

【0001】
【発明の属する技術分野】
本発明は、コンピュータシステムにおけるメモリの動的なアロケーション(メモリの割り当て)に関し、特に、フラグメンテーションのオーバーヘッドを低減する方法及び装置に関する。
【0002】
【従来の技術】
近年のコンピュータシステムは、処理の間にデータを記憶するためのメモリ空間を得るために、動的メモリアロケーションに大きく依存している。
プログラムは、動的メモリアロケータに多様なサイズのメモリブロックの要求を発行し、それらがもはや要求されなくなると、再使用のためにその後メモリアロケータに戻される。
【0003】
ダイナミックメモリアロケータは、一般に、システムに代わって新たな要求を満足させ、解放されたブロックが戻される空きのブロックのリストの管理を行う。
【0004】
動的メモリアロケータは、そのアロケーションがシステムの多数の構成要素によって広範に使用され、コンピュータシステムの中心部を形成し得る。
【0005】
更に、メモリーのアロケーションは、要求されるシステム全体の性能を発揮させるように効率的に実行されなければならない。
【0006】
効率的な処理のために、メモリアロケータは、2つの要求を満たさなければならない。すなわち、利用可能なメモリの全体の蓄えを効率的に管理し、また、アロケーション及び解放の要求に迅速に応答しなければならない。
【0007】
これら2つの要求は、矛盾するものであり、従来のダイナミックメモリアロケータでは、高速にすることと高メモリ効率との間のどこかに位置付けられるアロケーション手法を実行することによって折衷している。
【0008】
動的なメモリアロケータのメモリ効率は、利用可能なメモリの蓄え全体が効率的に利用される度合いである。
【0009】
非効率なメモリアロケーション手法は、極端なメモリの要求を招き、膨らんだメモリの要求をまかなうためにシステム全体のコストが増加するか、若しくは、要求されたメモリが利用できない場合にシステムに欠陥を生じる。
【0010】
個々のシステムにおいて実行されるアロケータのメモリ効率の度合いは、システムによって発行された要求を満たすにはあまりにも小さいフラグメントに分裂したために、利用できないメモリの量によって決定される。
【0011】
フラグメンテーションは、アロケーション処理の結果としてアロケータ内で内部的に生じる場合や、システムのアロケーションの概要とアロケータのアロケーション手法との組み合わせの結果として外部的に生じる場合もある。
【0012】
いずれのフラグメンテーションも、システム全体のメモリ効率を低下させる無駄を表している。
【0013】
メモリアロケーションの要求を迅速に満足させるために、従来の動的メモリアロケータは、通常、いくつかの独立した空きリストを保持しており、メモリブロックはそこからアロケートされる。各々のリストは、要求されたサイズのブロックを空きリスト全体から検索することなく、アロケーションが満足され得るように、固定サイズ又はある範囲のサイズのブロックを含む。
【0014】
もし、要求されたサイズに対応した空きリストが空であったら、より大きなサイズのリストの一つからのブロックが、該要求を満たすために分裂されなければならなくなり、フラグメンテーションやメモリ効率の低下の要因となる。
【0015】
固定サイズの空きリストは、一般に用いられており、与えられた空きリストのブロックのサイズは、2のべき乗へ、若しくは、フィボナッチ数列における次の番号、又は他の簡単にコンピュータ処理可能な数列に丸められる。個々のサイズのブロックのためのアロケーションの要求によって戻されたメモリの量は、通常、この丸め込みに伴う内部的フラグメンテーションを含み、システムの残り部分によって利用できないままとなる。
【0016】
外部的なフラグメンテーションは、アロケータ手法とシステムのアロケーション要求の概要との間の相互作用の結果として生じる。
【0017】
ブロックは、予測できない順序でシステムによって頻繁にアロケータに戻され、メモリ内において空きブロック間に割り当てられたブロックが点在することとなる。
【0018】
大きなアロケーションの要求は、利用可能なメモリの合計量がその要求を満たすのに十分あるにも関わらず、満たされない場合がある。これは、空きメモリのまとまった大きなブロックがもはや利用可能でないからである。
【0019】
アロケータ手法は、更に、アロケータに戻された小さなブロックが結合されて、より大きなサイズの空きリスト上に大きなブロックとして戻される頻度に依存して、外部的フラグメンテーションの一因となり得る。
【0020】
この結合処理は、通常、多くの計算を要する最新の空きリストの全てのソーティングを必要とし、アロケーションの速度に影響を与える。
【0021】
この結果、従来のアロケータは、多数の空きリスト上に独立して多くの小さなブロックが記憶されることによって生じる、好ましくない外部的なフラグメンテーションの影響を軽減するために、通常、絶対に必要になるまで結合することを遅延し、又は、ブロックのアロケーション又は解放が、ある回数に至った後に、定期的に結合することを実行している。
【0022】
従来のアロケータは、多様な手法において、メモリ効率の度合いと速度との調和をとっているが、これは、フラグメンテーションによるメモリ効率の低下を招いている。
【0023】
動的なメモリアロケータは、また、該アロケータによって内部的に利用される空きリストの情報をどこに記憶するかによって変化する。
【0024】
内部に記憶するアロケータは、空きブロック自体にこの情報を記憶するものであり、普通、割り当てられたメモリへの高速なデータのパスを有する一般的な目的のシングルプロセッサ又はマルチプロセッサのシステムにおいて用いられる。
【0025】
外部に記憶するアロケータは、該アロケータによって制御可能なメモリの独立した領域に空きリストに関する情報を記憶するものであり、コプロセッサーのために、メモリをアロケートする場合に、かつ/又は、割り当てられたメモリに対するプロセッサのアクセスが、重大な性能のを与える場合に用いられ得る。
【0026】
【発明が解決しようとする課題】
本発明は、上記問題点に鑑みてなされたものであり、その目的は、メモリのフラグメンテーションを低減し得る、メモリアロケーション方法及びメモリアロケーション装置並びに記憶媒体を提供することにある。
【0027】
【課題を解決するための手段】
本発明によれば、コンピュータシステムにおけるメモリブロックを動的に割り当てるためのメモリアロケーション方法であって、前記コンピュータシステムによってメモリブロックが要求された場合に、空きのメモリブロックを管理する空きリストを検索して、適切なサイズの空きのメモリブロックから要求されたメモリブロックを割り当てる割り当て工程と、その割り当てに基づいて前記空きリストを更新する工程と、前記コンピュータシステムによってメモリブロックが解放された場合に、前記空きリストを参照して、解放されたメモリブロックに隣接する空きのメモリブロックが存在するか否かを判定する判定工程と、解放されたメモリブロックに隣接する1またはそれ以上の空きのメモリブロックが存在する場合に、前記解放されたメモリブロックと当該空きのメモリブロックとを結合して、一の空きのメモリブロックを形成する工程と、前記解放されたメモリブロックと結合して形成された空きのブロックとに基づいて、前記空きリストを更新する工程と、を含み、前記空きリストは、ヘッダと、空きのメモリブロック毎に設定され、該空きのメモリブロックのアドレス及びサイズの情報を有するノードと、を有するスキップリスト形式のリストであり、前記ノードは、前記空きのメモリブロックのサイズ順に前記ノードを連結するサイズ順ポインタ、及び、前記空きのメモリブロックのアドレス順に前記ノードを連結するアドレス順ポインタを、そのノードに設定されたレベル毎に有し、前記ヘッダは、前記空きのメモリブロックをサイズ順に検索する場合に最初に参照する前記ノードを示すサイズ順開始ポインタ、及び、前記空きのメモリブロックをアドレス順に検索する場合に最初に参照する前記ノードを示すアドレス順開始ポインタを、レベル毎に有し、前記割り当て工程では、前記サイズ順開始ポインタ及び前記サイズ順ポインタを参照して空きのメモリブロックを検索し、前記判定工程では、前記アドレス順開始ポインタ及び前記アドレス順ポインタを参照して、解放されたメモリブロックに隣接する空きのメモリブロックを検索することを特徴とするメモリアロケーション方法が提供される。
【0029】
また、本発明によれば、コンピュータシステムにおけるメモリブロックを動的に割り当てるためのメモリアロケーション装置であって、メモリブロックが前記コンピュータシステムによって要求された場合に、空きのメモリブロックを管理する空きリストを検索して、適切なサイズの空きメモリブロックから要求されたメモリブロックを割り当てるための割り当て手段と、メモリブロックが前記コンピュータシステムによって解放された場合に、前記空きリストを参照して、解放されたメモリブロックに隣接する空きのメモリブロックが存在するか否かを判定する判定手段と、解放されたメモリブロックに隣接する1またはそれ以上の空きのメモリブロックが存在する場合に、前記解放されたメモリブロックと当該空きのメモリブロックとを結合して、一の空きのメモリブロックを形成する結合手段と、前記割り当てと、前記解放されたメモリブロックと、結合して形成された空きのメモリブロックとに基づいて、前記空きリストを更新する手段と、を備え、前記空きリストは、ヘッダと、空きのメモリブロック毎に設定され、該空きのメモリブロックのアドレス及びサイズの情報を有するノードと、を有するスキップリスト形式のリストであり、前記ノードは、前記空きのメモリブロックのサイズ順に前記ノードを連結するサイズ順ポインタ、及び、前記空きのメモリブロックのアドレス順に前記ノードを連結するアドレス順ポインタを、そのノードに設定されたレベル毎に有し、前記ヘッダは、前記空きのメモリブロックをサイズ順に検索する場合に最初に参照する前記ノードを示すサイズ順開始ポインタ、及び、前記空きのメモリブロックをアドレス順に検索する場合に最初に参照する前記ノードを示すアドレス順開始ポインタを、レベル毎に有し、前記割り当て手段は、前記サイズ順開始ポインタ及び前記サイズ順ポインタを参照して空きのメモリブロックを検索し、前記判定手段は、前記アドレス順開始ポインタ及び前記アドレス順ポインタを参照して、解放されたメモリブロックに隣接する空きのメモリブロックを検索することを特徴とするメモリアロケーション装置が提供される。
【0030】
また、本発明によれば、メモリブロックを動的に割り当てるために、コンピュータを、メモリブロックが要求された場合に、空きのメモリブロックを管理する空きリストを検索して、適切なサイズの空きメモリブロックから要求されたメモリブロックを割り当てるための割り当て手段、メモリブロックが解放された場合に、前記空きリストを参照して、解放されたメモリブロックに隣接する空きのメモリブロックが存在するか否かを判定する判定手段、解放されたメモリブロックに隣接する1またはそれ以上の空きのメモリブロックが存在する場合に、前記解放されたメモリブロックと当該空きのメモリブロックとを結合して、一の空きのメモリブロックを形成する結合手段、前記割り当てと、前記解放されたメモリブロックと、結合して形成された空きのメモリブロックとに基づいて、前記空きリストを更新する手段、として機能させるプログラムを記憶した記憶媒体であり、前記空きリストは、ヘッダと、空きのメモリブロック毎に設定され、該空きのメモリブロックのアドレス及びサイズの情報を有するノードと、を有するスキップリスト形式のリストであり、前記ノードは、前記空きのメモリブロックのサイズ順に前記ノードを連結するサイズ順ポインタ、及び、前記空きのメモリブロックのアドレス順に前記ノードを連結するアドレス順ポインタを、そのノードに設定されたレベル毎に有し、前記ヘッダは、前記空きのメモリブロックをサイズ順に検索する場合に最初に参照する前記ノードを示すサイズ順開始ポインタ、及び、前記空きのメモリブロックをアドレス順に検索する場合に最初に参照する前記ノードを示すアドレス順開始ポインタを、レベル毎に有し、前記割り当て手段は、前記サイズ順開始ポインタ及び前記サイズ順ポインタを参照して空きのメモリブロックを検索し、前記判定手段は、前記アドレス順開始ポインタ及び前記アドレス順ポインタを参照して、解放されたメモリブロックに隣接する空きのメモリブロックを検索することを特徴とする記憶媒体が提供される。
【0031】
なお、スキップリストは、ソートされたデータの集合を記憶するために用いられ、データ処理の技術分野の当業者に広く知られたものである。なお、スキップリストについての詳細は、例えば、「Skip Lists: A Probabilistic Alternative to Balanced Trees」(William Pugh著、1990年6月Communications of the ACM発行 )に記載されており、その内容は、相互に参照して取り入れられる。
【0032】
【発明の実施の形態】
以下、本発明の好適な実施の形態について、添付図面を参照して説明する。
【0033】
図1は、好適な実施形態に係る、メモリアロケータ2と制御されるメモリ4とを含む動的アロケーションシステム1を示している。メモリアロケータ2は、アプリケーションプログラム6からの多様なサイズの空きメモリブロックの要求に対応する。
【0034】
本実施形態では、アプリケーションプログラムは、図形操作プログラムであり、例えば、画像記録、バッファリング及びプログラムモジュールの記録のためのメモリを要求するものである。しかしながら、本発明は、アロケーションが必要とされるメモリの、いかなる形式のプログラムにも実行し得ることはいうまでもない。
【0035】
アプリケーションプログラム6又は他のアプリケーションによって使用されるメモリ領域を確保するために、メモリアロケータ2は、リンクされた空きリスト8を管理しており、この空きリスト8は、空きのメモリブロックのアドレス及びサイズを記憶したものである。
【0036】
本実施形態では、リンクされた空きリスト8は、デュアルスキップリスト構造(dual skip-list structure)を用いて記録されており、リスト上の各々のブロックは、それぞれ異なる順序を有する2つのリストに有効に同時にリンクされる。
一方のリストは、ブロックサイズによって順序付けられたもの(サイズ順リスト)であり、アロケーション要求に対して、最も適切なブロックを迅速に突きとめるために用いられる。
【0037】
他方のリストは、メモリのアドレスによって順序付けられたもの(アドレス順リスト)であり、ブロックが解放される毎に、結合(merging)が実行され得るように、隣接する空きブロックを迅速に突きとめるために用いられる。
【0038】
アロケータが、従来のアロケータよりも速く、簡単に、また、エラーが生じないようにするために、ツリーの再調整の必要がない2分ツリーと同様の2分探索処理を提供するスキップリストが用いられる。なお、2分ツリー又は他の関連するデータ構造も、空きリストを実行するために用いることができる。
【0039】
図2は、空きリスト8の初期の構造を示した図であり、全てのメモリが、空きのメモリブロックSとして、アロケーションのために利用可能な場合を示したものである。該空きリストは、空きリストのサイズに依存して、1又はそれ以上のヘッダー要素12を定義するヘッダー10を含む。
【0040】
該空きリストは、また、空きのメモリブロック16を示すノード14を含み、ノード14は、ノード要素18から構成される。ノード14は、各サイズ順リスト及びアドレス順リストにおけるリストの見だしを表す。
【0041】
ノード要素18は、該ノード要素が関連する空きのメモリブロックSのアドレス20と、空きメモリブロックSのサイズ22(通常、バイト単位である)と、"アドレスによる"ポインタ24と"サイズによる"ポインタ26から構成され、動的なサイズを持つ一連の先頭ポインタ(forward pointer)構造と、を含む。
【0042】
ヘッダー要素12は、個々のメモリブロックと関連してはおらず、サイズに基づく又はアドレスに基づく検索のための最初の開始ポイントとして用いられる。各々のヘッダー要素12は、"アドレスによる"ポインタ52と"サイズによる"ポインタ54とを含む一連の先頭ポインタ構造を含む。
【0043】
図2に示す段階では、未だメモリは割り当てられておらず、そのために、対応する一の空きメモリブロックを示す一のノード14だけが存在していり、"アドレスによる"ポインタ24と"サイズによる"ポインタ26とは、"null"ポインタを指している。
【0044】
図3では、一のメモリアロケーション30が実行され、アドレスbとサイズSとを有する新たな空きメモリブロック32が解放されており、また、ノード14は、その新たなアドレスとサイズの詳細を反映するように更新されている。
【0045】
図4では、メモリアロケーション34が実行されており、アドレスb0又はb1、及びサイズS0又はS1をそれぞれ有する、2つの空きメモリブロック36及び38が解放されおり、この結果、ノード要素40又は42をそれぞれ有する1番目のノードN0と2番目のノードN1とが生じている。
【0046】
ノードN0におけるノード要素40は、関連する空きメモリブロック36のアドレスb0とサイズS0に従って、"サイズによる"ポインタ44と"アドレスによる"ポインタ46とを含む。同様に、ノードN1におけるノード要素42は、関連する空きメモリブロック38のアドレスb1とサイズS1に従って、"サイズによる"ポインタ48と"アドレスによる"ポインタ50とを含む。
【0047】
個々のノード要素における"サイズによる"及び"アドレスによる"ポインタは、同じノードを必ずしも指す必要はない。それらが各々関連するリストが、異なったキーによって順序付けられるためである。
【0048】
図5A及び図5Bには、多数のエントリを持つスキップリスト58が示されており、該リストは、各々、サイズs0、s1、s2、s3、s4及びs5を有し、また、アドレスb0、b1、b2、b3、M、及びb5における複数の空きメモリブロック60、61、62、63、64及び65を示している。
【0049】
各々の空きメモリブロック60乃至65は、それぞれN0,N1、N2、N3、N4及びN5によって示された関連するノードを有する。各々のノードのレベルは、メモリが割り当てられた空きリストが生じる間にランダムに生じる。多くの場合、"サイズによる"ポインタ44及び48は、各々のノード要素40及び42に関連する"アドレスによる"ポインタ46及び50とは異なった要素を指すことが理解されよう。
【0050】
各々のノードN0乃至N5のサイズは、メモリブロックが空きリストに登録される時に、乱数、又は、擬似乱数の生成手法、若しくは、発見的な数生成手法(heuristic number generation scheme)に基づいて選択される。
【0051】
どの手法が用いられても、与えられたレベルのノードの相対的な数は、スキップリストの生成に関わる当業者によって理解されるように、予め設定された、若しくは、少なくとも予測可能なパターンに従って選択される。本実施形態では、ランダムモードのレベルを生成するために、確率値pとして0.25を用いている。
【0052】
本実施形態では、後述するような補足的なメモリブロックアロケーション及び解放処理が実行される。
<アロケーション処理>
図6は、本実施形態におけるアロケーション処理を示したフローチャートである。処理は、ステップS601から開始され、アロケーション要求が発行されると、サイズ順リストが、該要求のサイズに最も近い、次に大きなブロックのために検索される。
【0053】
検索の間、各々のレベルにおけるサイズ順リスト上における以前のブロックに対するポインタが、効率的にサイズ順リストからブロックを取り去るように記録される。該ブロックは、もはや、フリーでないとみなされるからである。
【0054】
次のステップS603では、ブロックが発見されたか否かを判定する。ブロックが発見されなかった場合は、処理は、次のステップS605へ進み、前記要求が拒否され、処理が終了する。
【0055】
ブロックが発見された場合は、処理は次のステップS607へ進み、該ブロックが要求されたサイズか否かが判定される。発見されたブロックのサイズが、正確に一致しない場合は、その余剰部分が、そのサイズに従って、サイズ順リストの適当な位置に戻されることとなる。
【0056】
一方、余剰部分がない場合(すなわち、発見されたブロックが、要求されたサイズに一致している。)、ステップS611で、割り当てられたブロックは、後述するようにアドレス順リストから取り去るように、検索を通じて、アドレス順リスト上で発見される。
【0057】
なお、余剰部分がある場合、該部分は、単にアドレス順リスト上の元のブロックの位置に配置されることが理解されよう。該部分は、隣接するブロックに関しては元のブロックの順番のままだからである。
【0058】
次に、処理は、ステップS613へ進み、アロケートすべきブロックが更に存在するならば、処理はステップS601へ戻る。サイズ順リストにおける全てのブロックが割り当てられたときは、アロケーション処理は終了する。
<解放処理>
図7は、本実施形態における解放処理を示すフローチャートである。処理は、ステップS701から開始され、ブロックが後で再利用するためにアロケータへ解放された場合、アドレス順リストが、該ブロックと結合するための、最も近い隣接する空きのブロックを発見するために検索される。そして、処理は、周辺の空きのブロックが、解放されるブロックのすぐ隣にあるか否かにより異なる。
【0059】
次のステップS703では、解放されたブロックのすぐ後のブロックが既に空きか否かを判定する。解放されたブロックのすぐ後のブロックが既に空きである場合は、処理は、ステップS705へ進み、解放されたブロックのすぐ前のブロックが既に空きか否かを判定する。解放されたブロックのすぐ前のブロックが空きの場合は、ステップS707において、これら3つのブロックが、新たな一つのブロックに結合され、アドレス順リスト上において、解放されたブロックの前のメモリ上のブロックと置きかえられる。メモリ上の開放されたブロックの後のブロックは、アドレス順リスト及びサイズ順リストの双方から取り去られ、それら3つのブロックの最終的なサイズが、サイズ順リストにおける先のブロックの登録に置き換えて、サイズ順リスト上の適切な新たな位置に挿入される。
【0060】
一方、解放されたブロックのすぐ後のブロックのみが既に空きである場合は、処理はステップS711へ進む。ステップS711では、アドレス順リスト上の登録を置き換えて、新たに解放されたブロックが、その連続したブロックと結合され、その順番は変化しない。連続したブロックは、サイズ順リストから取り去られ、解放されたブロックとの結合の結果生じた新たなサイズでサイズ順リストに再挿入される。
【0061】
ステップS703において、解放されたブロックのすぐ後に空きのブロックがない場合、処理はステップS709へ進み、解放されたブロックのすぐ前のブロックが既に空きか否かを判定する。解放されたブロックのすぐ前のブロックが、既に空きであるだけの場合は、ステップS713において、アドレス順リスト上の登録を置き換えて、新たに解放されたブロックが、先のブロックと結合される。この場合も、順序は不変である。
【0062】
ステップS713でも、先のブロックは、サイズ順リストから取り去られ、解放されたブロックと結合された結果生じた新たなサイズで再び挿入される。
【0063】
ステップS709において、解放されたブロックのすぐ前のブロックが、空きではない場合、その後、処理はステップS715へ進み、新たなリストの登録が作成され、アドレス順リストとサイズ順リストとの双方に挿入される。ステップS717において、アドレス順リストとサイズ順リストとが更新され、処理は終了する。
【0064】
図4は、図3から更なるブロックが割り当てられ、1番目のアロケーションが解放された、空きリストの構造を示している。図5A及び図5Bは、異なるレベルのノードを含み、多くのアロケーション及び解放の要求がされた後の空きリストの構造を示している。
<オブジェクトの存在期間>
外部的なフラグメンテーションは、割り当てられたブロックの存在期間によって多分に影響される。一般的な目的のメモリアロケーションは、通常、外部的なフラグメンテーションを減少するために、アロケーション手法の変更を許容する、外部的なブロックの存在期間について考慮されていない。オブジェクトの存在期間は、予測するにはとても困難である。システムにとって、そのような情報をアロケータに供給することが困難だからである。更に、アロケータ内でこの情報を利用することは、通常、速度の遅延を招く。
【0065】
本実施形態では、これらの問題は、システムよってオブジェクトの大雑把なライフタイム情報を、動的アロケータで用いるために与えることによって、ある程度改善される。アロケーションの要求は、それらの存在期間が短いと予期されるか長いと予期されるか否かに従って、2つの大きなクラスにグループ化される。その区別は、システムによって半ば独断的に引き出される。
【0066】
アロケーションの要求を満たすために、空きリストから、より大きなブロックが分配されたとき、返されたブロックは、予想される存在期間に依存して、該より大きな空きブロックの上部又は下部のいずれかを分割する。
【0067】
システムが、全ての利用可能なメモリを示す一つのブロックと共にスタートすることを考えると、存在期間の短いブロックは、メモリの記憶の一方に区分される傾向にあり、存在期間の長いブロックは、他方に区分される。このことは、性能を落とすことなく、外部的なフラグメンテーションにおいて、重大な1次的減少を与える大雑把なオブジェクトの存在期間のグループ化を提供する。
【0068】
本実施形態では、オブジェクトの存在期間に関する情報は、ブロックサイズのデータの極性(存在期間が比較的短いと予想されることを示す負の値と、存在期間が比較的長いと予想されることを示す正の値)によってアロケータに渡される。メモリブロックのアロケーションの要求を発行したアプリケーション又はシステムがオブジェクトの存在期間の概念について対応していない場合は、極性ではなく従来の正を示す要求を与えることができる。
<アライメント>
多くの場合、オブジェクトは、メモリのアドレッシングに関して、厳格なアライメントの制約を要求する場合がある。
【0069】
本実施形態では、最も適切なブロックが発見されたポイントからレベル0のサイズリストに沿って検索することによって、ブロックは、不特定多数のアドレスに対して配列される。該検索は、要求されたサイズとアライメントとの双方を備えたブロックが発見されるか、若しくは、係るブロックを生成するために分割しえるブロックが発見された場合に、終了する。本実施形態では、要求されるアライメントは、2のべき乗でなければならない。
【0070】
なお、本発明を、その好適な実施の形態を参照して説明したが、当業者であれば、他の多くの形式で本発明を実施できることはいうまでもない。例えば、上記実施形態では、空きリストを外部に記録したが、内部に記録して実行することもできる。
【0071】
なお、図9は、本実施形態において、C言語で実行される空きリストのノードの構造を示した図である。
【0072】
このノードは、動的なサイズを持つ構造であり、独立した高速アロケータによりアロケーションを行う。そのサイズは、ノードのレベルに依存し、該構造の最後に存在する先頭ポインターの数に影響を与える。従来のスキップリストと異なるのは、上述した通り、空きリスト上の各ノードが、同時に2つのリスト上に存在することにある。すなわち、リスト上の各ノードは、先頭ポインタの2つのメッシュ化された組を有している。リストを前後して使用される該組は、リストの順序が前後していることに依存する(すなわち、サイズ又はアドレスによって)。
【0073】
与えられたノードのレベルは、各々のリストで同じであり、該ノードの端の先頭ポインタは、アドレス順リストとサイズ順リストのための一対のポインタからなる。ポインタをメッシュ化することにより、各々のノードにおいて該ノードのレベルを記憶する必要がないことに特徴がある。
【0074】
上述した好適な方法は、個々の制御フローから構成されるが、本発明の趣旨及び範囲を逸脱することなく、異なる制御フローを用いた多様な方法が考えられる。また、上述した好適な方法の1またはそれ以上のステップは、順次にではなく並行して実行することができる。
【0075】
メモリブロックの動的なアロケーションの方法は、好ましくは、図8に示されるような汎用コンピュータシステム800を用いて実行することができ、図1乃至7の処理は、コンピュータシステム800内で実行されるアプリケーションプログラムのようなソフトウエアとして達成され得る。特に、図6及び7の方法におけるステップは、コンピュータによって実行されるソフトウエア中の命令によって実行される。該ソフトウエアは、2つの独立した部分に分割することができ、その1つは、メモリブロックの動的なアロケーションを実行する部分であり、もう1つは、ユーザとの間のユーザインターフェースを管理するための部分である。該ソフトウエアは、後述する記録装置を含む、コンピュータ可読媒体に記録することができる。例えば、メモリアロケータ2は、CD−ROM上にメモリアロケーションプログラムを記録することによって実現することができる。該ソフトウエアは、コンピュータ可読媒体からコンピュータ内に導入され、該コンピュータによって実行される。そのようなソフトウエアやコンピュータプログラムが記録されたコンピュータ可読媒体は、コンピュータプログラム製品である。本発明の好適な実施形態によれば、コンピュータ上でのコンピュータプログラム製品の使用は、ピクセルに基づく画像のためのピクセルエッジの方向を決定するための有利な装置を実現する。
【0076】
コンピュータシステム800は、コンピュータモジュール801と、キーボード802及びマウス803のような入力装置と、プリンタ815及びディスプレイ装置814を含む出力装置と、からなる。モジュラーデモデュレータ(モデム)送受信装置816は、例えば、電話回線821又はその他の機能的媒体を介して接続可能な通信網820と通信をするために、コンピュータモジュール801によって利用される。モデム816は、インターネットや、その他のネットワークシステム、例えば、ローカルエリアネットワーク(LAN)やワイドエリアネットワーク(WAN)にアクセスするために用いることができる。
【0077】
コンピュータモジュール801は、通常、少なくとも一つのプロセッサユニット805と、例えば、半導体ランダムアクセスメモリ(RAM)やリードオンリーメモリ(ROM)から形成されるメモリユニット806を備える。メモリユニット806は、本実施形態では、制御メモリ4とすることができる。本実施形態の空きリスト8は、RAM内に形成される。コンピュータモジュール801は、また、通常、ビデオインターフェース307を含む入力/出力(I/O)インターフェースと、キーボード802やマウス803或いは付属的にジョイスティック(図示せず)と、モデム816のためのインターフェース808とを含む。
【0078】
また、記憶装置809が設けられ、この記憶装置809は、通常、ハードディスクドライブ810やフロッピーディスク811を含む。磁気テープドライブ(図示せず)も利用可能である。CD−ROMドライブ812は、通常、データの不揮発記憶源として設けられる。コンピュータモジュール801の構成805乃至813は、通常、相互に接続されるバス804を介して、当業者に知られたコンピュータシステム800の処理の従来のモードにて、通信する。本実施形態が実施されるコンピュータの例としては、IBM−PC及び互換機、Sun Sparcstation、若しくは、同様のコンピュータシステムが含まれる。
【0079】
本実施形態のアロケーションプログラムは、通常、ハードディスクドライブ810に常駐し、その実行においてはプロセッサ805によって読み取られ制御される。該プログラムやネットワーク820から取り出されたデータの中間的な記憶は、ハードディスクドライブ810と協働可能な半導体メモリ806を用いることにより達成することも可能である。ある場合ににおいては、アプリケーションプログラムは上述したとおり、CD−ROMやフロッピーディスク上に符号化されてユーザに供給されて、対応するドライブ812又は811を介して読み取られ、もしくは、モデム装置816を介してネットワーク820からユーザによって読み取られ得る。更に、該ソフトウェアは、磁気テープ、ROM、集積回路、光磁気ディスク、コンピュータモジュール801と他の装置との間の無線又は赤外線送信路、PCMCIAのようなコンピュータ可読カード、E−mailの送信やウエブサイト等に記録された情報を含むインターネット又はイントラネットを含む他のコンピュータ可読媒体からコンピュータシステム800に導入され得る。なお、これらは、コンピュータ可読媒体の1例に過ぎないことは言うまでもない。他のコンピュータ可読媒体も、本発明の趣旨及び範囲を逸脱することなく使用できることは言うまでもない。
【0080】
また、上述したメモリブロックの動的なアロケーション方法は、図6及び7の機能又はサブ機能を実行する1又はそれ以上の集積回路のような専用のハードウエアにおいて実行することもできる。そのような専用のハードウエアは、グラフィックプロセッサ、デジタルシグナルプロセッサ、或いは、1又はそれ以上のマイクロプロセッサ、及び、関連するメモリを含むことができる。
【0081】
上述した説明は、本発明の一部の実施形態に過ぎず、本発明の趣旨及び範囲を逸脱することなく、修正及び/又は変更することも可能であり、上記実施形態は例示であってこれに限定されることはない。
【0082】
【発明の効果】
以上述べた通り、本発明によれば、フラグメンテーションが低減される。
【図面の簡単な説明】
【図1】ダイナミックメモリアロケータを介して、空きメモリブロックを要求するアプリケーションの概略図である。
【図2】メモリアロケーションが実行される前における関連するメモリの概略と本実施形態に係るメモリの空きリストとを示した図である。
【図3】メモリアロケーションが実行された後における、図2に示したメモリ空きリストと関連するメモリとを示した図である。
【図4】 2つの隣接しない空きメモリブロックと、図2及び図3に示されたメモリの空きリストと関連するメモリとを示した図である。
【図5A】複数の隣接しない空きのメモリブロックと図2乃至4に示されたメモリの空きリストと関連するメモリとを示した図である(左半分)。
【図5B】複数の隣接しない空きのメモリブロックと図2乃至4に示されたメモリの空きリストと関連するメモリとを示した図である(右半分)。
【図6】本発明の好適な実施形態におけるアロケーション処理を示したフローチャートである。
【図7】本発明の好適な実施形態における解放処理を示したフローチャートである。
【図8】本発明の好適な実施形態が実行される汎用コンピュータのブロック図である。
【図9】本発明の好適な実施形態において、C言語で実行される空きリストのノードの構造を示す図である。

Claims (3)

  1. コンピュータシステムにおけるメモリブロックを動的に割り当てるためのメモリアロケーション方法であって、
    前記コンピュータシステムによってメモリブロックが要求された場合に、空きのメモリブロックを管理する空きリストを検索して、適切なサイズの空きのメモリブロックから要求されたメモリブロックを割り当てる割り当て工程と、
    その割り当てに基づいて前記空きリストを更新する工程と、
    前記コンピュータシステムによってメモリブロックが解放された場合に、前記空きリストを参照して、解放されたメモリブロックに隣接する空きのメモリブロックが存在するか否かを判定する判定工程と、
    解放されたメモリブロックに隣接する1またはそれ以上の空きのメモリブロックが存在する場合に、前記解放されたメモリブロックと当該空きのメモリブロックとを結合して、一の空きのメモリブロックを形成する工程と、
    前記解放されたメモリブロックと結合して形成された空きのブロックとに基づいて、前記空きリストを更新する工程と、
    を含み、
    前記空きリストは、
    ヘッダと、空きのメモリブロック毎に設定され、該空きのメモリブロックのアドレス及びサイズの情報を有するノードと、を有するスキップリスト形式のリストであり、
    前記ノードは、
    前記空きのメモリブロックのサイズ順に前記ノードを連結するサイズ順ポインタ、及び、前記空きのメモリブロックのアドレス順に前記ノードを連結するアドレス順ポインタを、そのノードに設定されたレベル毎に有し、
    前記ヘッダは、
    前記空きのメモリブロックをサイズ順に検索する場合に最初に参照する前記ノードを示すサイズ順開始ポインタ、及び、前記空きのメモリブロックをアドレス順に検索する場合に最初に参照する前記ノードを示すアドレス順開始ポインタを、レベル毎に有し、
    前記割り当て工程では、
    前記サイズ順開始ポインタ及び前記サイズ順ポインタを参照して空きのメモリブロックを検索し、
    前記判定工程では、
    前記アドレス順開始ポインタ及び前記アドレス順ポインタを参照して、解放されたメモリブロックに隣接する空きのメモリブロックを検索することを特徴とするメモリアロケーション方法。
  2. コンピュータシステムにおけるメモリブロックを動的に割り当てるためのメモリアロケーション装置であって、
    メモリブロックが前記コンピュータシステムによって要求された場合に、空きのメモリブロックを管理する空きリストを検索して、適切なサイズの空きメモリブロックから要求されたメモリブロックを割り当てるための割り当て手段と、
    メモリブロックが前記コンピュータシステムによって解放された場合に、前記空きリストを参照して、解放されたメモリブロックに隣接する空きのメモリブロックが存在するか否かを判定する判定手段と、
    解放されたメモリブロックに隣接する1またはそれ以上の空きのメモリブロックが存在する場合に、前記解放されたメモリブロックと当該空きのメモリブロックとを結合して、一の空きのメモリブロックを形成する結合手段と、
    前記割り当てと、前記解放されたメモリブロックと、結合して形成された空きのメモリブロックとに基づいて、前記空きリストを更新する手段と、
    を備え、
    前記空きリストは、
    ヘッダと、空きのメモリブロック毎に設定され、該空きのメモリブロックのアドレス及びサイズの情報を有するノードと、を有するスキップリスト形式のリストであり、
    前記ノードは、
    前記空きのメモリブロックのサイズ順に前記ノードを連結するサイズ順ポインタ、及び、前記空きのメモリブロックのアドレス順に前記ノードを連結するアドレス順ポインタを、そのノードに設定されたレベル毎に有し、
    前記ヘッダは、
    前記空きのメモリブロックをサイズ順に検索する場合に最初に参照する前記ノードを示すサイズ順開始ポインタ、及び、前記空きのメモリブロックをアドレス順に検索する場合に最初に参照する前記ノードを示すアドレス順開始ポインタを、レベル毎に有し、
    前記割り当て手段は、
    前記サイズ順開始ポインタ及び前記サイズ順ポインタを参照して空きのメモリブロックを検索し、
    前記判定手段は、
    前記アドレス順開始ポインタ及び前記アドレス順ポインタを参照して、解放されたメモリブロックに隣接する空きのメモリブロックを検索することを特徴とするメモリアロケーション装置。
  3. メモリブロックを動的に割り当てるために、コンピュータを、
    メモリブロックが要求された場合に、空きのメモリブロックを管理する空きリストを検索して、適切なサイズの空きメモリブロックから要求されたメモリブロックを割り当てるための割り当て手段、
    メモリブロックが解放された場合に、前記空きリストを参照して、解放されたメモリブロックに隣接する空きのメモリブロックが存在するか否かを判定する判定手段、
    解放されたメモリブロックに隣接する1またはそれ以上の空きのメモリブロックが存在する場合に、前記解放されたメモリブロックと当該空きのメモリブロックとを結合して、一の空きのメモリブロックを形成する結合手段、
    前記割り当てと、前記解放されたメモリブロックと、結合して形成された空きのメモリブロックとに基づいて、前記空きリストを更新する手段、
    として機能させるプログラムを記憶した記憶媒体であり、
    前記空きリストは、
    ヘッダと、空きのメモリブロック毎に設定され、該空きのメモリブロックのアドレス及びサイズの情報を有するノードと、を有するスキップリスト形式のリストであり、
    前記ノードは、
    前記空きのメモリブロックのサイズ順に前記ノードを連結するサイズ順ポインタ、及び、前記空きのメモリブロックのアドレス順に前記ノードを連結するアドレス順ポインタを、そのノードに設定されたレベル毎に有し、
    前記ヘッダは、
    前記空きのメモリブロックをサイズ順に検索する場合に最初に参照する前記ノードを示すサイズ順開始ポインタ、及び、前記空きのメモリブロックをアドレス順に検索する場合に最初に参照する前記ノードを示すアドレス順開始ポインタを、レベル毎に有し、
    前記割り当て手段は、
    前記サイズ順開始ポインタ及び前記サイズ順ポインタを参照して空きのメモリブロックを検索し、
    前記判定手段は、
    前記アドレス順開始ポインタ及び前記アドレス順ポインタを参照して、解放されたメモリブロックに隣接する空きのメモリブロックを検索することを特徴とする記憶媒体。
JP28320599A 1998-10-06 1999-10-04 メモリアロケーション方法及びメモリアロケーション装置並びに記憶媒体 Expired - Fee Related JP4323637B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
AU6386 1998-10-06
AUPP6386A AUPP638698A0 (en) 1998-10-06 1998-10-06 Efficient memory allocator utilising a dual free-list structure

Publications (3)

Publication Number Publication Date
JP2000112814A JP2000112814A (ja) 2000-04-21
JP2000112814A5 JP2000112814A5 (ja) 2006-11-24
JP4323637B2 true JP4323637B2 (ja) 2009-09-02

Family

ID=3810606

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28320599A Expired - Fee Related JP4323637B2 (ja) 1998-10-06 1999-10-04 メモリアロケーション方法及びメモリアロケーション装置並びに記憶媒体

Country Status (3)

Country Link
US (1) US6505283B1 (ja)
JP (1) JP4323637B2 (ja)
AU (1) AUPP638698A0 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6757802B2 (en) * 2001-04-03 2004-06-29 P-Cube Ltd. Method for memory heap and buddy system management for service aware networks
US6754795B2 (en) * 2001-12-21 2004-06-22 Agere Systems Inc. Methods and apparatus for forming linked list queue using chunk-based structure
US6766432B2 (en) * 2002-05-24 2004-07-20 Sun Microsystems, Inc. Memory management system supporting object deletion in non-volatile memory
WO2004001598A2 (en) * 2002-06-20 2003-12-31 British Telecommunications Public Limited Company Distributed computer
GB0230331D0 (en) * 2002-12-31 2003-02-05 British Telecomm Method and apparatus for operating a computer network
US7308448B1 (en) * 2003-03-21 2007-12-11 Sun Microsystems, Inc Method and apparatus for implementing a lock-free skip list that supports concurrent accesses
KR100503093B1 (ko) * 2003-08-16 2005-07-21 삼성전자주식회사 메모리 관리 방법 및 장치
US7441097B2 (en) * 2003-09-10 2008-10-21 Seagate Technology Llc Data storage system and method for adaptive reconstruction of a directory structure
EP1619584A1 (en) * 2004-02-13 2006-01-25 Jaluna SA Memory allocation
US7409518B2 (en) * 2004-05-21 2008-08-05 International Business Machines Corporation Method for improving disk space allocation
GB0412655D0 (en) * 2004-06-07 2004-07-07 British Telecomm Distributed storage network
US7546588B2 (en) * 2004-09-09 2009-06-09 International Business Machines Corporation Self-optimizable code with code path selection and efficient memory allocation
EP1645963B1 (en) * 2004-10-07 2014-05-14 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Determining sizes of memory frames for dynamic memory allocation limiting internal fragmentation
US7577798B1 (en) * 2004-12-30 2009-08-18 Sun Microsystems, Inc. Space-adaptive lock-free queue using pointer-sized single-target synchronization
US7849253B2 (en) * 2005-04-04 2010-12-07 Standard Microsystems Corporation Method for fast access to flash-memory media
US7831624B2 (en) * 2005-06-24 2010-11-09 Seagate Technology Llc Skip list with address related table structure
US7644258B2 (en) * 2005-08-29 2010-01-05 Searete, Llc Hybrid branch predictor using component predictors each having confidence and override signals
US8275976B2 (en) * 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US20160098279A1 (en) * 2005-08-29 2016-04-07 Searete Llc Method and apparatus for segmented sequential storage
US8296550B2 (en) * 2005-08-29 2012-10-23 The Invention Science Fund I, Llc Hierarchical register file with operand capture ports
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US9176741B2 (en) * 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
KR100703807B1 (ko) 2006-02-17 2007-04-09 삼성전자주식회사 블록 방식의 메모리에서 데이터의 변경 유형에 따라 블록을관리하는 방법 및 장치
JP5111813B2 (ja) * 2006-09-11 2013-01-09 ガイアホールディングス株式会社 メモリアロケーション方法およびメモリアロケーションプログラム
GB2444746A (en) * 2006-12-15 2008-06-18 Symbian Software Ltd Allocating memory sectors for a data block by finding a contiguous area which starts with a sector with unused memory at least at much as the overlap
EP2000913A1 (en) * 2007-06-08 2008-12-10 Axalto SA Method of managing flash memory allocation in an electronic token
US8379647B1 (en) * 2007-10-23 2013-02-19 Juniper Networks, Inc. Sequencing packets from multiple threads
CN100530140C (zh) * 2007-11-08 2009-08-19 Ut斯达康通讯有限公司 应用程序级的内存管理方法
US8489803B2 (en) * 2009-12-14 2013-07-16 Smsc Holdings S.A.R.L. Efficient use of flash memory in flash drives
JP2011164938A (ja) * 2010-02-09 2011-08-25 Hitachi Ltd メモリ割当装置及びメモリ割当方法
KR20110139956A (ko) * 2010-06-24 2011-12-30 삼성전자주식회사 맵핑 테이블을 복구하는 데이터 기억 장치 및 데이터 관리 방법
US8661221B2 (en) * 2011-03-16 2014-02-25 International Business Machines Corporation Leasing fragmented storage between processes
US20140068220A1 (en) * 2012-09-06 2014-03-06 Advanced Micro Devices, Inc. Hardware based memory allocation system with directly connected memory
CN103077126B (zh) * 2012-12-24 2016-08-03 中兴通讯股份有限公司 一种内存管理方法和装置
US8949491B1 (en) * 2013-07-11 2015-02-03 Sandisk Technologies Inc. Buffer memory reservation techniques for use with a NAND flash memory
US9921962B2 (en) * 2015-09-24 2018-03-20 Qualcomm Incorporated Maintaining cache coherency using conditional intervention among multiple master devices

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5291188A (en) * 1991-06-17 1994-03-01 Sun Microsystems, Inc. Method and apparatus for allocating off-screen display memory
US5404474A (en) * 1992-01-10 1995-04-04 Digital Equipment Corporation Apparatus and method for addressing a variable sized block of memory
US5659739A (en) * 1995-10-02 1997-08-19 Digital Equipment Corporation Skip list data structure enhancements
US5784699A (en) * 1996-05-24 1998-07-21 Oracle Corporation Dynamic memory allocation in a computer using a bit map index

Also Published As

Publication number Publication date
JP2000112814A (ja) 2000-04-21
US6505283B1 (en) 2003-01-07
AUPP638698A0 (en) 1998-10-29

Similar Documents

Publication Publication Date Title
JP4323637B2 (ja) メモリアロケーション方法及びメモリアロケーション装置並びに記憶媒体
US5826262A (en) Parallel bottom-up construction of radix trees
US9563477B2 (en) Performing concurrent rehashing of a hash table for multithreaded applications
JP2007523412A (ja) メモリ割当て
US20080148002A1 (en) Method and Apparatus for Allocating A Dynamic Data Structure
US20070198772A1 (en) Automatic caching generation in network applications
JPH02300949A (ja) メモリ制御方法
JPH05189281A (ja) 記憶装置のファイル割当て方式
KR100622114B1 (ko) 임베디드 시스템에서의 효율적인 동적 메모리 관리방법 및그 시스템
JP4262680B2 (ja) データ処理システムおよび同システムを動作させる方法
JP4311312B2 (ja) 時系列データ管理方法およびプログラム
JP4033829B2 (ja) メモリ管理システム
AU740041B2 (en) Efficient memory allocator utilising a dual free-list structure
CN112068948A (zh) 数据散列方法、可读存储介质和电子设备
CN117435352B (zh) 一种定长变长数据混合管理的轻量化内存优化分配方法
JP4204405B2 (ja) メモリ管理方式
JP2994138B2 (ja) 対話処理システムにおけるカタログの変数管理方法
US20230273728A1 (en) Storage control apparatus and method
JP2829553B2 (ja) 分散処理制御装置
JP2743849B2 (ja) 更新バッファ管理装置
JPH05241936A (ja) ガーベッジコレクション処理方式及びその記憶装置
JPH06309197A (ja) 記憶領域管理方式
JPH0793192A (ja) ファイル管理方法
JP2615046B2 (ja) レコード追加処理方法
JP2002351739A (ja) メモリー管理方法およびデータ処理装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061004

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061004

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20061004

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080804

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080807

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090223

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090420

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090519

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: 20090529

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: 20090605

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: 20120612

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120612

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130612

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees