JP3611305B2 - 永続的且つロバストな記憶割当てシステム及び方法 - Google Patents
永続的且つロバストな記憶割当てシステム及び方法 Download PDFInfo
- Publication number
- JP3611305B2 JP3611305B2 JP2001032286A JP2001032286A JP3611305B2 JP 3611305 B2 JP3611305 B2 JP 3611305B2 JP 2001032286 A JP2001032286 A JP 2001032286A JP 2001032286 A JP2001032286 A JP 2001032286A JP 3611305 B2 JP3611305 B2 JP 3611305B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- free
- size
- sets
- memory
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99956—File allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Description
【発明の属する技術分野】
本発明はコンピュータ記憶方法及びシステムに関して、特に、ロバストな動的記憶域割当てのための方法及びシステムに関する。
【0002】
【従来の技術】
多くのコンピュータ・システムは記憶域を動的に割当てる必要がある。動的記憶割当ては、プログラムの実行のための記憶域を割当てるために、オペレーティング・システムにより使用される。動的記憶割当ての他の例には、Webデータを記憶するWebサーバが含まれる。多くの場合、要求されるメモリのサイズは、要求時まで計り知れない。動的に割当てられるブロックの寿命もまた不明である。
【0003】
主メモリのための効率的な動的記憶域割当てを開発するために、これまでにかなりの研究が行われてきた。一方で、ディスクのための効率的な動的記憶域割当てアルゴリズムの開発は、余り研究されてこなかった。
【0004】
ディスクにおける動的記憶域割当ては、様々な理由から重要である。多くの場合、システムがシャットダウンした後も、データが存続することが不可欠である。ディスク・メモリは永続的記憶域を提供する。ディスク・メモリはまた、故障許容記憶域を提供する。主メモリの内容が失われてしまう状況において、ディスク上に記憶される情報は、システム・クラッシュの後にしばしば保存される。ディスク・メモリの別の利点は、より多くのディスク・メモリが主メモリよりも手ごろな価格で入手可能なことである。従って、ディスク・メモリは、主メモリに適合(フィット)しない情報を記憶するために使用され得る。
【0005】
図1を参照すると、第1のフィット・システムは、メモリ要求を満足する十分に大きい最初のメモリ・ブロック(の全てまたは一部)を割当てる。容量”7”のメモリ要求に対して、最初のフィットがB1を返却する。なぜなら、これは要求を満足するために遭遇する最初のブロックであるからである。最善のフィット・システムは、要求を満足する十分に大きい最小のブロック(の全てまたは一部)を割当てる。図1では、ブロックB3が返却されるべきである。なぜなら、容量”7”はB3(”8”の容量を有する)に最適に適合するからである。
【0006】
図2を参照すると、バイナリ・バディ・システム(binary buddy system:相互協力方式)において、ブロック・サイズは2乗である(例えば4×4、8×8など)。多くの動的記憶域割当て(DSA:dynamic storage allocation) は、フリー(すなわち未使用)・ブロックの1つ以上のリストを保持する。フリー・ブロックのリストなどのこうしたリストは、フリー・リストとして知られている。異なるサイズのブロックに対して、別々のフリー・リストが存在する。他のサイズのブロックを割当てるバディ・システムも存在する。動的記憶割当てにおける従来技術の概要が、Arun Iyengarによる論文”Scalability of Dynamic Storage Allocation Algorithms”(Proceedings of IEEE Frontiers ’96、October 1996)、及びこの論文における参考文献で述べられている。
【0007】
動的記憶域割当て(DSA)は、隣接フリー・ブロックを合体するために、異なる方法を使用できる。1アプローチは、即時合体(immediate coalescing)を使用するもので、この場合、図3に示されるように、ブロックが割当て解除されるとき、割当て解除されたブロックが隣のフリー・ブロックと結合される。図3において、ブロック・サイズが各ブロック内に示される。正のサイズはフリー・ブロックを示し、負のサイズは割当てられたブロックを示す。
【0008】
図4を参照すると、別のアプローチが示され、これは遅延合体(deferred coalescing)を含む。遅延合体が使用される場合、隣接フリー・ブロックは割当て解除後に自動的に結合されない。代わりに、ある時点で(要求を満足する十分に大きいブロックが突き止められない場合など)、DSAがメモリ内のブロックを走査し、図4に示されるように隣接ブロックを結合する。
【0009】
断片化(fragmentation)はDSAにより浪費されるメモリである。内部断片化は、要求サイズよりも大きいブロックにより要求を満足することにより、失われるメモリである(例えばブロック・サイズ25に対する要求を、ブロック・サイズ32により満足する場合など)。外部断片化は、フリー・ブロックに割当て済みブロックが点在する場合に発生する。これらの状況では、たとえbバイトより多くがフリーであっても、bバイトの割当て要求が満足されない。なぜなら、フリー記憶域の最大の連続ブロックが、bバイトよりも小さいからである。
【0010】
前記引用文献”Scalability of Dynamic Storage Allocation Algorithms”で述べられる多重フリー・リスト・フィットI(MFLF I:multiple free list fit)は、サイズにより編成される複数のフリー・リストを使用する。小ブロックのためのフリー・リストは、クイック・リストとして知られる。大ブロックのためのフリー・リストは、miscリストとして知られる。1つのmiscリストが保持される場合、MFLF Iはクイック・フィットとして知られる記憶域割当てシステムに退化する。
【0011】
図5を参照すると、クイック・フィット技法が示される。このシステムでは、サイズ16までのブロックに対して、クイック・リストが存在する。クイック・リストの数は、異なる要求分配に対して、性能を最適化するように変更され得る。この例では、サイズs(2≦s≦16、2が最小ブロック・サイズ)のブロックに対する割当てが、サイズsに対応するクイック・リストを調査することにより行われる。このリストが空でなければ、リスト上の最初のブロックが要求を満足するために使用される。ここでグレーン・サイズ(grain size)の倍数に相当するブロック・サイズについても、クイック・リストを有することが可能である。例えば、図2では、グレーン・サイズは1である。グレーン・サイズが1000の場合、サイズ1000、2000、3000、...、16000のブロックのクイック・リスト(合計16のクイック・リスト)が使用され得る。MFLFIは遅延合体を使用する。メモリは図5に示されるように、作業記憶域12及びテール14に分割される。作業記憶域12は、割当てられたブロック、及びフリー・リスト上のブロックを含む。テール14は、メモリの片端において未割当ての記憶域の連続ブロックを含む。何かを割当てる以前の初期には、テール14は全ての割当て可能なメモリを含み、フリー・リストは空である。フリー・リストはクイック・リストとmiscリストとを含み、miscリストは大きなメモリ・ブロックに対して使用される。ブロック13は、あるサイズ(ブロック13内の数により示される)を含む。1つ以上のフリー・リストを調査しても、要求が満足されない場合、要求はテール14から割当てることにより満足される。テール・ポインタは、テール14が開始する位置を指し示す。割当てられたブロックが割当て解除されるとき、フリー・リストが占有される。
【0012】
クイック・リストにとって大き過ぎるブロックに対する要求を満足するために、クイック・フィットはmiscリストの第1のフィット探索を行う。大きなブロックの探索は、多くの命令を要求し得る。このオーバヘッドを低減するために、MFLF Iは図6に示されるように、クイック・フィットの場合のような1つのリストの代わりに、複数のmiscリストを使用する。図6では、1つのmiscリストがサイズ17乃至25のブロック13に対して存在し、別の1つはサイズ26乃至40のブロック13に対して存在し、更に別の1つは、サイズ41乃至60のブロックに対して存在する。様々な方法が要求を満足するために使用可能であり、それらには図7及び図8に示されるように、MFLF Iを用いて”84”を割当てる方法が含まれる。図7は、84を割当てる要求が満足される”前”の、メモリのスナップショットを示し、図8は要求が満足された”後”のスナップショットを示す。図7及び図8において、システムは、サイズ”90”のブロックを分割し、過剰サイズ”6”をフリー・リストに返却することにより、リストL2上の最初のブロックを割当て、要求を満足する。システムはL1の代わりに、L2を調査する。なぜなら、L2上で許可される最小のブロックは、サイズ89であるからである。従って、89以下のサイズの要求を満足するために、L2内の最初のブロックを越えて探索する必要はない。
【0013】
前述の技法は多くのアプリケーションにとって満足のいくものであるが、主メモリ動的記憶域割当てアルゴリズムをディスク・システムに直接的に適応化することは、しばしば性能の劣化をもたらす。なぜなら、ディスクをアクセスして書込むための待ち時間が、主メモリと比較して遙かに大きいからである。
【0014】
【発明が解決しようとする課題】
従って、ディスクへのアクセス回数及び書込み回数を低減する、ディスク・メモリのための動的な記憶方法が待望される。更に、より効率的な記憶及びより高速なアクセス時間を提供する、メモリ割当て及び割当て解除方法が待望される。
【0015】
【課題を解決するための手段】
本発明に従うコンピュータ・メモリを管理する方法は、メモリのフリー・ブロックの複数のセットを保持し、フリー・ブロックがそのサイズにもとづき、セットに追加される。要求サイズのブロックに対する要求に応じて、少なくとも要求サイズと同じ大きさの、但し要求サイズにしきい値を加えたよりも小さいフリー・ブロックを求めて、ブロックのセットが探索される。こうしたブロックが見いだされると、そのブロック全体が割当てられる。他の方法では、フリー・ブロックの複数セットを保持するステップが、ディスク上でまたは主メモリ内で、フリー・ブロックの複数セットを保持するステップを含む。また、フリー・ブロックが見いだされないが、要求サイズと少なくとも同じ大きさの少なくとも1つのブロックが見いだされる場合に、要求サイズと少なくとも同じ大きさの少なくとも1つのブロックを分割するステップと、分割ステップから生じる第2のブロックにより要求を満足するステップとを含む。分割される少なくとも1つのブロックは、要求サイズよりも大きい見いだされた最小のブロックである。複数セットは最大ブロックのセットを含み、第1のしきい値は、最大ブロックのセットに対して許可される最小ブロック・サイズよりも大きい。更に、要求を満足する最大ブロックのセットを探索するステップを含む。探索ステップは、リストを含むセットを探索するステップを含み、リストはそのセットのメモリ・ブロック割当て情報を含む。本方法は更に、第1及び第2のしきい値の少なくとも1つを動的に調整して、性能を調整するステップを含む。
【0016】
更に別の方法では、メモリの連続ブロックを維持するステップと、要求サイズにもとづき、フリー・ブロックのセットを選択するステップと、フリー・ブロックのセットが空でないことに応じて、セット内で突き止められる最初のブロックの少なくとも一部を割当てるステップと、セットが空であることに応じて、メモリの連続ブロックから要求を満足するステップとを含む。この方法は更に、第1のポインタ位置として、ポインタが連続ブロックを指し示すように維持するステップと、所与のサイズの記憶域に対する要求に応じて、ポインタを所与のサイズ増分して、第2のポインタ位置を指し示すステップと、第1のポインタ位置から始まる連続ブロックの一部を用いて、要求を満足するステップとを含む。この方法は更に、割当てられたブロックを、割当てられたブロックのサイズにもとづき、フリー・ブロックの新たなセットに割当て解除するステップを含む。
【0017】
本発明の別の態様では、連続する永続的メモリのブロックを管理する方法が、メモリの第1のブロック内の最初のフリー・バイトを決定する第1のポインタを主メモリ内に保持するステップと、複数のブロックに対する、少なくとも1コード・バイトを含むヘッダを永続的記憶域内に保持するステップと、第2のブロックに対して、第2のブロックがもはや第1のブロックの一部でないことを示す少なくとも1コード・バイトをセットし、主メモリ内の第1のポインタを更新することにより、第1のブロックから第2のブロックを割当てるステップとを含む。
【0018】
他の方法では、ブロックbを第1のブロックに追加するステップを含み、追加ステップがbに対応するコード・バイトを、bが第1のブロックの一部であることを示すように変更するステップと、主メモリ内の第1のポインタを更新するステップとを含む。少なくとも1コード・バイトは、第2のブロックがもはや第1のブロックの一部でないことを示す以外に、他の機能にも作用し得る。この方法は、主メモリ内の第1のポインタの値にもとづき、永続的メモリ内の第2のポインタを周期的に更新するステップを含む。方法は更に、システム障害に応答して、少なくとも1コード・バイトを調査することにより、第1及び第2のポインタを更新するステップを含む。ヘッダは単一ブロック書込みを用いて初期化される。
【0019】
本発明の更に別の態様では、永久記憶域内の隣接するフリー・ブロックを合体する方法が、ブロックのサイズ及び割当て状況を示すヘッダを、各ブロックに対して保持するステップと、ヘッダ情報を調査して、隣接フリー・ブロックを結合することにより、フリー・ブロックを合体するステップと、達成される合体のレベルを示す情報を、永久記憶域内に周期的に記憶するステップとを含む。
【0020】
この合体方法は、合体の間のシステム障害に応答して、永久記憶域内の情報を読出し、システム障害の前に達成された合体のレベルを決定するステップと、永久記憶域内の情報にもとづき、ある時点で合体を再開するステップとを含む。
【0021】
これらの方法及び方法ステップは、方法ステップを実行するためのマシンにより実行可能な命令のプログラムを有する、マシンにより読取り可能なプログラム記憶装置により実現され得る。
【0022】
本発明のこれらの及び他の目的、特徴及び利点が、添付の図面に関連して後述する本発明の実施例の詳細な説明から明らかとなろう。
【0023】
【発明の実施の形態】
本発明はメモリ管理及び割当てシステム及び方法に関する。ここで提供されるシステム及び方法は、従来システム及び方法に比べて、改善された性能を提供する。そして、本発明は特に、ディスク・メモリに有用である。ディスク上に情報を永続的に記憶する従来の技法は、ファイル・システム及びデータベースを使用する。
【0024】
本発明により、従来技術を使用する場合に比べて、情報がディスク上に遙かに少ないオーバヘッドで記憶される。また、本発明を使用することにより、多数のオブジェクトが記憶され得る。多くのファイル・システムは、ディレクトリ内に記憶されるファイルの数により制限される。本発明は記憶されるオブジェクトの数に関して、これらの制限を有さない。
【0025】
1実施例では、余計な記憶空間を著しく浪費することなく、ブロックの分割を最小化するように設計される方法が提供される。本発明の有用性は、ディスク割当て及び主メモリ割当ての両方に拡張する。
【0026】
本発明は、MFLF Iとの類似性を有するが、メモリ管理及びディスク性能の劇的な改善をもたらす変更を含む、新たな有用な動的記憶域割当て方法を提供する。1変更として、ブロック分割数の低減がある。ブロック分割数の低減は、例えばディスク・アロケーションなど、ブロックの分割が好ましくない場合に、重要である。
【0027】
図9乃至図21に示される要素は、様々な形態のハードウェア、ソフトウェアまたはそれらの組み合わせにより実現される。好適には、これらの要素は、プロセッサ、メモリ及び入出力インタフェースを有する、1つまたは複数の適切にプログラムされた汎用デジタル・コンピュータ上の記憶装置として実現される。
【0028】
本発明の開示において、当業者であれば、後述のように、多数の一般に使用される記憶域割当てアルゴリズムを、本発明を用いるために適応化することができよう。従って、本発明は以下の実施例により述べられるが、これらは本発明を制限するものではない。本発明で使用されるメモリまたは主メモリは、ランダム・アクセス・メモリまたはキャッシュ・メモリなどの揮発性メモリを指し示すが、他のメモリ・タイプも使用可能である。ディスクまたはディスク・メモリは永続的メモリを指し、例えば、ハード・ディスク、フロッピー・ディスク、コンパクト・ディスク、DVD、ディスク・アレイまたは他の永続的記憶装置を含む。
【0029】
MFLF Iは前述のように、時に割当ての間にフリー・ブロックを分割し、ブロックの一部を割当て、他の部分をフリー記憶域に戻す。本発明はMFLF Iと比較して、分割されるブロックの数を有利に低減する。これはディスク記憶域を割当てるための重要なパラメータである。なぜなら、ブロックの分割は余計なディスク操作を生じるからである(ここで操作は読取りまたは書込みである)。従って、本発明はブロックを割当てる際に、MFLF Iよりも少ない分割を行う。本発明はディスク・メモリ同様に、主メモリを割当てるためにも使用され得る。
【0030】
添付の図面を参照すると、図面を通じて同一の参照番号は、同一のまたは類似の要素を表す。最初に図9及び図10を参照すると、ディスクの割当て及び記憶管理のためのシステム/方法のブロック図が示される。リスト(例えばクイック・リスト、miscリスト、またはフリー・リスト)は通常、リスト上に記憶される最小及び最大ブロックをそれぞれ表す、最小(min)または最大(max)サイズを有する(グレーン・サイズが1のクイック・リストでは、最小及び最大サイズは同一である)。最大ブロック・サイズを有するシステムでは、最近のmiscリストの最大サイズが、最大ブロック・サイズである。最大ブロック・サイズを有さないシステムでは、最近のmiscリストが最大サイズを有さないこともある。
【0031】
ここでsを要求サイズとする。ボックス807では、sが最大ブロックを記憶するリストの最小サイズよりも大きいか否かが判断される。大きい場合、処理は図10のボックス905に続く。大きくない場合、処理はボックス805に続く。ボックス805では、システムは適切なリストを選択して調査する。lmin≧sなる最小サイズlminを有するリストLが選択される。他の基準もリスト選択のために使用可能である。処理はボックス810に続く。ボックス810では、リストLが空か否かが判断される。空の場合、ボックス815でサイズlminのブロックがテールから割当てられ、要求を満足するために使用される。Lが空でない場合、ボックス820で、メモリ・ブロックを分割することなく、リストLからの最初のブロックが、要求を満足するために使用される。リストLが異なるサイズのブロックを含む場合、当業者には明らかなように、直接的な拡張として、リストLを探索することにより、より好適にフィットするブロックを獲得するか、割当てのために選択されたブロックを分割して、内部断片化を低減してもよい。
【0032】
図10を参照すると、本発明に従う大ブロックのための割当て方法が示される。ここでLを最大ブロックを記憶するmiscリストとする。ボックス905で、サイズがs以上且つs+a以下(ここでaはしきい値で、例えば許容可能な浪費)の最初のブロックを突き止めるために、Lが調査される。ここで許容可能な浪費とは、時として割当ての間に、内部断片化を低減する目的で、ブロックを分割するために使用されるパラメータである。適切なブロックが見いだされる場合、ボックス910で、ブロックは分割無しに割当てられる。こうしたブロックが見いだされない場合、2つの可能性がある。リストL上のどのブロックも要求を満足するほど十分に大きくない場合、ボックス930で、サイズsのブロックがテールから割当てられる。リストLが十分に大きなブロックを含む場合、リストL上においてサイズがsよりも大きい最小のブロックが、サイズs及びrのそれぞれフラグメントf1及びf2に分割される(ボックス935)。
【0033】
f1は要求を満足するために使用される。f2は、そのサイズに対応するフリー・リストの先頭に配置される。許容可能な浪費パラメータは動的に変化し得る。直接的な変形では、許容可能な浪費パラメータの代わりに、要求サイズなどの引数を取る関数を使用する。
【0034】
本発明に従う割当て解除は直接的である。割当て解除されるブロックは、それらのサイズに対応するフリー・リストの先頭に配置される。1実施例では、遅延合体が使用される。本発明が主メモリ割当てに使用される場合、合体は直接的である。
【0035】
本発明は、動的記憶域割当て機構(DSA:dynamic storage allocator)管理型のディスク記憶域のために、遅延合体を実行する新たな方法を提供するものであり、これはファースト・フィット、ベスト・フィット、バディ・システム、MFLFシステムなどの、様々な異なる方法と共に使用され得る。
【0036】
記憶ブロックはヘッダを含む。ヘッダはブロックがフリー(未使用)か、割当て済みであるかを示すタグの他に、ブロック・サイズを含む。ヘッダ情報は、システムがクラッシュまたはオフされるときに保存されるように、ディスク上に含まれる。ヘッダ情報はまた、高速アクセスのために主メモリ内にもキャッシュされ得る。ヘッダ情報はディスク上に様々な方法で保持される。1方法は、ヘッダ情報として、指定バイト(例えば初期バイト数)のブロックを使用する。別の方法は、連続メモリの単一ブロック内に、複数ブロックに対するヘッダ情報を記憶する。
【0037】
図11を参照すると、隣接フリー・ブロックを合体する1つの好適な方法が示される。ボックス1005で、合体のために必要なデータ構造が初期化される。例えば、多くのDSAがフリー・リストを使用する。こうしたDSAはボックス1005において、フリー・リストを初期化する(例えば、1つ以上のフリー・リストを空にする)。ボックス1010、1012及び1025はループを形成し、そこでシステムがヘッダ・ブロックを走査して、隣接フリー・ブロックを結合する。システムはメモリの終わりのブロックから開始し、最初のブロックに対応するヘッダを読出す。システムは次にヘッダを順次走査し、隣接フリー・ブロックを結合する。フリー・リストを使用するメモリ・システムでは、フリー・ブロックが合体された後、それらが適切なフリー・リストに追加される。ボックス1025では、システムは、合体が進行したポイントを永続的記憶域に記録することにより、合体をチェックする。このチェックポイントの目的は、障害の際に必要とされる作業量を低減することである。チェックポイントは本発明により、陳腐化情報を更新するために使用される。
【0038】
システム障害の場合、主メモリの内容は失われがちであるが、ディスク・メモリの内容は保持されがちである。システム障害の場合、チェックポイントは、既に実行された大半のまたは全ての合体作業を再実行する必要性を排除する。それに比較して、従来の方法は障害の後に、先頭からヘッダの再走査を要求する。有利な点として、ヘッダの順次走査を提供し、チェックポイントを設けることにより、よりロバストで永続的なメモリ・システムが提供される。更に、障害後の時間の浪費となる再合体が低減または排除され、例えば、合体時間の50%以上が排除され、多くの場合、合体時間の100%が排除される。チェックポイントが実行される頻度は適宜変更され、例えば、トランザクションの数に従い、または設定時間が経過した後に、変更される。頻繁なチェックポイントは、障害後に再実行される必要のある作業量を低減する。
【0039】
ボックス1015では、最終クリーンアップ及び記帳操作が実行される。例えば、作業記憶域の終わりがフリー・ブロックを含む場合、そのブロックはこのステップにおいてテールに追加される。
【0040】
本発明に従い永続的記憶域を効率的に割当て及び割当て解除する方法について、次に詳述することにする。本発明はMFLFシステム、ファースト・フィット、ベスト・フィットなどの、様々なDSAと共に使用され得る。第1のメモリ管理方法(以下便宜上、メモリ管理方法1と呼ぶ)では、ディスクがヘッダを保持し、ヘッダはブロックがフリーか、割当て済みであるかを示すタグの他に、ブロック・サイズを含む。割当て及び割当て解除を処理するフリー・リスト・データ構造が、メモリ内に保持される。
【0041】
図12を参照すると、本発明のメモリ管理方法1に従う割当てが示される。図12に示されるボックスは、任意の順序で実行され得る。ボックス1105では、内部メモリ・データ構造を用いて、適切なフリー・ブロックが突き止められる。一旦ブロックが突き止められると、ボックス1110で、そのブロックが割当てられる。これは適切な内部メモリ・データ構造を変更し、ディスク上のヘッダ・タグを”割当て済み”とマーク付けすることにより行われる。分割が実行されない場合、割当ては単に1ディスク操作を消費するだけである。
【0042】
図13を参照すると、本発明の方法1に従う割当て解除が示される。適切な内部メモリ・データ構造が変更されて、ブロックを割当て解除する。更にブロック1205で、ディスク上のヘッダ・タグが”割当て解除”とマーク付けされる。合体が実行されない場合、割当て解除は1ディスク操作を消費するだけである。障害または正常シャットダウンの後、システムが再始動されるとき、DSAにより使用される内部メモリ・データ構造(フリー・リストなど)が、ディスク上に記憶されるヘッダを走査することにより作成される。こうしたデータは必要に応じて増分的に読出され、1度に全部が読出される必要はない。但し、1度に全部が読出されても差し支えない。
【0043】
1実施例では、1つ以上の連続ブロックのディスク記憶域内に、複数のヘッダ・ワードを保持することにより、ディスクから情報を読出す時間が低減される。連続ブロックb1がフルになると、新たなブロックb2がb1に連鎖されて、追加のヘッダを含むようになる。ディスク上の連続ブロックの記憶域は、極度に不連続の情報よりも迅速に読出される。例えば、読出される1つの(または少数の)ブロックが、幾つかの連続ヘッダを読出すために使用される。たとえ読出されるブロックが使用されなくても、お互いに接近するディスク位置からの複数の読出しは、ディスク・ヘッドの小さな移動を必要とするだけであり、時間を節約する。
【0044】
正常シャットダウン後の始動時間を改善する別の実施例では、DSAがシャットダウン直前に、主メモリ・データ構造(フリー・リストなど)を、1つ以上の連続ブロックのディスク記憶域に出力する。再始動に際して、DSAはシャットダウン直前に書込まれた記憶ブロックから、データ構造を読込む。これはヘッダから情報を獲得するよりも、かなり高速である。前述のこれらの実施例は、メモリ管理方法1に加え、後述のメモリ管理方法のためにも使用され得る。
【0045】
図14を参照すると、本発明に従いディスク上の永続的記憶域を管理する別のメモリ管理方法が示される。この方法は便宜上、以下では方法2またはメモリ管理方法2と呼ばれる。図14に示されるボックスは、任意の順序で実行され得る。システムは、ディスク上のブロックの少なくとも1つのリスト(フリー・ブロック及び割当て済みブロックのいずれかまたは両方を含む)を保持する(ボックス1305)。リストはヘッダ内にリスト・ポインタを保つことにより保持される。割当て(ボックス1310)が図12に示されるように、また前述したように発生する。メモリ管理方法2により保持される内部メモリ・データ構造は、メモリ管理方法1により使用されたものとは異なる(例えば図15参照)。割当て解除(ブロック1320)が、図13で示されるように、また前述したように発生する。
【0046】
新たな記憶ブロックを作成することが必要かもしれない(ボックス1315)。これはブロックがMFLFアルゴリズムにおいて、テールから割当てられるときに発生し得る。これはブロックが分割された後にも発生し得る。新たな記憶ブロックbが作成されるとき、そのディスク・ヘッダがボックス1315で初期化される。ディスク・ヘッダは、ブロックの割当て状況、ブロック・サイズ、及びリスト上の次のブロックを指し示すポインタを含む。ディスク操作を最小化するために、これらのヘッダ・フィールドが連続バイトのディスク記憶域に保持される。このように、ヘッダは単一ブロック書込みにより、またはディスク・ヘッドの移動をほとんど伴わない多重書込みにより、効率的に更新される。新たな記憶ブロックbが、フリー・リストの先頭に追加される。リストの先頭ポインタがまた、主メモリ内に保持され得る。その場合、ポインタがbに更新される。ディスク操作を最小化するために、リストの先頭を指し示すディスク・ポインタは、ボックス1315で更新されなくてもよい。これはリストの先頭を指し示すディスク・ポインタが陳腐化し得ることを意味する。これらのディスク・ポインタを更新するために、システムは周期的にチェックポイントを設定する(ボックス1325)。例えば、システムはnトランザクション毎に、チェックポイントを設定する。ここでnはシステム・パラメータである。トランザクションは、割当て、割当て解除、または他の記憶操作を含み得る。
【0047】
或いは、システムはm個の新たなブロックが作成される毎に、チェックポイントを設定する。ここでmはシステム・パラメータである。チェックポイントは一般に、正常動作の間にシステムがオフされる前に実行される。
【0048】
ボックス1325のステップの間、ディスク・リスト先頭ポインタが、主メモリ内に保持されるリスト先頭ポインタから更新される。複数ディスク・リストを有するシステムでは、ディスク・リスト先頭ポインタをディスク上の連続メモリ位置に保持することが好ましく、それによりリスト先頭ポインタが、単一ブロック書込みにより、またはディスク・ヘッドの移動をほとんど伴わない多重書込みにより、効率的に更新される。
【0049】
図15を参照すると、ランダム・アクセス・メモリ(RAM)とディスクとの間で、メモリ管理方法2を使用するメモリ割当ての例が示される。メモリ管理方法2は、MFLFアルゴリズムと共に使用され得る。その場合、内部メモリ・データ構造がクイック・リスト及びmiscリストのために保持される。内部メモリ・リストとディスク・リストとの関係は、1対1の対応である必要はない。
【0050】
障害または正常シャットダウンの後にシステムが再始動されるとき、DSAにより使用される内部メモリ・データ構造(フリー・リスト)が、ディスク上に記憶されるヘッダを走査することにより作成される。これはメモリ管理方法1の場合のように、ブロック・サイズ及び割当て状況を調査することによるか、或いはディスク上に記憶されるリストを調査することによる。こうしたデータは必要に応じて増分的に読出され、1度に全部が読出される必要はない。但し、1度に全部が読出されても差し支えない。
【0051】
図15は、本発明を使用する複数の異なる記憶操作のためのメモリ管理を示す。プロセスはランダム・アクセス・メモリ1404とディスク1406との間で分割される。メモリ・ブロック1408は、四角形により示される。メモリ・ブロック1408は、サイズを表す数をブロックの最初の位置1410に含む。この数はブロックがフリーであれば正であり、割当て済みであれば負である。主メモリ(RAM1404)のメモリ・ブロック1409は、例えばa1、a2、a3...a5などのアドレスと一緒にリストされており、対応するブロックがディスク1406上に配置される。リスト先頭は、ディスク1406上のリスト上の最初のメモリ・ブロックの位置を指し示す。ディスク1408上のブロック1408のアドレスは、ブロック1408の第2の位置1412のアドレス・ラベルにより示される。アドレス・ラベル1412は説明の都合上示されており、こうしたアドレス・ラベルは必ずしもディスク上に記憶される必要はない。ブロック1408の最後の位置1414は、リスト上のメモリの次のブロックを指し示すか、またはnilまたはリスト若しくはセットの終わりを意味する”#”である。
【0052】
図15の例の記憶操作が、図14に関連して述べられる。RAM1404はフリーのブロックだけを含む。ディスク上のブロックのリストの保持(ボックス1305)が実行される。割当て25がボックス1310に従い実行される。割当て解除a2が、ボックス1320に従い実行される。割当て90がブロック1315に従い実行される。ここでリスト先頭a1はテールからの割当てにより陳腐化し、これがディスク上のリストの先頭に移動する。ボックス1325に従うチェックポイントは、図15に示されるように、リスト先頭をa5に更新する。
【0053】
図16を参照すると、ディスク上の永続的記憶域を管理するメモリ管理方法3が示される。図16に示されるボックスは、任意の順序で実行され得る。システムはボックス1505で、ディスク上のフリー・ブロックの少なくとも1つのリストを保持する。リストはヘッダ内にリスト・ポインタを保つことにより保持される。このリストの先頭は陳腐化し得るが、ボックス1520で実行されるチェックポイントの間に更新される。このリストの最新バージョンが、主メモリ内に保持される。この方法は、割当てがリストの最初のメンバから発生するとき、特に有用である。MFLF方法では、全てのクイック・リストからの、及び最後のmiscリストを除く全てからの割当てが、リストの最初のメンバから発生し得る。従って、これらのリストはメモリ管理方法3に役立つものである。
【0054】
ボックス1515では、ブロックがリストの先頭から割当てられる。内部メモリ・フリー・リストが更新される。更に、ブロックがディスク上で割当て済みとマーク付けされる。しかしながら、ディスク操作を減らすために、ディスク上のリスト・ポインタは陳腐化することを許可される。ボックス1510では、ブロックを適切なフリー・リストの先頭に追加し、内部メモリ・データ構造を更新することにより、ブロックが割当て解除される。ブロックはディスク上で割当て解除済みとマーク付けされ、そのヘッダがフリー・リスト上の次のブロックを指し示すように更新される。このディスク更新のオーバヘッドを最小化するために、割当て状況タグ及び次のリスト要素を指し示すポインタが、ディスク上で互いに接近して記憶される。リストの先頭を指し示すディスク・ポインタは、ディスク操作を減らすために、陳腐化することを許可される。
【0055】
ディスク上のリスト先頭ポインタを更新するために、システムは周期的にボックス1520で、チェックポイントを設定する。例えば、システムはnトランザクション毎に、チェックポイントを設定する。ここでnはシステム・パラメータである。更に、チェックポイントは一般に、システムがオフする前に実行される。ボックス1520のステップの間に、ディスク・フリー・リスト・ポインタが、メモリ内に保持されるリスト・ポインタの先頭から更新される。複数フリー・リストを有するシステムでは、ポインタが効率的に更新されるように、ディスク・フリー・リスト・ポインタをディスク上の連続メモリ位置に保持することが好ましい。それにより、ディスク・ヘッドの僅かな移動による単一ブロック書込みまたは多重書込みが可能になる。ディスク上の1つ以上のフリー・リストが正しくないときに、システムが故障すると、こうしたフリー・リストは割当て済みのブロックを含み得る。こうしたフリー・リストは、障害後に、ボックス1525で修正される。
【0056】
システムは、メモリ管理方法3により管理されるディスク上の各フリー・リストを調査し、割当て済みのブロックを除去する。システムはフリー・リストを先頭から走査し、ヘッダを調査することにより、これを実行する。システムがフリー・リスト上のフリーのブロックに遭遇すると、システムは直ちにリストの調査を停止する。なぜなら、リスト上の残りのブロックもフリーのはずだからである。
【0057】
図17乃至図19を参照すると、メモリ管理方法3の例が示される。図17乃至図19に示されるように、メモリ管理は、本発明を使用する複数の異なる記憶操作に対して示される。プロセスは、ランダム・アクセス・メモリ1604とディスク1606との間で分割される。メモリ・ブロック1608は、四角形により示される。メモリ・ブロック1608は、サイズを表す数をブロックの最初の位置1610に含み、この数はブロックがフリーであれば正であり、割当て済みであれば負である。主メモリ(RAM1604)のメモリ・ブロック1611はフリー・リスト1607を含み、フリー・リストは例えばサイズ”3”を有するブロックを表す指標1609を含む。例えばa1、a2、a3、a4などのアドレスがフリー・リスト1607内に含まれ、対応するブロックがディスク1606上に配置される。ディスク1606上のブロック1608のアドレスは、ブロック1608の位置1612内のアドレス・ラベルにより示される。アドレス・ラベル1612は説明の都合上示されており、こうしたアドレス・ラベルは必ずしもディスク上に記憶される必要はない。ブロック1608の位置1614は、メモリの次のブロックを指し示すか、またはnilまたはリストの終わりを意味する”#”である。
【0058】
図17乃至図19の例の記憶操作が、図16に関連して述べられる。ディスク上のブロックのリストの保持(ボックス1505)が実行される。割当て3及びポインタのa1への復帰が、ボックス1515に従い実行される。割当て3が再度、ボックス1515に従い同様に実行される。割当て解除または解放a4が、ボックス1510に従い実行される。ここでアドレスa2及びa4を有するブロック1608が、ブロック・アドレスa3を指し示すことが注目される。これはチェックポイントにより修正される。ボックス1520によるチェックポイントは、アドレスa4及びa3を有するブロックがフリー・リスト上で保持されるように、フリー・リスト1607を更新する。
【0059】
図20を参照すると、メモリ管理方法の別の実施例が示され、これは便宜上、メモリ管理方法4と呼ばれる。図20に示されるボックスは、任意の順序で実行され得る。システムは記憶域を管理するための内部メモリ・データ構造を保持する。こうした内部メモリ・データ構造はリストを含む。ボックス1705で、内部メモリ・データ構造を変更することにより、割当て及び割当て解除が実行される。通常、ディスク操作はボックス1705では発生しない。従って、割当て及び割当て解除は高速である。システムはボックス1710において、周期的に、メモリへの情報をチェックする。例えば、システムはnトランザクション毎に、チェックポイントを設定する。ここでnはシステム・パラメータである。更に、チェックポイントは一般に、システムがオフする前に実行される。正常シャットダウンの直前に、システムは追加の情報をディスク上に記憶でき(例えば、システムがフリー・リストを使用していると仮定した場合、メモリ内のフリー・リストの構造)、これが後に始動時間を低減するために読出される。
【0060】
こうしたチェックポイントは、システムが正常シャットダウンまたは障害の後に、再始動する事を可能にする。正常シャットダウンの直前に、システムは自身が正規のチェックポイントの間に記憶しなかったかもしれない情報をディスク上に記憶する。こうした補助情報は、後に始動時間を低減するために読込まれる。
【0061】
異なるメモリ管理方法のトレードオフが、システム設計者が性能要求に最も好適なメモリ管理方法を選択する際に考慮される。ここで述べるメモリ管理方法は、従来技術に勝る多くの利点を提供する。メモリ管理方法1は、メモリ管理方法2及び3よりも少ないヘッダ空間を必要とする。更に、メモリ管理方法1は割当て及び割当て解除のために、メモリ管理方法2及び3よりも少ないディスク書込みを実行する。メモリ管理方法1では、ディスク上の情報が常に最新であり、チェックポイントは必要とされない。
【0062】
メモリ管理方法2は、ディスク上での複数リストの保持を可能にし、これらのリストは、始動の間に、メモリ管理方法1よりも少ないディスク読出しにより、特定サイズのブロックを突き止めるために使用される。チェックポイントがメモリ管理方法2では使用され、ディスク上のリスト先頭は常に最新とは限らない。
【0063】
メモリ管理方法3はフリー・リストを使用し、最善の性能を獲得するために、全ての割当てがフリー・リストの先頭から行われる。メモリ管理方法3は、始動の間に特定サイズのフリー・ブロックを突き止めるために使用され、従って、メモリ管理方法1及び2よりも少ない読出しを使用する。なぜなら、メモリ管理方法3は複数リストを使用するからである。メモリ管理方法2と異なり、メモリ管理方法3のリストは、フリー・ブロックだけを含む(正常シャットダウンを仮定した場合)。チェックポイントが使用されて、ディスク上のリストが更新される必要があり、またディスク上のリストは障害の後に修正されなければならない。
【0064】
メモリ管理方法4はディスク操作無しに、割当て及び割当て解除を実行する。しかしながら、メモリ管理方法4は他の方法(例えばメモリ管理方法1乃至3)よりも多くのチェックポイント・プロシージャを含み得る。更に、メモリ管理方法4を使用すると、障害の際に、他の方法を使用する場合よりも、ディスク・メモリがより陳腐化し得る。
【0065】
次に、本発明に従い記憶域を割当てる別の方法(メモリ管理方法5)について述べることにする。この方法は特に、システムが最初のフリー・バイトを指し示すポインタ(例えばテール・ポインタ)を保持及び更新することにより、記憶域をディスク・メモリの大きなブロック(例えば図5のテール)から割当てているときに有用である。
【0066】
図21を参照すると、システムはブロックに対するディスク上のヘッダを保持する(ボックス1805)。ヘッダはコード・バイトとして知られる少なくとも1バイトを含む。ここで図21で示されるボックスは、任意の順序で実行され得る。システムはまた、現テール・ポインタ及びディスク上のテール・ポインタを示す変数を、メモリ内に保持する。ディスク上のテール・ポインタは陳腐化し得る。ボックス1810では、システムはテールからブロックb1を割当てる。このステップによりヘッダに記憶される情報には、割当てられたタグ、ブロック・サイズ、及び1つ以上のコード・バイトが含まれる。ディスク上のテール・ポインタは通常、このステップでは更新されない。その理由は、テール・ポインタはディスク上でb1のヘッダから離れているからである。ディスク上のテール・ポインタの更新は、余計なディスク操作を伴う必要があり得る。対照的に、b1のヘッダ・バイトはディスク上で接近して維持され、従って、ヘッダの全ての更新は、一般にほとんどディスク操作を使用せずに行われる(多くの場合、1ディスク書込みで十分)。ブロックがもはやテールの一部でないことを示す特殊な情報が、コード・バイトに記憶される。他の目的で使用されるヘッダ・バイトがコード・バイトとして機能することも可能であり、これによりコード・バイトによりもたらされるオーバヘッドを低減または排除することができる。例えば、メモリ管理方法2及び3は、ブロック・サイズ及びリスト・ポインタを記憶するためにヘッダ・バイトを使用する。これらのバイトはコード・バイトとしても機能し得る。
【0067】
(ディスク上ではなく、)メモリ内のテール・ポインタが、ボックス1810で更新される。ボックス1825では、ブロックb1がテールに割当て解除される。コード・バイトは、b1が現在テールの一部であることを示すように変更される。ディスク上のテール・ポインタがメモリ内にキャッシュされ、従って、ディスクをアクセスすることなく調査可能である。ディスク上のテール・ポインタが最新の場合、テール・ポインタは更新され、b1がテールに割当て解除された後も最新に維持される。そうでない場合、ディスク上のテール・ポインタは陳腐化を容認される。
【0068】
更新されたテール・ポインタは、周期的にチェックポイントでチェックされる(ボックス1820)。例えば、システムはnトランザクション毎に、チェックポイントを設定する。ここでnはシステム・パラメータである。或いは、システムは、最後にディスク上のテール・ポインタが更新されてから、p回目のテールの更新の後にチェックポイントを設ける。ここでpはシステム・パラメータである。チェックポイントは一般に、システムが正常動作の間にオフされる前に実行される。
【0069】
ディスク上のテール・ポインタを更新する犠牲は、何度かの割当て及び割当て解除に渡って償却される。本発明は、図9及び図10に関連して述べた方法、或いはメモリ管理方法1乃至3などと共に使用され得る。メモリ管理方法2及び3と共に使用される場合、テールのチェックポイントはフリー・リストのチェックポイントと組み合わされる。例えば、MFLFシステムが、テール・ポインタ及びフリー・リスト・ポインタのチェックポイントを必要とすると仮定する。ディスク上のテール・ポインタは、フリー・リスト・ポインタに隣接して記憶され得る。こうして、テール・ポインタとフリー・リストとが、単一ブロック書込みまたはディスク・ヘッド移動をほとんど伴わない少数の書込みを用いて、チェックポイントに掛けられる。
【0070】
システム障害が発生する場合、ディスク上に書込まれたテール・ポインタは最新でない可能性がある。ボックス1815は障害後に、テール・ポインタを修正しようとする。ここでtをテール・ポインタの記憶値とする。システムは、tで始まるブロックに対応するヘッダ内のコード・バイトを調査する。これらのコード・バイトがtがブロックに対応することを示す場合、ブロック・サイズsがヘッダから決定される。テール・ポインタがt+sに増分され、記憶域がブロックに対応しないことが示されるまで、コード・バイトの調査プロセスが継続する。
【0071】
ここで1例において、メモリ管理方法2が使用されていると仮定する。サイズ及びポインタ・ヘッダの両方が、コード・バイトとして使用され得る。ボックス1815で、有効コード・バイトのテストにより、サイズ・バイトが正当なサイズを記憶し、ポインタが適切なサイズ・クラスに属するブロックを指し示すことが確認される。図21は、確率的リカバリ・アルゴリズムを実行する。ボックス1815で、テール・ポインタが不必要に進められる可能性がある。コード・バイトの適切な使用により、この可能性が任意に低く抑えられる。最悪の場合、あるテール記憶域が失われるかもしれないが、割当てられた記憶域が誤って割当て解除されることはない。
【0072】
MFLFアルゴリズムなどの、テール式データ構造を使用する幾つかの異なるDSAと共に、図21の方法を使用することが可能である。常にボックス1825を用いて、ブロックをテールに割当て解除する必要はない。例えば、MFLFアルゴリズムは通常、最近解放されたブロックをテールに追加しない。代わりに、MFLFアルゴリズムは、解放されたブロックをフリー・リストに追加する。記憶域は合体の間にテールに追加される。
【0073】
図22を参照すると、本発明者が行った、メモリ管理方法1を使用するMFLF IIIと、IBMから販売されるDB2(商標)との性能特性のテスト結果が示される。読出し及び書込み操作は、各々が100バイト未満のサイズの5300項目に対して行われた。報告される時間は、初期化時間を含む。テストランは、次のものを含む。
A:単純機能テストを含む全てのテストを、1実行により実行する。
R:各項目をデータベースから1度読出す(キード(keyed)・ルックアップ)。
Wp:各項目を空データベースに1度書込む(データベースを準備)。
Wn:各項目をフルのデータベースに1度書込む(準備されたデータベース内の各項目を置換する)。
I:データベース内の各項目に渡り反復を実行する(非キード・ルックアップ)。
【0074】
初期化時間とテストAの余分な機能テストのために、(R+Wp+Wn+I)の合計は、Aにはならない。データベースは、指標付き基本キー(ストリング)及びデータ・オブジェクト(LOB)を有する、1つのテーブルを含む。基本テストは、全ての更新が完了した後にだけ、更新をコミットした。図23に示されるように、補助更新が毎回の更新後に、または5回目の更新の度にコミットされた。DB2へのテストの実際の適用は、5回の更新毎にコミットされる必要があり、DB2がテストを完了するために、幾つかの調整パラメータが必要とされた。基本テスト結果が図22に示される。テスト時間(秒)は、DB2(1902)に比較して、本発明の驚くべき改善(1900)を示している。ほとんどの場合、1桁の改善が達成された。
【0075】
図23を参照すると、DB2は幾つかのモードで実行された。例えば、DB2へのテストの適用は、図23に示されるように、手動コミット、自動コミット、及び5回の更新毎に行われた。Wp及びWnテストにおける本発明の動作時間(秒)は、1桁以上も大きく、時には2桁以上も大きかった。
【0076】
本発明には当業者により達成されるであろう多くの変形が存在する。例えば、DSAは複数のトランザクションを同時に処理するように並列化され得る。これはディスク・アレイと併用するのに適している。並列化を達成する技術については、次の参考文献で述べられている。
1)”Dynamic Storage Allocation on a Multiprocessor”、Arun Iyengar、Massachusetts Institute of Technology Laboratory for Computer Science TR−560 (PhD Thesis)、December。
2)”Scalability of Dynamic Storage Allocation Algorithm”、Arun Iyengar、in Proceedings of IEEE Frontiers ’96、October 1996。
【0077】
以上、永続的且つロバストな記憶割当てのためのシステム及び方法の実施例について述べてきたが、当業者であれば前記の教示を鑑み、本発明の趣旨及び範囲内において、多くの変更及び変形が実施できよう。本発明はこれらの変更及び変形も網羅するものである。
【0078】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0079】
(1)コンピュータ・メモリを管理する方法であって、
メモリのフリー・ブロックの複数のセットを保持し、前記フリー・ブロックが該フリー・ブロックのサイズにもとづき、前記セットに追加されるステップと、第1のしきい値を越える要求サイズのフリー・ブロックに対する要求に応じて、少なくとも前記要求サイズと同じ大きさの、但し前記要求サイズに第2のしきい値を加えたよりも小さいフリー・ブロックのセットを探索するステップと、
フリー・ブロックが見いだされると、該フリー・ブロック全体を割当てるステップと
を含む、方法。
(2)前記フリー・ブロックの複数セットを保持するステップが、前記フリー・ブロックの複数セットをディスク上に保持するステップを含む、前記(1)記載の方法。
(3)前記フリー・ブロックの複数セットを保持するステップが、前記フリー・ブロックの複数セットを主メモリ内に保持するステップを含む、前記(1)記載の方法。
(4)フリー・ブロックが見いだされないが、前記要求サイズと少なくとも同じ大きさの少なくとも1つのブロックが見いだされる場合、当該少なくとも1つのブロックを分割するステップと、
分割ステップから生じる第2のブロックにより前記要求を満足するステップと
を含む、前記(1)記載の方法。
(5)分割される少なくとも1つのブロックが、前記要求サイズよりも大きい、見いだされる最小のブロックである、前記(4)記載の方法。
(6)前記複数セットが最大ブロックのセットを含み、前記第1のしきい値が、前記最大ブロックのセットに対して許可される最小ブロック・サイズよりも大きいか等しく、前記要求を満足する最大ブロックのセットを探索するステップを含む、前記(1)記載の方法。
(7)前記探索ステップが、リストを含むセットを探索するステップを含み、前記リストが前記セットのメモリ・ブロック割当て情報を含む、前記(1)記載の方法。
(8)前記第1及び第2のしきい値の少なくとも1つを動的に調整して、性能を動的に調整するステップを含む、前記(1)記載の方法。
(9)メモリの連続ブロックを維持するステップと、
前記要求サイズにもとづき、フリー・ブロックのセットを選択するステップと、
前記フリー・ブロックのセットが空でないことに応じて、前記セット内で突き止められる最初のブロックの少なくとも一部を割当てるステップと、
前記セットが空であることに応じて、前記要求をメモリの前記連続ブロックから満足するステップと
を含む、前記(1)記載の方法。
(10)第1のポインタ位置として、ポインタを前記連続ブロックを指し示すように維持するステップと、
所与のサイズの記憶域に対する要求に応じて、前記ポインタを所与のサイズ増分して、第2のポインタ位置を指し示すステップと、
前記第1のポインタ位置から始まる前記連続ブロックの一部を用いて、前記要求を満足するステップと
を含む、前記(9)記載の方法。
(11)割当てられたブロックを、当該ブロックのサイズにもとづき、フリー・ブロックの新たなセットに割当て解除するステップを含む、前記(1)記載の方法。
(12)コンピュータ・メモリを管理する方法を実行する、マシンにより実行可能な命令のプログラムを有する、マシンにより読取り可能なプログラム記憶装置であって、前記方法が、
メモリのフリー・ブロックの複数のセットを保持するステップであって、前記フリー・ブロックがサイズにもとづき、前記セットに追加され、
第1のしきい値を越える要求サイズのフリー・ブロックに対する要求に応じて、少なくとも前記要求サイズと同じ大きさの、但し前記要求サイズに第2のしきい値を加えたよりも小さいフリー・ブロックのセットを探索するステップと、
フリー・ブロックが見いだされると、該フリー・ブロック全体を割当てるステップと
を含む、プログラム記憶装置。
(13)前記フリー・ブロックの複数セットを保持するステップが、前記フリー・ブロックの複数セットをディスク上に保持するステップを含む、前記(12)記載のプログラム記憶装置。
(14)前記フリー・ブロックの複数セットを保持するステップが、前記フリー・ブロックの複数セットを主メモリ内に保持するステップを含む、前記(12)記載のプログラム記憶装置。
(15)フリー・ブロックが見いだされないが、前記要求サイズと少なくとも同じ大きさの少なくとも1つのブロックが見いだされる場合、当該少なくとも1つのブロックを分割するステップと、
分割ステップから生じる第2のブロックにより前記要求を満足するステップと
を含む、前記(12)記載のプログラム記憶装置。
(16)分割される少なくとも1つのブロックが、前記要求サイズよりも大きい、見いだされる最小のブロックである、前記(15)記載のプログラム記憶装置。
(17)前記複数セットが最大ブロックのセットを含み、前記第1のしきい値が、前記最大ブロックのセットに対して許可される最小ブロック・サイズよりも大きいか等しく、前記要求を満足する最大ブロックのセットを探索するステップを含む、前記(12)記載のプログラム記憶装置。
(18)前記探索ステップが、リストを含むセットを探索するステップを含み、前記リストが前記セットのメモリ・ブロック割当て情報を含む、前記(12)記載のプログラム記憶装置。
(19)前記第1及び第2のしきい値の少なくとも1つを動的に調整して、性能を動的に調整するステップを含む、前記(12)記載のプログラム記憶装置。
(20)メモリの連続ブロックを維持するステップと、
前記要求サイズにもとづき、フリー・ブロックのセットを選択するステップと、
前記フリー・ブロックのセットが空でないことに応じて、前記セット内で突き止められる最初のブロックの少なくとも一部を割当てるステップと、
前記セットが空であることに応じて、前記要求をメモリの前記連続ブロックから満足するステップと
を含む、前記(12)記載のプログラム記憶装置。
(21)第1のポインタ位置として、ポインタを前記連続ブロックを指し示すように維持するステップと、
所与のサイズの記憶域に対する要求に応じて、前記ポインタを所与のサイズ増分して、第2のポインタ位置を指し示すステップと、
前記第1のポインタ位置から始まる前記連続ブロックの一部を用いて、前記要求を満足するステップと
を含む、前記(20)記載のプログラム記憶装置。
(22)割当てられたブロックを、当該ブロックのサイズにもとづき、フリー・ブロックの新たなセットに割当て解除するステップを含む、前記(12)記載のプログラム記憶装置。
(23)連続する永続的メモリのブロックを管理する方法であって、
メモリの第1のブロック内の最初のフリー・バイトを決定する第1のポインタを主メモリ内に保持するステップと、
複数のブロックに対する、少なくとも1コード・バイトを含むヘッダを永続的記憶域内に保持するステップと、
第2のブロックに対して、第2のブロックがもはや第1のブロックの一部でないことを示す少なくとも1コード・バイトをセットし、前記主メモリ内の前記第1のポインタを更新することにより、前記第1のブロックから前記第2のブロックを割当てるステップと
を含む方法。
(24)ブロックbを前記第1のブロックに追加するステップを含み、前記追加ステップが、
bに対応するコード・バイトを、bが前記第1のブロックの一部であることを示すように変更するステップと、
前記主メモリ内の前記第1のポインタを更新するステップと
を含む、前記(23)記載の方法。
(25)前記少なくとも1コード・バイトが、前記第2のブロックがもはや前記第1のブロックの一部でないことを示す以外に、他の機能にも作用する、前記(23)記載の方法。
(26)前記主メモリ内の前記第1のポインタの値にもとづき、前記永続的メモリ内の第2のポインタを周期的に更新するステップを含む、前記(23)記載の方法。
(27)システム障害に応答して、前記少なくとも1コード・バイトを調査することにより、前記第1及び第2のポインタを更新するステップを含む、前記(26)記載の方法。
(28)前記ヘッダが単一ブロック書込みを用いて初期化される、前記(23)記載の方法。
(29)連続する永続的メモリのブロックを管理する方法を実行する、マシンにより実行可能な命令のプログラムを有する、マシンにより読取り可能なプログラム記憶装置であって、前記方法が、
メモリの第1のブロック内の最初のフリー・バイトを決定する第1のポインタを主メモリ内に保持するステップと、
複数のブロックに対する、少なくとも1コード・バイトを含むヘッダを永続的記憶域内に保持するステップと、
第2のブロックに対して、第2のブロックがもはや第1のブロックの一部でないことを示す少なくとも1コード・バイトをセットし、前記主メモリ内の前記第1のポインタを更新することにより、前記第1のブロックから前記第2のブロックを割当てるステップと
を含むプログラム記憶装置
(30)ブロックbを前記第1のブロックに追加するステップを含み、前記追加ステップが、
bに対応するコード・バイトを、bが前記第1のブロックの一部であることを示すように変更するステップと、
前記主メモリ内の前記第1のポインタを更新するステップと
を含む、前記(29)記載のプログラム記憶装置。
(31)前記少なくとも1コード・バイトが、前記第2のブロックがもはや前記第1のブロックの一部でないことを示す以外に、他の機能にも作用する、前記(29)記載のプログラム記憶装置。
(32)前記主メモリ内の前記第1のポインタの値にもとづき、前記永続的メモリ内の第2のポインタを周期的に更新するステップを含む、前記(29)記載のプログラム記憶装置。
(33)システム障害に応答して、前記少なくとも1コード・バイトを調査することにより、前記第1及び第2のポインタを更新するステップを含む、前記(32)記載のプログラム記憶装置。
(34)前記ヘッダが単一ブロック書込みを用いて初期化される、前記(29)記載のプログラム記憶装置。
(35)永久記憶域内の隣接するフリー・ブロックを合体する方法であって、
ブロックのサイズ及び割当て状況を示すヘッダを、各ブロックに対して保持するステップと、
ヘッダ情報を調査して、隣接フリー・ブロックを結合することにより、フリー・ブロックを合体するステップと、
達成される合体のレベルを示す情報を前記永久記憶域内に周期的に記憶するステップと
を含む方法。
(36)前記(35)記載の方法を実行する、マシンにより実行可能な命令のプログラムを有する、マシンにより読取り可能なプログラム記憶装置。
(37)合体の間のシステム障害に応答して、前記永久記憶域内の情報を読出し、システム障害の前に達成された合体のレベルを決定するステップと、
前記永久記憶域内の情報にもとづき、ある時点で合体を再開するステップと
を含む、前記(35)記載の方法。
(38)前記(37)記載の方法を実行する、マシンにより実行可能な命令のプログラムを有する、マシンにより読取り可能なプログラム記憶装置。
【図面の簡単な説明】
【図1】最初のフィット割当て及び最善のフィット割当てを示す図である。
【図2】従来技術に従うバイナリ・バディ・システムを示す図である。
【図3】メモリ・ブロックの即時合体を示す図である。
【図4】メモリ・ブロックの遅延合体を示す図である。
【図5】従来技術に従う多重フリー・リスト・フィッティングの特殊なケースとしての、クイック・フィットの例を示す図である。
【図6】従来技術に従う多重フリー・リスト・フィッティング(MFLF I)の例を示す図である。
【図7】従来技術に従うMFLF Iを用いて、大ブロックの割当てを行う前のスナップショットを示す図である。
【図8】従来技術に従うMFLF Iを用いて、大ブロックの割当てを行った後のスナップショットを示す図である。
【図9】本発明に従う多重フリー・リスト・フィット割当て(MFLF III)を示すブロック/フロー図である。
【図10】本発明に従う大ブロックに対する多重フリー・リスト・フィット(MFLF III)割当てを示すブロック/フロー図である。
【図11】本発明に従う隣接フリー・ブロックの合体を示すブロック/フロー図である。
【図12】本発明に従うメモリ管理方法1を用いる割当てを示すブロック/フロー図である。
【図13】本発明に従うメモリ管理方法1を用いる割当て解除を示すブロック/フロー図である。
【図14】本発明に従うメモリ管理方法2を示すブロック/フロー図である。
【図15】本発明に従うメモリ管理方法2の実施例である。
【図16】本発明に従うメモリ管理方法3を示すブロック/フロー図である。
【図17】本発明に従うメモリ管理方法3の実施例である。
【図18】本発明に従うメモリ管理方法3の実施例である。
【図19】本発明に従うメモリ管理方法3の実施例である。
【図20】本発明に従うメモリ管理方法4を示すブロック/フロー図である。
【図21】本発明に従うテール割当て及び割当て解除の管理のブロック/フロー図である。
【図22】従来技術に対する本発明の1実施例のテスト結果のプロット図である。
【図23】従来技術に対する本発明の1実施例のテスト結果の別のプロット図である。
【符号の説明】
13、1408、1409、1608、1611 メモリ・ブロック
1607 フリー・リスト
1609 指標
1612 アドレス・ラベル
Claims (22)
- コンピュータのメモリを管理する方法であって、
割当てられていないブロックであるフリー・ブロックが、前記フリー・ブロックの一定の範囲を有するサイズに基づいてセットを構成し、複数の前記セットからなる複数のセットを保持する保持ステップと、
割当てられているブロックの割当てが解除されると、前記セットに、割当てが解除されたブロックを追加する追加ステップと、
フリー・ブロックに対する割当て要求が、第1のしきい値を越えた要求サイズである場合に、前記要求サイズ以上のサイズであるフリー・ブロックであって、前記要求サイズに第2のしきい値を加えたよりも小さいフリー・ブロックを、前記複数のセットから探索する探索ステップと、
前記探索ステップによりフリー・ブロックが見いだされると、見いだされたフリー・ブロックを分割無しに割当てる割当ステップと、
を含む、方法。 - 前記保持ステップにおける、前記複数のセットは、ディスク上に保持されるステップである、請求項1記載の方法。
- 前記保持ステップにおける、前記複数のセットは、主メモリ内に保持されるステップである、請求項1記載の方法。
- 請求項1記載の方法において、
フリー・ブロックが、前記探索ステップでは見いだされないが、前記要求サイズ以上の大きさである少なくとも1つのフリー・ブロックが、前記複数のセットから見いだされる場合、前記要求サイズ以上の大きさに、当該フリー・ブロックを1つ以上分割する分割ステップを含み、
前記割当ステップは、前記分割ステップから生成されたフリー・ブロックを割当てるステップである方法。 - 前記分割ステップにおける、分割される1つ以上のブロックが、前記要求サイズよりも大きく、前記複数のセットから見いだされるフリー・ブロックの中で最小のサイズのフリー・ブロックである、請求項4記載の方法。
- 前記探索ステップにおける前記第1のしきい値は、前記複数のセットの中で最も大きいサイズであるフリー・ブロックが含まれたセットの中で、最も小さいサイズのフリー・ブロックよりも大きいか等しい値であって、前記割当て要求に対して、前記複数のセットの中から最も大きいフリー・ブロックが含まれたセットを、前記複数のセットから探索するステップを含む、請求項1記載の方法。
- 前記探索ステップが、リストを含むセットを探索するステップを含み、前記リストが前記セットのメモリ・ブロック割当て情報を含む、請求項1記載の方法。
- 前記探索ステップが、前記第1のしきい値及び前記第2のしきい値の少なくとも1つを動的に調整するステップを含む、請求項1記載の方法。
- 請求項1記載の方法における、
前記保持ステップは、割当てられていないブロックであり、前記メモリにおける連続したアドレスをもつ連続ブロックを保持する連続ブロック保持ステップを含み、
前記探索ステップは、前記割当て要求にもとづき、複数のセットからフリー・ブロックのセットを選択する選択ステップを含み、
前記割当ステップは、
前記セットが空でない場合には、前記セットの中で突き止められる最も小さいブロックの一部又は全部を割当て、前記セットが空である場合には、前記連続ブロックから割当てるステップを含む方法。 - 請求項9記載の方法における、
前記連続ブロック保持ステップは、
第1のポインタ位置として、前記連続ブロックをポインタが指し示すように、前記ポインタを維持するステップと、
所与のサイズの記憶域に対する割当て要求に応じて、前記ポインタを所与の大きさだけ増分して、第2のポインタ位置を指し示すステップと、
を含み、
前記連続ブロックから割当てるステップは、
前記第1のポインタ位置から始まる前記連続ブロックの一部を用いて、割当てを行うステップを含む方法。 - 前記割当てステップにより、割当てられたブロックが、未割当てになった場合に、割当て解除を行なうステップを含む、請求項1記載の方法。
- コンピュータのメモリを管理する方法を実行する、マシンにより実行可能な命令のプログラムを有する、マシンにより読取り可能なプログラム記憶装置であって、
前記方法が、
割当てられていないブロックであるフリー・ブロックが、前記フリー・ブロックの一定の範囲を有するサイズに基づいてセットを構成し、複数の前記セットからなる複数のセットを保持する保持ステップと、
割当てられているブロックの割当てが解除されると、前記セットに、割当てが解除されたブロックを追加する追加ステップと、
フリー・ブロックに対する割当て要求が、第1のしきい値を越えた要求サイズである場合に、前記要求サイズ以上のサイズであるフリー・ブロックであって、前記要求サイズに第2のしきい値を加えたよりも小さいフリー・ブロックを、前記複数のセットから探索する探索ステップと、
前記探索ステップによりフリー・ブロックが見いだされると、見いだされたフリー・ブロックを分割無しに割当てる割当ステップと、
を含むステップを実行するためのプログラムを含むプログラム記憶装置。 - 前記保持ステップにおける、前記複数のセットは、ディスク上に保持されるステップである、請求項12記載のプログラム記憶装置。
- 前記保持ステップにおける、前記複数のセットは、主メモリ内に保持されるステップである、請求項12記載のプログラム装置。
- 請求項12記載のプログラム記憶装置において、
フリー・ブロックが、前記探索ステップでは見いだされないが、前記要求サイズ以上の大きさである少なくとも1つのフリー・ブロックが、前記複数のセットから見いだされる場合、前記要求サイズ以上の大きさに、当該フリー・ブロックを1つ以上分割する分割ステップを含み、
前記割当ステップは、前記分割ステップから生成されたフリー・ブロックを割当てるステップを含むステップである割当ステップであって、
前記分割ステップと前記割当ステップを実行するためのプログラムを含むプログラム記憶装置。 - 分割される1つ以上のブロックが、前記要求サイズよりも大きく、前記複数のセットから見いだされるフリー・ブロックの中で最小のサイズのフリー・ブロックであるステップを含んだ分割ステップを実行するためのプログラムを含む請求項15記載のプログラム記憶装置。
- 前記探索ステップにおける前記第1のしきい値は、前記複数のセットの中で最も大きいサイズであるフリー・ブロックが含まれたセットの中で、最も小さいサイズのフリー・ブロックよりも大きいか等しい値であって、前記割当て要求に対して、前記複数のセットの中から最も大きいフリー・ブロックが含まれたセットを、前記複数のセットから探索するステップを含んだ探索ステップを実行するためのプログラムを含んだ請求項12記載のプログラム記憶装置。
- 前記探索ステップが、前記セットのメモリ・ブロック割当て情報を含むリストを用いてセットを探索するステップを含み、当該ステップを実行するためのプログラムを含んだ請求項12記載のプログラム記憶装置。
- 前記探索ステップが、前記第1のしきい値及び前記第2のしきい値の少なくとも1つを動的に調整するステップを含むステップを実行するためのプログラムを含んだ請求項12記載のプログラム記憶装置。
- 請求項12記載のプログラム記憶装置における、
前記保持ステップは、割当てられていないブロックであり、前記メモリにおける連続したアドレスをもつ連続ブロックを保持する連続ブロック保持ステップを含み、
前記探索ステップは、前記割当て要求にもとづき、複数のセットからフリー・ブロックのセットを選択する選択ステップを含み、
前記割当てステップは、
前記セットが空でない場合には、前記セットの中で突き止められる最も小さいブロックの一部又は全部を割当てるステップであって、前記セットが空である場合には、前記連続ブロックから割当てるステップを含み、当該連続ブロック保持ステップと、当該選択ステップと、当該割当てるステップとを実行するためのプログラムを含んだプログラム記憶装置。 - 請求項20記載のプログラム装置における、
前記連続ブロック保持ステップは、
第1のポインタ位置として、前記連続ブロックをポインタが指し示すように、前記ポインタを維持するステップと、
所与のサイズの記憶域に対する割当て要求に応じて、前記ポインタを所与の大きさだけ増分して、第2のポインタ位置を指し示すステップと、
を含む連続ブロック保持ステップであって、
前記連続ブロックから割当てるステップは、
前記第1のポインタ位置から始まる前記連続ブロックの一部を用いて、割当てを行うステップを含む連続ブロックから割当てるステップであり、
当該連続ブロック保持ステップと、当該連続ブロックから割当てるステップとを実行するためのプログラムを含んだプログラム記憶装置。 - 前記割当てステップにより、割当てられたブロックが、未割当てになった場合に、割当て解除を行なうステップを実行するためのプログラムを含んだ請求項12記載のプログラム記憶装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/504,610 US6643754B1 (en) | 2000-02-15 | 2000-02-15 | System and method for dynamically allocating computer memory |
US09/504610 | 2000-02-15 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004061168A Division JP4175568B2 (ja) | 2000-02-15 | 2004-03-04 | 永続的且つロバストな記憶割当てシステム及び方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001249844A JP2001249844A (ja) | 2001-09-14 |
JP3611305B2 true JP3611305B2 (ja) | 2005-01-19 |
Family
ID=24007003
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001032286A Expired - Fee Related JP3611305B2 (ja) | 2000-02-15 | 2001-02-08 | 永続的且つロバストな記憶割当てシステム及び方法 |
JP2004061168A Expired - Fee Related JP4175568B2 (ja) | 2000-02-15 | 2004-03-04 | 永続的且つロバストな記憶割当てシステム及び方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004061168A Expired - Fee Related JP4175568B2 (ja) | 2000-02-15 | 2004-03-04 | 永続的且つロバストな記憶割当てシステム及び方法 |
Country Status (6)
Country | Link |
---|---|
US (4) | US6643754B1 (ja) |
JP (2) | JP3611305B2 (ja) |
KR (1) | KR100390616B1 (ja) |
CN (2) | CN1195273C (ja) |
CA (1) | CA2332097A1 (ja) |
SG (1) | SG96595A1 (ja) |
Families Citing this family (94)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6606628B1 (en) * | 2000-02-14 | 2003-08-12 | Cisco Technology, Inc. | File system for nonvolatile memory |
US6636879B1 (en) * | 2000-08-18 | 2003-10-21 | Network Appliance, Inc. | Space allocation in a write anywhere file system |
US7028041B2 (en) * | 2001-11-29 | 2006-04-11 | Wal-Mart Stores, Inc. | Methods and apparatus for database space calculation and error detection |
US6766432B2 (en) * | 2002-05-24 | 2004-07-20 | Sun Microsystems, Inc. | Memory management system supporting object deletion in non-volatile memory |
US8060680B2 (en) * | 2002-09-16 | 2011-11-15 | Hewlett-Packard Development Company, L.P. | Method of allocating memory |
US20050071595A1 (en) * | 2003-09-25 | 2005-03-31 | International Business Machines Corporation | Methods and apparatus for allocating memory |
KR100555945B1 (ko) * | 2004-01-08 | 2006-03-03 | 삼성전자주식회사 | 재기록 가능한 광 매체에 데이터를 추가 기록하기 위한기록제어방법 및 빈 영역 관리방법 |
JP4592063B2 (ja) * | 2004-06-15 | 2010-12-01 | キヤノン株式会社 | 画像処理装置、画像データ管理方法、及び画像データ管理プログラム |
US7523284B1 (en) * | 2004-08-10 | 2009-04-21 | American Megatrends, Inc. | Method and apparatus for providing memory management within a system management mode |
US7627716B2 (en) * | 2004-11-15 | 2009-12-01 | International Business Machines Corporation | Method, system, and program for an adaptor to read and write to system memory |
US7809918B1 (en) * | 2005-07-22 | 2010-10-05 | American Megatrends, Inc. | Method, apparatus, and computer-readable medium for providing physical memory management functions |
KR100622114B1 (ko) * | 2006-02-24 | 2006-09-18 | 주식회사 퓨전소프트 | 임베디드 시스템에서의 효율적인 동적 메모리 관리방법 및그 시스템 |
JP4758794B2 (ja) * | 2006-03-16 | 2011-08-31 | 富士通株式会社 | メモリ領域割り当て制御装置、メモリ領域割り当て制御プログラム、及びメモリ領域割り当て制御方法 |
US7526623B1 (en) * | 2006-09-28 | 2009-04-28 | Emc Corporation | Optimizing reclamation of data space |
US9454536B1 (en) | 2006-09-28 | 2016-09-27 | Emc Corporation | Space compaction and defragmentation mechanisms in data space |
US8533158B1 (en) | 2006-09-28 | 2013-09-10 | Emc Corporation | Reclaiming data space by rewriting metadata |
US8862639B1 (en) | 2006-09-28 | 2014-10-14 | Emc Corporation | Locking allocated data space |
US7756831B1 (en) | 2006-09-28 | 2010-07-13 | Emc Corporation | Cooperative locking between multiple independent owners of data space |
US7647466B1 (en) | 2006-09-28 | 2010-01-12 | Emc Corporation | Linear space allocation mechanisms in data space |
US7610468B2 (en) * | 2006-10-26 | 2009-10-27 | Hewlett-Packard Development Company, L.P. | Modified buddy system memory allocation |
US7999817B1 (en) | 2006-11-02 | 2011-08-16 | Nvidia Corporation | Buffering unit to support graphics processing operations |
US8139071B1 (en) * | 2006-11-02 | 2012-03-20 | Nvidia Corporation | Buffering unit to support graphics processing operations |
EP1939751A1 (en) * | 2006-12-22 | 2008-07-02 | Telefonaktiebolaget LM Ericsson (publ) | Storing compressed data |
US7716610B2 (en) * | 2007-01-05 | 2010-05-11 | International Business Machines Corporation | Distributable and serializable finite state machine |
US7685396B2 (en) * | 2007-03-05 | 2010-03-23 | Research In Motion Limited | System and method for dynamic memory allocation |
US8015385B2 (en) * | 2007-06-05 | 2011-09-06 | International Business Machines Corporation | Arrangements for memory allocation |
US7900010B2 (en) * | 2007-07-09 | 2011-03-01 | Ittiam Systems (P) Ltd. | System and method for memory allocation management |
US8108649B2 (en) | 2008-06-13 | 2012-01-31 | International Business Machines Corporation | Method of memory management for server-side scripting language runtime system |
US9778882B2 (en) * | 2008-06-30 | 2017-10-03 | Hitachi Data Systems Engineering UK Limited | Dynamic write balancing in a data storage system |
US20100070733A1 (en) * | 2008-09-18 | 2010-03-18 | Seagate Technology Llc | System and method of allocating memory locations |
US8806158B2 (en) * | 2010-09-22 | 2014-08-12 | International Business Machines Corporation | Intelligent computer memory management |
JP5405513B2 (ja) * | 2011-03-22 | 2014-02-05 | 株式会社東芝 | メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法、及びプログラム |
US9652289B2 (en) | 2012-04-27 | 2017-05-16 | Microsoft Technology Licensing, Llc | Systems and methods for S-list partitioning |
US9274963B2 (en) | 2012-07-20 | 2016-03-01 | International Business Machines Corporation | Cache replacement for shared memory caches |
US20140068220A1 (en) * | 2012-09-06 | 2014-03-06 | Advanced Micro Devices, Inc. | Hardware based memory allocation system with directly connected memory |
JP5649709B2 (ja) * | 2013-10-29 | 2015-01-07 | 株式会社東芝 | メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法およびプログラム |
US9507721B2 (en) | 2014-07-21 | 2016-11-29 | Seagate Technology Llc | Disk cache allocation |
JP2016122485A (ja) | 2014-12-24 | 2016-07-07 | 富士通株式会社 | 情報記録プログラム、情報記録方法、および情報記録装置 |
US10296354B1 (en) * | 2015-01-21 | 2019-05-21 | Pure Storage, Inc. | Optimized boot operations within a flash storage array |
US11947968B2 (en) * | 2015-01-21 | 2024-04-02 | Pure Storage, Inc. | Efficient use of zone in a storage device |
FR3050844B1 (fr) * | 2016-04-27 | 2018-11-23 | Morpho | Procede d'allocation d'espace memoire |
US10216627B1 (en) | 2016-11-08 | 2019-02-26 | Levyx, Inc. | Tree structure serialization and deserialization systems and methods |
US10289330B2 (en) * | 2017-03-30 | 2019-05-14 | Western Digital Technologies, Inc. | Allocating shared memory among multiple tasks in a multiprocessor environment |
US11947489B2 (en) | 2017-09-05 | 2024-04-02 | Robin Systems, Inc. | Creating snapshots of a storage volume in a distributed storage system |
US20190073270A1 (en) * | 2017-09-05 | 2019-03-07 | Robin Systems, Inc. | Creating Snapshots Of A Storage Volume In A Distributed Storage System |
US10430105B2 (en) | 2017-09-13 | 2019-10-01 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US10452267B2 (en) | 2017-09-13 | 2019-10-22 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US10579276B2 (en) | 2017-09-13 | 2020-03-03 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US10423344B2 (en) | 2017-09-19 | 2019-09-24 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US10534549B2 (en) | 2017-09-19 | 2020-01-14 | Robin Systems, Inc. | Maintaining consistency among copies of a logical storage volume in a distributed storage system |
US10846001B2 (en) | 2017-11-08 | 2020-11-24 | Robin Systems, Inc. | Allocating storage requirements in a distributed storage system |
US10782887B2 (en) | 2017-11-08 | 2020-09-22 | Robin Systems, Inc. | Window-based prority tagging of IOPs in a distributed storage system |
US10452308B2 (en) | 2017-12-19 | 2019-10-22 | Robin Systems, Inc. | Encoding tags for metadata entries in a storage system |
US10430292B2 (en) | 2017-12-19 | 2019-10-01 | Robin Systems, Inc. | Snapshot deletion in a distributed storage system |
US10430110B2 (en) | 2017-12-19 | 2019-10-01 | Robin Systems, Inc. | Implementing a hybrid storage node in a distributed storage system |
US11582168B2 (en) | 2018-01-11 | 2023-02-14 | Robin Systems, Inc. | Fenced clone applications |
US10628235B2 (en) | 2018-01-11 | 2020-04-21 | Robin Systems, Inc. | Accessing log files of a distributed computing system using a simulated file system |
US11392363B2 (en) | 2018-01-11 | 2022-07-19 | Robin Systems, Inc. | Implementing application entrypoints with containers of a bundled application |
US11099937B2 (en) | 2018-01-11 | 2021-08-24 | Robin Systems, Inc. | Implementing clone snapshots in a distributed storage system |
US11748203B2 (en) | 2018-01-11 | 2023-09-05 | Robin Systems, Inc. | Multi-role application orchestration in a distributed storage system |
US10896102B2 (en) | 2018-01-11 | 2021-01-19 | Robin Systems, Inc. | Implementing secure communication in a distributed computing system |
US10642697B2 (en) | 2018-01-11 | 2020-05-05 | Robin Systems, Inc. | Implementing containers for a stateful application in a distributed computing system |
US10579364B2 (en) | 2018-01-12 | 2020-03-03 | Robin Systems, Inc. | Upgrading bundled applications in a distributed computing system |
US10642694B2 (en) | 2018-01-12 | 2020-05-05 | Robin Systems, Inc. | Monitoring containers in a distributed computing system |
US10845997B2 (en) | 2018-01-12 | 2020-11-24 | Robin Systems, Inc. | Job manager for deploying a bundled application |
US10846137B2 (en) | 2018-01-12 | 2020-11-24 | Robin Systems, Inc. | Dynamic adjustment of application resources in a distributed computing system |
JP7067270B2 (ja) * | 2018-05-25 | 2022-05-16 | 富士通株式会社 | 情報処理装置,ロードプログラムおよびロード方法 |
US11023328B2 (en) | 2018-07-30 | 2021-06-01 | Robin Systems, Inc. | Redo log for append only storage scheme |
US10976938B2 (en) | 2018-07-30 | 2021-04-13 | Robin Systems, Inc. | Block map cache |
US10599622B2 (en) | 2018-07-31 | 2020-03-24 | Robin Systems, Inc. | Implementing storage volumes over multiple tiers |
US10817380B2 (en) | 2018-07-31 | 2020-10-27 | Robin Systems, Inc. | Implementing affinity and anti-affinity constraints in a bundled application |
US10908848B2 (en) | 2018-10-22 | 2021-02-02 | Robin Systems, Inc. | Automated management of bundled applications |
US11036439B2 (en) | 2018-10-22 | 2021-06-15 | Robin Systems, Inc. | Automated management of bundled applications |
US10620871B1 (en) | 2018-11-15 | 2020-04-14 | Robin Systems, Inc. | Storage scheme for a distributed storage system |
US11281634B2 (en) * | 2019-01-11 | 2022-03-22 | Red Hat, Inc. | Management of volume files in a distributed file system |
US11086725B2 (en) | 2019-03-25 | 2021-08-10 | Robin Systems, Inc. | Orchestration of heterogeneous multi-role applications |
US11256434B2 (en) | 2019-04-17 | 2022-02-22 | Robin Systems, Inc. | Data de-duplication |
US10831387B1 (en) | 2019-05-02 | 2020-11-10 | Robin Systems, Inc. | Snapshot reservations in a distributed storage system |
US10877684B2 (en) | 2019-05-15 | 2020-12-29 | Robin Systems, Inc. | Changing a distributed storage volume from non-replicated to replicated |
US11226847B2 (en) | 2019-08-29 | 2022-01-18 | Robin Systems, Inc. | Implementing an application manifest in a node-specific manner using an intent-based orchestrator |
US11249851B2 (en) | 2019-09-05 | 2022-02-15 | Robin Systems, Inc. | Creating snapshots of a storage volume in a distributed storage system |
US11520650B2 (en) | 2019-09-05 | 2022-12-06 | Robin Systems, Inc. | Performing root cause analysis in a multi-role application |
US11347684B2 (en) | 2019-10-04 | 2022-05-31 | Robin Systems, Inc. | Rolling back KUBERNETES applications including custom resources |
US11113158B2 (en) | 2019-10-04 | 2021-09-07 | Robin Systems, Inc. | Rolling back kubernetes applications |
US11403188B2 (en) | 2019-12-04 | 2022-08-02 | Robin Systems, Inc. | Operation-level consistency points and rollback |
US11108638B1 (en) | 2020-06-08 | 2021-08-31 | Robin Systems, Inc. | Health monitoring of automatically deployed and managed network pipelines |
US11528186B2 (en) | 2020-06-16 | 2022-12-13 | Robin Systems, Inc. | Automated initialization of bare metal servers |
US11740980B2 (en) | 2020-09-22 | 2023-08-29 | Robin Systems, Inc. | Managing snapshot metadata following backup |
US11743188B2 (en) | 2020-10-01 | 2023-08-29 | Robin Systems, Inc. | Check-in monitoring for workflows |
US11456914B2 (en) | 2020-10-07 | 2022-09-27 | Robin Systems, Inc. | Implementing affinity and anti-affinity with KUBERNETES |
US11271895B1 (en) | 2020-10-07 | 2022-03-08 | Robin Systems, Inc. | Implementing advanced networking capabilities using helm charts |
US11750451B2 (en) | 2020-11-04 | 2023-09-05 | Robin Systems, Inc. | Batch manager for complex workflows |
US11556361B2 (en) | 2020-12-09 | 2023-01-17 | Robin Systems, Inc. | Monitoring and managing of complex multi-role applications |
US20240111667A1 (en) * | 2022-09-28 | 2024-04-04 | Google Llc | High Performance Memory Allocator |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4754394A (en) * | 1984-10-24 | 1988-06-28 | International Business Machines Corporation | Multiprocessing system having dynamically allocated local/global storage and including interleaving transformation circuit for transforming real addresses to corresponding absolute address of the storage |
US4814971A (en) * | 1985-09-11 | 1989-03-21 | Texas Instruments Incorporated | Virtual memory recovery system using persistent roots for selective garbage collection and sibling page timestamping for defining checkpoint state |
US5008820A (en) * | 1987-03-30 | 1991-04-16 | International Business Machines Corporation | Method of rapidly opening disk files identified by path names |
US5481694A (en) | 1991-09-26 | 1996-01-02 | Hewlett-Packard Company | High performance multiple-unit electronic data storage system with checkpoint logs for rapid failure recovery |
US5559980A (en) * | 1993-03-18 | 1996-09-24 | Lucent Technologies Inc. | Method and apparatus for detecting references to deallocated memory in a dynamic memory allocation system |
US5488701A (en) * | 1994-11-17 | 1996-01-30 | International Business Machines Corporation | In log sparing for log structured arrays |
US5835959A (en) * | 1995-12-01 | 1998-11-10 | Sand Technology Systems International, Inc. | Memory management system and method using dual indexing structures |
GB2291991A (en) * | 1995-09-27 | 1996-02-07 | Memory Corp Plc | Disk drive emulation with a block-erasable memory |
US5784698A (en) * | 1995-12-05 | 1998-07-21 | International Business Machines Corporation | Dynamic memory allocation that enalbes efficient use of buffer pool memory segments |
US5915265A (en) * | 1995-12-22 | 1999-06-22 | Intel Corporation | Method and apparatus for dynamically allocating and resizing the dedicated memory in a shared memory buffer architecture system |
US5784699A (en) * | 1996-05-24 | 1998-07-21 | Oracle Corporation | Dynamic memory allocation in a computer using a bit map index |
US5930827A (en) * | 1996-12-02 | 1999-07-27 | Intel Corporation | Method and apparatus for dynamic memory management by association of free memory blocks using a binary tree organized in an address and size dependent manner |
US6055612A (en) * | 1997-07-11 | 2000-04-25 | Geodesic Systems, Inc. | Incremental garbage collector with decommit barrier |
US6182089B1 (en) * | 1997-09-23 | 2001-01-30 | Silicon Graphics, Inc. | Method, system and computer program product for dynamically allocating large memory pages of different sizes |
US5987479A (en) * | 1997-09-24 | 1999-11-16 | Sony Corporation, Inc. | Large block allocation for disk-based file systems |
GB2381103B (en) * | 1997-12-17 | 2003-06-04 | Fujitsu Ltd | Memory access methods and devices for use with random access memories |
US6175900B1 (en) * | 1998-02-09 | 2001-01-16 | Microsoft Corporation | Hierarchical bitmap-based memory manager |
US6148350A (en) * | 1998-05-29 | 2000-11-14 | 3Com Corporation | System for allocating an integer unit of memory greater than a requested size and filling the extra space due to difference in sizes with extraneous data |
US6219772B1 (en) * | 1998-08-11 | 2001-04-17 | Autodesk, Inc. | Method for efficient memory allocation of small data blocks |
US6449625B1 (en) * | 1999-04-20 | 2002-09-10 | Lucent Technologies Inc. | Use of a two-way stack approach to optimize flash memory management for embedded database systems |
US6446183B1 (en) * | 2000-02-15 | 2002-09-03 | International Business Machines Corporation | Systems and methods for persistent and robust memory management |
US6307139B1 (en) * | 2000-05-08 | 2001-10-23 | Sony Corporation | Search index for a music file |
US6502111B1 (en) * | 2000-07-31 | 2002-12-31 | Microsoft Corporation | Method and system for concurrent garbage collection |
US6493730B1 (en) * | 2000-10-10 | 2002-12-10 | Sun Microsystems, Inc. | Efficient object faulting with generational garbage collection |
US6941503B1 (en) * | 2001-12-11 | 2005-09-06 | Emc Corporation | Method and apparatus for retaining error-control code protection across block-size discontinuities |
-
2000
- 2000-02-15 US US09/504,610 patent/US6643754B1/en not_active Expired - Lifetime
-
2001
- 2001-01-19 SG SG200100302A patent/SG96595A1/en unknown
- 2001-01-23 CA CA002332097A patent/CA2332097A1/en not_active Abandoned
- 2001-01-31 KR KR10-2001-0004526A patent/KR100390616B1/ko not_active IP Right Cessation
- 2001-02-08 JP JP2001032286A patent/JP3611305B2/ja not_active Expired - Fee Related
- 2001-02-14 CN CNB011045116A patent/CN1195273C/zh not_active Expired - Fee Related
- 2001-02-14 CN CNB2004100575999A patent/CN100353338C/zh not_active Expired - Fee Related
-
2002
- 2002-09-30 US US10/261,886 patent/US6851034B2/en not_active Expired - Fee Related
-
2004
- 2004-03-04 JP JP2004061168A patent/JP4175568B2/ja not_active Expired - Fee Related
- 2004-10-20 US US10/969,525 patent/US7308606B2/en not_active Expired - Fee Related
-
2007
- 2007-10-18 US US11/874,814 patent/US7870359B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
KR100390616B1 (ko) | 2003-07-07 |
CN1195273C (zh) | 2005-03-30 |
US6851034B2 (en) | 2005-02-01 |
JP4175568B2 (ja) | 2008-11-05 |
US20030028740A1 (en) | 2003-02-06 |
CN1309354A (zh) | 2001-08-22 |
CN1598788A (zh) | 2005-03-23 |
SG96595A1 (en) | 2003-06-16 |
JP2001249844A (ja) | 2001-09-14 |
US7870359B2 (en) | 2011-01-11 |
US6643754B1 (en) | 2003-11-04 |
KR20010082032A (ko) | 2001-08-29 |
US7308606B2 (en) | 2007-12-11 |
US20080040570A1 (en) | 2008-02-14 |
US20050055526A1 (en) | 2005-03-10 |
CA2332097A1 (en) | 2001-08-15 |
JP2004206733A (ja) | 2004-07-22 |
CN100353338C (zh) | 2007-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3611305B2 (ja) | 永続的且つロバストな記憶割当てシステム及び方法 | |
JP3771803B2 (ja) | 永続的且つロバストなメモリ管理のためのシステム及び方法 | |
US20200249848A1 (en) | Memory allocation buffer for reduction of heap fragmentation | |
CN110678836B (zh) | 用于键值存储的持久性存储器 | |
US9081702B2 (en) | Working set swapping using a sequentially ordered swap file | |
US5109336A (en) | Unified working storage management | |
US7035881B2 (en) | Organization of read-write snapshot copies in a data storage system | |
US8478931B1 (en) | Using non-volatile memory resources to enable a virtual buffer pool for a database application | |
US20100185703A1 (en) | Lock-free hash table based write barrier buffer for large memory multiprocessor garbage collectors | |
JPH10254756A (ja) | リファレンスされたオブジェクトを管理するための3状態リファレンスの使用 | |
JPH06202936A (ja) | コンピュータ主記憶域管理システムおよび方法 | |
US6629111B1 (en) | Memory allocation system | |
US11797207B2 (en) | Base and compressed difference data deduplication | |
KR100907477B1 (ko) | 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법 | |
US8972659B2 (en) | Memory control device, memory device, memory control method, and program | |
US6851021B2 (en) | Methods and systems for efficiently managing persistent storage | |
CN114116194A (zh) | 一种内存的分配方法及系统 | |
EP1126373A2 (en) | Storage allocation system and method | |
JPH0793192A (ja) | ファイル管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20031216 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040304 |
|
RD12 | Notification of acceptance of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7432 Effective date: 20040304 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20040304 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040817 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040831 |
|
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: 20041005 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20041006 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041018 |
|
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: 20071029 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081029 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081029 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091029 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091029 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101029 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101029 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111029 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121029 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121029 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131029 Year of fee payment: 9 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |