JPH0775004B2 - メモリ制御方法 - Google Patents

メモリ制御方法

Info

Publication number
JPH0775004B2
JPH0775004B2 JP2103255A JP10325590A JPH0775004B2 JP H0775004 B2 JPH0775004 B2 JP H0775004B2 JP 2103255 A JP2103255 A JP 2103255A JP 10325590 A JP10325590 A JP 10325590A JP H0775004 B2 JPH0775004 B2 JP H0775004B2
Authority
JP
Japan
Prior art keywords
storage
address
block
queue
list
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2103255A
Other languages
English (en)
Other versions
JPH02300949A (ja
Inventor
ロバート・リン・グエンター
ステイブン・バーナード・ロンデユー
ジヨセフ・パトリツク・スパノ
ポール・ウイルバート・ヴアン・リール
マーク・クラーレンス・ゼレツク
Original Assignee
インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
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 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン filed Critical インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
Publication of JPH02300949A publication Critical patent/JPH02300949A/ja
Publication of JPH0775004B2 publication Critical patent/JPH0775004B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

【発明の詳細な説明】 A.産業上の利用分野 本発明は、データ処理システム、より具体的にはメモリ
・スペース(記憶空間)の割当て及び割当て解除に関す
る処理に係るものである。
B.従来技術 効率的なメモリ管理は、複雑なソフトウェア・システム
の性能にとって本質的である。現在のデータ処理システ
ムは、典型的には1以上のCPUを有しており、それ
(ら)はそのデータ処理システムのために設けられた実
記憶装置の領域にアクセスする。記憶空間は、制御ブロ
ック、バッファ、データ領域、及び状態ベクトル等のた
めに使用しうる。用な実記憶装置の量を大幅に増大させ
ることなくソフトウェア性能を発揮させるためには、効
率的な記憶域の割当てが必要である。またメモリの領域
が利用可能になった時に再使用される事を保証するため
に効率的な動的記憶域割当てアルゴリズムが必要であ
る。効率的な再使用が行なわれなければ、各々の目的毎
に、各型の記憶域が消尽する確率が低くなる事を保証す
るために、付加的な永久的に割当てられた記憶域が必要
になるであろう。
記憶域を取得する割合は、1秒当り千回以上になる事が
あり、所要の記憶域割当ての処理時間により、全体的な
シテムのスループットが悪影響を受ける事がある。不幸
な事に、記憶装置の効率とCPUの効率は、動的記憶域割
当てアルゴリズムの選択において、通常、トレードオフ
の関係にある。記憶域の非効率性は、内部的及び外部的
の両者における断片化(フラグメンテーション)の結果
である。内部的断片的は、要空されたよりも多くの記憶
域を与え(例えば、何らかの境界まで切上げを行なう事
による)結果であり、外部的断片化は利用可能な記憶域
と使用中の記憶域のブロックが交互になる事によって生
じる「(市松模様の)チェッカーボード」効果である。
フリー記憶域に関する要求を満足させる記憶ブロックを
探すために(又は、解放された項目を「挿入」するため
に適当な場所を探すために)広範な探索が必要になる
時、処理の非効率性が生じる。これは、要求又は解放当
りの検査された平均ブロック数によって測定される。
異なった型の動的記憶域割当てシステムについて多くの
議論がある。Donald Knuthは、“The Art of Computer
Programming,Vol.1:Fundamental Algorithms",2−nd e
d.,Addison Wesley Publishing Cmpany,Inc.(1973)の
中で、種々の動的記憶域割当て技術について説明してい
る。クヌースは、利用可能なフリー記憶域が、1つの利
用可能なブロックから次のものへとポインタによって連
結されている、リンク・リスト技術、及び記憶域の要求
を満足させるための割当てにおいてどのブロックを使用
するかを決定するための種々の選択アルゴリズムを説明
している。又クヌースは、ブロックをフリー記憶域リス
トに返す問題、及びメモリをコンパクト化し断片化を避
けるために隣接した利用可能な記憶域を併合する必要性
についても議論している。又、使用されていない割当て
られた記憶域ブロックを識別しそれらをフリー記憶域リ
ストに結合するための試みが行なわれる「ガベージ・コ
レクション」の方法も説明されている。
記憶管理及びガベージ・コレクションの他の技術も、従
来技術において公知である。米国特許第4,121,286号明
細書は、記憶域の使用と割当てを追跡するためにマスタ
・ケーパビリティ・テーブルを用いる記憶空間の割当て
及び割当て解除のシステムを説明している。又この文献
は、どの記憶域ブロックがシステムによって使用された
かを決定するためにカベージ・ビット及び訪問ビットを
使用するガベージ・コレクション方法を提案している。
このシステムは、記憶域ブロックが「ガベージ」として
再利用しうるか否かを決定するために、周期的に全ての
記憶域ブロックを検査しなければならない。
米国特許第4,797,810号明細書は、仮想アドレス空間に
おける漸次的がベージ・コレクションのためのシステム
及び方法を提供している。この発明は、メモリを新旧の
部分に分割し、メモリの旧部分から新部分にオブジェク
トを周期的にコピーし、旧空間から不使用空間を再利用
する。この技術は、プロセッサが使用するよりも大幅に
大きな量の記憶空間を必要とするという欠点を有する。
Bozman el al.,“Analysis of Free Storage Algorithm
s−Revisited",IBM System Jouranl,Vol.23,No.1,1984
は、IBM VM/SP制御プログラムにおいて使用するための
種々のフリー記憶域アルゴリズムを説明している。Bozm
an他は、記憶域割当て効率を改善するため及び種々の方
法の相対的性能を測定するために使用できる種々の方法
を説明している。特に、Bozman他は、探索なしに高速に
割当てる事のできる特定サイズのフリー記憶域の要素を
含む固定サイズのキューを使用する、IBM VM/370製品で
採用された動的記憶域アルゴリズムを説明している。固
定サイズのキューは、リンク・リストを探索する事なし
に、プロセッサが、所定サイズの記憶域要素を即座に見
出す事を可能にしている。もし要求がキューからは満足
させられない時は、利用可能な記憶域ブロックのリンク
・リストの探索が行なわれる。Bozman他は、固定サイズ
のキューの中に存在する全てのフリー記憶域がフリー・
リストに戻されキューが再形成される、周期的なガベー
ジ・コレクションの必要性を説明している。この方法の
主な欠点は、キュー中の全てのエントリを処理すること
による周期的なカベージ・コレクションの必要性であ
る。
C.発明が解決しようとする課題 本発明の課題は、これら従来技術の欠点を有しない効率
的なメモリ管理方式を提供する事である。
D.課題が解決するための課題 本発明は、固定サイズのブロックのキュー及びランダム
なサイズのブロックのグローバル・リストの使用を組合
せる事により作業用記憶域を効率的に管理する方法に関
する。本発明は、不使用の記憶域ブロックを固定サイズ
・キューから連続的に除去する連続的ガベージ・コレク
ションを実現するための方法に関する。この方法は、さ
らに、もし要求がキューからは満足させられない場合に
特定のサイズのブロックに関する必要な探索を高速化す
る、グローバル記憶域リストへのポインタを用いる。そ
の結果、本発明の方法は、記憶域のブロックをグローバ
ル・リストに返すのに必要な処理装置時間を減少させ、
作業用記憶域の一時的拡張を管理するのに必要な処理装
置時間を減少させ、必要な全作業記憶域の大きさを減少
させ、そしてマルチプロセッサ・システムにおいて一様
に実行する。
E.実施例 データ処理システムは、アプリケーション・プログラム
又は他の作業の実行中にコンピュータ・システムの動作
に関連して、制御ブロック、バッファ、データ領域、及
び状態ベクトル等の作業用記憶域を使用する。作業用記
憶域は、データ処理システムの物理的メモリの一部から
割当てられる。物理的メモリは典型的には半導体メモリ
の形を取る。仮想記憶環境では、それはバッキング・デ
ィスク記憶装置によって容量を増加できる。
データ処理システムは、単一の分離的メモリを共有する
1以上のプロセッサから成る事がある。プロセッサの各
々は、連続して作業用記憶域の割当てを要求し、後に、
割当てられた作業用記憶域を解放する、複数のタスクを
走行させる。動的記憶域割当ては、処理のためにタスク
に割当てられたメモリの領域を有効に再利用するために
不可欠である。
データ処理システムが最初に初期化される時、メモリの
ある部分が作業用記憶域として専用化される。良好な実
施例では、作業用記憶域は整数個の4096バイトのページ
として定義される。この記憶域は、次に、動的記憶域割
当て又はメモリ管理の過程で割当てられ使用される。
あるピーク条件の下では、プロセッサの要求を満足させ
るには、割当てられた作業用記憶域の量が不十分であ
る、という状況が生じる事がある。この状況において、
メモリ管理機能は、一時的に付加的な作業用記憶域を割
当てる事ができる。これは、拡張記憶域と呼ばれ、良好
な実施例では、メモリの他の利用可能な領域から4096バ
イト・ページづつ割当てられる。例えば、良好な実施例
では、拡張作業用記憶域の割当ては要求時ページング領
域から行なわれる。
作業用記憶空間全体は、プロセッサ・タスクに対する割
当てに関して初期に利用可能になる。1以上のプロセッ
サがタスクを処理する時、記憶域割当てプロセスは各タ
スク毎に作業用記憶域から記憶域ブロックを割当てる。
各タスクは、処理に必要な量の記憶域しか割当てられな
い。必要なサイズの記憶域ブロックは作業用記憶域から
分離され、タスクに割当てられる。作業用記憶域の残り
は、他のタスクに利用可能なままである。プロセッサが
そのタスクを終了すると、作業用記憶域ブロックは再使
用するために返される。時を経ると、この結果、一連の
割当てられた領域とフリー領域を含む作業用記憶域が生
じる。第2図は、作業用記憶域のメモリ・マップであ
り、割当てと割当て解除の活動の効果を示している。第
2図は、最高のメモリ境界100からアドレスが減少する
順にブロックが割当てられる割当てプロセスを示してい
る。定義された作業用記憶域全体は、フリー記憶域の開
始点100のアドレスとフリー記憶域の終了点106のアドレ
スとの間に含まれている。良好な実施例は、作業用記憶
域を、メモリの最高の利用可能なアドレスからメモリの
開始位置に向って割当てる。しかしながら、他のシステ
ムでは、下位のアドレス点から上位のアドレスに向っ
て、作業用記憶域を割当てる事もある。本発明は、どち
らの環境でも動作する。
記憶域ブロックの連続的な割当てと割当て解除の結果と
して、第2図に示したようなチェッカーボード効果が生
じる。一連の割当てられた記憶域ブロック102は、フリ
ー領域あるいは利用可能なブロック104で分離されてい
る。これは大量の断片化と記憶域の無駄な使用を招く。
記憶域の非効率性は、2つの型の断片化に分けられる。
内部断片化は、記憶域割当てアルゴリズムが、記憶域要
求をある境界まで切上げる事により、要求されたよりも
多くの記憶域を割当てる時に、生じる。その結果、割当
てられたセグメントは、余分の不必要な記憶空間(他の
目的で、より効率的に使用できたかもしれない)を含む
事になる。外部断片化は、割当てと割当て解除のプロセ
スを通じて、利用可能な記憶域と使用中の記憶域の交互
のブロックが形成される時に、生じる。記憶域全体に分
散した利用可能なブロックは、作業用記憶域に関する要
求を満足させるには小さすぎるかもしれない。しかし、
それら全体を集めると、作業用記憶域容量の重大な損失
になる。また作業用記憶域に関する要求を満足する記憶
域ブロックを求めて利用可能な記憶域のリストを探索す
るのにシステムが相当の時間を費やさなければならない
時は、中央処理装置(CPU)の非効率が生じる。
利用可能な作業用記憶域ブロックは、典型的には、メモ
リ中のアドレスのリンク・リストとして管理されてい
る。グローバル記憶域リストは、処理システムで利用可
能な各作業用記憶域ブロックに関するエントリを含む。
ヘッダ・レコードは、作業用記憶域中の最初の利用可能
の記憶域ブロックを指し示す。良好な実施例では、最初
の利用可能なブロックは、作業用記憶域に割当てられた
最高のメモリ・アドレスから出発してアドレスが減少す
る順に進行する事によって見出される。最初の利用可能
な記憶域ブロックは、アドレスが小さくなる順で次の利
用可能な記憶域ブロックを指し示すポインタを有してい
る。リンク・リストは、継続した記憶域ブロックを指し
示す各利用可能な記憶域ブロックにより展開し、最後の
記憶域ブロックはリスト終了インジケータを含んでい
る。処理効率を増大させるために、グローバル記憶域リ
ストは、しばしば2重リンク・リストとして実現されて
いる。その場合、各利用可能な記憶域ブロックは、後続
の利用可能な記憶域ブロックのみならず、先行する利用
可能な記憶域ブロックも指し示す。2重リンク形式は、
リスト中の適当な地点にブロックを返すプロセスを高速
化する。
利用可能な記憶域位置のリンク・リストに基ずいた動的
記憶域割当て方法の主な欠点は、利用可能なブロックを
見つけるためにリストを探索するのに必要なプロセッサ
時間の大きさである。もし各探索がリストの最初から始
まり、適当なサイズの利用可能なブロックが見つかるま
で進行するならば、探索時間は、かなりのものになる可
能性がある。ブロックの割当てはフリー記憶域の開始点
で始まるので、リストの開始点付近には、より小さな記
憶域断片が生じがちである。これは、記憶域が割当てら
れる毎に、現在のブロック中にどれぐらい余分の記憶域
が利用可能であっても、要求された大きさの記憶域だけ
が実際に割当てられ、ブロックはより小さな断片に分割
されるからである。これらの小さな断片は、作業用記憶
域リストの前方に集る傾向がある。従って、大きな作業
用記憶域ブロックの探索は、より大きな記憶域ブロック
・サイズに到達するまで全てのエントリを調べるのにか
なりの処理を必要とする。
リンク・リストに代わるものは、固定サイズの記憶域の
キューの使用である。コンピュータ・システムは、所定
サイズのメモリ・ブロックを含む所定の数のキューで初
期化される。現在のIBM VM/SPシステムは、多数のこれ
らキューを用いて動作する。IBM VM/SPシステムの1つ
のバージョンでは、1024ダブルワード(1ダブルワード
は8バイトである)以下のフリー記憶域要素のために92
個のキューが維持されている。最初の63個のキューの各
々は2ダブルワード幅であり、126ダブル・ワード以下
のフリー記憶域要素に関して維持されている。例えば、
最初のキューが1〜2のダブル・ワードからの要求にサ
ービスを行ない、同様に、2番目が3〜4ダブル・ワー
ドに、そして63番目が125〜126のダブル・ワードにサー
ビスを行なうように構成されている。29のキューの2番
目のセットは、各々、32ダブル・ワード幅である。この
範囲内の全ての要求は、ほぼ固定したブロック・サイズ
の境界に切上げられる。これらのキューの目的は、直
接、フリー記憶域要素を見出し、それによってリンク・
リストの探索の必要性をなくす事である。例えば、プロ
セッサが、5ダブル・ワードの作業用記憶域に関する要
求を受取った時、適当なキューへの1回のアクセスで、
少なくとも5ダブル・ワードの次の利用可能な記憶域ブ
ロックのアドレスが返される。
キューは、ラスト・イン、ファースト・アウト方式で管
理される。従って、記憶域ブロックが利用可能リストに
戻される時、それはキューの先頭に配置され、そのキュ
ーからの割当てに関して次の利用可能なブロックにな
る。時が経つと、けっして参照されない記憶域ブロック
がリスト中に蓄積するという結果を生じうる。例えば、
プロセッサは典型的な場合ある時期にわたって6ダルブ
・ワードのサイズの100個のブロックを要求する事があ
るかもしれない。特定の処理の殺到によりこの数は、短
期間だけ、300に増加されるかもしれない。プロセッサ
が、100個の記憶域ブロックを要求する正規の状態に戻
った時、余分の200個の記憶域ブロックがキュー中に残
り、決して使用されないであろう。従って、記憶域の非
効率的な使用を生じる。
従来技術のシステムは、不使用の記憶域ブロックを回復
するために「ガベージ・コレクション」として知られる
技術を用いている。ガベージ・コレクションのプロセス
は全ての不使用のエントリを検出し、それらを可能な限
り効率的に割当てられるフリー・リストに戻す事を試み
る。IBM VM/SPの従来技術のバージョンでは、ガベージ
・コレクションは、ユーザーがシステムからログオフ
し、ブロックを作業用記憶域に解放する毎に、又は少な
くとも2分毎に、実行された。この時点で、少なくとも
1分間(又は、もしキュー中の記憶域の量がしきい値を
越えていれば、それよりも少ない時間)キュー中に存在
しているか、又は拡張記憶域からの全ての作業用記憶域
ブロックは、グローバル記憶域リストに戻され、固定サ
イズのキューが新たに再形成される。この周期的なガベ
ージ・コレクションの欠点は、全ての項目をフリー・リ
ストに戻し、次に固定サイズのキューを再形成し始める
のに必要なプロセッサの負荷の増大である。
現在のIBM VM/SPオペレーティング・システムでは、固
定サイズのキューによっては満足させられない要求は、
利用可能な記憶域ブロックのリンク・リストの探索を生
じさせる。このリストは、フリー・リストと呼ばれ、ア
ドレスの増大する順に維持されている。このリストは、
新しく解放されたブロックを隣接したフリー・ブロック
と合体させる作業を容易にするために、記憶装置アドレ
スによって配列されている。もしフリー・リストが空か
又は要求を満足させる事ができない場合、ページ(又
は、要求された作業用記憶域のサイズが大きい場合は、
複数ページ)を、ユーザー又はオペレーティング・シス
テムに実記憶域を提供するページング領域から借りてく
る。借りてきたページは「拡張」ページと呼ばれる。ブ
ロックの解放により、拡張ページが完全にフリー・リス
トに含まれるようになると、そのページはページング領
域に返される。専用の動的記憶域が最初にメモリのトッ
プ(即ち、最高のアドレス)に形成されるので、拡張さ
れたページからの利用可能なブロックはフリー・リスト
の先頭に来る。
本発明は、従来のIBM VM/SPのメモリ割当てプロセスの
限界を克服する動的メモリ割当てのプロセスに関する。
特に、本発明は、周期的に固定サイズのキューを除去し
空状態からキューを再形成する必要のない連続的ガベー
ジ・コレクションの方法を実現している。さらに、本発
明は、作業用記憶域ブロックを割当て且つ割当て解除す
るために必要なプロセッサ時間を減少させるプロセスを
提供している。
概説 動的記憶域割当てプロセスが、第1図に、基本的機能を
用いて示されている。3つの主要な機能は、作業用記憶
域ブロックの割当て110、作業用記憶域ブロックの割当
て解除114、及び連続的ガベージ・コレクション112であ
る。このプロセスを支援するのは、利用可能な記憶域ア
ドレスのリンク・リストであるグローバル記憶域リスト
116、及び固定サイズ作業用記憶域のキューの組118であ
る。良好な実施例では、マルチプロセッサ・システムの
各プロセッサは、自分自身の固定サイズのキューの組を
有している。しかしながら、本発明は、複数のプロセッ
サをサポートする1組のキューを用いても有効に動作す
る。
固定サイズのブロックの各キューに関して多数の制御変
数が維持されている。これらの変数は、キュー中の現在
利用可能なブロックの数、グローバル記憶域リストから
割当てられ未だグローバル記憶域リストに戻されていな
いこのサイズのブロックの数、このサイズのブロックに
関する要求を満足するグローバル記憶域リスト上の最初
のブロック(そのブロックとリストの最初のブロックと
の間の全てのブロックは要求を満足するには小さすぎ
る)のアドレス、及びブロックを返す時に連続的ガベー
ジ・コレクションを実現するのに使われるスピル(spil
l)・アドレスを含んでいる。スピル・アドレスとは、
後述するように、そのアドレス以遠のどの返却ブロック
もグローバル記憶域リストに返されるようなアドレスを
規定するものである。即ち、これは割当て解除された作
業用記憶域ブロックを固定サイズ・キュー中に置くか、
グローバル記憶域リストに置くかの限界点を決めるアド
レスである。良好な実施例では、各キュー中のブロック
の数が各キュー毎に維持されており、他の制御変数はグ
ローバル・テーブル中に保持され、各ブロック・サイズ
毎に1つのエントリがある。グローバル記憶域リストか
ら割当てられまだ返されていないブロックの数は、グロ
ーバル記憶域リストの割当てられたこのサイズのブロッ
クの数をモニタし、それからグローバル記憶域リストに
返されたこのサイズのブロックの数を引く事によって計
算される。
第1図に示すプロセスの各々は、以下詳細に説明する。
本発明によるシステムが初期化される時、全ての利用可
能な作業用記憶域は、グローバル記憶域リストによって
アドレスされる単一のブロックとして配置される。必要
なキューの各々は初期化されるが、空であり、固定サイ
ズ記憶域位置のアドレスを全く含んでいない。
記憶域ブロックの割当て 第3図は、本発明による作業用記憶域ブロックの取得た
めの割当てプロセスの流れ図である。システム又はアプ
リケーションが、所定サイズの作業用記憶域ブロックの
割当て要求を発生する。最初に、もし要求されたブロッ
クのサイズがキュー中の最大の固定サイズよりも大きく
ないならば、固定サイズブロックの適当なキューからブ
ロックを取得する試みが行なわれる(ステップ120)。
要求されたブロックのサイズは、要求されたブロックを
含むのに十分な大きさの最小の固定サイズのブロックに
切上げられる。
動的記憶域割当てプロセスは、最初に、そのサイズのブ
ロックを含むキューが空か否かを判定する。もし空であ
れば、不成功探索条件が返る。もしキューが空でないな
らば、キューの最初のブロックが除去され、一時記憶域
ブロックの要求を満足させるために使われる(ステップ
124)。要求は、システム又はアプリケーションに利用
可能な記憶域ブロックのアドレスを渡す事によって満足
される。次に、動的記憶域割当てプログラムは、その固
定サイズのキューの中のブロックの数から1を引く。良
好な実施例では、各プトセッサ毎に1組のキューを持つ
マルチプロセッサ・システムにおいて、各プロセッサは
それ自身のキューから要求を満足させるように試みる。
もしそれが不成功であると、他のプロセッサのキューか
ら要求を満足させる事を試みる。
もしキューからの割当てが不成功であると、グローバル
記憶域リストからのブロックの割当てが試みられる(ス
テップ126)。要求されたサイズの固定サイズ・キュー
からの最初のブロック・ポインタ又は最初のエントリ・
ベクトルは、グローバル記憶域リストの探索の開始点と
して使われる。もし要求された記憶域ブロックのサイズ
が、最大の固定サイズのキューよりも大きい場合、探索
は、その最大サイズのキューに関する最初のエントリ・
ベクトル中に含まれるアドレスで開始する。
探索は、グローバル記憶域リスト中の連続した記憶域ブ
ロックを経て順方向ポインタを辿る事によって進行す
る。もし要求を満足することのできるブロックを見つけ
る前にリスト終了マーカーに出会うと、探索は不成功と
して終了する。
もし要求されたサイズよりも大きな記憶域ブロックが見
つかると(ステップ128)、グローバル記憶域リストの
開始点により近いフリー記憶域ブロックの端点から、要
求された記憶域ブロックが割当てられる(ステップ13
0)。このサイズの固定サイズ・キューに関する最初の
エントリ・ベクトル・アドレスは、フリー記憶域ブロッ
クの残りのもののアドレスであるようにリセットされ
る。もしフリー記憶域ブロックのサイズが、要求された
サイズに等しければ、最初のエントリ・ベクトル・アド
レスは、グローバル記憶域リスト上の次のブロックにア
ドレスにセットされる。割当て時に、グローバル記憶域
リストから割当てられたこのサイズのブロックの数は1
だけ増計数される。
他の固定サイズのキューの最初のエントリ・ベクトル
は、最初のエントリ・ベクトルの各々が、グローバル記
憶域リスト中に存在するブロックを指し示し、且つ所定
サイズに関する最初のエントリ・ベクトルが、それより
も小さいサイズに関する最初のエントリ・ベクトルを越
えないように、調整されなければならない。
最後に、要求されたサイズの固定サイズキューに関する
スピル・アドレスが、次のように調整される。もしその
ブロックが割当てられたこのサイズの唯一のものであれ
ばスピル・アドレスはこのブロックのアドレスに等しく
セットされる。もしそうでなければ、スピル・アドレス
は、ちょうど今割当てられたブロックのアドレスか又は
既存のスピル・アドレスのうちグローバル記憶域リスト
の開始点から遠いほうのいずれかに等しくセットされ
る。
もし記憶域ブロックの割当てに関する要求がグローバル
記憶域リストからは満足させられなかったならば、付加
的な記憶域が取得され、グローバル記憶域リストに付け
加えられなければならない(ステップ132)。もし付加
的な記憶域が得られなければ(ステップ134)、割当て
プロセスは不成功に終る。良好な実施例では、拡張記憶
域と呼ばれる付加的な記憶域が、デマンド・ページング
領域から得られる。付加的な記憶域はグローバル記憶域
リストに付け加えられ、グローバル記憶域リストからの
上記の探索及び割当てのステップが反復される。
ブロックの返還 タスクにより使用される記憶域ブロックは、明示的又は
暗黙的に割当て解除されフリー記憶域に返される。記憶
域ブロックは、割当て解除を要求したタスクによって、
明示的に割当て解除される。他の状況では、タスクの終
了が、暗黙的にフリー記憶域ブロックの割当て解除を生
じさせる。
返されるブロックのサイズが最初に調べられ(ステップ
140)、もしそれが最大の固定サイズキューよりも大き
い場合、そのブロックは直接グローバル記憶域リストに
返される。グローバル記憶域リストへのブロックの返還
のプロセスは以下説明する。
もしブロックが最大キューサイズよりも大きくないなら
ば、返されるブロックのサイズは固定キューの最も近い
サイズに丸め(切上げ)られる(ステップ144)。返さ
れるブロックのアドレスは、グローバル記憶域リストの
開始アドレス及び丸められたサイズのブロックに関する
スピル・アドレスと比較される(ステップ146)。もし
返されるブロックのアドレスが、グローバル記憶域リス
トの開始点とスピル・アドレスの間であれば、ブロック
は固定サイズ・キューに返される。固定サイズ・キュー
はラスト・イン、ファースト・アウト方式で管理されて
いるので、リターン・ブロックはキュー中の最初のブロ
ックになり、キュー中のブロック数を含むカウンタは1
だけ増計数される。
もし返されるブロックのアドレスが開始点からスピル・
アドレスの範囲内になれば、ブロックはグローバル記憶
域リストに返される。
返される記憶域ブロックは、グローバル記憶域リスト中
の正しい地点に挿入されなければならない。良好な実施
例では、グローバル記憶域リストはメモリ・アドレスが
減少する順に配列されている。挿入の適切な地点は、適
当な地点が見つかるまでクローバル記憶域リストを辿る
事によって決定する事ができる。良好な実施例では、グ
ローバル記憶域リストの開始点から最も遠いが返される
ブロックには先行する最初のエントリ・ベクトル・アド
レスを見出すために固定サイズ・キューの各々に含まれ
る最初のエントリ・ベクトルを最初に用いる事によって
性能の改善が得られる。最初のエントリ・ベクトルのア
ドレスでスタートして、返されるブロックに関する正し
いアドレスが見つかるまで、グローバル記憶域リストが
順方向に探索される(ステップ154)。次に、返却記憶
域ブロックはグローバル記憶域リストに付け加えられ
(ステップ156)。もしもより大きなフリー記憶域ブロ
ックを形成する事が可能であれば、隣接するフリー記憶
域ブロックとマージされる(ステップ158)。返された
サイズの割当てられたブロック数を含んでいるカウンタ
は1だけ減計数される。全ての固定サイズ・キュー中の
最初のエントリ・ベクトル・ポインタは、返されたブロ
ックを反映するように更新されなければならない(ステ
ップ162)。結果的に生じたマージされたブロックと同
じサイズの又はそれよりも小さなブロックを含む全ての
固定サイズ・キューに関して、もし最初のエントリ・ベ
クトルがマージされたブロック内のアドレスを指し示す
ならば、アドレスはマージされたブロックのアドレスに
等しくセットされる。もし最初のエントリ・ベクトル
が、マージされたブロックに続くブロックを指し示すな
らば、それはマージされたブロックのアドレスで置換さ
れる。
連続的ガベージ・コレクション ガベージ・コレクションは、固定サイズ・キューからグ
ローバル記憶域リストへ不使用の記憶域ブロックが返さ
れるプロセスである。ガベージ・コレクションが必要と
されるのは、時の経過と共に、固定サイズ・キューが、
記憶域に関する典型的な需要を満足させるのに必要なよ
り多くの数の記憶域ブロックを蓄積する可能性があるか
らである。固定サイズ・キュー中の記憶域ブロックは、
より大きなブロックに合体させるか又はより小さなブロ
ックに分割するのには利用できない。その結果、作業用
記憶域の非効率的な使用が生じる。記憶域ブロックは、
グローバル記憶域リスト中に置かれた時にのみ、現在の
記憶域の需要の特性を支援するように併合又は分割を行
なう事ができる。固定サイズ・キューを用いた従来技術
の記憶管理システムの欠点の一つは、ガベージ・コレク
ションが定期的に要求される事である。これは、固定サ
イズ・キューが走査されフリー記憶域がグローバル記憶
域リストに返される間に、処理の停止を生じさせる。本
発明は、連続的なガベージ・コレクションを提供する事
によってこの欠点を克服する。
本発明の良好な実施例は、返された記憶域ブロックが、
固定サイズ・キュー中に置かれるべきか又は即座にグロ
ーバル記憶域リストに戻されるべきかを評価する方法を
提供する。本発明は、スピル・アドレスによって連続的
なガベージ・コレクションを実現する事に関する。各固
定サイズ・キューに関するスピル・アドレスは、そのア
ドレス以遠のどの返却ブロックもグローバル記憶域リス
トに返されるようなあるアドレスを特定する。スピル・
アドレスは、特定サイズの記憶域ブロックに関するプロ
セッサの需要を反映するように調整される。周期的にス
ピル・アドレスを調整する事により、プロセッサは、デ
ータ記憶域ブロックの使用のパターンの変化に適応でき
る。スピル・アドレスの周期的な再計算及びその結果と
しての連続的なガベージ・コレクションは、従来技術の
システムの周期的ガベージ・コレクションよりも遥かに
少ないプロセッサ時間しか必要としない。
スピル・アドレスの再計算は、典型的な需要を効率的に
満足させるのに十分な数のブロックをキュー中に提供し
ながら、固定サイズのキュー中に含まれる記憶域の量を
最小化するように試みる。各固定サイズ・キューに関す
るスピル・アドレスの再計算のプロセスは、次のように
して行なわれる。
キューのブロック中に含まれる記憶域の量の総計を古い
スピル・アドレスに加算する事により、各固定サイズ・
キューに関して新しいスピル・アドレスが計算される。
良好な実施例では、記憶域はアドレスの減少する順に割
当てられ、古いスピル・アドレスに対するキュー中の記
憶域の量の加算は、スピル・アドレスをグローバル記憶
域リストの開始点に向って移動させる。またこのシステ
ムは、記憶域の量の合計を減算する事によって、アドレ
スの増加する順にグローバル記憶域リストを用いて実現
する事もできる。
最大サイズのブロックを有するキューを除いて各固定サ
イズのキュー毎に、もし次のより大きなサイズのキュー
中にブロックが利用可能ならば、新しいスピル・アドレ
スは、この固定サイズ・キューに関して今計算されたス
ピル・アドレスと次により大きな固定サイズ・キューの
スピル・アドレスとのうち大きいほうにセットされる。
これもまた、アドレスをグローバル記憶域リストの開始
点の方向に移動させる傾向を有する。最後に、全ての固
定サイズ・キューに関して、もしキュー中の最初のブロ
ックのアドレスが新しいスピル・アドレスとフリー記憶
域の開始点との間に存在しない場合、ブロックはグロー
バル記憶域リストに返される。
第5図は、スピル・アドレスの再計算を説明している。
フリー記憶域の開始点200は、良好な実施例ではシステ
ムの最大のアドレスを指し示す。特定の固定サイズ・キ
ューiに関しては古いスピル・アドレス202が維持され
ている。ブロック204は、固定サイズ・キューi中のブ
ロックに割当てられたメモリの量の合計を表わしてい
る。固定サイズ・キュー206に関する新しいスピル・ア
ドレスは、古いスピル・アドレスをメモリの量204だけ
調整する事によって再計算される。次に、新しいスピル
・アドレスは、次に大きな固定サイズ・キューi+1 20
8のスピル・アドレスと比較される。良好な実施例で
は、より大きな新しいスピル・アドレス(フリー記憶域
の開始点により近いもの)が、固定サイズ・キューiに
関するスピル・アドレスとして保持される。
フリー記憶域の拡張 初期に割当てられるフリー記憶域の大きさは、典型的な
場合、正規の需要には十分である。付加的な記憶域は、
予期したよりも需要が高い時にフリー記憶域の要求を満
足させるために必要となり得る。これらの期間中、フリ
ー記憶域に関する要求は、プログラム及びシステムの性
能に対してできる限り与える影響を少なくして満足させ
るべきである。この影響を最小限にするために、フリー
記憶域の拡張は必要なときにのみ起きなければならな
い。また、需要を満足させるためのできるだけ少ない付
加的記憶域を割当てなければならず、不使用の拡張フリ
ー記憶域を可能な限り迅速に統合整理してシステムに戻
す事を可能にしなければならず、そして、記憶域を拡張
しその後即座に解放し又他の拡張と解放をすぐに行なう
といった記憶域の拡張と解放のサイクルを頻繁に行なう
事は避けなければならない。
本発明は、フリー記憶域の拡張を制御するための手段を
提供し、それは次のようにして実現される。固定サイズ
・キューは、記憶域需要の変化に関する短期間のバッフ
ァを提供する。連続的ガベージ・コレクションは、不使
用ブロックを、再割当てのためにグローバル記憶域リス
トに返す。ガベージ・コレクションの連続的性質は、グ
ローバル記憶域リストが、可能な限り多くの割当て用の
記憶域を含む事を保証し、フリー記憶域の一時的拡張の
需要を減少させる傾向を有する。良好な実施例のグロー
バル記憶域リストは、優先的な記憶域ブロックが最初に
配列されている。良好な実施例では、優先的に割当てら
れた記憶域ブロックは、初期に割当てられたフリー記憶
域ブロックである。フリー記憶域に対する拡張は、より
低位のアドレスを有し、グローバル記憶域リストの終端
近くに配置され、従って最後に割当てられるものであ
る。
この現実方法によれば、フリー記憶域は、固定サイズ・
キュー又はグローバル記憶域リスト中に要求を満足させ
るものが存在せず、且つ既存のフリー記憶域が適当でな
い時にのみ、拡張される。
良好な実施例では、フリー記憶域は、「ページ」又は
「パラグラフ」と呼ばれる固定サイズの単位の形で管理
される。IBMシステム/370環境では、ページは、各々409
6バイトを含んでいる。もし、現在割当てられている記
憶域によっては満足させられないフリー記憶域の要求
が、記憶域の1つの付加的な単位内に収るならば、フリ
ー記憶域は1単位の記憶域だけ拡張される。もし、現在
の要求が数単位の記憶域を必要とするならば、フリー記
憶域は、その要求を満足するのに必要な最小の数の単位
の単一の連続したブロックを用いて拡張される。
フリー記憶域に対する拡張は、通常、プログラムにより
使用される全記憶域に対する需要が高い時に、必要にな
る。付加的フリー記憶域は、他の目的で既に使用中のメ
モリ領域から取上げなければならない。プログラム活動
の長期間にわたる中断を避けるために、不使用の記憶域
は、できるだけ早期に合体させて元の使用に戻されるべ
きである。この返還を行なうために、拡張フリー記憶域
中のブロックは、長期間の高需要の間だけ固定サイズ・
ブロックのキューに返すべきである。プログラムがより
少ない記憶域しか必要としない時、拡張されたフリー記
憶域中のブロックは、グローバル記憶域リストに返され
る最初のブロックであるきべきである。
スピル・アドレスを用いた連続的ガベージ・コレクショ
ンは、フリー記憶域が連続的な時に、最も良く働く。し
かしながら、他のプログラムの要求により、拡張フリー
記憶域に利用可能な記憶域は、既存のフリー記憶域に隣
接していない可能性がある。フリー記憶域割当て及び連
続的ガベージ・コレクションのプロセスは、拡張フリー
記憶域を管理する時には少し異なったように動作する。
フリー記憶域割当てプロセスに於いて、フリー記憶域に
関する要求が満足されない時は、システムによるフリー
記憶域の拡張が生じる。選択された記憶域フリー記憶域
の単位は、フリー記憶域の初期のブロックに最も近いも
のである。これは、拡張フリー記憶域を合体させシステ
ムに返すプロセスの助けになる。
連続的カベージ・コレクションの機構は、不連続なフリ
ー記憶域中のブロックを直接グローバル記憶域リストに
返す事によって、フリー記憶域に関する連続的記憶域の
割当てを促す。これは、もし全てのフリー記憶域が連続
であったと仮定した場合にフリー記憶域の終端になるア
ドレスであるフリー記憶域の仮想終端アドレスを計算す
る事によって行なわれる。もしスピル・アドレスが、フ
リー記憶域の仮想終端よりも先にあれば、それはフリー
記憶域の仮想終端に等しくセットされ、返却ブロックが
グローバル記憶域リストに付加される原因になる。割当
てられたブロックの返却をグローバル記憶域リスト宛て
に強制する事によって、拡張記憶域のブロックの合体が
促進され、可能な限り早く拡張記憶域単位をシステムに
返却させる結果を導く。
フリー記憶域の仮想終端を決定するプロセスは、第6図
に示されている。この例で、フリー記憶域は、初期にシ
ステムによって定義され、記憶位置220から始まり、フ
リー記憶域の終端222まで延びる。拡張されたフリー記
憶域ブロック224、226及び228は、付加的な記憶域から
割当てられるが、初期のフリー記憶域と、又は互に連続
していない。フリー記憶域の仮想終端230は、フリー記
憶域の終端のアドレス222を、ブロック224、226及び228
に割当てられた空間の和だけ調整する事によって、計算
される。計算されたスピル・アドレス232(フリー記憶
域の仮想終端230よりも、記憶域の開始位置220から遠
い)は、グローバル計算域リストへの記憶域ブロックの
返却を促進するためにフリー記憶域の仮想終端230に等
しくセットされる。従って、ブロック226及び228の返却
により、それらはグローバル記憶域リスト中に置かれ
る。返却ブロック224は、もしそれが他の条件を満足す
れば、適当な固定サイズ・キュー中に置かれる。
フリー記憶域の拡張及び拡張されたフリー記憶域の解放
は、通常、複雑なプロセスである。これらのプロセス
は、システムのタスクを達成するのに直線寄与せず、む
しろ他のタスクでより生産的に使用されていた可能性の
あるプロセッサ及び記憶装置資源を吸収する。グローバ
ルなプログラム資源は、フリー記憶域の拡張及び拡張さ
れたフリー記憶域の解放の時に、再分配される。マイク
ロプロセッサ・システムでは、このタスクを実行するプ
ロセッサのみが拘束なしに走行できる。それが終了する
までは、他の全てのプロセッサは停止するか又はその動
作を制限されなければならない。従って、フリー記憶域
の拡張と解放の頻繁なサイクルは避けるべきである。一
度取得されると、拡張フリー記憶域は、比較的長期間需
要を満足させる必要がない時のみ解放すべきである。
本発明は、拡張フリー記憶域中のグローバル記憶域リス
ト・ブロックが解放するのに十分な大きさの時は、それ
らを即座に解放しない事により、拡張と解放のサイクル
の問題を管理している。その代りに、本発明に従う方法
では、グローバル記憶域リストを定期的に走査し、解放
するのに十分な大きさの拡張フリー記憶域中のブロック
を解放する。良好な実施例では、グローバル記憶域リス
トの走査は、スピル・アドレスが再計算される時にその
4回目毎に起きる。
良好な実施例では、グローバル記憶域リストの走査は、
リストの終端で開始し、逆方向ポインタを辿ってリスト
のヘッドに向う。グローバル記憶域リストの走査は、リ
ストの始点で始まる順方向走査として実現する事もでき
るが、逆方向走査のほうが走査時間が短く、プロセッサ
の効率が増加する。
グローバル記憶域リストの走査は、次のブロックが、割
当てられたフリー記憶域の初期ブロック内にあるか、又
はグローバル記憶域リストの開始点と解放される最小サ
イズに関する要求を満足できる最初のブロックとの間に
アドレスを有する時に、終了する。走査中に、拡張フリ
ー記憶域中の各ブロックが評価され、その全て又は一部
がシステムに解放できるか否かの判定が行なわれる。グ
ローバル記憶域リスト上に最小サイズのブロックよりも
小さなブロックを残さずに、可能な限り多くの拡張記憶
域が解放される。
マイクロプロセッサの性能 マイクロプロセッサ・システムでは、プロセッサは、他
のプロセッサと共有されている記憶装置等の資源を変更
する必要がある時、又は他のプロセッサが資源を変更す
る場合に破壊される可能性のあるタスクを実行する時に
は、その資源の排他的使用を要求する。1つのプロセッ
サは資源を排他的に使用するので、他のプロセッサは、
最初のプロセッサが終了するまで待機しなければならな
い。この待機中、何の有用な作業も行なわれない。プロ
セッサは、グローバル記憶域リストに対してブロックを
挿入、除去、若しくはブロックに変更を行なう事により
リストを変更するか、又は特定のブロックの位置を見出
すためにリストを探索する時には、グローバル記憶域リ
ストの排他的使用を要求する。またプロセッサは、キュ
ーからブロックを除去するか、キューにブロックを付加
するか、又はガベージ・コレクションを実行する毎に、
固定サイズ・キューの排他的使用を要求する。
本発明のメモリ管理方式は、探索の間にグローバル記憶
域リストの状態を記憶しておく事によりマイクロプロセ
ッサの性能を改善する。各探索は、次のようにして、以
前の探索の結果から利益を得る。割当てのための探索
は、要求を満足するかもしれない最初のブロックから開
始し、その前の全てのブロックを飛ばす。これは、探索
を開始するために最初のブロック又は最初のエントリ・
ベクトルのアドレスを使用する事によって達成される。
第2に、ブロックを返すための探索は、ブロックが挿入
される場所の近くから始まる。これも最初のエントリ・
ベクトルを使用して行なわれる。従って、フリー記憶域
の管理のために本発明を用いたプロセッサは、より短い
期間しかグローバル記憶域リストへの排他的アクセスを
要求しない。さらに、ガベージ・コレクション中に固定
サイズ・キュー中の全てのブロックの走査は必要ではな
く、キューへの排他的アクセスの時間はより少ししか必
要でない。
以上の説明は、1つの実施例に関するものでしかなく、
本発明を限定する事を意図するのではない。例えば、グ
ローバル記憶域リストの配列及び固定サイズ・キューの
管理を変更する事による、代替的な構成は当業者には明
らかであろう。これらの又はその他の変更は、本発明の
技術範囲に含まれている。
F.発明の効果 本発明によれば、固定サイズのフリー記憶域ブロックの
キュー及びランダムなサイズのブロックのグローバル・
リストの使用を統一する作業用記憶域を効率的に管理す
る方法が提供される。この方法は、最大限のフリー記憶
域の利用可能性を保証するために、不使用の記憶域ブロ
ックを固定サイズ・キューから連続的に除去する連続的
ガベージ・コレクションを実現する。データ処理システ
ムのスループットは、フリー記憶域ブロックを割当て返
却するのに必要な処理装置のオーバーヘッド減少させ、
且つ作業用記憶域の一時的拡張を管理するのに必要なオ
ーバーヘッドも減少させる事により、改善される。
【図面の簡単な説明】
第1図は本発明の方法のデータ・フロー及び機能を表わ
す図、 第2図は割当てられた記憶域及びフリー記憶域を含むメ
モリ領域を表わす図、 第3図は本発明による記憶域ブロックの割当ての過程を
示す流れ図、 第4図は本発明によるブロックを記憶域に返却する過程
を示す流れ図、 第5図はフリー記憶域及び相対的スピル・アドレス位置
を示す説明図、 第6図は不連続な拡張部を有するフリー記憶域の説明図
である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジヨセフ・パトリツク・スパノ アメリカ合衆国ニユーヨーク州レツド・ホ ツク、アルダー・ストリート8番地 (72)発明者 ポール・ウイルバート・ヴアン・リール アメリカ合衆国ニユーヨーク州ハイラン ド、ブレイシヤー・ボールバード24番地 (72)発明者 マーク・クラーレンス・ゼレツク アメリカ合衆国ニユーヨーク州キングスト ン、オーネイル・ストリート185番地 (56)参考文献 特開 昭63−157246(JP,A)

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】1つ以上の処理装置及び1部分が作業用記
    憶域に指定されているメモリを含み、特定サイズのメモ
    リに対する要求をそれぞれが発行する複数のタスクを実
    行し、特定サイズの作業用記憶域ブロックのアドレスの
    整序されたリストをそれぞれがを含む複数のキューを保
    持し、上記複数のキュー中にない全ての作業用記憶域ブ
    ロックのアドレスを含む整序されたフリー記憶域リスト
    を保持するデータ処理システムにおいて、メモリを制御
    する方法であって、 特定サイズのメモリに対する要求に応答して前記複数の
    タスクに1つに作業用記憶域ブロックを割当て、少なく
    とも前記特定サイズの作業用記憶ブロックの作業用記憶
    域ブロック・アドレスを決定し、 割当て開放された作業用記憶域ブロックを前記複数のキ
    ューの1つに置くか前記フリー記憶域リスト中に置くか
    を制御する限界アドレスとして働くスピル・アドレスを
    前記キューによりアドレスされる記憶域の大きさの関数
    として前記複数のキューの各々に対して定期的に決定
    し、 前記複数のタスクによりもはや必要とされなくなった割
    当て済の作業用記憶域ブロックを割当て開放し、 前記複数のキューの各々をテストして前記複数のキュー
    の内前記割当て開放された作業用記憶域ブロックのサイ
    ズより大きいサイズを有する1つのキューを選択し、 前記作業用記憶域ブロックが割当て解除された時、前記
    作業用記憶域ブロックのアドレスが前記作業用記憶域の
    開始点と前記スピル・アドレスの間にあり、且つ前記作
    業用記憶域ブロックのサイズがキューに対して指定され
    た最大サイズのブロック以下であれば、前記選択された
    1つのキューに前記割当て開放された作業用記憶域ブロ
    ックを挿入し、 それ以外の場合は、前記アドレスを前記フリー記憶域リ
    ストにアドレス・エントリとして挿入する、 ステップを含むメモリ制御方法。
  2. 【請求項2】前記スピル・アドレスを定期的に決定する
    ステップは、 前記作業用記憶域ブロックが割当て済の唯一の指定サイ
    ズのブロックであれば、前記データ処理システムによる
    割当ての際に前記スピル・アドレスを前記作業用記憶域
    ブロックのアドレスに等しく設定し、 前記スピル・アドレスが現在のキューのスピル・アドレ
    スよりも前記フリー記憶域リストの始点から遠くにあれ
    ば、前記データ処理システムによる割当ての際に前記ス
    ピル・アドレスを前記割当てられたブロックのアドレス
    に等しく設定し、さもなくば、現在のキューのスピル・
    アドレスを保持し、 前記キューによりアドレスされる記憶域の総量を判定す
    ることにより前記キュウのスピル・アドレスを定期的に
    修正しスピル・アドレスを前記現在のスピル・アドレス
    よりも前記フリー記憶域リストの始点に近づけるように
    調整する、 ステップを含む請求項(1)記載のメモリ制御方法。
  3. 【請求項3】前記複数のキューの各々に対して前記アド
    レスの整序されたリストを当該キューに対して決定され
    たスピル・アドレスに関してテストし、 当該キューに関する前記修正されたスピル・アドレスが
    前記整序されたリスト内の最初のブロックよりも前記フ
    リー記憶域リストの始点に近ければ、前記キューの各々
    の全ての記憶域ブロックを前記フリー記憶域リストに挿
    入し前記キューから除去する、 ステップを更に含む請求項(2)記載のメモリ制御方
    法。
  4. 【請求項4】前記割当て開放された作業用記憶域ブロッ
    クのアドレスを前記キューの1つに挿入するステップ
    は、 前記アドレスを前記キューに第1エントリとして挿入
    し、 前記キュー内の位置を下送りするように全ての既存のエ
    ントリをシフトする、 ステップを含む請求項(1)記載のメモリ制御方法。
  5. 【請求項5】前記フリー記憶域リスト内に挿入されたア
    ドレス・エントリに隣接するフリー記憶域リスト・エン
    トリを調べて前記隣接するアドレスの1つにある作業用
    記憶域ブロックが前記挿入されたアドレスにある作業用
    記憶域ブロックに連続しているか否かを判定し、 連続しているなら前記隣接する作業用記憶域ブロックを
    前記挿入された作業用記憶域ブロックと併合する、 ステップを含む請求項(1)記載のメモリ制御方法。
JP2103255A 1989-04-28 1990-04-20 メモリ制御方法 Expired - Lifetime JPH0775004B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/344,715 US5109336A (en) 1989-04-28 1989-04-28 Unified working storage management
US344715 1989-04-28

Publications (2)

Publication Number Publication Date
JPH02300949A JPH02300949A (ja) 1990-12-13
JPH0775004B2 true JPH0775004B2 (ja) 1995-08-09

Family

ID=23351693

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2103255A Expired - Lifetime JPH0775004B2 (ja) 1989-04-28 1990-04-20 メモリ制御方法

Country Status (3)

Country Link
US (1) US5109336A (ja)
EP (1) EP0395606A3 (ja)
JP (1) JPH0775004B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011523135A (ja) * 2008-06-09 2011-08-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 異なるサイズを有するデータのブロックを格納し、取り出すための構成

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1990005338A1 (en) * 1988-11-02 1990-05-17 Hitachi, Ltd. Virtual computer system having extended memory
EP0417293B1 (en) * 1988-12-14 1998-08-12 Sony Corporation Data management system
US5247634A (en) * 1990-03-20 1993-09-21 Hewlett-Packard Company Method of managing memory allocation by association of memory blocks with a tree structure
JPH04217048A (ja) * 1990-12-18 1992-08-07 Pfu Ltd メモリ管理装置
US5339411A (en) * 1990-12-21 1994-08-16 Pitney Bowes Inc. Method for managing allocation of memory space
US5355483A (en) * 1991-07-18 1994-10-11 Next Computers Asynchronous garbage collection
US5742793A (en) * 1991-12-18 1998-04-21 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
US5572692A (en) * 1991-12-24 1996-11-05 Intel Corporation Memory configuration decoding system having automatic row base address generation mechanism for variable memory devices with row access interleaving
CA2072511A1 (en) * 1992-06-26 1993-12-27 Benedetto Angelo Notarianni Data processing apparatus with dynamic memory allocation
FR2694105B1 (fr) * 1992-07-22 1994-11-25 Bull Sa Utilisation d'un langage à interprète embarqué pour la réalisation d'un outil interactif de définition d'interface utilisateurs.
US5555388A (en) * 1992-08-20 1996-09-10 Borland International, Inc. Multi-user system and methods providing improved file management by reading
US5649109A (en) * 1992-10-22 1997-07-15 Digital Equipment Corporation Apparatus and method for maintaining forwarding information in a bridge or router using multiple free queues having associated free space sizes
EP0594196B1 (en) * 1992-10-22 1999-03-31 Cabletron Systems, Inc. Address lookup in packet data communications link, using hashing and content-addressable memory
US5561785A (en) * 1992-10-29 1996-10-01 International Business Machines Corporation System for allocating and returning storage and collecting garbage using subpool of available blocks
JPH06250928A (ja) * 1993-02-24 1994-09-09 Matsushita Electric Ind Co Ltd 情報処理装置
US5369732A (en) * 1993-03-29 1994-11-29 Trilogy Development Group Method and apparatus for goal processing memory management
US5555405A (en) * 1993-07-06 1996-09-10 Digital Equipment Corporation Method and apparatus for free space management in a forwarding database having forwarding entry sets and multiple free space segment queues
US5555389A (en) * 1993-07-07 1996-09-10 Hitachi, Ltd. Storage controller for performing dump processing
US6131150A (en) * 1993-10-05 2000-10-10 Digital Equipment Corporation Scaled memory allocation system
US5577243A (en) * 1994-03-31 1996-11-19 Lexmark International, Inc. Reallocation of returned memory blocks sorted in predetermined sizes and addressed by pointer addresses in a free memory list
US6119214A (en) * 1994-04-25 2000-09-12 Apple Computer, Inc. Method for allocation of address space in a virtual memory system
US5493652A (en) * 1994-04-29 1996-02-20 International Business Machines Corporation Management system for a buffer memory having buffers of uniform size in which the buffers are divided into a portion of contiguous unused buffers and a portion of contiguous buffers in which at least some are used
JPH086843A (ja) * 1994-06-23 1996-01-12 Fujitsu Ltd 半導体記憶装置
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
US5463776A (en) * 1994-09-22 1995-10-31 Hewlett-Packard Company Storage management system for concurrent generation and fair allocation of disk space among competing requests
US5652864A (en) * 1994-09-23 1997-07-29 Ibm Concurrent storage allocations or returns without need to lock free storage chain
US5579452A (en) * 1994-09-29 1996-11-26 Xerox Corporation Method of managing memory allocation in a printing system
US5644789A (en) * 1995-01-19 1997-07-01 Hewlett-Packard Company System and method for handling I/O requests over an interface bus to a storage disk array
US5604902A (en) * 1995-02-16 1997-02-18 Hewlett-Packard Company Hole plugging garbage collection for a data storage system
CA2230859C (en) * 1995-08-31 2002-12-31 Sand Technology Systems International, Inc. Memory management system and method
US5835959A (en) * 1995-12-01 1998-11-10 Sand Technology Systems International, Inc. Memory management system and method using dual indexing structures
US6427147B1 (en) 1995-12-01 2002-07-30 Sand Technology Systems International Deletion of ordered sets of keys in a compact O-complete tree
US5758353A (en) * 1995-12-01 1998-05-26 Sand Technology Systems International, Inc. Storage and retrieval of ordered sets of keys in a compact 0-complete tree
US5758181A (en) * 1996-01-22 1998-05-26 International Business Machines Corporation Method and system for accelerated presentation of segmented data
US5784699A (en) * 1996-05-24 1998-07-21 Oracle Corporation Dynamic memory allocation in a computer using a bit map index
US5978893A (en) * 1996-06-19 1999-11-02 Apple Computer, Inc. Method and system for memory management
US6185665B1 (en) * 1997-02-28 2001-02-06 Matsushita Electric Industrial Co., Ltd. File management apparatus, file management method, and recording medium containing file management program
AUPO648397A0 (en) * 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Improvements in multiprocessor architecture operation
US5933840A (en) * 1997-05-19 1999-08-03 International Business Machines Corporation Garbage collection in log-structured information storage systems using age threshold selection of segments
US6023712A (en) * 1997-07-30 2000-02-08 Quarterdeck Corporation Method and apparatus for brokering memory resources
CA2212316C (en) * 1997-07-31 2001-02-13 Ibm Canada Limited - Ibm Canada Limitee A method of recognizing fixed and variable sized data objects in memory
GB9717718D0 (en) * 1997-08-22 1997-10-29 Philips Electronics Nv Memory management with compaction of data blocks
US6049853A (en) * 1997-08-29 2000-04-11 Sequent Computer Systems, Inc. Data replication across nodes of a multiprocessor computer system
US6205528B1 (en) 1997-08-29 2001-03-20 International Business Machines Corporation User specifiable allocation of memory for processes in a multiprocessor computer having a non-uniform memory architecture
US6658417B1 (en) 1997-12-31 2003-12-02 International Business Machines Corporation Term-based methods and apparatus for access to files on shared storage devices
US6510504B2 (en) 1998-06-29 2003-01-21 Oracle Corporation Methods and apparatus for memory allocation for object instances in an object-oriented software environment
US6324550B1 (en) 1999-08-25 2001-11-27 Bullant Technology Pty Ltd Data object identification and removal system
US6539464B1 (en) * 2000-04-08 2003-03-25 Radoslav Nenkov Getov Memory allocator for multithread environment
US6711595B1 (en) * 2000-05-09 2004-03-23 Openwave Systems Inc. Method and apparatus for sharing standard template library objects among processes
US6658653B1 (en) * 2000-06-08 2003-12-02 International Business Machines Corporation Debugging methods for heap misuse
US20020032844A1 (en) * 2000-07-26 2002-03-14 West Karlon K. Distributed shared memory management
US6640233B1 (en) * 2000-08-18 2003-10-28 Network Appliance, Inc. Reserving file system blocks
US6976021B2 (en) * 2001-07-19 2005-12-13 Riverstone Networks, Inc. Method, system, and computer program product for managing a re-usable resource with linked list groups
US20030167408A1 (en) * 2002-03-01 2003-09-04 Fitzpatrick Gregory P. Randomized bit dispersal of sensitive data sets
US7152144B2 (en) * 2002-05-29 2006-12-19 Hitachi, Ltd. Centralized storage management method
US6954768B2 (en) * 2002-08-29 2005-10-11 International Business Machines Corporation Method, system, and article of manufacture for managing storage pools
US6985916B2 (en) * 2002-08-29 2006-01-10 International Business Machines Corporation Method, system, and article of manufacture for returning physical volumes
US7334104B2 (en) * 2004-11-20 2008-02-19 International Business Machines Corporation Satisfying memory allocation requests from memory pool or lookaside lists based on memory size requested to be allocated
KR20060108431A (ko) * 2005-04-13 2006-10-18 삼성전자주식회사 가변적인 동적 메모리 관리 방법 및 이를 포함하는임베디드 시스템
US7516291B2 (en) * 2005-11-21 2009-04-07 Red Hat, Inc. Cooperative mechanism for efficient application memory allocation
US8046597B2 (en) * 2007-08-14 2011-10-25 Dell Products L.P. System and method for managing storage device capacity use
US8838928B2 (en) * 2008-02-08 2014-09-16 Freescale Semiconductor, Inc. Memory management and method for allocation using free-list
US20110153929A1 (en) * 2009-12-22 2011-06-23 International Business Machines Corporation Disk memory utilization management using available slot clusters
US10331375B1 (en) * 2013-06-21 2019-06-25 Amazon Technologies, Inc. Data storage area cleaner
CN112416811B (zh) * 2020-11-18 2024-02-27 深圳市硅格半导体有限公司 基于数据关联度的垃圾回收方法、闪存及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3618045A (en) * 1969-05-05 1971-11-02 Honeywell Inf Systems Management control subsystem for multiprogrammed data processing system
US4325120A (en) * 1978-12-21 1982-04-13 Intel Corporation Data processing system
DE3416610A1 (de) * 1984-05-05 1985-11-07 Philips Patentverwaltung Gmbh, 2000 Hamburg Pufferspeicher fuer eine eingangsleitung einer digitalen vermittlungsstelle
JPS6382534A (ja) * 1986-09-26 1988-04-13 Matsushita Electric Ind Co Ltd メモリ保護装置
US4937791A (en) * 1988-06-02 1990-06-26 The California Institute Of Technology High performance dynamic ram interface

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011523135A (ja) * 2008-06-09 2011-08-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 異なるサイズを有するデータのブロックを格納し、取り出すための構成

Also Published As

Publication number Publication date
EP0395606A2 (en) 1990-10-31
JPH02300949A (ja) 1990-12-13
US5109336A (en) 1992-04-28
EP0395606A3 (en) 1992-03-25

Similar Documents

Publication Publication Date Title
JPH0775004B2 (ja) メモリ制御方法
JP3611305B2 (ja) 永続的且つロバストな記憶割当てシステム及び方法
JP2571664B2 (ja) コンピュータ主記憶域管理システムおよび方法
JP3771803B2 (ja) 永続的且つロバストなメモリ管理のためのシステム及び方法
US5623654A (en) Fast fragmentation free memory manager using multiple free block size access table for a free list
US6857045B2 (en) Method and system for updating data in a compressed read cache
US6640290B1 (en) Easily coalesced, sub-allocating, hierarchical, multi-bit bitmap-based memory manager
US5822562A (en) Method and apparatus for expansion, contraction, and reapportionment of structured external storage structures
US7085911B2 (en) Resizable cache sensitive hash table
US6574720B1 (en) System for maintaining a buffer pool
US6105103A (en) Method for mapping in dynamically addressed storage subsystems
US4660130A (en) Method for managing virtual memory to separate active and stable memory blocks
JP5222381B2 (ja) 使用可能なメモリ資源を管理するための構成および方法
US5125086A (en) Virtual memory paging apparatus with variable size in-page clusters
EP0172707A2 (en) Method for managing virtual memory to separate active and stable memory blocks
EP0969379A2 (en) Method and apparatus for memory allocation in a multi-threaded virtual machine
JP2003515812A (ja) 掃除用のガーベッジコレクションの効果を高めるための方法および装置
US6209062B1 (en) Method for holding cache pages that are not invalidated within normal time duration for a second access or that are likely to be accessed again soon
US5678024A (en) Method and system for dynamic performance resource management within a computer based system
EP0919927A2 (en) Dynamic memory allocation technique for maintaining an even distribution of cache page addresses within an address space
US5918243A (en) Computer mechanism for reducing DASD arm contention during parallel processing
CN114116194A (zh) 一种内存的分配方法及系统
US7085888B2 (en) Increasing memory locality of filesystem synchronization operations
US20080270676A1 (en) Data Processing System and Method for Memory Defragmentation
JPH0812643B2 (ja) ページ退避/復元装置