JP2001249844A - 永続的且つロバストな記憶割当てシステム及び方法 - Google Patents

永続的且つロバストな記憶割当てシステム及び方法

Info

Publication number
JP2001249844A
JP2001249844A JP2001032286A JP2001032286A JP2001249844A JP 2001249844 A JP2001249844 A JP 2001249844A JP 2001032286 A JP2001032286 A JP 2001032286A JP 2001032286 A JP2001032286 A JP 2001032286A JP 2001249844 A JP2001249844 A JP 2001249844A
Authority
JP
Japan
Prior art keywords
block
blocks
free
memory
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.)
Granted
Application number
JP2001032286A
Other languages
English (en)
Other versions
JP3611305B2 (ja
Inventor
James R H Challenger
ジェームス・アール・エイチ・チャレンジャー
Arun K Iyengar
アラン・ケイ・リエンガー
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2001249844A publication Critical patent/JP2001249844A/ja
Application granted granted Critical
Publication of JP3611305B2 publication Critical patent/JP3611305B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation

Abstract

(57)【要約】 【課題】 ディスクへのアクセス回数及び書込み回数を
低減する、ディスク・メモリのための動的な記憶方法及
びシステムを提供すること。 【解決手段】 コンピュータ・メモリを管理する方法
が、メモリのフリー・ブロックの複数のセットを保持
し、フリー・ブロックがそのサイズにもとづき、セット
に追加される。要求サイズのブロックに対する要求に応
じて、少なくとも要求サイズと同じ大きさの、但し要求
サイズにしきい値を加えたよりも小さいフリー・ブロッ
クを求めて、ブロックのセットが探索される。こうした
ブロックが見いだされると、そのブロック全体が割当て
られる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はコンピュータ記憶方
法及びシステムに関して、特に、ロバストな動的記憶域
割当てのための方法及びシステムに関する。
【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:dynami
c storage allocation) は、フリー(すなわち未使
用)・ブロックの1つ以上のリストを保持する。フリー
・ブロックのリストなどのこうしたリストは、フリー・
リストとして知られている。異なるサイズのブロックに
対して、別々のフリー・リストが存在する。他のサイズ
のブロックを割当てるバディ・システムも存在する。動
的記憶割当てにおける従来技術の概要が、Arun Iyengar
による論文"Scalability of Dynamic Storage Allocati
on Algorithms"(Proceedings of IEEE Frontiers '9
6、October 1996)、及びこの論文における参考文献で
述べられている。
【0007】動的記憶域割当て(DSA)は、隣接フリ
ー・ブロックを合体するために、異なる方法を使用でき
る。1アプローチは、即時合体(immediate coalescin
g)を使用するもので、この場合、図3に示されるよう
に、ブロックが割当て解除されるとき、割当て解除され
たブロックが隣のフリー・ブロックと結合される。図3
において、ブロック・サイズが各ブロック内に示され
る。正のサイズはフリー・ブロックを示し、負のサイズ
は割当てられたブロックを示す。
【0008】図4を参照すると、別のアプローチが示さ
れ、これは遅延合体(deferred coalescing)を含む。
遅延合体が使用される場合、隣接フリー・ブロックは割
当て解除後に自動的に結合されない。代わりに、ある時
点で(要求を満足する十分に大きいブロックが突き止め
られない場合など)、DSAがメモリ内のブロックを走
査し、図4に示されるように隣接ブロックを結合する。
【0009】断片化(fragmentation)はDSAにより
浪費されるメモリである。内部断片化は、要求サイズよ
りも大きいブロックにより要求を満足することにより、
失われるメモリである(例えばブロック・サイズ25に
対する要求を、ブロック・サイズ32により満足する場
合など)。外部断片化は、フリー・ブロックに割当て済
みブロックが点在する場合に発生する。これらの状況で
は、たとえbバイトより多くがフリーであっても、bバ
イトの割当て要求が満足されない。なぜなら、フリー記
憶域の最大の連続ブロックが、bバイトよりも小さいか
らである。
【0010】前記引用文献"Scalability of Dynamic St
orage Allocation Algorithms"で述べられる多重フリー
・リスト・フィットI(MFLF I:multiple free l
istfit)は、サイズにより編成される複数のフリー・リ
ストを使用する。小ブロックのためのフリー・リスト
は、クイック・リストとして知られる。大ブロックのた
めのフリー・リストは、miscリストとして知られ
る。1つのmiscリストが保持される場合、MFLF
Iはクイック・フィットとして知られる記憶域割当て
システムに退化する。
【0011】図5を参照すると、クイック・フィット技
法が示される。このシステムでは、サイズ16までのブ
ロックに対して、クイック・リストが存在する。クイッ
ク・リストの数は、異なる要求分配に対して、性能を最
適化するように変更され得る。この例では、サイズs
(2≦s≦16、2が最小ブロック・サイズ)のブロッ
クに対する割当てが、サイズsに対応するクイック・リ
ストを調査することにより行われる。このリストが空で
なければ、リスト上の最初のブロックが要求を満足する
ために使用される。ここでグレーン・サイズ(grain si
ze)の倍数に相当するブロック・サイズについても、ク
イック・リストを有することが可能である。例えば、図
2では、グレーン・サイズは1である。グレーン・サイ
ズが1000の場合、サイズ1000、2000、30
00、...、16000のブロックのクイック・リスト
(合計16のクイック・リスト)が使用され得る。MF
LFIは遅延合体を使用する。メモリは図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に示されるように、MFL
F 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は前述のように、時に割当て
の間にフリー・ブロックを分割し、ブロックの一部を割
当て、他の部分をフリー記憶域に戻す。本発明はMFL
FIと比較して、分割されるブロックの数を有利に低減
する。これはディスク記憶域を割当てるための重要なパ
ラメータである。なぜなら、ブロックの分割は余計なデ
ィスク操作を生じるからである(ここで操作は読取りま
たは書込みである)。従って、本発明はブロックを割当
てる際に、MFLF Iよりも少ない分割を行う。本発
明はディスク・メモリ同様に、主メモリを割当てるため
にも使用され得る。
【0030】添付の図面を参照すると、図面を通じて同
一の参照番号は、同一のまたは類似の要素を表す。最初
に図9及び図10を参照すると、ディスクの割当て及び
記憶管理のためのシステム/方法のブロック図が示され
る。リスト(例えばクイック・リスト、miscリス
ト、またはフリー・リスト)は通常、リスト上に記憶さ
れる最小及び最大ブロックをそれぞれ表す、最小(mi
n)または最大(max)サイズを有する(グレーン・サイ
ズが1のクイック・リストでは、最小及び最大サイズは
同一である)。最大ブロック・サイズを有するシステム
では、最近のmiscリストの最大サイズが、最大ブロ
ック・サイズである。最大ブロック・サイズを有さない
システムでは、最近のmiscリストが最大サイズを有
さないこともある。
【0031】ここでsを要求サイズとする。ボックス8
07では、sが最大ブロックを記憶するリストの最小サ
イズよりも大きいか否かが判断される。大きい場合、処
理は図10のボックス905に続く。大きくない場合、
処理はボックス805に続く。ボックス805では、シ
ステムは適切なリストを選択して調査する。lmin≧s
なる最小サイズlminを有するリストLが選択される。
他の基準もリスト選択のために使用可能である。処理は
ボックス810に続く。ボックス810では、リストL
が空か否かが判断される。空の場合、ボックス815で
サイズlminのブロックがテールから割当てられ、要求
を満足するために使用される。Lが空でない場合、ボッ
クス820で、メモリ・ブロックを分割することなく、
リストLからの最初のブロックが、要求を満足するため
に使用される。リストLが異なるサイズのブロックを含
む場合、当業者には明らかなように、直接的な拡張とし
て、リストLを探索することにより、より好適にフィッ
トするブロックを獲得するか、割当てのために選択され
たブロックを分割して、内部断片化を低減してもよい。
【0032】図10を参照すると、本発明に従う大ブロ
ックのための割当て方法が示される。ここでLを最大ブ
ロックを記憶するmiscリストとする。ボックス90
5で、サイズがs以上且つs+a以下(ここでaはしき
い値で、例えば許容可能な浪費)の最初のブロックを突
き止めるために、Lが調査される。ここで許容可能な浪
費とは、時として割当ての間に、内部断片化を低減する
目的で、ブロックを分割するために使用されるパラメー
タである。適切なブロックが見いだされる場合、ボック
ス910で、ブロックは分割無しに割当てられる。こう
したブロックが見いだされない場合、2つの可能性があ
る。リストL上のどのブロックも要求を満足するほど十
分に大きくない場合、ボックス930で、サイズsのブ
ロックがテールから割当てられる。リストLが十分に大
きなブロックを含む場合、リストL上においてサイズが
sよりも大きい最小のブロックが、サイズs及びrのそ
れぞれフラグメントf1及びf2に分割される(ボック
ス935)。
【0033】f1は要求を満足するために使用される。
f2は、そのサイズに対応するフリー・リストの先頭に
配置される。許容可能な浪費パラメータは動的に変化し
得る。直接的な変形では、許容可能な浪費パラメータの
代わりに、要求サイズなどの引数を取る関数を使用す
る。
【0034】本発明に従う割当て解除は直接的である。
割当て解除されるブロックは、それらのサイズに対応す
るフリー・リストの先頭に配置される。1実施例では、
遅延合体が使用される。本発明が主メモリ割当てに使用
される場合、合体は直接的である。
【0035】本発明は、動的記憶域割当て機構(DS
A:dynamic storage allocator)管理型のディスク記
憶域のために、遅延合体を実行する新たな方法を提供す
るものであり、これはファースト・フィット、ベスト・
フィット、バディ・システム、MFLFシステムなど
の、様々な異なる方法と共に使用され得る。
【0036】記憶ブロックはヘッダを含む。ヘッダはブ
ロックがフリー(未使用)か、割当て済みであるかを示
すタグの他に、ブロック・サイズを含む。ヘッダ情報
は、システムがクラッシュまたはオフされるときに保存
されるように、ディスク上に含まれる。ヘッダ情報はま
た、高速アクセスのために主メモリ内にもキャッシュさ
れ得る。ヘッダ情報はディスク上に様々な方法で保持さ
れる。1方法は、ヘッダ情報として、指定バイト(例え
ば初期バイト数)のブロックを使用する。別の方法は、
連続メモリの単一ブロック内に、複数ブロックに対する
ヘッダ情報を記憶する。
【0037】図11を参照すると、隣接フリー・ブロッ
クを合体する1つの好適な方法が示される。ボックス1
005で、合体のために必要なデータ構造が初期化され
る。例えば、多くのDSAがフリー・リストを使用す
る。こうしたDSAはボックス1005において、フリ
ー・リストを初期化する(例えば、1つ以上のフリー・
リストを空にする)。ボックス1010、1012及び
1025はループを形成し、そこでシステムがヘッダ・
ブロックを走査して、隣接フリー・ブロックを結合す
る。システムはメモリの終わりのブロックから開始し、
最初のブロックに対応するヘッダを読出す。システムは
次にヘッダを順次走査し、隣接フリー・ブロックを結合
する。フリー・リストを使用するメモリ・システムで
は、フリー・ブロックが合体された後、それらが適切な
フリー・リストに追加される。ボックス1025では、
システムは、合体が進行したポイントを永続的記憶域に
記録することにより、合体をチェックする。このチェッ
クポイントの目的は、障害の際に必要とされる作業量を
低減することである。チェックポイントは本発明によ
り、陳腐化情報を更新するために使用される。
【0038】システム障害の場合、主メモリの内容は失
われがちであるが、ディスク・メモリの内容は保持され
がちである。システム障害の場合、チェックポイント
は、既に実行された大半のまたは全ての合体作業を再実
行する必要性を排除する。それに比較して、従来の方法
は障害の後に、先頭からヘッダの再走査を要求する。有
利な点として、ヘッダの順次走査を提供し、チェックポ
イントを設けることにより、よりロバストで永続的なメ
モリ・システムが提供される。更に、障害後の時間の浪
費となる再合体が低減または排除され、例えば、合体時
間の50%以上が排除され、多くの場合、合体時間の1
00%が排除される。チェックポイントが実行される頻
度は適宜変更され、例えば、トランザクションの数に従
い、または設定時間が経過した後に、変更される。頻繁
なチェックポイントは、障害後に再実行される必要のあ
る作業量を低減する。
【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で更
新されなくてもよい。これはリストの先頭を指し示すデ
ィスク・ポインタが陳腐化し得ることを意味する。これ
らのディスク・ポインタを更新するために、システムは
周期的にチェックポイントを設定する(ボックス132
5)。例えば、システムは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...a
5などのアドレスと一緒にリストされており、対応する
ブロックがディスク1406上に配置される。リスト先
頭は、ディスク1406上のリスト上の最初のメモリ・
ブロックの位置を指し示す。ディスク1408上のブロ
ック1408のアドレスは、ブロック1408の第2の
位置1412のアドレス・ラベルにより示される。アド
レス・ラベル1412は説明の都合上示されており、こ
うしたアドレス・ラベルは必ずしもディスク上に記憶さ
れる必要はない。ブロック1408の最後の位置141
4は、リスト上のメモリの次のブロックを指し示すか、
またはnilまたはリスト若しくはセットの終わりを意
味する"#"である。
【0052】図15の例の記憶操作が、図14に関連し
て述べられる。RAM1404はフリーのブロックだけ
を含む。ディスク上のブロックのリストの保持(ボック
ス1305)が実行される。割当て25がボックス13
10に従い実行される。割当て解除a2が、ボックス1
320に従い実行される。割当て90がブロック131
5に従い実行される。ここでリスト先頭a1はテールか
らの割当てにより陳腐化し、これがディスク上のリスト
の先頭に移動する。ボックス1325に従うチェックポ
イントは、図15に示されるように、リスト先頭をa5
に更新する。
【0053】図16を参照すると、ディスク上の永続的
記憶域を管理するメモリ管理方法3が示される。図16
に示されるボックスは、任意の順序で実行され得る。シ
ステムはボックス1505で、ディスク上のフリー・ブ
ロックの少なくとも1つのリストを保持する。リストは
ヘッダ内にリスト・ポインタを保つことにより保持され
る。このリストの先頭は陳腐化し得るが、ボックス15
20で実行されるチェックポイントの間に更新される。
このリストの最新バージョンが、主メモリ内に保持され
る。この方法は、割当てがリストの最初のメンバから発
生するとき、特に有用である。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の例の記憶操作が、図1
6に関連して述べられる。ディスク上のブロックのリス
トの保持(ボックス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を参照すると、システムはブロック
に対するディスク上のヘッダを保持する(ボックス18
05)。ヘッダはコード・バイトとして知られる少なく
とも1バイトを含む。ここで図21で示されるボックス
は、任意の順序で実行され得る。システムはまた、現テ
ール・ポインタ及びディスク上のテール・ポインタを示
す変数を、メモリ内に保持する。ディスク上のテール・
ポインタは陳腐化し得る。ボックス1810では、シス
テムはテールからブロックb1を割当てる。このステッ
プによりヘッダに記憶される情報には、割当てられたタ
グ、ブロック・サイズ、及び1つ以上のコード・バイト
が含まれる。ディスク上のテール・ポインタは通常、こ
のステップでは更新されない。その理由は、テール・ポ
インタはディスク上でb1のヘッダから離れているから
である。ディスク上のテール・ポインタの更新は、余計
なディスク操作を伴う必要があり得る。対照的に、b1
のヘッダ・バイトはディスク上で接近して維持され、従
って、ヘッダの全ての更新は、一般にほとんどディスク
操作を使用せずに行われる(多くの場合、1ディスク書
込みで十分)。ブロックがもはやテールの一部でないこ
とを示す特殊な情報が、コード・バイトに記憶される。
他の目的で使用されるヘッダ・バイトがコード・バイト
として機能することも可能であり、これによりコード・
バイトによりもたらされるオーバヘッドを低減または排
除することができる。例えば、メモリ管理方法2及び3
は、ブロック・サイズ及びリスト・ポインタを記憶する
ためにヘッダ・バイトを使用する。これらのバイトはコ
ード・バイトとしても機能し得る。
【0067】(ディスク上ではなく、)メモリ内のテー
ル・ポインタが、ボックス1810で更新される。ボッ
クス1825では、ブロックb1がテールに割当て解除
される。コード・バイトは、b1が現在テールの一部で
あることを示すように変更される。ディスク上のテール
・ポインタがメモリ内にキャッシュされ、従って、ディ
スクをアクセスすることなく調査可能である。ディスク
上のテール・ポインタが最新の場合、テール・ポインタ
は更新され、b1がテールに割当て解除された後も最新
に維持される。そうでない場合、ディスク上のテール・
ポインタは陳腐化を容認される。
【0068】更新されたテール・ポインタは、周期的に
チェックポイントでチェックされる(ボックス182
0)。例えば、システムは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と共に、図2
1の方法を使用することが可能である。常にボックス1
825を用いて、ブロックをテールに割当て解除する必
要はない。例えば、MFLFアルゴリズムは通常、最近
解放されたブロックをテールに追加しない。代わりに、
MFLFアルゴリズムは、解放されたブロックをフリー
・リストに追加する。記憶域は合体の間にテールに追加
される。
【0073】図22を参照すると、本発明者が行った、
メモリ管理方法1を使用するMFLF IIIと、IB
Mから販売されるDB2(商標)との性能特性のテスト
結果が示される。読出し及び書込み操作は、各々が10
0バイト未満のサイズの5300項目に対して行われ
た。報告される時間は、初期化時間を含む。テストラン
は、次のものを含む。 A:単純機能テストを含む全てのテストを、1実行によ
り実行する。 R:各項目をデータベースから1度読出す(キード(ke
yed)・ルックアップ)。 Wp:各項目を空データベースに1度書込む(データベ
ースを準備)。 Wn:各項目をフルのデータベースに1度書込む(準備
されたデータベース内の各項目を置換する)。 I:データベース内の各項目に渡り反復を実行する(非
キード・ルックアップ)。
【0074】初期化時間とテストAの余分な機能テスト
のために、(R+Wp+Wn+I)の合計は、Aにはな
らない。データベースは、指標付き基本キー(ストリン
グ)及びデータ・オブジェクト(LOB)を有する、1
つのテーブルを含む。基本テストは、全ての更新が完了
した後にだけ、更新をコミットした。図23に示される
ように、補助更新が毎回の更新後に、または5回目の更
新の度にコミットされた。DB2へのテストの実際の適
用は、5回の更新毎にコミットされる必要があり、DB
2がテストを完了するために、幾つかの調整パラメータ
が必要とされた。基本テスト結果が図22に示される。
テスト時間(秒)は、DB2(1902)に比較して、
本発明の驚くべき改善(1900)を示している。ほと
んどの場合、1桁の改善が達成された。
【0075】図23を参照すると、DB2は幾つかのモ
ードで実行された。例えば、DB2へのテストの適用
は、図23に示されるように、手動コミット、自動コミ
ット、及び5回の更新毎に行われた。Wp及びWnテス
トにおける本発明の動作時間(秒)は、1桁以上も大き
く、時には2桁以上も大きかった。
【0076】本発明には当業者により達成されるであろ
う多くの変形が存在する。例えば、DSAは複数のトラ
ンザクションを同時に処理するように並列化され得る。
これはディスク・アレイと併用するのに適している。並
列化を達成する技術については、次の参考文献で述べら
れている。 1)"Dynamic Storage Allocation on a Multiprocesso
r"、Arun Iyengar、Massachusetts Institute of Techn
ology Laboratory for Computer Science TR-560 (PhD
Thesis)、December。 2)"Scalability of Dynamic Storage Allocation Alg
orithm"、Arun Iyengar、in Proceedings of IEEE Fron
tiers '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】本発明に従う大ブロックに対する多重フリー
・リスト・フィット(MFLFIII)割当てを示すブ
ロック/フロー図である。
【図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 アドレス・ラベル
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジェームス・アール・エイチ・チャレンジ ャー アメリカ合衆国10524、ニューヨーク州ガ ーリソン、ボックス 12、レイルロード 1 (72)発明者 アラン・ケイ・リエンガー アメリカ合衆国10598、ニューヨーク州ヨ ークタウン・ハイツ、パーク・レーン 1160

Claims (38)

    【特許請求の範囲】
  1. 【請求項1】コンピュータ・メモリを管理する方法であ
    って、 メモリのフリー・ブロックの複数のセットを保持し、前
    記フリー・ブロックが該フリー・ブロックのサイズにも
    とづき、前記セットに追加されるステップと、 第1のしきい値を越える要求サイズのフリー・ブロック
    に対する要求に応じて、少なくとも前記要求サイズと同
    じ大きさの、但し前記要求サイズに第2のしきい値を加
    えたよりも小さいフリー・ブロックのセットを探索する
    ステップと、 フリー・ブロックが見いだされると、該フリー・ブロッ
    ク全体を割当てるステップとを含む、方法。
  2. 【請求項2】前記フリー・ブロックの複数セットを保持
    するステップが、前記フリー・ブロックの複数セットを
    ディスク上に保持するステップを含む、請求項1記載の
    方法。
  3. 【請求項3】前記フリー・ブロックの複数セットを保持
    するステップが、前記フリー・ブロックの複数セットを
    主メモリ内に保持するステップを含む、請求項1記載の
    方法。
  4. 【請求項4】フリー・ブロックが見いだされないが、前
    記要求サイズと少なくとも同じ大きさの少なくとも1つ
    のブロックが見いだされる場合、当該少なくとも1つの
    ブロックを分割するステップと、 分割ステップから生じる第2のブロックにより前記要求
    を満足するステップとを含む、請求項1記載の方法。
  5. 【請求項5】分割される少なくとも1つのブロックが、
    前記要求サイズよりも大きい、見いだされる最小のブロ
    ックである、請求項4記載の方法。
  6. 【請求項6】前記複数セットが最大ブロックのセットを
    含み、前記第1のしきい値が、前記最大ブロックのセッ
    トに対して許可される最小ブロック・サイズよりも大き
    いか等しく、前記要求を満足する最大ブロックのセット
    を探索するステップを含む、請求項1記載の方法。
  7. 【請求項7】前記探索ステップが、リストを含むセット
    を探索するステップを含み、前記リストが前記セットの
    メモリ・ブロック割当て情報を含む、請求項1記載の方
    法。
  8. 【請求項8】前記第1及び第2のしきい値の少なくとも
    1つを動的に調整して、性能を動的に調整するステップ
    を含む、請求項1記載の方法。
  9. 【請求項9】メモリの連続ブロックを維持するステップ
    と、 前記要求サイズにもとづき、フリー・ブロックのセット
    を選択するステップと、 前記フリー・ブロックのセットが空でないことに応じ
    て、前記セット内で突き止められる最初のブロックの少
    なくとも一部を割当てるステップと、 前記セットが空であることに応じて、前記要求をメモリ
    の前記連続ブロックから満足するステップとを含む、請
    求項1記載の方法。
  10. 【請求項10】第1のポインタ位置として、ポインタを
    前記連続ブロックを指し示すように維持するステップ
    と、 所与のサイズの記憶域に対する要求に応じて、前記ポイ
    ンタを所与のサイズ増分して、第2のポインタ位置を指
    し示すステップと、 前記第1のポインタ位置から始まる前記連続ブロックの
    一部を用いて、前記要求を満足するステップとを含む、
    請求項9記載の方法。
  11. 【請求項11】割当てられたブロックを、当該ブロック
    のサイズにもとづき、フリー・ブロックの新たなセット
    に割当て解除するステップを含む、請求項1記載の方
    法。
  12. 【請求項12】コンピュータ・メモリを管理する方法を
    実行する、マシンにより実行可能な命令のプログラムを
    有する、マシンにより読取り可能なプログラム記憶装置
    であって、前記方法が、 メモリのフリー・ブロックの複数のセットを保持するス
    テップであって、前記フリー・ブロックがサイズにもと
    づき、前記セットに追加され、 第1のしきい値を越える要求サイズのフリー・ブロック
    に対する要求に応じて、少なくとも前記要求サイズと同
    じ大きさの、但し前記要求サイズに第2のしきい値を加
    えたよりも小さいフリー・ブロックのセットを探索する
    ステップと、 フリー・ブロックが見いだされると、該フリー・ブロッ
    ク全体を割当てるステップとを含む、プログラム記憶装
    置。
  13. 【請求項13】前記フリー・ブロックの複数セットを保
    持するステップが、前記フリー・ブロックの複数セット
    をディスク上に保持するステップを含む、請求項12記
    載のプログラム記憶装置。
  14. 【請求項14】前記フリー・ブロックの複数セットを保
    持するステップが、前記フリー・ブロックの複数セット
    を主メモリ内に保持するステップを含む、請求項12記
    載のプログラム記憶装置。
  15. 【請求項15】フリー・ブロックが見いだされないが、
    前記要求サイズと少なくとも同じ大きさの少なくとも1
    つのブロックが見いだされる場合、当該少なくとも1つ
    のブロックを分割するステップと、 分割ステップから生じる第2のブロックにより前記要求
    を満足するステップとを含む、請求項12記載のプログ
    ラム記憶装置。
  16. 【請求項16】分割される少なくとも1つのブロック
    が、前記要求サイズよりも大きい、見いだされる最小の
    ブロックである、請求項15記載のプログラム記憶装
    置。
  17. 【請求項17】前記複数セットが最大ブロックのセット
    を含み、前記第1のしきい値が、前記最大ブロックのセ
    ットに対して許可される最小ブロック・サイズよりも大
    きいか等しく、前記要求を満足する最大ブロックのセッ
    トを探索するステップを含む、請求項12記載のプログ
    ラム記憶装置。
  18. 【請求項18】前記探索ステップが、リストを含むセッ
    トを探索するステップを含み、前記リストが前記セット
    のメモリ・ブロック割当て情報を含む、請求項12記載
    のプログラム記憶装置。
  19. 【請求項19】前記第1及び第2のしきい値の少なくと
    も1つを動的に調整して、性能を動的に調整するステッ
    プを含む、請求項12記載のプログラム記憶装置。
  20. 【請求項20】メモリの連続ブロックを維持するステッ
    プと、 前記要求サイズにもとづき、フリー・ブロックのセット
    を選択するステップと、 前記フリー・ブロックのセットが空でないことに応じ
    て、前記セット内で突き止められる最初のブロックの少
    なくとも一部を割当てるステップと、 前記セットが空であることに応じて、前記要求をメモリ
    の前記連続ブロックから満足するステップとを含む、請
    求項12記載のプログラム記憶装置。
  21. 【請求項21】第1のポインタ位置として、ポインタを
    前記連続ブロックを指し示すように維持するステップ
    と、 所与のサイズの記憶域に対する要求に応じて、前記ポイ
    ンタを所与のサイズ増分して、第2のポインタ位置を指
    し示すステップと、 前記第1のポインタ位置から始まる前記連続ブロックの
    一部を用いて、前記要求を満足するステップとを含む、
    請求項20記載のプログラム記憶装置。
  22. 【請求項22】割当てられたブロックを、当該ブロック
    のサイズにもとづき、フリー・ブロックの新たなセット
    に割当て解除するステップを含む、請求項12記載のプ
    ログラム記憶装置。
  23. 【請求項23】連続する永続的メモリのブロックを管理
    する方法であって、 メモリの第1のブロック内の最初のフリー・バイトを決
    定する第1のポインタを主メモリ内に保持するステップ
    と、 複数のブロックに対する、少なくとも1コード・バイト
    を含むヘッダを永続的記憶域内に保持するステップと、 第2のブロックに対して、第2のブロックがもはや第1
    のブロックの一部でないことを示す少なくとも1コード
    ・バイトをセットし、前記主メモリ内の前記第1のポイ
    ンタを更新することにより、前記第1のブロックから前
    記第2のブロックを割当てるステップとを含む方法。
  24. 【請求項24】ブロックbを前記第1のブロックに追加
    するステップを含み、前記追加ステップが、 bに対応するコード・バイトを、bが前記第1のブロッ
    クの一部であることを示すように変更するステップと、 前記主メモリ内の前記第1のポインタを更新するステッ
    プとを含む、請求項23記載の方法。
  25. 【請求項25】前記少なくとも1コード・バイトが、前
    記第2のブロックがもはや前記第1のブロックの一部で
    ないことを示す以外に、他の機能にも作用する、請求項
    23記載の方法。
  26. 【請求項26】前記主メモリ内の前記第1のポインタの
    値にもとづき、前記永続的メモリ内の第2のポインタを
    周期的に更新するステップを含む、請求項23記載の方
    法。
  27. 【請求項27】システム障害に応答して、前記少なくと
    も1コード・バイトを調査することにより、前記第1及
    び第2のポインタを更新するステップを含む、請求項2
    6記載の方法。
  28. 【請求項28】前記ヘッダが単一ブロック書込みを用い
    て初期化される、請求項23記載の方法。
  29. 【請求項29】連続する永続的メモリのブロックを管理
    する方法を実行する、マシンにより実行可能な命令のプ
    ログラムを有する、マシンにより読取り可能なプログラ
    ム記憶装置であって、前記方法が、 メモリの第1のブロック内の最初のフリー・バイトを決
    定する第1のポインタを主メモリ内に保持するステップ
    と、 複数のブロックに対する、少なくとも1コード・バイト
    を含むヘッダを永続的記憶域内に保持するステップと、 第2のブロックに対して、第2のブロックがもはや第1
    のブロックの一部でないことを示す少なくとも1コード
    ・バイトをセットし、前記主メモリ内の前記第1のポイ
    ンタを更新することにより、前記第1のブロックから前
    記第2のブロックを割当てるステップとを含むプログラ
    ム記憶装置
  30. 【請求項30】ブロックbを前記第1のブロックに追加
    するステップを含み、前記追加ステップが、 bに対応するコード・バイトを、bが前記第1のブロッ
    クの一部であることを示すように変更するステップと、 前記主メモリ内の前記第1のポインタを更新するステッ
    プとを含む、請求項29記載のプログラム記憶装置。
  31. 【請求項31】前記少なくとも1コード・バイトが、前
    記第2のブロックがもはや前記第1のブロックの一部で
    ないことを示す以外に、他の機能にも作用する、請求項
    29記載のプログラム記憶装置。
  32. 【請求項32】前記主メモリ内の前記第1のポインタの
    値にもとづき、前記永続的メモリ内の第2のポインタを
    周期的に更新するステップを含む、請求項29記載のプ
    ログラム記憶装置。
  33. 【請求項33】システム障害に応答して、前記少なくと
    も1コード・バイトを調査することにより、前記第1及
    び第2のポインタを更新するステップを含む、請求項3
    2記載のプログラム記憶装置。
  34. 【請求項34】前記ヘッダが単一ブロック書込みを用い
    て初期化される、請求項29記載のプログラム記憶装
    置。
  35. 【請求項35】永久記憶域内の隣接するフリー・ブロッ
    クを合体する方法であって、 ブロックのサイズ及び割当て状況を示すヘッダを、各ブ
    ロックに対して保持するステップと、 ヘッダ情報を調査して、隣接フリー・ブロックを結合す
    ることにより、フリー・ブロックを合体するステップ
    と、 達成される合体のレベルを示す情報を前記永久記憶域内
    に周期的に記憶するステップとを含む方法。
  36. 【請求項36】請求項35記載の方法を実行する、マシ
    ンにより実行可能な命令のプログラムを有する、マシン
    により読取り可能なプログラム記憶装置。
  37. 【請求項37】合体の間のシステム障害に応答して、前
    記永久記憶域内の情報を読出し、システム障害の前に達
    成された合体のレベルを決定するステップと、 前記永久記憶域内の情報にもとづき、ある時点で合体を
    再開するステップとを含む、請求項35記載の方法。
  38. 【請求項38】請求項37記載の方法を実行する、マシ
    ンにより実行可能な命令のプログラムを有する、マシン
    により読取り可能なプログラム記憶装置。
