JP2001504971A - データ・ブロックを圧縮するメモリ管理 - Google Patents

データ・ブロックを圧縮するメモリ管理

Info

Publication number
JP2001504971A
JP2001504971A JP51409599A JP51409599A JP2001504971A JP 2001504971 A JP2001504971 A JP 2001504971A JP 51409599 A JP51409599 A JP 51409599A JP 51409599 A JP51409599 A JP 51409599A JP 2001504971 A JP2001504971 A JP 2001504971A
Authority
JP
Japan
Prior art keywords
block
data
blocks
memory
free
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.)
Ceased
Application number
JP51409599A
Other languages
English (en)
Inventor
リチャード ジェームス ホウルスワース
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Philips Electronics NV
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 Philips Electronics NV filed Critical Philips Electronics NV
Publication of JP2001504971A publication Critical patent/JP2001504971A/ja
Ceased 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
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • 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
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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
    • Y10S707/99957Garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 固定サイズ・システム・メモリで空きブロックが点在するデータ・ブロックの形態に格納されているデータを管理する方法と装置が提供される。定期的にメモリに適用される圧縮手順は、メモリ内での空きブロックの連続性の程度を増加させるように、移動可能と識別されたデータ・ブロック(107)を、再配置する。再配置されたデータ・ブロックを保持するための適切な空きブロック(114-117)のサーチは、順次、各データ・ブロックに適用される。空きブロックが、データ・ブロック・サイズに等しいかそれより大である場合、そして元のデータ・ブロックの位置に隣接する如何なる空きブロックのサイズに加えられるときに、データ・ブロックのサイズより小さいかそれに等しい場合、そのデータ・ブロックは、空きブロックに移動される(118)。

Description

【発明の詳細な説明】 データ・ブロックを圧縮するメモリ管理 技術分野 本発明は、格納されたデータを扱う方法および装置、そして特に、しかしこれ らには限定されないが、データ処理装置の実/仮想メモリ空間のガーベッジ・コ レクション(ゴミ集め)間のメモリ圧縮に関する。 背景技術 ガーべッジ・コレクションとは、プログラムによるその最後の使用後にシステ ムメモリ空間を自動的に再利用することである。ガーベッジ・コレクション技法 の多くの例が、R.ジョーンズ他著、John Wiley & Sons社1996年刊(ISBN0-471- 94148-4)、第1〜18頁の「ガーベッジ・コレクション:自動ダイナミックメモリ 管理のアルゴリズム」と、P.R.ウィルソンが、1992年9月にフランス、St.Malo で開催された、メモリ管理の1992年国際ワークショップ会報(Proceedings of t he 1992 International Workshop on Memeory Management)に発表した「ユニ・ プロセッサ・ガーベッジ・コレクション技法」とで、議論されている。メモリ割 当と再生とがプログラマまたはコンパイラによって扱われる多くの計算機プログ ラムの格納必要要件は、単純で、かつ予測可能である。特定のデータ構造のライ フタイムを、実行前に決定することはもはやできなくなっているので、プログラ ムの実行時に、この格納を自動的に再利用することを必須とする、より複雑な実 行パターンを有する言語が必要になって来ている。 上記ウィルソンの参考文献に記載されている注目すべきガーベッジ・コレクシ ョン/メモリ再利用技法は、マーク圧縮コレクションである。多くのガーベッジ ・コレクション技法には、二段階手順が広く採用されている。その名前が示すよ うに、まず、データ・オブジェクトにリンクするポインタによりパスをトレース することによって到達可能な格納されている全てのオブジェクトをマークし、 次ぎに、メモリを圧縮する、すなわち、冗長なオブジェクトのみを含む空間(次 いで、これは再利用される)を残し、メモリ内に格納されているマークされたオ ブジェクトをメモリの隣接領域に移動させる。 システムメモリのフラグメント化は、ゴミ集めが行われるメモリシステムには 特に深刻な問題である。全てのメモリブロックが移動可能なマーク圧縮コレクシ ョンのようなメモリ圧縮の方法は、よく知られている。しかしながら、任意の形 態でインターリーブさせた、さまざまな固定データと移動可能なデータが、存在 する状況は、問題の発生原因となる。 移動出来ないブロックが存在する環境で従来のデフラグメンテーション技法を 適用すると、メモリが部分的に断片化された状態、すなわち、複数の空きメモリ が点在する満たされたメモリブロックの整理されたグループからなる状態、が残 ってしまう。これは、アロケータ(番地をメモリブロックに割り当てるシステム ・ファンクション)が、部分的に断片化されたメモリに対処するように設計され なければならない結果をもたらす。また、全体的なモニタリングと制御機能とは 、デフラグメンテーションにより、実際に圧縮前より有益なメモリ構成が確実に 得られるように、適用されなければならない。メモリ割り当てパターンは、任意 でかつ予測不可能であるので、割り当てようとする特定のサイズにメモリ構成が 適合しているか否かを、割り当てを実際に行う前に、知ることはできない。 発明の開示 本発明の目的は、格納されたいくつかのメモリ・ブロックを各格納された位置 から移動不可能とすることにより、システムに課された制約に対処することが出 来る、ランダム・アクセス・メモリにおける動的番地割当ての方法を提供するこ とである。 別の目的は、このような方法をデータの格納処理に実施するデータ処理装置を 提供することである。 本発明は、固定サイズ・メモリ内で空きブロックが点在するデータ・ブロック の形態で格納されたデータの管理方法であって、圧縮手順が定期的に適用され、 その間に前記メモリ内の空きブロックの連続性の程度を増加させるように、前記 データ・ブロックを移動させるデータの管理方法において、前記データ・ブロッ クのいくつかは、メモリ位置内に固定されていてかつ前記圧縮手順により移動さ れず、そして残りのブロックは、空きブロックの位置がそのブロックに対し利用 可能であるか否かを決定するために順番にテストされ、ある空きブロックが、前 記データ・ブロック・サイズに等しいかまたはそれより大で、かつ前記元のデー タ・ブロックの位置に隣接する如何なる空きブロックのサイズに加えられても、 前記データ・ブロックのサイズに等しいかまたはそれより小である場合、そのデ ータ・ブロックは、空きブロックに移動されることを特徴とする、格納されたデ ータの管理方法を提供する。 この移動条件は、データ・ブロックを移動させるための適切な位置を相対的に 即座に決定することを可能にする。圧縮手順を最適化せずに、この方法は、適切 な空きブロックを識別するサーチ処理に過度の負荷を加えることなく圧縮の効率 を改良することができる。 既に「最も適切な」位置にあるブロックが不必要に移動してしまうのを防ぐた めに、空きブロックに全く隣接していないデータ・ブロックは、何れも、メモリ 位置内では固定されたものとして適切に扱われる。上述した方法は、さらに、デ ータ・ブロックの移動に続いて、新しいデータ・ブロック位置に先行するブロッ クが、空きブロックであるか否かを決定し、そして、もし空きブロックである場 合には、データ・ブロックを先行する空きブロックの位置まで下に移動させる、 ステップを有していても良い。後述されるように、当該先行する空きブロックが 当該データ・ブロックより小の場合には、データ・ブロックは、先行する空きブ ロックの位置まで移動されないことが望ましいが、スライディング圧縮のこの使 用は、小さい空間が出現することを減少させることが出来る。 本発明は、空きブロックが点在する複数のデータ・オブジェクトを含むランダ ム・アクセス・メモリに結合されたデータ・プロセッサを有するデータ処理装置 であって、各当該データ・オブジェクトと空きブロックとが前記メモリ内で各々 既知の位置に在り、圧縮手順を定期的に適用させ、その間に空きブロックの連続 性の程度を増加させるように、前記データ・ブロックの少なくともいくつかが前 記メモリ内に再配置されるように構成されているデータ処理装置において、前記 データ・ブロックのいくつかがメモリ位置内に固定されていて、前記装置が、固 定されたブロックを識別しかつそれらを前記圧縮手順から排除するすることが出 来る手段と、前記残りのデータ・ブロックの各々に対し、空きブロックの位置が 、全体的な分布を改良するためにそのブロックに対し利用可能であるか否かを、 決定するように構成されているサーチ手段とを有し、前記空きブロックが、前記 データ・ブロック・サイズに等しいかまたはそれより大で、かつ前記元のデータ ・ブロックの位置に隣接する如何なる空きブロックのサイズに加えられても、前 記データ・ブロックのサイズ以下である場合、当該サーチ手段が、データ・ブロ ックを空きブロックに移動させることを特徴とするデータ処理装置を提供する。 空きブロックメモリには、ランダム・アクセス・メモリ内の空きブロックの各 サイズに対し、少なくとも1個の空きブロックのランダム・アクセス・メモリの アドレスを保持するサーチ手段を設けても良い。そのような場合、共通のサイズ のすべての空きブロックのアドレスを、空きブロックメモリ内にリンクされたリ ストとして格納しても良い。リンクされたリストのエントリは、リスト・ヘッダ を形成する最も低いランダム・アクセス・メモリのアドレスから最も高いアドレ スの順に適切に格納される。この後者の構成により、選択されたサイズの空きブ ロックを識別するために、そのツリー構造を調査するように構成されているサー チ手段を用いて、リスト・ヘッダを、バイナリ・ツリー構造のノードとして空き ブロックのメモリ内で参照することが出来る。必要なツリー調査の程度を減少さ せるために、空きブロックのメモリは、各々が、空きブロック・サイズの異なっ た範囲を参照する複数の当該バイナリ・ツリー構造と、各バイナリ・ツリーのヘ ッダ・ノードの当該空きブロックのメモリの位置を識別するヘッダ・アレイとを 有していても良い。本発明の他の特徴と利点は、上述した請求項以外の請求項に 記載されているか、または以下の実施例の説明から明らかになるであろう。 図面の簡単な説明 本発明を、以下に、添付の図面を参照して具体例により説明する。 第1図は、本発明を実施するために適切なデータ処理システムのブロック・ダ イヤグラムである。 第2図は、移動可能なデータのブロックと移動不可能なデータのブロックの両 方を含むメモリの隣接セクションを表す。 第3図は、第2図のブロックのような空きメモリ・ブロックを参照する管理さ れたバイナリ・ツリーの一部を示す。 第4図は、本発明を実施する圧縮手順をフローチャートで表したものである。 発明を実施するための最良の形態 第1図は、例えば、バーチャル環境を定義するデータのブラウザとしてシステ ムを構成する、多くのソフトウェア・ユーティリティのホストとして機能するパ ーソナル・コンピュータのようなデータ処理システムを表す。このシステムは、 アドレス・データバス12を介してランダムアクセスメモリ(RAM)14と読み出し専 用メモリ(ROM)16とに結合されている中央処理装置(CPU)10を有する。これらのメ モリは、1または数個の集積回路装置により構成しても良いし、またCD-ROMのよ うな追加(リムーバブル)メモリ素子の読み込み手段とシステムのハードディスク により、容量を拡張しても良い。本発明は、特に、CPU10の制御の下でのRAM14の 動作範囲のメモリ管理について実施される。このための制御プログラムは、初め 、ROM16に保持させ、パワーアップ時にオペレーティングシステムにロードさせ ても良い。 また、キーボードおよびマウスまたはトラックボールのようなカーソル制御装 置および選択装置を適切に有していても良い第一および第二ユーザ入力装置18、 20も、バス12を介してCPU10に結合されている。システムからのオーディオ出力 は、オーディオ処理ステージ24により駆動される1個または複数のスピーカ22に 与えられる。システムからのビデオ出力は、CPU10の制御の下にディスプレイ・ ドライバ・ステージ28によって駆動されるディスプレイ・スクリーン26に与えら れる。 システムの別のデータ・ソースは、バス12に結合されていて、このシステムの 端に設けられているネットワーク・インタフェース30に結合されている、例えば 、インターネットのような、オンライン・リンクを介した離れたサイトである。 例えば、システムが個人のホームユーザ向けの場合、データ・リンクはロー カル・サービス・プロバイダへの電話接続となる可能性が高いと言うように、イ ンタフェースの構成は、システムが結合されるデータ・ネットワークのタイプに 依存するが、インタフェースの正確な構成は本発明の不可欠の特徴ではない。そ のような場合、インタフェース30には適切にモデムが組み込まれているであろう 。ISDN接続のようなデータリンクの別のタイプの場合、インタフェースはそれに 適合するように構成されるであろう。 RAM14内の番地の割り当てにおける解決すべき問題は、第2図に線図的に示さ れている。第2図は、空きメモリのブロックが点在する、移動可能なデータのブ ロック(B1、B2、B3)と移動不可能なデータのブロック(U1、U2)との両方を含むメ モリの隣接領域を表す。ここで、ポインタP1〜P4は、各空きブロックの始まりを 示す。空きメモリは、未使用か、または、そのファンクションが既に終了し、か つ冗長として識別された(すなわち、それは安全に上書きすることができる)デー タである。以下の説明では、メモリの隣接領域はブロックに対し線形にスキャン することができることを前提としている。これにより、各オブジェクト内での長 さ領域、または次のオブジェクトが始動する位置を示すいくつかの他の手段が規 定される。しかしながら、本発明は、線形スキャンメモリに制限されず、格納さ れているデータ・オブジェクトの相対位置とタイプが決定可能である限り、他の 構成も可能であると言う点は、理解されるであろう。 圧縮の目的は、割り当て要求の最大数を満たすように、最も良い方法で空き空 間が配置されるようにB1、B2およびB3を移動させることである。望ましい空き空 間配置では、空きブロックの数が最小で、空きブロックのサイズが最大である。 (演算上のフレクシビィリティの観点からみて)最も良い構成は、単一の空きブロ ックをもつことであるが、後に理解されるように、固定ブロックが存在すること は、空きブロックが複数存在しなければならないことを意味する。 この具体例の場合、ブロックB3をブロック空間P3に移動させることにより、空 間P3とP4が合体され、これにより、結合した空き空間が、より多くの割り当て要 求を満足させることができるようになるので、状況が改善される。しかしながら 、もし、ブロックB3がスペースP1またはP2にうまくはめ込まれるならば、スペー スP3およびP4は合体されるが、スペースP1またはP2のサイ ズは、より小さなサイズ(すなわち、それらの元のサイズからブロックB3のサイ ズを引いたもの)になり、これは、その後の割り当てには役に立たない。ブロッ クB2を空間P2に移動しても全く状況は変化せず、そして空間P1、P3またはP4への 移動は、他のブロックを等しく減少させて空間P2を増大させる。この移動は、ブ ロックB2が空きブロックと完全に一致する場合のみ、価値がある。同じことは、 ブロックB1にも当てはまる。 圧縮手順は、システムCPU(第1図の10)の制御の下にリアルタイムで、システ ムの演算により行われる。この実施例の場合、システム・メモリ・マネージャが 使用する施錠システムが、アイテム(データ・ブロック)は、その時点では移動不 可能であることを示すが、手順の進行中にロックを入手して、ロックを外すこと は可能である。分析はすぐに無効になるので、単一のポイントでどれが固定ブロ ックであるかを決定するシステム分析をすることはできない。 望ましい実施例の場合、メモリ管理システムは、空きブロックは大きい方が望 ましく、かつ可能であればどこにおいてもそれらを得るべきであるとの条件を前 提にしている。候補ブロックをメモリ内の他の場所に移動させることにより発生 するであろう空間(ソース)は、以下の条件により与えられる: ソース=前のブロックのサイズ(空の場合) +候補ブロックのサイズ +次のブロックのサイズ(空の場合) 移動先における空きブロックのサイズがこの量より小であるならば、移動は効 果がある。一般に、正確に一致しないものを拒絶することは非生産的であるので 、移動先に空きメモリの小さい領域が残ることは、実際のシステムでは避けられ ないが、理想的には、空き空間のフラグメントが除去されるように、移動先のブ ロックサイズは、移動可能なブロックのサイズに等しくなるべきである。完全移 動が満たされる条件は、次のように書ける。: ブロックのサイズ≦移動先のサイズ≦ソースのサイズ この式は、正確に一致する場所が他にあるならば、2つの使用されている他の ブロックにより挟まれたブロックは移動することが出来る可能性(これは、何の 利益も得られないので、有益な移動ではないが)をもたらすことは、理解される であろう。この状況を回避するには、(前が、空である)または(次が、空である) 条件を完全移動の条件に加えることである。つまり、その条件は、次のようにな る: ブロック・サイズ≦移動先サイズ<ソース・サイズ このシステムは、空きブロックとそれらのサイズを即座に識別するためのメカ ニズムが必要であるので、その一部として、所定の時点で利用可能な空きブロッ クのあらゆるサイズの「空き」リストを保持している。適切なサイズでかつ最も 低いアドレスを有する空きブロックを識別するために、ほとんどの演算は、各リ ストのヘッドのみにアクセスするであろう。これらのリストは、第3図で示され るように、平衡バイナリ・ツリー構造を介してアクセスされる。バイナリ・ツリ ーの先頭のいくつかのレベルを除去するために、2の各累乗の間の大きさに分け られているデータ・ブロックに対し別々のツリーがある。簡単化のために、サイ ズ2バイトのオブジェクトに対してリンクされたリストと共に、9-16バイトの範 囲のブロックのツリーのみが図示されている。完全なバイナリ・ツリーが最も低 いレベル以外で発生することはほとんどあり得ないので、ノードは、メモリ内で そのサイズの1個または複数の空き空間ブロックがある場所のみに含まれる。従 って、ツリーのヘッドを形成するノードは、トップレベルアレイ40から、直接、 アクセスされる。大きい空きブロックに対するツリーのより高い潜在的サイズは 、形成されるより大きい空きブロックのより小さな数だけ少なくとも部分的に相 殺されるだろうとの理由から、特定の構成(2の累乗による分割)が選ばれる。 アレイ40を、0-1、2-2、3-4、5-8等の要素範囲を与える、範囲2(n-1)<X≦2n で分割された要素で示されるように構成しても良い。これに代えて、2(n-1)≦ X<2nによって分割を行っても良い(この場合、要素範囲は、0-0、1-1、2-3、4- 7、8-15等となる)。この後者の構成は、範囲を識別する第一ビットによるサーチ が容易になると言う点から好ましい。 サイズ14バイトの空きブロックを表すノード42Aに示されるように、空きブロ ックは、(42A、B、C、および44A、B、C、Dで示されるように)同じサイズのブロ ックの二重にリンクされているリスト内のアイテム、またはツリー内のノードで ある。ノード(42A、44A)は、リストのヘッドであり、リスト内の次のアイテムへ のポインタ46と、親のノード(ノード42Aの場合、サイズ12バイトの空きブロック を表すノード)へのポインタと、このノードより1つ大きい、および1つ小さい 子供ノード(ブロック・サイズ13および16バイトを表すノード)へのポインタとを 含む。第3図には、簡単化のため、ノード42Aと、リスト42Bおよび42Cのみが、 示されている。この完全に連結されたシステムにより、高価なリストのサーチが 確実に不必要となる。 2バイトのノードに対してノード44Aからリンクされているリストは、4語よ り短いブロックに対するオーバヘッドに起因する問題に対する1つの可能な解決 策を示す。図示されるように、より小さいブロックが、2語境界に位置合わせさ れている。これは、小さいアイテムが埋め込まれるので4語境界に位置合わせす ること程無駄ではないが、やはり、無駄である。空きリスト構造から短いアイテ ムを除いて、1語境界に位置合わせすること、およびスライディング圧縮(以下 に、説明される)に依存することは、改良とはなるが、そのような状況はまれに しか起こらないであろう。 コンパクタが、現在のブロックに対する適切な位置を見出そうとする場合、最 初に、ツリーの適切なセクションが、アレイ40により決定される。範囲内のどの ブロックも、一般に、許容可能であり、かつ完全サーチが常に必要である訳では ないが、そのセクションは、次いで、例えば、サイズの下限から上限に、調査さ れる。メモリに新しいブロックを追加するアロケータも、最も良い一致を見つけ るために、要求されたサイズから上方向にサーチを行う。アロケータは、各リス トの先頭のノードにアクセスしさえすれば良いが、圧縮プロセスは、空きリスト のサブ組織を調整する。第3図の例の場合、圧縮プロセスにより、リスト・ アイテム42Bによって参照されるブロックが除去されることになるかもしれない 。このブロックを除去する際に、コンパクタは、ブロック42Aと42Cからのポイン タを除去し、これらのブロックからのポインタを互いに設定し、リストの中の第 一エントリと第二エントリの現在の内容の間に二重リンクを復元させる。空きリ ストの構造は、常に一貫して維持されるので、圧縮と割り当てが同時に行われる ことを防ぐことによって、タスク間の完全な同時実行が可能となる。コンパクタ は、合体および移動処理の間、リストからオブジェクトを除去するであろう。ツ リーサーチは、新しいサイズの空きブロックを挿入することが必要であるときの み行われる。 圧縮の間に使用される手順が、第4図のフローチャートに示されていて、これ は、メモリ内の(最も低いアドレスを有する)第一ブロックに対して101から始 まる。繰り返し手順の第一演算(102におけるこのブロックから前のブロックへの ポインタの格納)は、この先頭ブロックに対しては、省略される。次いで、ステ ップ103のテストで、ブロックが空きブロックであるか否かが決定される。ブロ ックが空である場合には、別のテスト104が、次のブロックが空であるか否かを 決定し、もしそれが空である場合には、2個のブロックを単一のより大きいブロ ックに合体させる(105)。2つのブロックを合体させた後、あとに続く次の(新し い)ブロックが空であるか否かのテスト(104)と合体(105)が、使用中のブロック に遭遇するまで、繰り返される。繰り返し手順(圧縮ループ)は、新たに選択され たブロックから次のブロックへのポインタを格納するステップ102を処理する前 に、106で、メモリ内の次のブロックの選択について判断する。空きブロックの 合体が、必ずしも厳密に圧縮手順に連動しないことは、理解されるであろう。こ の代りに、アロケータメカニズムによりまたはガーベッジ・コレクションメカニ ズムの一部として制御しても良い。圧縮の間、合体が、偶然にまたは実際にトリ ガされない場合、第4図のステージ104と105は省略することが出来、103での「 ブロックは空か?」というテストに対する肯定的な結果が、106で次のブロック を直接選択させる。 ステップ103のテストが、ブロックが空ではないと決定した場合、繰り返し手 順は、ブロックが可動であるかまたは固定されているを決定するステップ107 に進む。ブロックが可動でない場合、繰り返し手順は、106で、次のブロックの 選択を判断する。ブロックが可動であると識別された場合、108で、ソース・ブ ロックのサイズが、初めに、検討中のブロックのサイズに設定され、次いで、前 のブロックが空であるか否かがチェックされ(109)、空である場合、110で、ソー ス・ブロックのサイズを、初期のブロック・サイズから前のブロックのサイズ分 増大させる。前のブロックのテスト(およびブロックが空である場合、ソースの 拡大)に続いて、111で、同様のテストが、次のブロックに対して実行される。 次のブロックが空の場合、112で、ソースのブロック・サイズはその次のブロッ ク・サイズ分増大する。 次のブロックと前のブロックが空であるか否かのテストの後(もし空であれば 、そのソースは拡大される)、113で、ソースのブロック・サイズが、元のブロッ ク・サイズに等しいか否かについての別のテストが行われる。もし等しい場合に は、前のブロックも次のブロックも空ではないので、その現在の位置からブロッ クを移動させることは、意味が無く、そして検討中のブロックと正確にサイズが 同じ移動先ブロックが発見されない限り、レイアウトはその移動により悪化して しまうであろう。そのテストの結果、113におけるテストが、空でないブロック によってはさまれているブロックを決定すると、そのブロックは固定されたまま となり、かつ繰り返し手順は、再び、106での次のブロックの選択に移動する。 113におけるテストが、ソースのブロック・サイズが元のブロック・サイズよ り大であるであることを示すと、114で選択された第一空きリストにより、適切 な大きさの移動先ブロックの候補を探す空きリストのサーチが始まる。115で適 用される移動先ブロック候補に対する適合性のテストは、それが上述した完全な 移動条件を満たすか否かである: ブロック・サイズ≦移動先のサイズ<ソース・サイズ 空きリストのブロックが、上の条件を満たしていない場合、116で、空きリス トにさらにブロックが存在するか否かがチェックされる。もし、存在する場合に は、117で、リストの次のブロックが選択され、手順は、115での適合性テスト に復帰する。116でのテストが、空きリスト上にはもはやブロックが存在しない ことを示す場合には、検討中のブロックには適切な移動先ブロックは存在せず、 繰り返し手順は、ステップ106に進み、次の候補ブロックを選択する。しかしな がら、115での適合性テストが、上述の移動基準を満たす移動先を示す場合には 、検討中のブロックは、118で、移動先ブロックに移動され、空きリストの構成 の結果も更新される。 ブロックを移動させた後、119で、コンパクタは、移動された新しいブロック の前のブロックが空であるかどうかについてさらにチェックを行う。もし空の場 合、120で、ブロックを空きブロックによって与えられたスペースに下に移動さ せるスライディング・プロセスが、実行される。ここで、「下に」とは、最も低 いアドレスのメモリ内の第一ブロックに向かうことを意味する。空きブロックを より高いメモリ空間へ移動させかつデータを低いメモリ空間に移動させることは 、アプローチにおいて黙示的である。操作を適切にするには、下側のメモリのみ が、移動可能なメモリブロックを保持することが出来る空きブロックについて、 スキャンされる。119でのテスト(または実行された場合には120でのスライディ ング)に続いて、繰り返し手順は、106での次のブロックの選択により終了する。 異常を回避するために、コンパクタ・ループの各繰り返しは、前と、現在と、次 のアイテムが繰り返しの間にそれらの状態を変えない原子演算(atomic operatio n)である。 移動不可能なブロックを空きリストに載せる前に、空きブロックのみを配置す るので、スライディング圧縮の使用は、リファレンスの局所性を保ちかつ空きリ ストのサイズを減少させる。ステップ120で、移動が非オーバラッピングである ならば、ブロックはメモリ内で下に移動するのみである。つまり、前のブロック のサイズは、移動されるブロックのそれを超える。データへのアクセスが移動中 に(いくらかの余分なオーバヘッドで)起こり得るので、非重なり移動は、高度な インクリメンタル演算には潜在的に役に立つ。この制約条件は、ほとんどメモリ を解放しない小さい移動を防ぐ傾向があるであろう。 本出願では、主に、ソフトウェア駆動による具体例で実施例を説明したが、上 述した機能的な特徴は、ハードウェアでも、またハードウェアとソフトウェアの 組み合わせによっても同様に実現することができることは、当業者には、充分理 解されるであろう。 本発明の開示から、他の変形例も、当業者に取っては明らであろう。このよう な変形例は、データ処理装置および/又は記憶装置、およびそれらの構成部品の 設計、製造、および使用で既に知られていて、かつここで既に記述した特徴に代 えまたはそれに加えて使用されるかもしれない、他の特徴に関するものかもしれ ない。請求項は、この出願では、特徴の特定な組合せににより表されているが、 本発明の開示範囲は、ここで明示的に、または暗示的に開示された新規な特徴ま たはそれらの新規な組み合わせ、またはそれらの一般化された事項も、それが、 どの請求項で請求されている発明に関係しているか否かに拘わらず、そして、本 発明と同じ技術的な問題のすべてまたはいずれかを解決しているかどうかに拘わ らず、含むことは、理解されるべきである。本出願人は、新しい請求項が、その ような特徴および/またはそのような特徴の組み合わせについて、本出願または 本出願から派生した別の出願の審査過程において、将来、生成され得ることをこ こに述べておく。

Claims (1)

  1. 【特許請求の範囲】 1. 固定サイズ・メモリ内で空きブロックが点在するデータ・ブロックの形態 で格納されたデータの管理方法であって、圧縮手順が定期的に適用され、そ の間に前記メモリ内の空きブロックの連続性の程度を増加させるように、前 記データ・ブロックを移動させるデータの管理方法において、前記データ・ ブロックのいくつかは、メモリ位置内に固定されていてかつ前記圧縮手順に より移動されず、そして残りのブロックは、空きブロックの位置がそのブロ ックに対し利用可能であるか否かを決定するために順番にテストされ、ある 空きブロックが、前記データ・ブロック・サイズに等しいかまたはそれより 大で、かつ前記元のデータ・ブロックの位置に隣接する如何なる空きブロッ クのサイズに加えられても、前記データ・ブロックのサイズに等しいかまた はそれより小である場合、そのデータ・ブロックは、空きブロックに移動さ れることを特徴とする、格納されたデータの管理方法。 2. 少なくとも1個の空きブロックが隣接していない如何なるデータ・ブロッ クも、メモリ位置内で固定されているものとして扱う請求項1に記載の方法 。 3. データ・ブロックの移動後、前記新しいデータ・ブロック位置に先行する 前記ブロックが、空きブロックであるか否かを決定し、かつ空きブロックで ある場合には、前記データ・ブロックを下に前記先行空きブロックの位置ま で移動させるステップを、さらに、有する請求項1に記載の方法。 4. 当該先行空きブロックが、当該データ・ブロックより小である場合には、 データ・ブロックを先行空きブロックの位置まで下に移動させない請求項3 に記載の方法。 5. 空きブロックが点在する複数のデータ・オブジェクトを含むランダム・ア クセス・メモリに結合されたデータ・プロセッサを有するデータ処理装置で あって、各当該データ・オブジェクトと空きブロックとが前記メモリ内で各 々既知の位置に在り、圧縮手順を定期的に適用させ、その間に空き ブロックの連続性の程度を増加させるように、前記データ・ブロックの少な くともいくつかが前記メモリ内に再配置されるように構成されているデータ 処理装置において、前記データ・ブロックのいくつかがメモリ位置内に固定 されていて、前記装置が、固定されたブロックを識別しかつそれらを前記圧 縮手順から排除するすることが出来る手段と、前記残りのデータ・ブロック の各々に対し、空きブロックの位置が、全体的な分布を改良するためにその ブロックに対し利用可能であるか否かを、決定するように構成されているサ ーチ手段とを有し、前記空きブロックが、前記データ・ブロック・サイズに 等しいかまたはそれより大で、かつ前記元のデータ・ブロックの位置に隣接 する如何なる空きブロックのサイズに加えられても、前記データ・ブロック のサイズ以下である場合、当該サーチ手段が、データ・ブロックを空きブロ ックに移動させることを特徴とするデータ処理装置。 6. 前記サーチ手段に結合されていて、かつ前記ランダム・アクセス・メモリ 内の空きブロックの各サイズに対し、少なくとも1個の空きブロックのラン ダム・アクセス・メモリのアドレスを保持する、空きブロックメモリを有す る請求項5に記載の装置。 7. 共通のサイズのすべての空きブロックのアドレスを、前記空きブロックメ モリ内にリンクされたリストとして格納する請求項6に記載の装置。 8. 前記リンクされたリストのエントリが、前記リスト・ヘッダを形成する最 も低いランダム・アクセス・メモリのアドレスから最も高いアドレスの順に 格納されている請求項7に記載の装置。 9. 前記リスト・ヘッダが、バイナリ・ツリー構造のノードとして空きブロッ クのメモリ内で参照され、前記サーチ手段が、選択されたサイズの空きブロ ックを識別するために、当該ツリー構造を調査するように構成されている請 求項8に記載の装置。 10.前記空きブロックのメモリが、各々が、空きブロック・サイズの異なった 範囲を参照する複数の当該バイナリ・ツリー構造と、各バイナリ・ツリーの ヘッダ・ノードの当該空きブロックのメモリの位置を識別するヘッ ダ・アレイとを有している請求項9に記載の装置。
JP51409599A 1997-08-22 1998-07-16 データ・ブロックを圧縮するメモリ管理 Ceased JP2001504971A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB9717718.2 1997-08-22
GBGB9717718.2A GB9717718D0 (en) 1997-08-22 1997-08-22 Memory management with compaction of data blocks
PCT/IB1998/001088 WO1999010812A1 (en) 1997-08-22 1998-07-16 Memory management with compaction of data blocks

Publications (1)

Publication Number Publication Date
JP2001504971A true JP2001504971A (ja) 2001-04-10

Family

ID=10817823

Family Applications (1)

Application Number Title Priority Date Filing Date
JP51409599A Ceased JP2001504971A (ja) 1997-08-22 1998-07-16 データ・ブロックを圧縮するメモリ管理

Country Status (6)

Country Link
US (1) US6237072B1 (ja)
EP (1) EP0934564A1 (ja)
JP (1) JP2001504971A (ja)
KR (1) KR100528278B1 (ja)
GB (1) GB9717718D0 (ja)
WO (1) WO1999010812A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007531114A (ja) * 2004-03-26 2007-11-01 キョウセラ ワイヤレス コープ. メモリ割り当てのためのフックした複製値を有するバイナリサーチツリー

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6434714B1 (en) 1999-02-04 2002-08-13 Sun Microsystems, Inc. Methods, systems, and articles of manufacture for analyzing performance of application programs
US6378066B1 (en) 1999-02-04 2002-04-23 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications
US6934795B2 (en) * 1999-09-23 2005-08-23 Netlogic Microsystems, Inc. Content addressable memory with programmable word width and programmable priority
US7035989B1 (en) * 2000-02-16 2006-04-25 Sun Microsystems, Inc. Adaptive memory allocation
US6546359B1 (en) 2000-04-24 2003-04-08 Sun Microsystems, Inc. Method and apparatus for multiplexing hardware performance indicators
US6629227B1 (en) * 2000-05-04 2003-09-30 Scientific-Atlanta, Inc. System and method for a communication terminal to manage memory and maintain a current application version for multiple applications
US6877081B2 (en) * 2001-02-13 2005-04-05 International Business Machines Corporation System and method for managing memory compression transparent to an operating system
KR100451179B1 (ko) * 2001-11-24 2004-10-02 엘지전자 주식회사 휴대폰의 메모리 관리방법
WO2003085527A1 (fr) * 2002-04-09 2003-10-16 Matsushita Electric Industrial Co., Ltd. Systeme de notification d'arrivee de courrier et appareil de distribution de courrier
KR100503066B1 (ko) * 2002-09-14 2005-07-21 삼성전자주식회사 음악 파일 저장 및 재생 장치와 그 방법
TW200407704A (en) * 2002-11-13 2004-05-16 Mediatek Inc Memory data managing method and allocation thereof
US6907478B2 (en) * 2003-02-18 2005-06-14 Adaptec, Inc. Systems and methods optimizing data transfer throughput of a system on chip
WO2004083951A1 (en) * 2003-03-18 2004-09-30 Canon Kabushiki Kaisha Reflective electrophoretic display device with improved contrast
US7272698B2 (en) * 2003-03-19 2007-09-18 Autodesk, Inc. Heap memory management
US20060041938A1 (en) * 2004-08-20 2006-02-23 Axalto Inc. Method of supporting SSL/TLS protocols in a resource-constrained device
US7546588B2 (en) * 2004-09-09 2009-06-09 International Business Machines Corporation Self-optimizable code with code path selection and efficient memory allocation
EP1903442A1 (de) * 2006-09-21 2008-03-26 Siemens Aktiengesellschaft Verfahren zum Betrieb eines Automatisierungssystems
KR100791325B1 (ko) 2006-10-27 2008-01-03 삼성전자주식회사 비휘발성 메모리를 관리하는 장치 및 방법
US8200999B2 (en) * 2008-08-11 2012-06-12 International Business Machines Corporation Selective power reduction of memory hardware
DE102009036095A1 (de) * 2009-08-04 2011-02-10 Giesecke & Devrient Gmbh Verfahren zum Verwalten von Speicherressourcen in einem portablen Datenträger
US8275968B2 (en) * 2009-11-30 2012-09-25 Red Hat, Inc. Managing unallocated storage space using extents and bitmaps
US8521972B1 (en) 2010-06-30 2013-08-27 Western Digital Technologies, Inc. System and method for optimizing garbage collection in data storage
US9189392B1 (en) 2011-06-30 2015-11-17 Western Digital Technologies, Inc. Opportunistic defragmentation during garbage collection
US10754813B1 (en) 2011-06-30 2020-08-25 Amazon Technologies, Inc. Methods and apparatus for block storage I/O operations in a storage gateway
US8639989B1 (en) 2011-06-30 2014-01-28 Amazon Technologies, Inc. Methods and apparatus for remote gateway monitoring and diagnostics
US8832039B1 (en) * 2011-06-30 2014-09-09 Amazon Technologies, Inc. Methods and apparatus for data restore and recovery from a remote data store
US8706834B2 (en) 2011-06-30 2014-04-22 Amazon Technologies, Inc. Methods and apparatus for remotely updating executing processes
US8806588B2 (en) 2011-06-30 2014-08-12 Amazon Technologies, Inc. Storage gateway activation process
US9294564B2 (en) 2011-06-30 2016-03-22 Amazon Technologies, Inc. Shadowing storage gateway
US8639921B1 (en) 2011-06-30 2014-01-28 Amazon Technologies, Inc. Storage gateway security model
US8601134B1 (en) 2011-06-30 2013-12-03 Amazon Technologies, Inc. Remote storage gateway management using gateway-initiated connections
US8793343B1 (en) 2011-08-18 2014-07-29 Amazon Technologies, Inc. Redundant storage gateways
US8789208B1 (en) 2011-10-04 2014-07-22 Amazon Technologies, Inc. Methods and apparatus for controlling snapshot exports
US8819375B1 (en) 2011-11-30 2014-08-26 Western Digital Technologies, Inc. Method for selective defragmentation in a data storage device
US9635132B1 (en) 2011-12-15 2017-04-25 Amazon Technologies, Inc. Service and APIs for remote volume-based block storage
KR101997572B1 (ko) 2012-06-01 2019-07-09 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 쓰기 방법
US8788778B1 (en) 2012-06-04 2014-07-22 Western Digital Technologies, Inc. Garbage collection based on the inactivity level of stored data
US10235079B2 (en) * 2016-02-03 2019-03-19 Toshiba Memory Corporation Cooperative physical defragmentation by a file system and a storage device

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4660130A (en) * 1984-07-24 1987-04-21 Texas Instruments Incorporated Method for managing virtual memory to separate active and stable memory blocks
US5109336A (en) * 1989-04-28 1992-04-28 International Business Machines Corporation Unified working storage management
US5479656A (en) * 1992-05-13 1995-12-26 Rawlings, Iii; Joseph H. Method and system for maximizing data files stored in a random access memory of a computer file system and optimization therefor
CA2119788C (en) * 1992-07-24 1996-12-31 Peter L. Morse Computer method and system for allocating and freeing memory
US5623654A (en) * 1994-08-31 1997-04-22 Texas Instruments Incorporated Fast fragmentation free memory manager using multiple free block size access table for a free list
US5604902A (en) * 1995-02-16 1997-02-18 Hewlett-Packard Company Hole plugging garbage collection for a data storage system
US5784699A (en) * 1996-05-24 1998-07-21 Oracle Corporation Dynamic memory allocation in a computer using a bit map index
US5848423A (en) * 1997-04-23 1998-12-08 Sun Microsystems, Inc. Garbage collection system and method for locating root set pointers in method activation records

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007531114A (ja) * 2004-03-26 2007-11-01 キョウセラ ワイヤレス コープ. メモリ割り当てのためのフックした複製値を有するバイナリサーチツリー

