JPH06202936A - コンピュータ主記憶域管理システムおよび方法 - Google Patents

コンピュータ主記憶域管理システムおよび方法

Info

Publication number
JPH06202936A
JPH06202936A JP5229599A JP22959993A JPH06202936A JP H06202936 A JPH06202936 A JP H06202936A JP 5229599 A JP5229599 A JP 5229599A JP 22959993 A JP22959993 A JP 22959993A JP H06202936 A JPH06202936 A JP H06202936A
Authority
JP
Japan
Prior art keywords
queue
blocks
subpool
block
frame
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
JP5229599A
Other languages
English (en)
Other versions
JP2571664B2 (ja
Inventor
Geoffrey O Blandy
オーエン ブランディ ジオフリ
Arthur J Samodovitz
ジェイ サモドビッツ アーサー
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 JPH06202936A publication Critical patent/JPH06202936A/ja
Application granted granted Critical
Publication of JP2571664B2 publication Critical patent/JP2571664B2/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
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

(57)【要約】 【目的】本発明は、記憶領域割付け、戻し、および不要
部分回収の技術を提供し、最小限のオーバーヘッドをな
お必要とするものの、不要部分回収プロセスによって完
全に使用可能なフレームを多数産み出すことである。 【構成】 複数の別々の記憶域フレームから1つのサイ
ズの使用可能ブロックがサブプールの待ち行列に入れら
れる。不要部分回収ルーチンが、サブプールの待ち行列
上にブロックを保持するどのフレームが完全に使用可能
であるかを判断し、それらブロックを待ち行列から取り
出し、完全に使用可能なフレームのブロックに再生させ
る。ブロックは、待ち行列の先頭から割り当てられ、使
用後大部分のブロックは待ち行列の先頭に戻される。待
ち行列の最後部近傍のブロックによって表されるフレー
ムの一部であるブロックは、待ち行列上のその他のブロ
ックとは異なるポジションへ戻され、その他のブロック
の後で割り当てられる。

Description

【発明の詳細な説明】
【産業上の利用分野】本発明は、コンピューター主記憶
域の管理に一般的に関連し、特に不要部分の整理、すな
わち主記憶域への戻しおよび空ら記憶域ブロックの収集
および接合を扱う。
【従来の技術】プログラム、データ、制御情報、バッフ
ァ、ワーク・エリア等を記憶するために、コンピュータ
・システムは主記憶域を持つ。サブシステム・プログラ
ムを記憶するような主記憶域のいくつかは、初期プログ
ラム・ロードで割り当てられ、そのサブシステムが稼働
する限りは必要とされよう。一方、データおよびワーク
・エリアを記憶するような主記憶域の必要性は一時的な
ものに限られよう。オペレーティング・システムはその
サブシステムによって必要とされる(または「要求され
る」)主記憶域を割り当て、そのサブシステムは、もは
や必要としなくなると、オペレーティングシステムにこ
の主記憶域を戻す。大規模なコンピューター・システム
では、オペレーティング・システムは、例えば、毎秒4
0、000にも達する種々のサイズのブロックを割り当
て、同じ程度の数のブロックを戻りとして受け取る。主
記憶域が異なるまたはより大きいサイズのブロックに対
する要求を満たすことができるように、主記憶域の中で
戻されたブロックを相互に定期的に接合するために、不
要部分回収は、不可欠である。主記憶域を割り当てるた
めの既知の技法がいくつかある。1つの既知の技法で
は、要求された正確な量は、サイズに関係なく探し求め
られ、もし使用可能であれば、割り当てられる。この技
法は、割り付けに関し記憶域を浪費しないが、一方で
は、正確なサイズの使用可能なブロックをつきとめるに
は相当な探索時間を必要とするかもしれないし、主記憶
域の様々な断片化(フラグメンテーションFRAGMENTATIO
N)を発生させる。これらの問題に対処するため、他の
既知の技法ではあらかじめ決められたあるサイズの大き
さに作られたブロックのみを割り当て、各サイズの戻さ
れたブロックは、次の要求のためにそれぞれのサブプー
ルの中で管理される。例えば、1つの先行技術であるI
BM CP 67システムでは、最初の要求が出される
時、その要求に等しいか、あるいは越える中では最小の
あらかじめ決められたサイズのブロックが、主記憶域か
ら割り当てられる。これらのブロックの1つが戻される
まで、このブロック・サイズに対する主記憶域の割り付
けは、継続する。ブロックはそのサイズのブロック専用
のサブプールへ戻され、このサイズに対する次の割り付
け要求はそのサブプールから満たされる。時間の経過と
共に、多くのブロックが多くの異なるサブプールに戻さ
れる。 各々のサブプールは、他のサブプールのブロッ
クと異なるサイズのブロックを保有する。あるサイズの
ブロックに対する需要が殺到し、次に、そのサイズの需
要が急激に減少すると、対応するサブプールは、このサ
イズのブロックを過大に保有することとなる。定期的
に、そのサブプールからのすべてのブロックは主記憶域
に戻され、連続するブロックが接合され、次の要求を満
たすためにより大きいブロックが形成される。そのよう
な不要部分回収プロセスは、需要の殺到と次に続く急激
な減少に対応するよう、異なるまたはより大きいサイズ
のブロックの可用性を保証するために必要である。前述
のテクニックが主記憶域にそのサブプールのすべてのブ
ロックを戻すことに効果的である一方、種々のサイズの
ブロックが主記憶域に対応するギャップを残しながら尚
使用中であるので、主記憶域は、なお非常に断片化され
ている場合がある。この断片化は、主記憶域から次の要
求を満たすための探索時間を増加させ、主記憶域の中の
連続したロケーションを要求に応じて割り当てることが
できないという機会を増加させる。もうひとつの先行技
術IBM VM/XA SPIシステムでは、その主記憶
域は、各々連続した記憶域の4096バイトのフレーム
に論理的に分割される。主記憶域へのすべての割り付け
および戻しは、フレームに基づいて行われる。あらかじ
め決められたサイズの使用可能なブロックは、使用可能
なブロックを識別するために必要となる探索を最小化す
るために主記憶域からの割り付けの後サブプールにおい
て維持される。以下は、先行技術IBM VM/XA S
PIシステムのより詳細な記述である。初めのブロック
要求が出される時、フレームの1つが、その要求を満た
す最小のあらかじめ決められたサイズの数多くのブロッ
クに論理上分割される。次に、そのブロックの1つが、
その要求者に割り当てられる。残りのブロックは、サブ
プールの中で一緒に集められ、制御ブロックによって連
鎖され、(主記憶域の各フレームの使用に供され、フレ
ーム・テーブル・エントリーFRTEーと呼ばれる)記
憶域サブプール中のブロックが、次の要求を満たすため
に使われる。サブプールがこれら引き続き発生する要求
のために空らになり、同じサイズのブロックに対するも
うひとつの要求が出される時、もうひとつのフレームが
主記憶域域から選択され、ブロックに分割され、そのブ
ロックの一つがその要求をたすために使われる。残りの
ブロックは、同じサブプールに割り当てられるが、もう
ひとつのフレーム・テーブル・エントリの下にグループ
化される。ブロックがいずれかのフレームから戻される
につれ、それらはこのサブプールの中のそれぞれのフレ
ーム・テーブル・エントリの下にグループ化される。フ
レームにおける使用可能なブロックが空らになるまで、
同じサイズのブロックに対する引き続き発生する要求
は、同じフレームから満たされる。異なるサイズのブロ
ックを含む他のサブプールが、同様に生成される。オペ
レーティング・システムは、それぞれのフレームが完全
に使用可能であるかを判断するため各サブプール内の各
フレーム・テーブル・エントリの内容を定期的にチェッ
クし、もしそうならば、主記憶域にそのフレームの全体
を戻す。このテクニックは、不要部分回収に際し全体と
して戻されるフレームの数を最大にする点で非常に効果
的である。しかし、対応するフレーム・テーブル・エン
トリにブロックを戻すために余分のオーバーヘッドを必
要とする。各々の戻しのために、そのフレーム・テーブ
ル・エントリのアドレスは、最初に計算されていなけれ
ばならない。また、各ブロックの戻しが行われている間
に、システムは、そのブロック戻りによりそのフレーム
の使用可能性が完全となるのか、あるいはそのフレーム
の中で単に使用可能なブロックであるのかを判断しなけ
ればならない。前者の場合、FRMTEは引き続く不要
部分回収のため待ち行列からはずされる。後者の場合、
FRMTEは再び待ち行列に入れられる;このFRMT
Eは、その割り当てるブロックのための待ち行列全体に
わたるサーチを単純化するために使用可能なブロックが
全くなくなった時、待ち行列からはずされたものであ
る。中間的FRMTE待ち行列の使用は、CPUに負荷
を与える記憶域追加参照を必要とする。
【発明が解決しようとする課題】本発明は、使用可能記
憶域探索に要する時間や記憶域のフラグメンテーション
の発生または使用済みブロックの主記憶域への戻しにと
もなうオーバーヘッド等の従来技術上の問題を解決する
ため、記憶域割付け、戻し、および不要部分回収の技術
を提供し、その不要部分回収プロセスによって完全に使
用可能なフレームを効率的に多数産み出すことを意図す
る。
【課題を解決するための手段】本発明は、以下記述の新
たなコンピュータの記憶域管理システムを提示する。複
数の別々の記憶域フレームから1つのサイズの使用可能
ブロックがサブプールの待ち行列に入れられる。不要部
分回収ルーチンが、サブプールの待ち行列上にブロック
を保持するどのフレームが完全に使用可能であるかを、
各フレーム用の待ち行列上の使用可能ブロックの数を基
に、定期的または時折、判断する。次に、上記不要部分
回収ルーチンは、それらブロックを待ち行列から取り出
し、完全に使用可能なフレームのブロックに再生させ
る。上記ルーチンは、また、その他のフレームのブロッ
ク(同一フレームのその他のブロックと待ち行列でひと
まとめにされるこれらその他のフレームのブロック)を
再び待ち行列に入れる。ブロックは、待ち行列の先頭か
ら割り当てられ、使用後大部分のブロックは待ち行列の
先頭に戻される。このようにして、ブロックは、次々
と、待ち行列の先頭から割り当てられ、先頭へ戻される
ので、サブプールの利用度が低い場合は、待ち行列の最
後部近傍のフレームからのブロックは割り当てられな
い。戻されるブロックのいくつかは待ち行列の最後部近
傍のブロックによって表されるフレームの一部であるこ
ともあるので、そのようなブロックが、再生のためフレ
ームを使用可能とすることができる。本発明の好ましい
実施例では、待ち行列の最後部近傍のブロックによって
表されるフレームの一部であるブロックは、待ち行列上
のその他のブロックとは異なるポジションへ戻され、そ
の他のブロックの後で割り当てられる。この方法によっ
て、待ち行列の最後部近傍で表されるフレームが次回の
不要部分回収プロセスにおいて完全に利用可能となる見
込みが増加する。
【実施例】以下の記述では図を参照し、使用する数字は
図中のエレメントを表す。図1は、本発明を具体化して
いるコンピュータ・システム100を図示する。コンピ
ューターシステム100は、CPU110,112、オ
ペレーティング・システム130および主記憶域120
を含む。例として、コンピュータ・システム100はI
BM ES/9000コンピュータ・システムによって
提供され、オペレーティング・システム130は、以下
本発明によって記述される空き記憶域管理プログラム1
40および関連する構造および制御ブロックを除いて、
IBM VM/ESA1.1オペレーティング・システ
ムによって提供される。ES/9000コンピュータ・
システムは注文番号SA22-7201〜08の「ESA/390
プリンシプル・オブ・オペレーション」という題名の文
書で、また、VM/ESA1.1オペレーティング・シ
ステムグ・システムは注文番号GC24-555の「VM/ES
Aジェネラル・インフォメーション」という題名の文書
で、それぞれ詳述されている。これら両方のドキュメン
トともIBM社から発行されている。本発明は、仮想機
械または非仮想機械システム環境のいずれにおいても使
われることができる。主記憶域120は、1フレームに
つき連続した4096バイトのフレーム135のような
複数のフレームに論理上分割される。以下により詳細に
記述されるように、4096より少ない連続したバイト
を持つフレームから成るひとつ以上のブロックが、記憶
要求を満たすために割り当てられることができる。オペ
レーティング・システム130内のサブシステム125
のようなコンピュータ・システム100の内の種々のプ
ログラムおよびサブシステムによって、そのような要求
は出される。オペレーティング・システム130の空き
記憶域管理プログラム140は、要求に従って主記憶域
をサブシステム125に割り当てるためのブロック割当
てルーチン400と、ブロックがもはや必要とされない
時、サブプール151〜153に割当てブロックを戻す
ためのブロック戻しルーチン800と、定期的に戻され
たブロックを回収し、完全に使用可能なフレームと接合
し、主記憶域120へ完全に使用可能なフレームを戻す
ための不要部分回収ルーチン600とを含む。これらの
機能は、 図5〜8を参照しながら以下詳細に記述され
る。これらの機能は以下記述の構造および制御ブロック
を使用する。主記憶ブロックの急速な割当ておよび戻し
を容易にするために、空き記憶域管理プログラムは、使
用可能なブロックから成る複数のサブプールを維持す
る。同じサブプール内のすべてのブロックは同じサイズ
を持ち、各サブプールは他のサブプールのブロックとは
異なるサイズのブロックを持つ。サブプールのためのア
ンカーを含むサブプール制御ブロック151〜153
(図1)によって各サブプールは、代表される。サブプ
ール制御ブロックのすべては、主記憶の連続したロケー
ションに記憶されて、サブプール制御ブロック・テーブ
ル155を形づくるために昇順に並べられる。図3と図
4の参照によって詳細に記述されるが、それらが関連づ
けられるフレームに関係なく同じサブプールの範囲内の
すべての使用可能なブロックは、サブプール制御ブロッ
ク・アンカー320から待ち行列に入れられる。オペレ
ーティング・システム130は、また、主記憶域からの
すべてのフレームを表わすためにフレーム制御ブロック
またはフレーム・テーブル・エントリ171〜179
(FRMTE)から成るフレーム・テーブル170を含
む。グローバル使用可能フレーム待ち行列アンカー17
9は、(システム使用のために)完全に使用可能だがサ
ブプールに割り当てられてない最初のFRMTEをポイ
ントする。すべての未割り当てだが完全に使用可能なF
RMTEがグローバル使用可能フレーム待ち行列180
を形づくるために一緒に連鎖されるまで、これら未割り
当てで使用可能なFRMTEは、次の未割当てだが完全
に使用可能なFRMTEに、ポイントし、次々にこの操
作が行われる。要求サイズに対応しているサブプールが
空らの場合のみ、空ら記憶域管理プログラムは、グロー
バル使用可能フレーム待ち行列から割り当てる。この
時、これらの未割当てだが完全に使用可能なフレームの
1つは、空らサブプールに割り当てられ、1またはそれ
以上のブロックが割り当てられる。残りのFRMTEの
いくつかは、サブプールに割り当てられ、部分的にまた
は完全に使用可能なフレームを表わす。サブプールに割
り当てられる完全に使用可能なフレームは、以前のある
時点では部分的か完全にか使用されたものである;すな
わち、そのブロックはそのサブプールにその後戻された
が、そのフレームはまだグローバル使用可能フレーム待
ち行列に戻されなかったものである。残りのFRMTE
は、完全に利用され、どのサブプールにも割り当てられ
てないフレームを表す。本発明の一つの目的は、本発明
の実施に必要なオーバーヘッドを最小限に押さえなが
ら、グローバル使用可能フレーム待ち行列に全体におい
て戻されることができる、別々のサブプールに割り当て
られるフレームの数を極大化することである。図2は、
不要部分回収の間のFRMTE173を図示する。FR
MTE173は、サブプール151に割り当てられ、こ
の不要部分回収時に部分的に使用可能なフレーム135
を表わす。フレーム135内のブロック251、25
2、253および254は、使用可能で、FRMTEか
ら待ち行列に入れられる。FRMTE135およびサブ
プールに割り当てられるフレームを表わすすべてのFR
MTEは、不要部分回収の時点でのみ、参照され、使用
され、そして修正される。これらのFRMTEは、引き
続き起きるブロックの次の割当てまたは戻しの間、不要
部分回収の後サブプールへの変化がFRMTEに反映さ
れないように、参照も使用も修正もされない。これは、
FRMTEを維持し、本発明を実施するため必要となる
オーバーヘッドを減少させる。FRMTE173の最初
のフィールド210は、そのサブプールの中で次のFR
MTEへのポインタである。以下記述のように各サブプ
ールの中でのフレームの順序は、不要部分回収時に確立
される。FRMTE173の2番目のフィールド220
は対応するフレームにおける使用可能ブロックの待ち行
列のためのアンカーであり、最初のそのような使用可能
ブロックをポイントする。この最初の使用可能ブロック
は次の使用可能ブロックをポイントし、次々にこのよう
にして最後のブロックまでポイントされる。FRMTE
173の3番目のフィールド230は、そのフレームの
中で最後の使用可能ブロックをポイントしている。4番
目のフィールド235は、そのフレームの中で現在使用
可能ブロックの数を示す。残りのフィールド240は、
本発明と関係のない目的のためにオペレーティング・シ
ステム130によって使われる。(グローバル使用可能
フレーム待ち行列180の上のフレームを表わすFRM
TEについては、フィールド210は待ち行列180上
の次のFRMTEをポイントし、フィールド220は先
行するFRMTEをポイントし、フィールド230およ
び235は使われない。)図3および図4は、サブプー
ル制御ブロック151および2つの時点で関連づけられる
使用可能ブロックを図示する。サブプール制御ブロック
151内には複数のフィールドがある。フィールド31
0は、複数のプロセッサの間でのサブプールへのアクセ
スを逐次実行するために用いられるロックである。フィ
ールド320は、そのサブプールの最初の(すなわちそ
の先頭の)ブロックをポイントするサブプール・アンカ
ーである。そのサブプールの中の最初のブロックは、次
のブロックをポイントし、次はまたその次というように
最後のブロックまでポイント付けが行われる。ブロック
は、その待ち行列の先頭から割り当てられる。サブプー
ルが空らのとき、フィールド320は、ゼロと等しい。
フィールド330は、このサブプールから割り当てら
れ、現在使用されているブロックの数を示す。フィール
ド340は、このサブプール内でブロックを持っている
フレームの数を示す。フィールド350はこのサブプー
ルの中での完全に使用可能フレーム179へのポインタ
である;このフレームは最後の不要部分回収時に完全に
使用可能であるとわかって、(ブロック・アンカー32
0から始まる)サブプール待ち行列から取り除かれた
が、まだグローバル使用可能フレーム待ち行列180に
戻されてはいない。例えば、不要部分回収は30秒毎に
行われるとする。そのとき、完全に使用可能フレーム
は、識別され、空きFRMTEアンカー350から連鎖
される。空きFRMTEアンカー350からつながれた
これらの完全に使用可能ブロックは、(それらがサブプ
ールが空きのために次の不要部分回収が行われる前にサ
ブプールに割り当てられることはないと仮定して)、次
の不要部分回収の始めにグローバル使用可能フレーム待
ち行列180に戻される。下記により詳細に述べるが、
オーバーヘッドを減らすため、ブロック・アンカー32
0から始まるサブプール待ち行列が空らになる時の割当
て要求を満たすため、グローバル使用可能フレーム待ち
行列180からのフレームが使用される前に空フレーム
待ち行列からのフレームが使われる。フィールド360
は、そのサブプールの中のすべてのブロックのサイズを
示す。フィールド370は、「回収待ち行列」の最初の
ブロックへポイントする回収待ち行列アンカーである。
回収待ち行列は、前回の不要部分回収時にサブプール待
ち行列の最後にブロックが既に入れられているそのフレ
ームの戻されるブロックのための貯蔵所である。しか
し、本発明に従えば、戻されるブロックが前回の不要部
分回収時にサブプール待ち行列の最後部またはその近く
で待ち行列に入れられた複数フレームのブロックを回収
待ち行列が受け取ることができることに注意すべきであ
る。ブロックが回収待ち行列に戻されるフレームの正確
な数は、各サブプールに割り当てられたフレームの数に
依存する。たとえば、フレームからのブロックが最後の
不要部分回収時にサブプール待ち行列の最後部近くに入
れられた限り、これらの1/4または半分のフレームか
らのブロックを回収待ち行列に戻すことは、望ましいか
もしれない。更に下記に詳細に述べるように、サブプー
ル待ち行列が空らになり、もうひとつの要求がそのサブ
プールからのブロックに対し行われなければ、ブロック
は回収待ち行列から割り当てられない。かくして、ブロ
ックが最後の不要部分回収時にサブプール待ち行列の最
後部近くで待ち行列に入れられたフレームで、そのブロ
ックがその後回収待ち行列に戻されるフレームは、(こ
のサイズに対する需要が弱まるならば)次の不要部分回
収時に完全に使用可能となる。図3は、不要部分回収の
直後にそのサブプールの中で使用可能なブロックを図示
する。不要部分回収ルーチンは、各フレーム からの使
用可能ブロックのすべてを一団にまとめるためにサブプ
ール待ち行列を再配置した。大括弧の各々は、フレーム
175、171、178および173のそれぞれの範囲
内で、使用可能ブロックのすべてを示す。フレーム17
3からのブロックは、サブプール待ち行列の最後部にま
ためられた。引き続いて、ブロックは先に述べたように
サブプール待ち行列または回収待ち行列に戻される。各
ブロックは戻されるにつれ、その待ち行列の中で先頭と
なり、待ち行列内のその他のブロックを1ポジション後
方に置き換える。これは、各待ち行列からのブロックの
割り当ておよびその戻しをおこなうための「LIFO」
または「プッシュダウンスタック」として知られている
手法である。ある場合には複数のブロックが1個のフレ
ームからかためて戻されるかもしれない。一方、1時点
で1フレームからただひとつのブロックが戻される場合
もある。戻されたブロックを持つフレームの順序は、予
測できない。図4は、最後の不要部分回収時にサブプー
ル待ち行列の最後部の近くで、フレーム175からの待
ち行列の最初の2個のブロックが割り当てられ、フレー
ム178および171からの2個のブロックがその待ち
行列の最初に戻された直後の(次の不要部分回収時間の
前の)同じサブプール待ち行列を図示する。実際には1
秒間に何千ものブロックがそのサブプールに割り当てら
れて、サブプールに戻されるかもしれないが、単純化の
ためわずか2つの割当てと2つの戻しが図4で示される
ていることに注意すべきである。図4はまた、最後の不
要部分回収時以来フレーム173から3個のブロックが
回収待ち行列に戻されたことを示す。フレーム173に
合計6個のブロックがあると仮定すると、フレーム17
3が今完全に使用可能なことを、図4が示す状況は、明
らかにしている。サブプール待ち行列の前方部にその後
引き続き戻されるブロックを含め、フレーム173から
のブロックに先行するサブプール待ち行列のブロックの
すべてが次の不要部分回収以前に割り当てられないなら
ば、フレーム173は完全に使用可能で、グローバル使
用可能フレーム待ち行列に空らFRMTEアンカーを介
して次の戻しのために入れられることができる。本発明
の目的に従えば、不要部分回収時のブロックのグループ
化と、サブプール待ち行列の先頭からのブロックの割当
てと、回収待ち行列へのフレーム173からの(サブプ
ール待ち行列の最後に表わされる)ブロックの戻しと、
サブプール待ち行列の先頭へのその他のブロックの戻し
とは、以下記述のような効果を持つ。不要部分回収の間
にそのサブプールが完全に使用/割り当てされないと仮
定すると、その待ち行列の最後のフレーム173のブロ
ックは、新しい要求のために割り当てられない。しかし
ながら、フレーム173の他のブロックが使用の後戻さ
れる時、それらは回収待ち行列の中に入れられる。上記
のように、サブプール待ち行列が空らになり、もうひと
つの要求がこのサブプールのために存在するのでなけれ
ば、ブロックは回収待ち行列から割り当てられない。次
の不要部分回収時に回収待ち行列上のブロックはサブプ
ール待ち行列からのブロックと組み合わせられ、図示さ
れた例で、フレーム173が完全に使用可能となる。
(同様に、その次の不要部分回収時に、あらゆる不完全
なフレームの戻されたブロックすべては、先に述べたよ
うにサブプール待ち行列の上にまとめられる。) した
がって、前述の技法は、待ち行列の最後のフレームが次
の不要部分回収時に完全に使用可能で、グローバル使用
可能フレーム待ち行列180に全体においてその後戻さ
れることができるという機会を増やす。上記のように、
本発明は、サブプール待ち行列の最後に表わされる1ま
たはそれ以上のフレームから、回収待ち行列にブロック
を戻すよう拡張できる。また、本発明の目的に従えば、
ブロックの割り当てと戻し、および、不要部分回収の実
行とに必要とされるオーバーヘッドは僅かである。 以
下にさらに詳細に記述されるが、ブロック割当ておよび
ブロック戻しルーチンは短く、不要部分回収ルーチンは
30秒に1回だけ実行されればよい。同様に、各サブプ
ールから割り当てるブロックに対する探索と、どの待ち
行列が戻されるブロックを受け取るべきかの決定と、ブ
ロックを受け取る待ち行列の位置の探索とに要する時間
は短い。図5は、空き記憶域管理プログラム140のブ
ロック割当てルーチン400を図示する。サブシステム
125またはほかのプログラムが主記憶域のブロックを
要求するとき、このルーチンは、起動される。ステップ
410の中で、ブロック割当てルーチン400は、その
要求を満たすことのできる最小の、あらかじめ決められ
たブロック・サイズを持っているサブプールを探索す
る。要求された倍長語数に等しい行数をテーブル412
(図1)に指標付けすることによってこれは実行され
る。テーブルの各々の行は、要求サイズに正確に等しい
か、あるいは他のどのサブプールよりもわずかな数だけ
要求サイズを超えているブロック・サイズを持っている
サブプールをポイントする。次に、ルーチン400は、
フィールド310を設定することによってサブプール制
御ブロック上のロックを獲得し、次に、そのサブプール
が空らならば、サブプール待ち行列の先頭のブロックの
アドレスまたはゼロであるサブプール待ち行列アンカー
320を読む(ステップ430)。次に、ルーチン40
0は、ブロック・アンカー・アドレスがゼロかを判断す
る (ステップ440)。ゼロでないならば、サブプー
ル待ち行列に使用可能ブロックがあり、ルーチン400
はそのサブプール上の先頭のブロックを取り出し、(ブ
ロック・アンカーを次のブロックをポイントするように
し)、その要求元にそのブロック・アドレスを供給する
(ステップ450)。次に、ルーチン400は、そのロ
ックを解放する(ステップ470)。ステップ440に
戻って、もしもサブプール待ち行列が空らならば、ブロ
ック割当てルーチン400は、回収待ち行列から割当て
要求を満たすことを試みる。かくして、ブロック割当て
ルーチン400は、回収待ち行列が空らの場合ゼロか、
または回収待ち行列上の先頭のブロックのアドレスかの
いずれかの値である回収待ち行列アンカー370を読む
(ステップ504)。回収待ち行列が空らでないなら
ば、ブロック割当てルーチンは、回収待ち行列の上の最
初のブロックをポイントするようにサブプール待ち行列
アンカーを変更し、回収待ち行列アンカーをゼロに変更
することによって、回収待ち行列からサブプール待ち行
列へブロックを移動させる(ステップ506)。次に、
ブロック割当てルーチンは、サブプール待ち行列の上の
最初のブロックを割り当てるためにステップ430に戻
る。再びステップ504に戻って、もしも回収待ち行列
上にブロックがなければ、サブプール待ち行列上に表わ
されず、まだグローバル使用可能フレーム待ち行列18
0に戻されてないが完全に使用可能なフレームがあるか
を決定するため、ブロック割当てルーチンは空らのFR
MTEアンカー350を読取る。もしもそのようなフレ
ームがあれば(ステップ510)、アンカー350のポ
インターを第2のフレームがあればそのフレームをポイ
ントするように、もしなければゼロに変更することによ
って、(そのアドレスが空らFMRTEアンカー350
によって示される)最初のそのようなフレームを待ち行
列から取り出す。次に、ブロック割当てルーチンは、ア
ンカー320にアンカー220をコピーすることによっ
て、空らFRMTE待ち行列からはずされたフレームの
最初のブロックをポイントするようにサブプール待ち行
列アンカー320を変更する。その後、フィールド21
0、220、230および235は、クリアされる。次
に、そのルーチンは、上に記述された方法でサブプール
待ち行列の中で最初のブロックを割り当てるためにステ
ップ430まで飛ぶ。ステップ510へ再び戻って、サ
ブプール待ち行列および回収待ち行列が空らで、空らの
FRMTEアンカーによって識別される(まだグローバ
ル使用可能フレーム待ち行列180に戻されなかった)
完全に使用可能なフレームが存在しないならば、ブロッ
ク割付ルーチンは、(待ち行列180上の次の完全に使
用可能フレームをポイントするようにグローバル使用可
能フレーム待ち行列アンカーを変えることによって)グ
ローバル使用可能フレーム待ち行列180の最初のフレ
ームを待ち行列からはずす(ステップ520)。次に、
ルーチン400は、そのフレームをサイズがそのサブプ
ールのそれに等しいブロックに論理的に分割し、それら
ブロックを一緒に待ち行列に入れ、フィールド210,
220、230、および235をクリアすることによっ
て対応するFRMTEを初期化する(ステップ53
0)。次に、ルーチン400は、サブプール・アンカー
(ステップ540)にその待ち行列を置く(ステップ54
0)。次に、ルーチン400は、サブプール待ち行列の
中で最初のブロックを割り当てるためにステップ430
に飛ぶ。図6および図7は、空き記憶域管理プログラム
140の不要部分回収ルーチン600を図示する。この
ルーチンはタイミング・メカニズムによって一定時間毎
に(たとえば、30秒毎に)起動される。ステップ60
2で、不要部分回収ルーチンは、不要部分回収を実行す
るための最初または次のサブプールを選択する。上述の
ように、サブプール制御ブロックは主記憶域の連続した
記憶位置に記憶され、最も低いアドレスをもつサブプー
ル制御ブロックは不要部分回収のために選択される最初
のブロックである。次に、ルーチン600は、選択され
たサブプール制御ブロック上のロックを獲得し(ステッ
プ605)、さらに、まだグローバル使用可能フレーム
待ち行列180に戻されなかった完全に使用可能フレー
ムがあるかどうかを決めるために空きフレーム・アンカ
ー350を読む(ステップ610)。下記に詳述される
が、不要部分回収の各事例の間に、完全に使用可能なフ
レームは識別され、サブプール制御ブロックの空きフレ
ーム・アンカー350から連鎖されるが、不要部分回収
の次の事例までグローバル使用可能フレーム待ち行列1
80に戻されない。この先延ばしにより、普通にはない
ような要求中断の間に完全に使用可能になったようなフ
レームの戻しを防止するめことができる。グローバル使
用可能フレーム待ち行列から次の要求を満たす方が空ら
FRMTEアンカー待ち行列からよりもいっそう多くの
オーバーヘッドを必要とする。空らのFMRTEアンカ
ー360から現在連鎖されているひとつ以上の完全に使
用可能フレームがあるならば、それらは今アンカー35
0からはずされ、グローバル使用可能フレーム待ち行列
180に入れられる(ステップ665)。もしもなけれ
ば、またはステップ665の後の場合は、ルーチン60
0は、サブプール待ち行列アンカー320から連鎖され
ている最初のブロックを選択して、待ち行列からはずす
(ステップ620)。次に、ルーチン600は、以下の
方程式に基づいてフレーム・アドレスから、FRMTE
アドレスを計算する(ステップ625): FRMTE
アドレス=フレーム番号 * FRMTEサイズ + フレ
ーム・テーブル開始アドレス(ただし、ブロック・アド
レスのビット1〜19 = フレーム番号)。次に、ルー
チン600は、FMRTEからのブロックを待ち行列に
入れ、FRMTEのカウント・フィールド235を増加
する(ステップ630)。次に、ルーチン600は、こ
れがサブプール待ち行列に入れられるFMRTEからの
最初のブロックであるかを判断し(ステップ635)、
そうであれば、このサブプール待ち行列上でブロックを
持った他のフレームを表すFRMTEと共にそのFRM
TEを待ち行列に入れる。この待ち行列化ステップは、
ポインタ・フィールド210を使用する。次に、ルーチ
ン600は、フィールド230にこのブロックのアドレ
スを保存する(ステップ645)。待ち行列メカニズム
がプッシュダウンスタックであるので、、待ち行列にあ
る最初のブロックは、すべてのブロックが待ち行列に入
れられたあとその待ち行列にある最後のブロックである
という点に注意すべきである。次に、ルーチン600
は、サブプール待ち行列に他のブロックがあるかどうか
を決め(ステップ650)、もしそうならば、ステップ
620に飛び、対応FRMTEから次のブロックを待ち
行列に入れる。サブプール待ち行列上の最後のブロック
が対応するFRMTEの待ち行列に入れられるまで、前
述のプロセスは、くり返される(ステップ650)。次
に、ルーチン600は、ステップ620から645がサ
ブプール待ち行列(回収待ち行列ではない)に対し実行
されたと判断し(ステップ652)、回収待ち行列にブ
ロックが存在するか否か判断する(ステップ654)。
もし存在するならば、ルーチン600は、それぞれのF
RMTEに、図例ではフレーム173のFRMTEに、
与えるために回収待ち行列を選択する(ステップ65
6)。かくして、ルーチン600は、このFRMTEに
その回収待ち行列のブロックを加えるためにステップ6
20から645のループへ戻る。回収待ち行列のブロッ
クのすべてがそれぞれのFRMTEに加えられたあと
(ステップ650、652)、ルーチン600はステッ
プ710へ進み、検査のためサブプールから獲得した最
初のFRMTEを選択する。サブルーチン600は、ブ
ロックのすべてが今やFRMTE待ち行列に入れられて
いるか、すなわち、今や使用可能かをカウント・フィー
ルド235を基に判断する(ステップ720)。もしそ
うならば、このFRMTEはそのサブプールのために空
らフレーム・アンカー350から連鎖され、それはこの
フレームのための不要部分回収を成功裡に完了する。サ
ブプールが空らになるならば、このFRMTEのフィー
ルド200は、空らフレームからサブプール・アンカー
320へブロックの待ち行列を容易に動かすために後に
使われることができるように、このFRMTEのフィー
ルド200は、手つかずのままにしておかれる。しか
し、このFRMTEが完全に使用可能でないならば、こ
のFRMTEのブロックは、サブプール待ち行列の上に
再度入れられなければならない。ステップ722で、こ
のFRMTEがサブプール待ち行列に入れられべき最初
のブロックを含むかどうか、ルーチン600は、判断す
る。サブプール待ち行列上に入れられる次のブロックの
各々が以前のブロックを1ポジション後方におきかえる
ので、待ち行列に入れられた最初のブロックは、不要部
分回収プロセスの結果、サブプール待ち行列の最後のブ
ロックとなる。上述のように、サブプール待ち行列の上
に表わされる最後のフレームに対するその後戻されたブ
ロックは、回収待ち行列(サブプール待ち行列ではな
い)に入れられる。したがって、ブロックが戻される時
それらが適切な待ち行列に入れられるように、サブプー
ル待ち行列上に表わされる最後のフレームは識別されて
いなければならない。それ故に、ルーチン600は、フ
ィールド380にこのフレームのアドレスを記憶する
(ステップ724)。次に、ルーチン600は、サブプ
ール待ち行列アンカーからのサブプール待ち行列にこの
FRMTEのすべての使用可能ブロックを成功裡に(ま
とめて)入れる(ステップ730)。このステップに
は、そのフレームのサブプール待ち行列から最初の使用
可能ブロックへのポインタと、そのフレームの最後の使
用可能ブロックから残りのサブプール待ち行列へのポイ
ンタとを必要とする。次に、ルーチン600は、次の不
要部分回収に備え初期状態にするためFRMTEのすべ
てのフィールドをゼロにする。前述のプロセスは、その
サブプールの他の使用可能ブロックを含むFRMTEの
各々のためにくり返される(ステップ750)。次に、
ルーチン600は、このサブプール制御ブロック上のロ
ックを解放するためにステップ655に飛ぶ。もしも不
要部分回収を必要としている他のサブプールが存在する
ならば、ルーチン600は、ステップ600に飛ぶこと
によって、これら他のサブプールのために図6および図
7のプロセスをくり返す。図6および図7で示される不
要部分回収には2つの有益な効果がある。第1に、今完
全に使用可能なフレームのすべては、不要部分回収の次
の事例の間にグローバル使用可能フレーム待ち行列18
0への次の戻しのために空らFRMTEアンカーから連
鎖される。第2に、追加の完全に使用可能なフレームを
産み出すような方法で、以下に記述されるブロック戻し
ルーチン800が新しいブロックを戻すことができるよ
うに部分的に使用可能なフレームそれぞれのブロックの
すべてが一緒にグループ化される。図8は、ブロック戻
しルーチン800を図示する。このルーチンは、それが
もはやブロックを必要としないとき、サブシステム12
5またはほかのプログラムによって呼び出され、もうひ
とつのサブシステムまたはほかのプログラム使用のため
にブロックを戻す。ステップ810で、ルーチン800
は、どのサブプールが戻されているサイズのブロックを
含むかをテーブル412を基に判断し(ステップ81
0)、そのサブプールのロックを入手する(ステップ8
20)。次に、サブプール待ち行列または回収待ち行列
にそのブロックを戻すかどうか、ルーチン800は、決
めなければならない。したがって、ルーチン800は、
戻されたブロックのアドレスをサブプール待ち行列の上
に表わされた最後のフレームに対応しているフィールド
380と比較する。戻されたブロックがサブプール待ち
行列で表される最後のフレームの一部でないならば(ス
テップ822)、ルーチン800はサブプール待ち行列
上の最初のポジションにそのブロックを入れる(ステッ
プ830)。ステップ830は、ブロック・アンカー3
20が、新しいブロックをポイントするために変更され
ること、および、サブプール待ち行列の次のブロックを
ポイントするするように戻されたブロックの中へポイン
タが書かれることののみを必要とする。次に、ルーチン
800は、そのブロックがもはや用いられていないので
このサブプールに対する使用カウントを減少させ(ステ
ップ840)、そのサブプール上のロックを取り除く
(ステップ850)。再びステップ822で、戻された
ブロックがサブプール待ち行列の上に最後に表わされた
フレームの一部であるならば、そのブロックが回収待ち
行列に最初に入れられ(ステップ852)、次にステッ
プ840および850が、実行される。回収待ち行列に
戻されるブロックの例外はあるが、ブロックがサブプー
ル待ち行列の先頭割り当てられ、サブプール待ち行列の
先頭に戻されるので、サブプール待ち行列の利用が低め
の場合は、サブプールの最後のフレームのブロックが割
り当てられることは殆どないだろうということは注意さ
れるべきである。かくして、ブロックが戻されるにつ
れ、戻されたブロックのいくつかは、そのサブプールの
最後にあるフレームからのものとなり、その最後の時点
でフレームの利用性が完成する。サブプール待ち行列の
最後にある1またはそれ以上の特定フレームのための回
収待ち行列の使用は、回収待ち行列上のブロックによっ
て表されるフレームが次の不要部分回収時に完全に使用
可能となる機会を大いに増加させる。しかしながら、サ
ブプール待ち行列最後部近辺での1またはそれ以上の他
のフレームの他のブロックの集合はまた、これらたのブ
ロックが割り当てられる可能性が少ないので次の不要部
分回収時に完全に使用可能となる機会を増加させる。し
たがって、回収待ち行列の使用をせず、サブプール待ち
行列の先頭のすべてのブロックの戻しがあっても、不要
部分回収時に完全に使用可能なフレームが存在する機会
は増加することとなる。また、サブプール待ち行列の先
頭からのブロックの割り当て、および、サブプール待ち
行列の先頭または回収待ち行列の先頭へのブロックの戻
しとに要するオーバーヘッドは最小のものとなる。上記
のように、本発明に従ったシステム、方法およびプログ
ラムが、開示された。しかしながら、本発明の有効範囲
からはずれることなく、多数の変更および置換を行うこ
とは可能である。たとえば、希望する場合、サブプール
待ち行列の最後部近傍で表わされるフレームから戻され
るブロックは、回収待ち行列へ戻す代わりにサブプール
待ち行列の最後部へ戻してもよい。これは、サブプール
待ち行列の最後に不要部分回収の後表わされるフレーム
から戻されるブロックの再配分を避けるという同様の効
果を持つ。しかし、第2のポインタが、サブプール待ち
行列の最後のために必要とはなる。
【発明の効果】本発明が提示する記憶域割付け、戻し、
および不要部分回収の技術を実施することによって、従
来技術で課題であった、使用可能記憶域探索に要する時
間短縮、記憶域の断片化の極小化および使用済みブロッ
クの主記憶域への戻しにともなうオーバーヘッドの極小
化が実現し、その不要部分回収プロセスによって完全に
使用可能なフレームを多数生成することが可能となり、
よって主記憶域の有効利用が図られる。
【図面の簡単な説明】
【図1】本発明を具体化するオペレーティングシステム
を含むコンピューターシステムのブロック図である。
【図2】不要部分回収時にフレームの範囲内で使用可能
なブロックのすべてを表わして、アンカーに連結するた
めに図1のオペレーティングシステムによって使われる
フレーム制御ブロックまたはフレーム・テーブルエント
リの図表である。
【図3】サブプール制御ブロックと不要部分回収時の関
連づけされたブロックの図表で、ここで、サブプール制
御ブロックは、ひとつ以上のフレームからの同じサイズ
の使用可能なブロックのすべてを表わしアンカーに結合
させるよう図1のオペレーティングシステムによって使
われる。
【図4】図3と同じサブプール制御ブロックの図表であ
るが、時間的に図3より後(ただし次の不要部分回収の
前)の状態で、関係ブロックの別のサブプールを持って
いる。
【図5】図1のオペレーティングシステムの範囲内の空
き記憶域管理プログラムのブロック割当てルーチンのフ
ローチャートである。
【図6】図1のオペレーティングシステムの空ら記憶域
管理プログラムの範囲内で、不要部分回収ルーチンのフ
ローチャートを形づくる。
【図7】図6の続きで、図1のオペレーティングシステ
ムの空ら記憶域管理プログラムの範囲内で、不要部分回
収ルーチンのフローチャートを形づくる。
【図8】図1のオペレーティングシステムの空き記憶域
管理プログラムのブロック戻しルーチンのフローチャー
トである。
【符号の説明】
120 主記憶域 140 オペレーティング・システム 135 フレーム 170 フレーム・テーブル・エントリ 140 ブロック割当ルーチン 600 不要部分回収ルーチン 800 ブロック戻しルーチン 179 アンカー 412 ポインター 170 フレーム・テーブル 155 サブプール 173 FRMTE 151 ロック 360 ブロック・サイズ 320 サブプール待ち行列アンカー 340 フレーム・カウント 380 最後の待ちフレームのアドレス 350 空らFRMTEアンカー 370 回収待ち行列アンカー
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成5年8月27日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】変更
【補正内容】
【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピューター主記憶
域の管理に一般的に関連し、特に不要部分の整理、すな
わち主記憶域への戻しおよび空ら記憶域ブロックの収集
および接合を扱う。
【0002】
【従来の技術】プログラム、データ、制御情報、バッフ
ァ、ワーク・エリア等を記憶するために、コンピュータ
・システムは主記憶域を持つ。サブシステム・プログラ
ムを記憶するような主記憶域のいくつかは、初期プログ
ラム・ロードで割り当てられ、そのサブシステムが稼働
する限りは必要とされよう。一方、データおよびワーク
・エリアを記憶するような主記憶域の必要性は一時的な
ものに限られよう。オペレーティング・システムはその
サブシステムによって必要とされる(または「要求され
る」)主記憶域を割り当て、そのサブシステムは、もは
や必要としなくなると、オペレーティングシステムにこ
の主記憶域を戻す。大規模なコンピューター・システム
では、オペレーティング・システムは、例えば、毎秒4
0、000にも達する種々のサイズのブロックを割り当
て、同じ程度の数のブロックを戻りとして受け取る。主
記憶域が異なるまたはより大きいサイズのブロックに対
する要求を満たすことができるように、主記憶域の中で
戻されたブロックを相互に定期的に接合するために、不
要部分回収は、不可欠である。
【0003】主記憶域を割り当てるための既知の技法が
いくつかある。1つの既知の技法では、要求された正確
な量は、サイズに関係なく探し求められ、もし使用可能
であれば、割り当てられる。この技法は、割り付けに関
し記憶域を浪費しないが、一方では、正確なサイズの使
用可能なブロックをつきとめるには相当な探索時間を必
要とするかもしれないし、主記憶域の様々な断片化(フ
ラグメンテーションFRAGMENTATION)を発生させる。こ
れらの問題に対処するため、他の既知の技法ではあらか
じめ決められたあるサイズの大きさに作られたブロック
のみを割り当て、各サイズの戻されたブロックは、次の
要求のためにそれぞれのサブプールの中で管理される。
例えば、1つの先行技術であるIBM CP 67システ
ムでは、最初の要求が出される時、その要求に等しい
か、あるいは越える中では最小のあらかじめ決められた
サイズのブロックが、主記憶域から割り当てられる。こ
れらのブロックの1つが戻されるまで、このブロック・
サイズに対する主記憶域の割り付けは、継続する。ブロ
ックはそのサイズのブロック専用のサブプールへ戻さ
れ、このサイズに対する次の割り付け要求はそのサブプ
ールから満たされる。時間の経過と共に、多くのブロッ
クが多くの異なるサブプールに戻される。 各々のサブ
プールは、他のサブプールのブロックと異なるサイズの
ブロックを保有する。あるサイズのブロックに対する需
要が殺到し、次に、そのサイズの需要が急激に減少する
と、対応するサブプールは、このサイズのブロックを過
大に保有することとなる。定期的に、そのサブプールか
らのすべてのブロックは主記憶域に戻され、連続するブ
ロックが接合され、次の要求を満たすためにより大きい
ブロックが形成される。そのような不要部分回収プロセ
スは、需要の殺到と次に続く急激な減少に対応するよ
う、異なるまたはより大きいサイズのブロックの可用性
を保証するために必要である。前述のテクニックが主記
憶域にそのサブプールのすべてのブロックを戻すことに
効果的である一方、種々のサイズのブロックが主記憶域
に対応するギャップを残しながら尚使用中であるので、
主記憶域は、なお非常に断片化されている場合がある。
この断片化は、主記憶域から次の要求を満たすための探
索時間を増加させ、主記憶域の中の連続したロケーショ
ンを要求に応じて割り当てることができないという機会
を増加させる。
【0004】もうひとつの先行技術IBM VM/XA
SPIシステムでは、その主記憶域は、各々連続した記
憶域の4096バイトのフレームに論理的に分割され
る。主記憶域へのすべての割り付けおよび戻しは、フレ
ームに基づいて行われる。あらかじめ決められたサイズ
の使用可能なブロックは、使用可能なブロックを識別す
るために必要となる探索を最小化するために主記憶域か
らの割り付けの後サブプールにおいて維持される。
【0005】以下は、先行技術IBM VM/XA SP
Iシステムのより詳細な記述である。初めのブロック要
求が出される時、フレームの1つが、その要求を満たす
最小のあらかじめ決められたサイズの数多くのブロック
に論理上分割される。次に、そのブロックの1つが、そ
の要求者に割り当てられる。残りのブロックは、サブプ
ールの中で一緒に集められ、制御ブロックによって連鎖
され、(主記憶域の各フレームの使用に供され、フレー
ム・テーブル・エントリーFRTEーと呼ばれる)記憶
域サブプール中のブロックが、次の要求を満たすために
使われる。サブプールがこれら引き続き発生する要求の
ために空らになり、同じサイズのブロックに対するもう
ひとつの要求が出される時、もうひとつのフレームが主
記憶域域から選択され、ブロックに分割され、そのブロ
ックの一つがその要求をたすために使われる。残りのブ
ロックは、同じサブプールに割り当てられるが、もうひ
とつのフレーム・テーブル・エントリの下にグループ化
される。ブロックがいずれかのフレームから戻されるに
つれ、それらはこのサブプールの中のそれぞれのフレー
ム・テーブル・エントリの下にグループ化される。
【0006】フレームにおける使用可能なブロックが空
らになるまで、同じサイズのブロックに対する引き続き
発生する要求は、同じフレームから満たされる。異なる
サイズのブロックを含む他のサブプールが、同様に生成
される。オペレーティング・システムは、それぞれのフ
レームが完全に使用可能であるかを判断するため各サブ
プール内の各フレーム・テーブル・エントリの内容を定
期的にチェックし、もしそうならば、主記憶域にそのフ
レームの全体を戻す。このテクニックは、不要部分回収
に際し全体として戻されるフレームの数を最大にする点
で非常に効果的である。しかし、対応するフレーム・テ
ーブル・エントリにブロックを戻すために余分のオーバ
ーヘッドを必要とする。各々の戻しのために、そのフレ
ーム・テーブル・エントリのアドレスは、最初に計算さ
れていなければならない。また、各ブロックの戻しが行
われている間に、システムは、そのブロック戻りにより
そのフレームの使用可能性が完全となるのか、あるいは
そのフレームの中で単に使用可能なブロックであるのか
を判断しなければならない。前者の場合、FRMTEは
引き続く不要部分回収のため待ち行列からはずされる。
後者の場合、FRMTEは再び待ち行列に入れられる;
このFRMTEは、その割り当てるブロックのための待
ち行列全体にわたるサーチを単純化するために使用可能
なブロックが全くなくなった時、待ち行列からはずされ
たものである。中間的FRMTE待ち行列の使用は、C
PUに負荷を与える記憶域追加参照を必要とする。
【0007】
【発明が解決しようとする課題】本発明は、使用可能記
憶域探索に要する時間や記憶域のフラグメンテーション
の発生または使用済みブロックの主記憶域への戻しにと
もなうオーバーヘッド等の従来技術上の問題を解決する
ため、記憶域割付け、戻し、および不要部分回収の技術
を提供し、その不要部分回収プロセスによって完全に使
用可能なフレームを効率的に多数産み出すことを意図す
る。
【0008】
【課題を解決するための手段】本発明は、以下記述の新
たなコンピュータの記憶域管理システムを提示する。複
数の別々の記憶域フレームから1つのサイズの使用可能
ブロックがサブプールの待ち行列に入れられる。不要部
分回収ルーチンが、サブプールの待ち行列上にブロック
を保持するどのフレームが完全に使用可能であるかを、
各フレーム用の待ち行列上の使用可能ブロックの数を基
に、定期的または時折、判断する。次に、上記不要部分
回収ルーチンは、それらブロックを待ち行列から取り出
し、完全に使用可能なフレームのブロックに再生させ
る。上記ルーチンは、また、その他のフレームのブロッ
ク(同一フレームのその他のブロックと待ち行列でひと
まとめにされるこれらその他のフレームのブロック)を
再び待ち行列に入れる。ブロックは、待ち行列の先頭か
ら割り当てられ、使用後大部分のブロックは待ち行列の
先頭に戻される。このようにして、ブロックは、次々
と、待ち行列の先頭から割り当てられ、先頭へ戻される
ので、サブプールの利用度が低い場合は、待ち行列の最
後部近傍のフレームからのブロックは割り当てられな
い。戻されるブロックのいくつかは待ち行列の最後部近
傍のブロックによって表されるフレームの一部であるこ
ともあるので、そのようなブロックが、再生のためフレ
ームを使用可能とすることができる。本発明の好ましい
実施例では、待ち行列の最後部近傍のブロックによって
表されるフレームの一部であるブロックは、待ち行列上
のその他のブロックとは異なるポジションへ戻され、そ
の他のブロックの後で割り当てられる。この方法によっ
て、待ち行列の最後部近傍で表されるフレームが次回の
不要部分回収プロセスにおいて完全に利用可能となる見
込みが増加する。
【0009】
【実施例】以下の記述では図を参照し、使用する数字は
図中のエレメントを表す。図1は、本発明を具体化して
いるコンピュータ・システム100を図示する。コンピ
ューターシステム100は、CPU110,112、オ
ペレーティング・システム130および主記憶域120
を含む。例として、コンピュータ・システム100はI
BM ES/9000コンピュータ・システムによって
提供され、オペレーティング・システム130は、以下
本発明によって記述される空き記憶域管理プログラム1
40および関連する構造および制御ブロックを除いて、
IBM VM/ESA1.1オペレーティング・システ
ムによって提供される。ES/9000コンピュータ・
システムは注文番号SA22-7201〜08の「ESA/390
プリンシプル・オブ・オペレーション」という題名の文
書で、また、VM/ESA1.1オペレーティング・シ
ステムグ・システムは注文番号GC24-555の「VM/ES
Aジェネラル・インフォメーション」という題名の文書
で、それぞれ詳述されている。これら両方のドキュメン
トともIBM社から発行されている。本発明は、仮想機
械または非仮想機械システム環境のいずれにおいても使
われることができる。主記憶域120は、1フレームに
つき連続した4096バイトのフレーム135のような
複数のフレームに論理上分割される。以下により詳細に
記述されるように、4096より少ない連続したバイト
を持つフレームから成るひとつ以上のブロックが、記憶
要求を満たすために割り当てられることができる。オペ
レーティング・システム130内のサブシステム125
のようなコンピュータ・システム100の内の種々のプ
ログラムおよびサブシステムによって、そのような要求
は出される。
【0010】オペレーティング・システム130の空き
記憶域管理プログラム140は、要求に従って主記憶域
をサブシステム125に割り当てるためのブロック割当
てルーチン400と、ブロックがもはや必要とされない
時、サブプール151〜153に割当てブロックを戻す
ためのブロック戻しルーチン800と、定期的に戻され
たブロックを回収し、完全に使用可能なフレームと接合
し、主記憶域120へ完全に使用可能なフレームを戻す
ための不要部分回収ルーチン600とを含む。これらの
機能は、 図5〜8を参照しながら以下詳細に記述され
る。これらの機能は以下記述の構造および制御ブロック
を使用する。
【0011】主記憶ブロックの急速な割当ておよび戻し
を容易にするために、空き記憶域管理プログラムは、使
用可能なブロックから成る複数のサブプールを維持す
る。同じサブプール内のすべてのブロックは同じサイズ
を持ち、各サブプールは他のサブプールのブロックとは
異なるサイズのブロックを持つ。サブプールのためのア
ンカーを含むサブプール制御ブロック151〜153
(図1)によって各サブプールは、代表される。サブプ
ール制御ブロックのすべては、主記憶の連続したロケー
ションに記憶されて、サブプール制御ブロック・テーブ
ル155を形づくるために昇順に並べられる。図3と図
4の参照によって詳細に記述されるが、それらが関連づ
けられるフレームに関係なく同じサブプールの範囲内の
すべての使用可能なブロックは、サブプール制御ブロッ
ク・アンカー320から待ち行列に入れられる。
【0012】オペレーティング・システム130は、ま
た、主記憶域からのすべてのフレームを表わすためにフ
レーム制御ブロックまたはフレーム・テーブル・エント
リ171〜179(FRMTE)から成るフレーム・テ
ーブル170を含む。グローバル使用可能フレーム待ち
行列アンカー179は、(システム使用のために)完全
に使用可能だがサブプールに割り当てられてない最初の
FRMTEをポイントする。すべての未割り当てだが完
全に使用可能なFRMTEがグローバル使用可能フレー
ム待ち行列180を形づくるために一緒に連鎖されるま
で、これら未割り当てで使用可能なFRMTEは、次の
未割当てだが完全に使用可能なFRMTEに、ポイント
し、次々にこの操作が行われる。要求サイズに対応して
いるサブプールが空らの場合のみ、空ら記憶域管理プロ
グラムは、グローバル使用可能フレーム待ち行列から割
り当てる。この時、これらの未割当てだが完全に使用可
能なフレームの1つは、空らサブプールに割り当てら
れ、1またはそれ以上のブロックが割り当てられる。残
りのFRMTEのいくつかは、サブプールに割り当てら
れ、部分的にまたは完全に使用可能なフレームを表わ
す。サブプールに割り当てられる完全に使用可能なフレ
ームは、以前のある時点では部分的か完全にか使用され
たものである;すなわち、そのブロックはそのサブプー
ルにその後戻されたが、そのフレームはまだグローバル
使用可能フレーム待ち行列に戻されなかったものであ
る。残りのFRMTEは、完全に利用され、どのサブプ
ールにも割り当てられてないフレームを表す。本発明の
一つの目的は、本発明の実施に必要なオーバーヘッドを
最小限に押さえながら、グローバル使用可能フレーム待
ち行列に全体において戻されることができる、別々のサ
ブプールに割り当てられるフレームの数を極大化するこ
とである。
【0013】図2は、不要部分回収の間のFRMTE1
73を図示する。FRMTE173は、サブプール15
1に割り当てられ、この不要部分回収時に部分的に使用
可能なフレーム135を表わす。フレーム135内のブ
ロック251、252、253および254は、使用可
能で、FRMTEから待ち行列に入れられる。FRMT
E135およびサブプールに割り当てられるフレームを
表わすすべてのFRMTEは、不要部分回収の時点での
み、参照され、使用され、そして修正される。これらの
FRMTEは、引き続き起きるブロックの次の割当てま
たは戻しの間、不要部分回収の後サブプールへの変化が
FRMTEに反映されないように、参照も使用も修正も
されない。これは、FRMTEを維持し、本発明を実施
するため必要となるオーバーヘッドを減少させる。
【0014】FRMTE173の最初のフィールド21
0は、そのサブプールの中で次のFRMTEへのポイン
タである。以下記述のように各サブプールの中でのフレ
ームの順序は、不要部分回収時に確立される。FRMT
E173の2番目のフィールド220は対応するフレー
ムにおける使用可能ブロックの待ち行列のためのアンカ
ーであり、最初のそのような使用可能ブロックをポイン
トする。この最初の使用可能ブロックは次の使用可能ブ
ロックをポイントし、次々にこのようにして最後のブロ
ックまでポイントされる。FRMTE173の3番目の
フィールド230は、そのフレームの中で最後の使用可
能ブロックをポイントしている。4番目のフィールド2
35は、そのフレームの中で現在使用可能ブロックの数
を示す。残りのフィールド240は、本発明と関係のな
い目的のためにオペレーティング・システム130によ
って使われる。(グローバル使用可能フレーム待ち行列
180の上のフレームを表わすFRMTEについては、
フィールド210は待ち行列180上の次のFRMTE
をポイントし、フィールド220は先行するFRMTE
をポイントし、フィールド230および235は使われ
ない。)
【0015】図3および図4は、サブプール制御ブロッ
ク151および2つの時点で関連づけられる使用可能ブロ
ックを図示する。サブプール制御ブロック151内には
複数のフィールドがある。フィールド310は、複数の
プロセッサの間でのサブプールへのアクセスを逐次実行
するために用いられるロックである。フィールド320
は、そのサブプールの最初の(すなわちその先頭の)ブ
ロックをポイントするサブプール・アンカーである。そ
のサブプールの中の最初のブロックは、次のブロックを
ポイントし、次はまたその次というように最後のブロッ
クまでポイント付けが行われる。ブロックは、その待ち
行列の先頭から割り当てられる。サブプールが空らのと
き、フィールド320は、ゼロと等しい。フィールド3
30は、このサブプールから割り当てられ、現在使用さ
れているブロックの数を示す。フィールド340は、こ
のサブプール内でブロックを持っているフレームの数を
示す。フィールド350はこのサブプールの中での完全
に使用可能フレーム179へのポインタである;このフ
レームは最後の不要部分回収時に完全に使用可能である
とわかって、(ブロック・アンカー320から始まる)
サブプール待ち行列から取り除かれたが、まだグローバ
ル使用可能フレーム待ち行列180に戻されてはいな
い。例えば、不要部分回収は30秒毎に行われるとす
る。そのとき、完全に使用可能フレームは、識別され、
空きFRMTEアンカー350から連鎖される。空きF
RMTEアンカー350からつながれたこれらの完全に
使用可能ブロックは、(それらがサブプールが空きのた
めに次の不要部分回収が行われる前にサブプールに割り
当てられることはないと仮定して)、次の不要部分回収
の始めにグローバル使用可能フレーム待ち行列180に
戻される。
【0016】下記により詳細に述べるが、オーバーヘッ
ドを減らすため、ブロック・アンカー320から始まる
サブプール待ち行列が空らになる時の割当て要求を満た
すため、グローバル使用可能フレーム待ち行列180か
らのフレームが使用される前に空フレーム待ち行列から
のフレームが使われる。フィールド360は、そのサブ
プールの中のすべてのブロックのサイズを示す。フィー
ルド370は、「回収待ち行列」の最初のブロックへポ
イントする回収待ち行列アンカーである。回収待ち行列
は、前回の不要部分回収時にサブプール待ち行列の最後
にブロックが既に入れられているそのフレームの戻され
るブロックのための貯蔵所である。しかし、本発明に従
えば、戻されるブロックが前回の不要部分回収時にサブ
プール待ち行列の最後部またはその近くで待ち行列に入
れられた複数フレームのブロックを回収待ち行列が受け
取ることができることに注意すべきである。ブロックが
回収待ち行列に戻されるフレームの正確な数は、各サブ
プールに割り当てられたフレームの数に依存する。たと
えば、フレームからのブロックが最後の不要部分回収時
にサブプール待ち行列の最後部近くに入れられた限り、
これらの1/4または半分のフレームからのブロックを
回収待ち行列に戻すことは、望ましいかもしれない。更
に下記に詳細に述べるように、サブプール待ち行列が空
らになり、もうひとつの要求がそのサブプールからのブ
ロックに対し行われなければ、ブロックは回収待ち行列
から割り当てられない。かくして、ブロックが最後の不
要部分回収時にサブプール待ち行列の最後部近くで待ち
行列に入れられたフレームで、そのブロックがその後回
収待ち行列に戻されるフレームは、(このサイズに対す
る需要が弱まるならば)次の不要部分回収時に完全に使
用可能となる。
【0017】図3は、不要部分回収の直後にそのサブプ
ールの中で使用可能なブロックを図示する。不要部分回
収ルーチンは、各フレーム からの使用可能ブロックの
すべてを一団にまとめるためにサブプール待ち行列を再
配置した。大括弧の各々は、フレーム175、171、
178および173のそれぞれの範囲内で、使用可能ブ
ロックのすべてを示す。フレーム173からのブロック
は、サブプール待ち行列の最後部にまためられた。引き
続いて、ブロックは先に述べたようにサブプール待ち行
列または回収待ち行列に戻される。各ブロックは戻され
るにつれ、その待ち行列の中で先頭となり、待ち行列内
のその他のブロックを1ポジション後方に置き換える。
これは、各待ち行列からのブロックの割り当ておよびそ
の戻しをおこなうための「LIFO」または「プッシュ
ダウンスタック」として知られている手法である。ある
場合には複数のブロックが1個のフレームからかためて
戻されるかもしれない。一方、1時点で1フレームから
ただひとつのブロックが戻される場合もある。戻された
ブロックを持つフレームの順序は、予測できない。
【0018】図4は、最後の不要部分回収時にサブプー
ル待ち行列の最後部の近くで、フレーム175からの待
ち行列の最初の2個のブロックが割り当てられ、フレー
ム178および171からの2個のブロックがその待ち
行列の最初に戻された直後の(次の不要部分回収時間の
前の)同じサブプール待ち行列を図示する。実際には1
秒間に何千ものブロックがそのサブプールに割り当てら
れて、サブプールに戻されるかもしれないが、単純化の
ためわずか2つの割当てと2つの戻しが図4で示される
ていることに注意すべきである。図4はまた、最後の不
要部分回収時以来フレーム173から3個のブロックが
回収待ち行列に戻されたことを示す。フレーム173に
合計6個のブロックがあると仮定すると、フレーム17
3が今完全に使用可能なことを、図4が示す状況は、明
らかにしている。サブプール待ち行列の前方部にその後
引き続き戻されるブロックを含め、フレーム173から
のブロックに先行するサブプール待ち行列のブロックの
すべてが次の不要部分回収以前に割り当てられないなら
ば、フレーム173は完全に使用可能で、グローバル使
用可能フレーム待ち行列に空らFRMTEアンカーを介
して次の戻しのために入れられることができる。
【0019】本発明の目的に従えば、不要部分回収時の
ブロックのグループ化と、サブプール待ち行列の先頭か
らのブロックの割当てと、回収待ち行列へのフレーム1
73からの(サブプール待ち行列の最後に表わされる)
ブロックの戻しと、サブプール待ち行列の先頭へのその
他のブロックの戻しとは、以下記述のような効果を持
つ。不要部分回収の間にそのサブプールが完全に使用/
割り当てされないと仮定すると、その待ち行列の最後の
フレーム173のブロックは、新しい要求のために割り
当てられない。しかしながら、フレーム173の他のブ
ロックが使用の後戻される時、それらは回収待ち行列の
中に入れられる。上記のように、サブプール待ち行列が
空らになり、もうひとつの要求がこのサブプールのため
に存在するのでなければ、ブロックは回収待ち行列から
割り当てられない。次の不要部分回収時に回収待ち行列
上のブロックはサブプール待ち行列からのブロックと組
み合わせられ、図示された例で、フレーム173が完全
に使用可能となる。(同様に、その次の不要部分回収時
に、あらゆる不完全なフレームの戻されたブロックすべ
ては、先に述べたようにサブプール待ち行列の上にまと
められる。) したがって、前述の技法は、待ち行列の
最後のフレームが次の不要部分回収時に完全に使用可能
で、グローバル使用可能フレーム待ち行列180に全体
においてその後戻されることができるという機会を増や
す。上記のように、本発明は、サブプール待ち行列の最
後に表わされる1またはそれ以上のフレームから、回収
待ち行列にブロックを戻すよう拡張できる。
【0020】また、本発明の目的に従えば、ブロックの
割り当てと戻し、および、不要部分回収の実行とに必要
とされるオーバーヘッドは僅かである。 以下にさらに
詳細に記述されるが、ブロック割当ておよびブロック戻
しルーチンは短く、不要部分回収ルーチンは30秒に1
回だけ実行されればよい。同様に、各サブプールから割
り当てるブロックに対する探索と、どの待ち行列が戻さ
れるブロックを受け取るべきかの決定と、ブロックを受
け取る待ち行列の位置の探索とに要する時間は短い。
【0021】図5は、空き記憶域管理プログラム140
のブロック割当てルーチン400を図示する。サブシス
テム125またはほかのプログラムが主記憶域のブロッ
クを要求するとき、このルーチンは、起動される。ステ
ップ410の中で、ブロック割当てルーチン400は、
その要求を満たすことのできる最小の、あらかじめ決め
られたブロック・サイズを持っているサブプールを探索
する。要求された倍長語数に等しい行数をテーブル41
2(図1)に指標付けすることによってこれは実行され
る。テーブルの各々の行は、要求サイズに正確に等しい
か、あるいは他のどのサブプールよりもわずかな数だけ
要求サイズを超えているブロック・サイズを持っている
サブプールをポイントする。次に、ルーチン400は、
フィールド310を設定することによってサブプール制
御ブロック上のロックを獲得し、次に、そのサブプール
が空らならば、サブプール待ち行列の先頭のブロックの
アドレスまたはゼロであるサブプール待ち行列アンカー
320を読む(ステップ430)。次に、ルーチン40
0は、ブロック・アンカー・アドレスがゼロかを判断す
る (ステップ440)。ゼロでないならば、サブプー
ル待ち行列に使用可能ブロックがあり、ルーチン400
はそのサブプール上の先頭のブロックを取り出し、(ブ
ロック・アンカーを次のブロックをポイントするように
し)、その要求元にそのブロック・アドレスを供給する
(ステップ450)。次に、ルーチン400は、そのロ
ックを解放する(ステップ470)。
【0022】ステップ440に戻って、もしもサブプー
ル待ち行列が空らならば、ブロック割当てルーチン40
0は、回収待ち行列から割当て要求を満たすことを試み
る。かくして、ブロック割当てルーチン400は、回収
待ち行列が空らの場合ゼロか、または回収待ち行列上の
先頭のブロックのアドレスかのいずれかの値である回収
待ち行列アンカー370を読む(ステップ504)。回
収待ち行列が空らでないならば、ブロック割当てルーチ
ンは、回収待ち行列の上の最初のブロックをポイントす
るようにサブプール待ち行列アンカーを変更し、回収待
ち行列アンカーをゼロに変更することによって、回収待
ち行列からサブプール待ち行列へブロックを移動させる
(ステップ506)。次に、ブロック割当てルーチン
は、サブプール待ち行列の上の最初のブロックを割り当
てるためにステップ430に戻る。再びステップ504
に戻って、もしも回収待ち行列上にブロックがなけれ
ば、サブプール待ち行列上に表わされず、まだグローバ
ル使用可能フレーム待ち行列180に戻されてないが完
全に使用可能なフレームがあるかを決定するため、ブロ
ック割当てルーチンは空らのFRMTEアンカー350
を読取る。もしもそのようなフレームがあれば(ステッ
プ510)、アンカー350のポインターを第2のフレ
ームがあればそのフレームをポイントするように、もし
なければゼロに変更することによって、(そのアドレス
が空らFMRTEアンカー350によって示される)最
初のそのようなフレームを待ち行列から取り出す。次
に、ブロック割当てルーチンは、アンカー320にアン
カー220をコピーすることによって、空らFRMTE
待ち行列からはずされたフレームの最初のブロックをポ
イントするようにサブプール待ち行列アンカー320を
変更する。その後、フィールド210、220、230
および235は、クリアされる。次に、そのルーチン
は、上に記述された方法でサブプール待ち行列の中で最
初のブロックを割り当てるためにステップ430まで飛
ぶ。
【0023】ステップ510へ再び戻って、サブプール
待ち行列および回収待ち行列が空らで、空らのFRMT
Eアンカーによって識別される(まだグローバル使用可
能フレーム待ち行列180に戻されなかった)完全に使
用可能なフレームが存在しないならば、ブロック割付ル
ーチンは、(待ち行列180上の次の完全に使用可能フ
レームをポイントするようにグローバル使用可能フレー
ム待ち行列アンカーを変えることによって)グローバル
使用可能フレーム待ち行列180の最初のフレームを待
ち行列からはずす(ステップ520)。次に、ルーチン
400は、そのフレームをサイズがそのサブプールのそ
れに等しいブロックに論理的に分割し、それらブロック
を一緒に待ち行列に入れ、フィールド210, 220、
230、および235をクリアすることによって対応す
るFRMTEを初期化する(ステップ530)。次に、
ルーチン400は、サブプール・アンカー(ステップ54
0)にその待ち行列を置く(ステップ540)。次に、
ルーチン400は、サブプール待ち行列の中で最初のブ
ロックを割り当てるためにステップ430に飛ぶ。
【0024】図6および図7は、空き記憶域管理プログ
ラム140の不要部分回収ルーチン600を図示する。
このルーチンはタイミング・メカニズムによって一定時
間毎に(たとえば、30秒毎に)起動される。ステップ
602で、不要部分回収ルーチンは、不要部分回収を実
行するための最初または次のサブプールを選択する。上
述のように、サブプール制御ブロックは主記憶域の連続
した記憶位置に記憶され、最も低いアドレスをもつサブ
プール制御ブロックは不要部分回収のために選択される
最初のブロックである。次に、ルーチン600は、選択
されたサブプール制御ブロック上のロックを獲得し(ス
テップ605)、さらに、まだグローバル使用可能フレ
ーム待ち行列180に戻されなかった完全に使用可能フ
レームがあるかどうかを決めるために空きフレーム・ア
ンカー350を読む(ステップ610)。下記に詳述さ
れるが、不要部分回収の各事例の間に、完全に使用可能
なフレームは識別され、サブプール制御ブロックの空き
フレーム・アンカー350から連鎖されるが、不要部分
回収の次の事例までグローバル使用可能フレーム待ち行
列180に戻されない。この先延ばしにより、普通には
ないような要求中断の間に完全に使用可能になったよう
なフレームの戻しを防止するめことができる。グローバ
ル使用可能フレーム待ち行列から次の要求を満たす方が
空らFRMTEアンカー待ち行列からよりもいっそう多
くのオーバーヘッドを必要とする。空らのFMRTEア
ンカー360から現在連鎖されているひとつ以上の完全
に使用可能フレームがあるならば、それらは今アンカー
350からはずされ、グローバル使用可能フレーム待ち
行列180に入れられる(ステップ665)。もしもな
ければ、またはステップ665の後の場合は、ルーチン
600は、サブプール待ち行列アンカー320から連鎖
されている最初のブロックを選択して、待ち行列からは
ずす(ステップ620)。次に、ルーチン600は、以
下の方程式に基づいてフレーム・アドレスから、FRM
TEアドレスを計算する(ステップ625): FRM
TEアドレス=フレーム番号 * FRMTEサイズ +
フレーム・テーブル開始アドレス(ただし、ブロック・
アドレスのビット1〜19 = フレーム番号)。
【0025】次に、ルーチン600は、FMRTEから
のブロックを待ち行列に入れ、FRMTEのカウント・
フィールド235を増加する(ステップ630)。次
に、ルーチン600は、これがサブプール待ち行列に入
れられるFMRTEからの最初のブロックであるかを判
断し(ステップ635)、そうであれば、このサブプー
ル待ち行列上でブロックを持った他のフレームを表すF
RMTEと共にそのFRMTEを待ち行列に入れる。こ
の待ち行列化ステップは、ポインタ・フィールド210
を使用する。次に、ルーチン600は、フィールド23
0にこのブロックのアドレスを保存する(ステップ64
5)。待ち行列メカニズムがプッシュダウンスタックで
あるので、、待ち行列にある最初のブロックは、すべて
のブロックが待ち行列に入れられたあとその待ち行列に
ある最後のブロックであるという点に注意すべきであ
る。次に、ルーチン600は、サブプール待ち行列に他
のブロックがあるかどうかを決め(ステップ650)、
もしそうならば、ステップ620に飛び、対応FRMT
Eから次のブロックを待ち行列に入れる。サブプール待
ち行列上の最後のブロックが対応するFRMTEの待ち
行列に入れられるまで、前述のプロセスは、くり返され
る(ステップ650)。次に、ルーチン600は、ステ
ップ620から645がサブプール待ち行列(回収待ち
行列ではない)に対し実行されたと判断し(ステップ6
52)、回収待ち行列にブロックが存在するか否か判断
する(ステップ654)。もし存在するならば、ルーチ
ン600は、それぞれのFRMTEに、図例ではフレー
ム173のFRMTEに、与えるために回収待ち行列を
選択する(ステップ656)。かくして、ルーチン60
0は、このFRMTEにその回収待ち行列のブロックを
加えるためにステップ620から645のループへ戻
る。
【0026】回収待ち行列のブロックのすべてがそれぞ
れのFRMTEに加えられたあと(ステップ650、6
52)、ルーチン600はステップ710へ進み、検査
のためサブプールから獲得した最初のFRMTEを選択
する。サブルーチン600は、ブロックのすべてが今や
FRMTE待ち行列に入れられているか、すなわち、今
や使用可能かをカウント・フィールド235を基に判断
する(ステップ720)。もしそうならば、このFRM
TEはそのサブプールのために空らフレーム・アンカー
350から連鎖され、それはこのフレームのための不要
部分回収を成功裡に完了する。サブプールが空らになる
ならば、このFRMTEのフィールド200は、空らフ
レームからサブプール・アンカー320へブロックの待
ち行列を容易に動かすために後に使われることができる
ように、このFRMTEのフィールド200は、手つか
ずのままにしておかれる。しかし、このFRMTEが完
全に使用可能でないならば、このFRMTEのブロック
は、サブプール待ち行列の上に再度入れられなければな
らない。ステップ722で、このFRMTEがサブプー
ル待ち行列に入れられべき最初のブロックを含むかどう
か、ルーチン600は、判断する。サブプール待ち行列
上に入れられる次のブロックの各々が以前のブロックを
1ポジション後方におきかえるので、待ち行列に入れら
れた最初のブロックは、不要部分回収プロセスの結果、
サブプール待ち行列の最後のブロックとなる。
【0027】上述のように、サブプール待ち行列の上に
表わされる最後のフレームに対するその後戻されたブロ
ックは、回収待ち行列(サブプール待ち行列ではない)
に入れられる。したがって、ブロックが戻される時それ
らが適切な待ち行列に入れられるように、サブプール待
ち行列上に表わされる最後のフレームは識別されていな
ければならない。それ故に、ルーチン600は、フィー
ルド380にこのフレームのアドレスを記憶する(ステ
ップ724)。次に、ルーチン600は、サブプール待
ち行列アンカーからのサブプール待ち行列にこのFRM
TEのすべての使用可能ブロックを成功裡に(まとめ
て)入れる(ステップ730)。このステップには、そ
のフレームのサブプール待ち行列から最初の使用可能ブ
ロックへのポインタと、そのフレームの最後の使用可能
ブロックから残りのサブプール待ち行列へのポインタと
を必要とする。次に、ルーチン600は、次の不要部分
回収に備え初期状態にするためFRMTEのすべてのフ
ィールドをゼロにする。前述のプロセスは、そのサブプ
ールの他の使用可能ブロックを含むFRMTEの各々の
ためにくり返される(ステップ750)。次に、ルーチ
ン600は、このサブプール制御ブロック上のロックを
解放するためにステップ655に飛ぶ。もしも不要部分
回収を必要としている他のサブプールが存在するなら
ば、ルーチン600は、ステップ600に飛ぶことによ
って、これら他のサブプールのために図6および図7の
プロセスをくり返す。
【0028】図6および図7で示される不要部分回収に
は2つの有益な効果がある。第1に、今完全に使用可能
なフレームのすべては、不要部分回収の次の事例の間に
グローバル使用可能フレーム待ち行列180への次の戻
しのために空らFRMTEアンカーから連鎖される。第
2に、追加の完全に使用可能なフレームを産み出すよう
な方法で、以下に記述されるブロック戻しルーチン80
0が新しいブロックを戻すことができるように部分的に
使用可能なフレームそれぞれのブロックのすべてが一緒
にグループ化される。
【0029】図8は、ブロック戻しルーチン800を図
示する。このルーチンは、それがもはやブロックを必要
としないとき、サブシステム125またはほかのプログ
ラムによって呼び出され、もうひとつのサブシステムま
たはほかのプログラム使用のためにブロックを戻す。ス
テップ810で、ルーチン800は、どのサブプールが
戻されているサイズのブロックを含むかをテーブル41
2を基に判断し(ステップ810)、そのサブプールの
ロックを入手する(ステップ820)。次に、サブプー
ル待ち行列または回収待ち行列にそのブロックを戻すか
どうか、ルーチン800は、決めなければならない。し
たがって、ルーチン800は、戻されたブロックのアド
レスをサブプール待ち行列の上に表わされた最後のフレ
ームに対応しているフィールド380と比較する。戻さ
れたブロックがサブプール待ち行列で表される最後のフ
レームの一部でないならば(ステップ822)、ルーチ
ン800はサブプール待ち行列上の最初のポジションに
そのブロックを入れる(ステップ830)。ステップ8
30は、ブロック・アンカー320が、新しいブロック
をポイントするために変更されること、および、サブプ
ール待ち行列の次のブロックをポイントするするように
戻されたブロックの中へポインタが書かれることののみ
を必要とする。次に、ルーチン800は、そのブロック
がもはや用いられていないのでこのサブプールに対する
使用カウントを減少させ(ステップ840)、そのサブ
プール上のロックを取り除く(ステップ850)。
【0030】再びステップ822で、戻されたブロック
がサブプール待ち行列の上に最後に表わされたフレーム
の一部であるならば、そのブロックが回収待ち行列に最
初に入れられ(ステップ852)、次にステップ840
および850が、実行される。
【0031】回収待ち行列に戻されるブロックの例外は
あるが、ブロックがサブプール待ち行列の先頭割り当て
られ、サブプール待ち行列の先頭に戻されるので、サブ
プール待ち行列の利用が低めの場合は、サブプールの最
後のフレームのブロックが割り当てられることは殆どな
いだろうということは注意されるべきである。かくし
て、ブロックが戻されるにつれ、戻されたブロックのい
くつかは、そのサブプールの最後にあるフレームからの
ものとなり、その最後の時点でフレームの利用性が完成
する。サブプール待ち行列の最後にある1またはそれ以
上の特定フレームのための回収待ち行列の使用は、回収
待ち行列上のブロックによって表されるフレームが次の
不要部分回収時に完全に使用可能となる機会を大いに増
加させる。しかしながら、サブプール待ち行列最後部近
辺での1またはそれ以上の他のフレームの他のブロック
の集合はまた、これらたのブロックが割り当てられる可
能性が少ないので次の不要部分回収時に完全に使用可能
となる機会を増加させる。したがって、回収待ち行列の
使用をせず、サブプール待ち行列の先頭のすべてのブロ
ックの戻しがあっても、不要部分回収時に完全に使用可
能なフレームが存在する機会は増加することとなる。ま
た、サブプール待ち行列の先頭からのブロックの割り当
て、および、サブプール待ち行列の先頭または回収待ち
行列の先頭へのブロックの戻しとに要するオーバーヘッ
ドは最小のものとなる。
【0032】上記のように、本発明に従ったシステム、
方法およびプログラムが、開示された。しかしながら、
本発明の有効範囲からはずれることなく、多数の変更お
よび置換を行うことは可能である。たとえば、希望する
場合、サブプール待ち行列の最後部近傍で表わされるフ
レームから戻されるブロックは、回収待ち行列へ戻す代
わりにサブプール待ち行列の最後部へ戻してもよい。こ
れは、サブプール待ち行列の最後に不要部分回収の後表
わされるフレームから戻されるブロックの再配分を避け
るという同様の効果を持つ。しかし、第2のポインタ
が、サブプール待ち行列の最後のために必要とはなる。
【0033】
【発明の効果】本発明が提示する記憶域割付け、戻し、
および不要部分回収の技術を実施することによって、従
来技術で課題であった、使用可能記憶域探索に要する時
間短縮、記憶域の断片化の極小化および使用済みブロッ
クの主記憶域への戻しにともなうオーバーヘッドの極小
化が実現し、その不要部分回収プロセスによって完全に
使用可能なフレームを多数生成することが可能となり、
よって主記憶域の有効利用が図られる。
フロントページの続き (72)発明者 アーサー ジェイ サモドビッツ アメリカ合衆国ニューヨーク州ベスタル エバーグリーン・ストリート 201番地

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】あるサイズの使用可能ブロックからなるサ
    ブプールを、複数の別々の記憶域フレームから生成する
    手段と、上記使用可能ブロックは上記サブプールで待ち
    行列に入れられることと、 使用のため上記待ち行列の1つのポジションからブロッ
    クを割り当てる手段と、 使用後上記待ち行列の上記ポジションに少なくともいく
    つかの上記あるサイズのブロックを戻す手段と、 上記サブプール上でブロックを保有するフレームのいず
    れが完全に使用可能かを判断し、当該完全に使用可能な
    フレームのブロックを上記待ち行列から取り出し、その
    他のフレームのブロックをこれらのブロックが同じフレ
    ームの他のブロックとクラスタされるか局部化されるよ
    うに再び待ち行列に入れる不要部分回収手段と、からな
    るコンピュータ記憶域管理システム。
  2. 【請求項2】上記待ち行列の別のポジションの近傍で行
    列に入れられたブロックを保有するフレームを識別し制
    御する手段と、ここで、上記別のポジションとは、待ち
    行列の最初のポジション近傍で待ち行列に入れられたブ
    ロックの後に上記フレームからのブロックが割り当てら
    れるような位置であることと、 上記待ち行列の別のポジションの近傍で行列に入れられ
    たブロックを保有する1またはそれ以上のフレームから
    のブロックを、上記待ち行列の最初のポジショとは異な
    るポジションへの戻しを行う手段と、 上記行列の最初のポジション近傍におけるブロックの後
    の上記異なるポジションに戻されたブロックの割り当て
    を行う手段と、を有する請求項1記載のコンピュータ記
    憶域管理システム。
  3. 【請求項3】上記フレームは、初期的には、主記憶域の
    リストまたはサブプールから獲得され、完全に使用可能
    なフレームを上記主記憶域リストまたはサブプールへ戻
    す手段を有する請求項1記載のコンピュータ記憶域管理
    システム。
  4. 【請求項4】上記請求項1記載の不要部分回収手段は、
    一定期間毎または時折、呼び出され、上記不要部分回収
    プロセスの次回呼び出しの間に、上記リストまたはサブ
    プールへ完全に使用可能なフレームを戻す手段を有する
    請求項1記載のコンピュータ記憶域管理システム。
  5. 【請求項5】 上記生成手段は、上記のあるサイズの記
    憶域ブロックに対する要求とその要求を満たせるブロッ
    クが上記サブプールに存在しないこととに対応し、主記
    憶域から完全に使用可能なフレームを選択し、上記要求
    を満たすため上記フレームのブロックを割り当て、上記
    フレームの残りを上記あるサイズの他のブロックに分割
    し、それらを上記サブプールの待ち行列に入れる手段
    と、 上記あるサイズの記憶域ブロックに対する後続の要求に
    対応し、その要求を満たすため上記サブプールからすべ
    てのブロックを割り当てる手段と、 上記あるサイズの記憶域ブロックに対する後続の要求と
    その要求を満たすことのできるブロックが上記サブプー
    ルに存在しないこととに対応し、主記憶域から別の完全
    に使用可能なフレームを選択し、上記要求を満たすため
    上記フレームのブロックを割り当て、上記フレームの残
    りを上記あるサイズの他のブロックに分割し、それらを
    上記サブプールの待ち行列に入れる手段と、 上記あるサイズの記憶域ブロックを戻す後続の要求に対
    応し、上記戻されたブロックを上記サブプールの待ち行
    列へ入れる手段と、を有する請求項1記載のコンピュー
    タ記憶域管理システム。
  6. 【請求項6】あるサイズの使用可能ブロックからなるサ
    ブプールを、複数の別々の記憶域フレームから生成する
    ステップと、上記使用可能ブロックは上記サブプールで
    待ち行列に入れられることと、 使用のため上記待ち行列の1つのポジションからブロッ
    クを割り当てるステップと、 使用後上記待ち行列の上記ポジションに少なくともいく
    つかの上記あるサイズのブロックを戻すステップと、 上記サブプール上でブロックを保有するフレームのいず
    れが完全に使用可能かを判断し、当該完全に使用可能な
    フレームのブロックを上記待ち行列から取り出し、その
    他のフレームのブロックをこれらのブロックが同じフレ
    ームの他のブロックとクラスタされるか局部化されるよ
    うに再び待ち行列に入れる不要部分回収ステップと、か
    らなるコンピュータ記憶域管理方法。
JP5229599A 1992-10-29 1993-08-24 コンピュータ主記憶域管理システムおよび方法 Expired - Lifetime JP2571664B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/969,870 US5561785A (en) 1992-10-29 1992-10-29 System for allocating and returning storage and collecting garbage using subpool of available blocks
US07/969,870 1992-10-29

Publications (2)

Publication Number Publication Date
JPH06202936A true JPH06202936A (ja) 1994-07-22
JP2571664B2 JP2571664B2 (ja) 1997-01-16

Family

ID=25516098

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5229599A Expired - Lifetime JP2571664B2 (ja) 1992-10-29 1993-08-24 コンピュータ主記憶域管理システムおよび方法

Country Status (2)

Country Link
US (1) US5561785A (ja)
JP (1) JP2571664B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0964918A (ja) * 1995-08-29 1997-03-07 Nec Software Ltd 通信制御装置におけるバッファ管理方式
EP0928451A1 (en) * 1995-08-31 1999-07-14 Sand Technology Systems International, Inc. Memory management system and method

Families Citing this family (115)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682497A (en) * 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US6131150A (en) * 1993-10-05 2000-10-10 Digital Equipment Corporation Scaled memory allocation system
US5842226A (en) * 1994-09-09 1998-11-24 International Business Machines Corporation Virtual memory management for a microkernel system with multiple operating systems
US5652864A (en) * 1994-09-23 1997-07-29 Ibm Concurrent storage allocations or returns without need to lock free storage chain
US5897662A (en) * 1995-08-18 1999-04-27 International Business Machines Corporation Pseudo-random address generation mechanism that reduces address translation time
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
US5689707A (en) * 1995-12-04 1997-11-18 Ncr Corporation Method and apparatus for detecting memory leaks using expiration events and dependent pointers to indicate when a memory allocation should be de-allocated
US5754849A (en) * 1996-01-30 1998-05-19 Wayfarer Communications, Inc. Self-describing object providing dynamic manipulation of heterogeneous data values and semantic identity between memory and transmission representations
US5778392A (en) * 1996-04-01 1998-07-07 Symantec Corporation Opportunistic tile-pulling, vacancy-filling method and apparatus for file-structure reorganization
US6438614B2 (en) 1998-02-26 2002-08-20 Sun Microsystems, Inc. Polymorphic token based control
US6134603A (en) * 1998-03-20 2000-10-17 Sun Microsystems, Inc. Method and system for deterministic hashes to identify remote methods
US6463446B1 (en) 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
US6578044B1 (en) 1997-11-17 2003-06-10 Sun Microsystems, Inc. Method and system for typesafe attribute matching
US6598094B1 (en) 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
US6182083B1 (en) 1997-11-17 2001-01-30 Sun Microsystems, Inc. Method and system for multi-entry and multi-template matching in a database
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6247026B1 (en) * 1996-10-11 2001-06-12 Sun Microsystems, Inc. Method, apparatus, and product for leasing of delegation certificates in a distributed system
US6282652B1 (en) 1998-02-26 2001-08-28 Sun Microsystems, Inc. System for separately designating security requirements for methods invoked on a computer
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6466947B2 (en) 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6708171B1 (en) 1996-04-23 2004-03-16 Sun Microsystems, Inc. Network proxy
US6560656B1 (en) 1998-02-26 2003-05-06 Sun Microsystems, Inc. Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system
US6237024B1 (en) 1998-03-20 2001-05-22 Sun Microsystem, Inc. Method and apparatus for the suspension and continuation of remote processes
US6226746B1 (en) 1998-03-20 2001-05-01 Sun Microsystems, Inc. Stack-based system and method to combine security requirements of methods
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6138238A (en) 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6272559B1 (en) 1997-10-15 2001-08-07 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading for event notification in a distributed system
US5978893A (en) * 1996-06-19 1999-11-02 Apple Computer, Inc. Method and system for memory management
US5957920A (en) * 1997-08-28 1999-09-28 Isothermix, Inc. Medical instruments and techniques for treatment of urinary incontinence
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US5832529A (en) * 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
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
US5987580A (en) * 1997-04-04 1999-11-16 Oracle Corporation Serially reusable execution memory
CA2212354C (en) * 1997-07-31 2000-07-11 Ibm Canada Limited - Ibm Canada Limitee Method for heap management of fixed sized objects using pages
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
US6253256B1 (en) 1997-10-15 2001-06-26 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading in a distributed system
US6957427B1 (en) 1997-10-15 2005-10-18 Sun Microsystems, Inc. Remote object activation in a distributed system
US6065019A (en) * 1997-10-20 2000-05-16 International Business Machines Corporation Method and apparatus for allocating and freeing storage utilizing multiple tiers of storage organization
US5940466A (en) * 1997-10-29 1999-08-17 Micron Electronics, Inc. Apparatus for counting parts in a tray
US6021415A (en) * 1997-10-29 2000-02-01 International Business Machines Corporation Storage management system with file aggregation and space reclamation within aggregated files
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
JPH11296381A (ja) 1998-04-08 1999-10-29 Matsushita Electric Ind Co Ltd 仮想マシン及びコンパイラ
US6125434A (en) * 1998-05-19 2000-09-26 Northorp Grumman Corporation Dynamic memory reclamation without compiler or linker assistance
US6282589B1 (en) 1998-07-30 2001-08-28 Micron Technology, Inc. System for sharing data buffers from a buffer pool
US6161153A (en) * 1998-07-30 2000-12-12 Micron Technology, Inc. Method for sharing data buffers from a buffer pool
US6219772B1 (en) * 1998-08-11 2001-04-17 Autodesk, Inc. Method for efficient memory allocation of small data blocks
KR20010072477A (ko) * 1998-08-13 2001-07-31 썬 마이크로시스템즈, 인코포레이티드 가상 머신 환경에서 네이티브 코드를 변환하고 실행하는방법 및 장치
US6901518B1 (en) 1999-04-08 2005-05-31 Sun Microsystems, Inc. Method and system for establishing trust in downloaded proxy code
US6311257B1 (en) * 1999-04-13 2001-10-30 Emc Corporation Method and system for allocating memory for a command queue
US7389305B1 (en) * 1999-06-01 2008-06-17 Fair Isaac Corporation System and method for managing a database
US6877163B1 (en) 1999-06-14 2005-04-05 Sun Microsystems, Inc. Method and system for dynamic proxy classes
US6324550B1 (en) * 1999-08-25 2001-11-27 Bullant Technology Pty Ltd Data object identification and removal system
JP2001142773A (ja) 1999-11-17 2001-05-25 Fujitsu Ltd 交換システムのデータ管理装置及び記録媒体
JP4050855B2 (ja) * 2000-01-28 2008-02-20 松下電器産業株式会社 ガベージコレクション装置および方法
DE10120615B4 (de) * 2000-04-26 2004-08-19 Aicas Gmbh Dynamische Speicherverwaltung für Objekte unterschiedlicher Größe
US7716492B1 (en) 2000-05-09 2010-05-11 Oracle America, Inc. Method and apparatus to obtain service capability credentials
US6789077B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Mechanism and apparatus for web-based searching of URI-addressable repositories in a distributed computing environment
US7188251B1 (en) 2000-05-09 2007-03-06 Sun Microsystems, Inc. System and method for secure message-based leasing of resources in a distributed computing environment
US6850979B1 (en) 2000-05-09 2005-02-01 Sun Microsystems, Inc. Message gates in a distributed computing environment
US8001232B1 (en) 2000-05-09 2011-08-16 Oracle America, Inc. Event message endpoints in a distributed computing environment
US7016966B1 (en) 2000-05-09 2006-03-21 Sun Microsystems, Inc. Generating results gates in a distributed computing environment
US7577834B1 (en) 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US8135796B1 (en) 2000-05-09 2012-03-13 Oracle America, Inc. Mechanism and apparatus for accessing and addressing services in a distributed computing environment
US7395333B1 (en) 2000-05-09 2008-07-01 Sun Microsystems, Inc. Method and apparatus to obtain negotiated service advertisement
US7260543B1 (en) 2000-05-09 2007-08-21 Sun Microsystems, Inc. Automatic lease renewal with message gates in a distributed computing environment
US7080078B1 (en) 2000-05-09 2006-07-18 Sun Microsystems, Inc. Mechanism and apparatus for URI-addressable repositories of service advertisements and other content in a distributed computing environment
US8082491B1 (en) 2000-05-09 2011-12-20 Oracle America, Inc. Dynamic displays in a distributed computing environment
US7243356B1 (en) 2000-05-09 2007-07-10 Sun Microsystems, Inc. Remote method invocation with secure messaging in a distributed computing environment
US6643650B1 (en) 2000-05-09 2003-11-04 Sun Microsystems, Inc. Mechanism and apparatus for using messages to look up documents stored in spaces in a distributed computing environment
US6950875B1 (en) 2000-05-09 2005-09-27 Sun Microsystems, Inc. Message conductors in a distributed computing environment
US6789126B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Addressing message gates in a distributed computing environment
US7200848B1 (en) 2000-05-09 2007-04-03 Sun Microsystems, Inc. Migrating processes using data representation language representations of the processes in a distributed computing environment
US7370091B1 (en) 2000-05-09 2008-05-06 Sun Microsystems, Inc. Method and apparatus for obtaining space advertisements
US6792466B1 (en) 2000-05-09 2004-09-14 Sun Microsystems, Inc. Trusted construction of message endpoints in a distributed computing environment
US7072967B1 (en) 2000-05-09 2006-07-04 Sun Microsystems, Inc. Efficient construction of message endpoints
US6917976B1 (en) 2000-05-09 2005-07-12 Sun Microsystems, Inc. Message-based leasing of resources in a distributed computing environment
US6868447B1 (en) 2000-05-09 2005-03-15 Sun Microsystems, Inc. Mechanism and apparatus for returning results of services in a distributed computing environment
US7065574B1 (en) 2000-05-09 2006-06-20 Sun Microsystems, Inc. Messaging system using pairs of message gates in a distributed computing environment
US6970869B1 (en) 2000-05-09 2005-11-29 Sun Microsystems, Inc. Method and apparatus to discover services and negotiate capabilities
US6918084B1 (en) 2000-05-09 2005-07-12 Sun Microsystems, Inc. Spawning new repository spaces using information provided in advertisement schema messages
US6862594B1 (en) 2000-05-09 2005-03-01 Sun Microsystems, Inc. Method and apparatus to discover services using flexible search criteria
US7010573B1 (en) 2000-05-09 2006-03-07 Sun Microsystems, Inc. Message gates using a shared transport in a distributed computing environment
US6898618B1 (en) 2000-05-09 2005-05-24 Sun Microsystems, Inc. Client-specified display services in a distributed computing environment
US6973493B1 (en) 2000-05-09 2005-12-06 Sun Microsystems, Inc. Mechanism and apparatus for security of newly spawned repository spaces in a distributed computing environment
US6760815B1 (en) 2000-06-02 2004-07-06 Sun Microsystems, Inc. Caching mechanism for a virtual heap
US6854115B1 (en) 2000-06-02 2005-02-08 Sun Microsystems, Inc. Process persistence in a virtual machine
US6865657B1 (en) 2000-06-02 2005-03-08 Sun Microsystems, Inc. Garbage collector for a virtual heap
US6957237B1 (en) 2000-06-02 2005-10-18 Sun Microsystems, Inc. Database store for a virtual heap
US6763440B1 (en) 2000-06-02 2004-07-13 Sun Microsystems, Inc. Garbage collection using nursery regions for new objects in a virtual heap
US6836782B1 (en) * 2000-06-12 2004-12-28 Sun Microsystems, Inc. Method and apparatus for implementing modular garbage collectors
JP2002149495A (ja) * 2000-11-15 2002-05-24 Nec Corp メモリ管理方式とその方法及びこの方法を記録した記録媒体
US7296275B2 (en) 2001-01-04 2007-11-13 Sun Microsystems, Inc. Method and system for passing objects in a distributed system using serialization contexts
US6658546B2 (en) 2001-02-23 2003-12-02 International Business Machines Corporation Storing frame modification information in a bank in memory
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US7660887B2 (en) 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
KR100474357B1 (ko) * 2001-12-26 2005-03-08 한국전자통신연구원 다단계 분할을 이용한 기억소자 할당방법
US7124272B1 (en) 2003-04-18 2006-10-17 Symantec Corporation File usage history log for improved placement of files in differential rate memory according to frequency of utilizations and volatility of allocation space
US7844758B1 (en) * 2003-06-18 2010-11-30 Advanced Micro Devices, Inc. Dynamic resource allocation scheme for efficient use of a queue
JP2005031929A (ja) * 2003-07-11 2005-02-03 Hitachi Ltd サーバに記憶領域を割り当てる管理サーバ、記憶装置システム、及びプログラム
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US7376809B2 (en) * 2005-03-09 2008-05-20 International Business Machines Corporation Systems and methods for multi-frame control blocks
US7466715B2 (en) * 2005-03-28 2008-12-16 International Business Machines Corporation Flexible control block format for frame description and management
US8032675B2 (en) * 2005-12-28 2011-10-04 Intel Corporation Dynamic memory buffer allocation method and system
CN102004701B (zh) * 2009-08-28 2013-01-09 炬才微电子(深圳)有限公司 一种次级内存的分配方法和装置
US8108447B2 (en) * 2010-03-11 2012-01-31 Symantec Corporation Systems and methods for garbage collection in deduplicated data systems
CN103514098B (zh) * 2012-06-29 2018-03-27 伊姆西公司 用于回收存储空间的方法和系统
US9246780B2 (en) 2012-10-15 2016-01-26 Oracle International Corporation System and method for supporting port multiplexing in a server environment
WO2020093227A1 (zh) * 2018-11-06 2020-05-14 华为技术有限公司 一种异构计算系统及内存管理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61279968A (ja) * 1985-06-05 1986-12-10 Fujitsu Ltd パツフア管理方法
JPH01255055A (ja) * 1988-04-04 1989-10-11 Fujitsu Ltd セルプール領域管理方式
JPH0227452A (ja) * 1988-07-15 1990-01-30 Fujitsu Ltd 回線制御用領域の動的領域管理処理方式
JPH0485637A (ja) * 1990-07-30 1992-03-18 Fujitsu Ltd 動的領域管理方式

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3241125A (en) * 1962-05-22 1966-03-15 Ibm Memory allocation
GB1548401A (en) * 1975-10-08 1979-07-11 Plessey Co Ltd Data processing memory space allocation and deallocation arrangements
US4528624A (en) * 1981-03-25 1985-07-09 International Business Machines Corporation Method and apparatus for allocating memory space based upon free space in diverse memory devices
US4663706A (en) * 1982-10-28 1987-05-05 Tandem Computers Incorporated Multiprocessor multisystem communications network
GB8529890D0 (en) * 1985-12-04 1986-01-15 Watson P Garbage collection in computer system
GB8613069D0 (en) * 1986-05-29 1986-07-02 Univ Manchester Parallel storage allocation
US4914586A (en) * 1987-11-06 1990-04-03 Xerox Corporation Garbage collector for hypermedia systems
US4907151A (en) * 1988-09-30 1990-03-06 Digital Equipment Corporation System and method for garbage collection with ambiguous roots
US5088036A (en) * 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
US5109336A (en) * 1989-04-28 1992-04-28 International Business Machines Corporation Unified working storage management
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
US5339411A (en) * 1990-12-21 1994-08-16 Pitney Bowes Inc. Method for managing allocation of memory space
US5404511A (en) * 1992-06-26 1995-04-04 U.S. Philips Corporation Compact disc player with fragment memory management
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61279968A (ja) * 1985-06-05 1986-12-10 Fujitsu Ltd パツフア管理方法
JPH01255055A (ja) * 1988-04-04 1989-10-11 Fujitsu Ltd セルプール領域管理方式
JPH0227452A (ja) * 1988-07-15 1990-01-30 Fujitsu Ltd 回線制御用領域の動的領域管理処理方式
JPH0485637A (ja) * 1990-07-30 1992-03-18 Fujitsu Ltd 動的領域管理方式

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0964918A (ja) * 1995-08-29 1997-03-07 Nec Software Ltd 通信制御装置におけるバッファ管理方式
EP0928451A1 (en) * 1995-08-31 1999-07-14 Sand Technology Systems International, Inc. Memory management system and method
EP0928451A4 (en) * 1995-08-31 2004-05-19 Sand Technology Systems Int MEMORY MANAGEMENT SYSTEM AND METHOD

Also Published As

Publication number Publication date
JP2571664B2 (ja) 1997-01-16
US5561785A (en) 1996-10-01

Similar Documents

Publication Publication Date Title
JPH06202936A (ja) コンピュータ主記憶域管理システムおよび方法
EP0533805B1 (en) Method for efficient non-virtual main memory management
JP3611305B2 (ja) 永続的且つロバストな記憶割当てシステム及び方法
US5606685A (en) Computer workstation having demand-paged virtual memory and enhanced prefaulting
JP3771803B2 (ja) 永続的且つロバストなメモリ管理のためのシステム及び方法
US7346753B2 (en) Dynamic circular work-stealing deque
US4435752A (en) Allocation of rotating memory device storage locations
US4951194A (en) Method for reducing memory allocations and data copying operations during program calling sequences
US7454420B2 (en) Data sorting method and system
US6848021B2 (en) Efficient data backup using a single side file
EP2264617A1 (en) Method and apparatus for replicating a database
US6804761B1 (en) Memory allocation system and method
US8423744B2 (en) System and method of squeezing memory slabs empty
US6219772B1 (en) Method for efficient memory allocation of small data blocks
US5680582A (en) Method for heap coalescing where blocks do not cross page of segment boundaries
US6976021B2 (en) Method, system, and computer program product for managing a re-usable resource with linked list groups
US5678024A (en) Method and system for dynamic performance resource management within a computer based system
JP3777162B2 (ja) キューを維持するための方法及び装置
US6629114B2 (en) Method, system, and computer program product for managing a re-usable resource
EP0043391A1 (en) Virtual memory terminal
US7100009B2 (en) Method and system for selective memory coalescing across memory heap boundaries
JP2989608B2 (ja) セルプール管理装置
JPH10312297A (ja) マルチタスク機能を有する情報処理システムにおける資源管理方法、資源管理装置及び記録媒体
JPH0869399A (ja) ファイル管理装置
JPH07134673A (ja) メモリ管理方法