JP2001032286A 2000-02-15 2001-02-08 永続的且つロバストな記憶割当てシステム及び方法 Expired - Fee Related JP3611305B2 (ja)

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 true JP2001249844A (ja) 2001-09-14
JP3611305B2 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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007249708A (ja) * 2006-03-16 2007-09-27 Fujitsu Ltd メモリ領域割り当て制御装置、メモリ領域割り当て制御プログラム、及びメモリ領域割り当て制御方法
JP2012198811A (ja) * 2011-03-22 2012-10-18 Toshiba Corp メモリシステム、不揮発性記憶装置及びその制御方法
JP2014059889A (ja) * 2013-10-29 2014-04-03 Toshiba Corp メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法およびプログラム

Families Citing this family (91)

* Cited by examiner, † Cited by third party
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 주식회사 퓨전소프트 임베디드 시스템에서의 효율적인 동적 메모리 관리방법 및그 시스템
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
US7647466B1 (en) 2006-09-28 2010-01-12 Emc Corporation Linear space allocation mechanisms in data space
US7756831B1 (en) 2006-09-28 2010-07-13 Emc Corporation Cooperative locking between multiple independent owners of data space
US7526623B1 (en) * 2006-09-28 2009-04-28 Emc Corporation Optimizing reclamation of data space
US8862639B1 (en) 2006-09-28 2014-10-14 Emc Corporation Locking allocated 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
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
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
US10579276B2 (en) 2017-09-13 2020-03-03 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
US10430105B2 (en) 2017-09-13 2019-10-01 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
US10782887B2 (en) 2017-11-08 2020-09-22 Robin Systems, Inc. Window-based prority tagging of IOPs in a distributed storage system
US10846001B2 (en) 2017-11-08 2020-11-24 Robin Systems, Inc. Allocating storage requirements in a distributed storage system
US10430292B2 (en) 2017-12-19 2019-10-01 Robin Systems, Inc. Snapshot deletion 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
US10430110B2 (en) 2017-12-19 2019-10-01 Robin Systems, Inc. Implementing a hybrid storage node in a distributed storage system
US11099937B2 (en) 2018-01-11 2021-08-24 Robin Systems, Inc. Implementing clone snapshots in a distributed storage system
US10642697B2 (en) 2018-01-11 2020-05-05 Robin Systems, Inc. Implementing containers for a stateful application in a distributed computing system
US10628235B2 (en) 2018-01-11 2020-04-21 Robin Systems, Inc. Accessing log files of a distributed computing system using a simulated file 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
US11582168B2 (en) 2018-01-11 2023-02-14 Robin Systems, Inc. Fenced clone applications
US11392363B2 (en) 2018-01-11 2022-07-19 Robin Systems, Inc. Implementing application entrypoints with containers of a bundled application
US10846137B2 (en) 2018-01-12 2020-11-24 Robin Systems, Inc. Dynamic adjustment of application resources in a distributed computing system
US10845997B2 (en) 2018-01-12 2020-11-24 Robin Systems, Inc. Job manager for deploying a bundled application
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
JP7067270B2 (ja) * 2018-05-25 2022-05-16 富士通株式会社 情報処理装置,ロードプログラムおよびロード方法
US10976938B2 (en) 2018-07-30 2021-04-13 Robin Systems, Inc. Block map cache
US11023328B2 (en) 2018-07-30 2021-06-01 Robin Systems, Inc. Redo log for append only storage scheme
US10817380B2 (en) 2018-07-31 2020-10-27 Robin Systems, Inc. Implementing affinity and anti-affinity constraints in a bundled application
US10599622B2 (en) 2018-07-31 2020-03-24 Robin Systems, Inc. Implementing storage volumes over multiple tiers
US11036439B2 (en) 2018-10-22 2021-06-15 Robin Systems, Inc. Automated management of bundled applications
US10908848B2 (en) 2018-10-22 2021-02-02 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
US11520650B2 (en) 2019-09-05 2022-12-06 Robin Systems, Inc. Performing root cause analysis in a multi-role application
US11249851B2 (en) 2019-09-05 2022-02-15 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US11113158B2 (en) 2019-10-04 2021-09-07 Robin Systems, Inc. Rolling back kubernetes applications
US11347684B2 (en) 2019-10-04 2022-05-31 Robin Systems, Inc. Rolling back KUBERNETES applications including custom resources
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)