Also Published As

Publication number Publication date
EP0934564A1 (en) 1999-08-11
KR100528278B1 (ko) 2005-11-15
GB9717718D0 (en) 1997-10-29
WO1999010812A1 (en) 1999-03-04
US6237072B1 (en) 2001-05-22
KR20000068817A (ko) 2000-11-25

Similar Documents

Publication Publication Date Title
JP2001504971A (ja) データ・ブロックを圧縮するメモリ管理
US8521790B2 (en) Increasing efficiency of data storage in a file system
US6654772B1 (en) Multi-volume extent based file system
AU694386B2 (en) System and method for locating pages on the world wide web and for locating documents from a network of computers
US6567905B2 (en) Generational garbage collector with persistent object cache
US6301646B1 (en) Pointer verification system and method
US8375065B2 (en) Method for cataloging and storing data in a control system
US6928460B2 (en) Method and apparatus for performing generational garbage collection in a segmented heap
EP0993634B1 (en) Method and apparatus for managing hashed objects
US7249235B2 (en) Architecture for a scalable and user-extensible heap dump analysis tool
KR20010007010A (ko) 컴퓨터 메모리에서 데이터 관리 방법, 장치 및 프로그램제품
US7225314B1 (en) Automatic conversion of all-zero data storage blocks into file holes
US6804761B1 (en) Memory allocation system and method
US20110153677A1 (en) Apparatus and method for managing index information of high-dimensional data
US7991976B2 (en) Permanent pool memory management method and system
JPH0358249A (ja) フアイルのアクセス方法
EP2531939B1 (en) Method and system for compressing data records and for processing compressed data records
Martin et al. A case study of caching strategies for a distributed full text retrieval system
Hasan et al. A tunable hybrid memory allocator
US7603568B1 (en) Method and apparatus for self-validating checksums in a file system
Botelho et al. An approach for minimal perfect hash functions for very large databases
KR100256678B1 (ko) 분할 시그너춰 파일을 위한 디렉토리 관리 방법
CN113505101A (zh) 一种基于vfs的内核文件系统
Karabiber et al. Dynamic memory allocator algorithms simulation and performance analysis
JPH08328946A (ja) 2次記憶領域の管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050705

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20060328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080311

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080304

A313 Final decision of rejection without a dissenting response from the applicant

Free format text: JAPANESE INTERMEDIATE CODE: A313

Effective date: 20080805

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080930

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090121

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090121

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090310

A313 Final decision of rejection without a dissenting response from the applicant

Free format text: JAPANESE INTERMEDIATE CODE: A313

Effective date: 20090720

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20090820