* Cited by examiner, † Cited by third party
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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007249708A (ja) * 2006-03-16 2007-09-27 Fujitsu Ltd メモリ領域割り当て制御装置、メモリ領域割り当て制御プログラム、及びメモリ領域割り当て制御方法
JP2012198811A (ja) * 2011-03-22 2012-10-18 Toshiba Corp メモリシステム、不揮発性記憶装置及びその制御方法
JP2014059889A (ja) * 2013-10-29 2014-04-03 Toshiba Corp メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法およびプログラム

Also Published As

Publication number Publication date
US20080040570A1 (en) 2008-02-14
US20030028740A1 (en) 2003-02-06
CN100353338C (zh) 2007-12-05
JP3611305B2 (ja) 2005-01-19
CN1598788A (zh) 2005-03-23
US6643754B1 (en) 2003-11-04
KR100390616B1 (ko) 2003-07-07
US7870359B2 (en) 2011-01-11
SG96595A1 (en) 2003-06-16
US6851034B2 (en) 2005-02-01
US7308606B2 (en) 2007-12-11
US20050055526A1 (en) 2005-03-10
KR20010082032A (ko) 2001-08-29
JP2004206733A (ja) 2004-07-22
CN1309354A (zh) 2001-08-22
CN1195273C (zh) 2005-03-30
JP4175568B2 (ja) 2008-11-05
CA2332097A1 (en) 2001-08-15

Similar Documents

Publication Publication Date Title
JP3611305B2 (ja) 永続的且つロバストな記憶割当てシステム及び方法
JP3771803B2 (ja) 永続的且つロバストなメモリ管理のためのシステム及び方法
US20200249848A1 (en) Memory allocation buffer for reduction of heap fragmentation
US7886124B2 (en) Method and mechanism for implementing dynamic space management for large objects
US7720892B1 (en) Bulk updates and tape synchronization
US7640262B1 (en) Positional allocation
US8024507B2 (en) Transaction-safe FAT file system improvements
US7035881B2 (en) Organization of read-write snapshot copies in a data storage system
US7673099B1 (en) Affinity caching
US7930559B1 (en) Decoupled data stream and access structures
US6651075B1 (en) Support for multiple temporal snapshots of same volume
US10725903B2 (en) Unified paging scheme for dense and sparse translation tables on flash storage systems
US20140351552A1 (en) Working set swapping using a sequentially ordered swap file
US11797207B2 (en) Base and compressed difference data deduplication
KR100907477B1 (ko) 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법
US5678024A (en) Method and system for dynamic performance resource management within a computer based system
CN106294189B (zh) 内存碎片整理方法及装置
US6851021B2 (en) Methods and systems for efficiently managing persistent storage
CN114490443A (zh) 一种基于共享内存的golang进程内缓存方法
EP1126373A2 (en) Storage allocation system and method
Deese Analyzing DB2 Data Sharing Performance Problems

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