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

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

Info

Publication number
JP2571664B2
JP2571664B2 JP5229599A JP22959993A JP2571664B2 JP 2571664 B2 JP2571664 B2 JP 2571664B2 JP 5229599 A JP5229599 A JP 5229599A JP 22959993 A JP22959993 A JP 22959993A JP 2571664 B2 JP2571664 B2 JP 2571664B2
Authority
JP
Japan
Prior art keywords
blocks
queue
block
subpool
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.)
Expired - Lifetime
Application number
JP5229599A
Other languages
English (en)
Other versions
JPH06202936A (ja
Inventor
オーエン ブランディ ジオフリ
ジェイ サモドビッツ アーサー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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

Description

【発明の詳細な説明】
【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】
【発明の効果】本発明が提示する記憶域割付け、戻し、
および不要部分回収の技術を実施することによって、従
来技術で課題であった、使用可能記憶域探索に要する時
間短縮、記憶域の断片化の極小化および使用済みブロッ
クの主記憶域への戻しにともなうオーバーヘッドの極小
化が実現し、その不要部分回収プロセスによって完全に
使用可能なフレームを多数生成することが可能となり、
よって主記憶域の有効利用が図られる。
【図面の簡単な説明】
【図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 回収待ち行列アンカー
───────────────────────────────────────────────────── フロントページの続き (72)発明者 アーサー ジェイ サモドビッツ アメリカ合衆国ニューヨーク州ベスタル エバーグリーン・ストリート 201番 地 (56)参考文献 特開 平1−255055(JP,A) 特開 平2−27452(JP,A) 特開 昭61−279968(JP,A) 特開 平4−85637(JP,A)

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】あるサイズの使用可能ブロックからサブプ
    ールを、複数の別々の記憶域フレームから生成する手段
    であって、上記使用可能ブロックは上記サブプールで待
    ち行列に入れられる、上記生成手段と、 使用のため上記待ち行列の第1のポジションからブロッ
    クを割り当てる手段と、 使用後上記待ち行列の上記ポジションに少なくともいく
    つかの上記あるサイズのブロックを戻す手段と、 上記サブプール上でブロックを保有するフレームのいず
    れが完全に使用可能かを判断し、当該完全に使用可能な
    フレームのブロックを上記待ち行列から取り除き、残さ
    れたブロックがそれぞれのフレームごとにまとまるよう
    に待ち行列を再配置する不要部分回収手段とを含み、 上記戻す手段は、上記待ち行列の第2のポジションにま
    とめられたブロックを有するフレームのブロックについ
    ては、上記待ち行列の上記第1のポジションとは異なる
    ポジションに戻し、 上記割り当てる手段は、上記異なるポジションに戻され
    た上記ブロックについては、上記待ち行列の上記第1の
    ポジションに戻され、または、まとめられたブロックよ
    りも後順位に割り当てることを特徴とする コンピュータ
    記憶域管理システム。
  2. 【請求項2】上記フレームは、初期的には、主記憶域の
    リストまたはサブプールから獲得され、完全に使用可能
    なフレームを上記主記憶域リストまたはサブプールへ戻
    す手段を有する請求項1記載のコンピュータ記憶域管理
    システム。
  3. 【請求項3】上記請求項1記載の不要部分回収手段は、
    一定期間毎または時折、呼び出され、上記不要部分回収
    プロセスの次回呼び出しの間に、上記リストまたはサブ
    プールへ完全に使用可能なフレームを戻す手段を有する
    請求項1記載のコンピュータ記憶域管理システム。
  4. 【請求項4】上記生成手段は、 上記のあるサイズの記憶域ブロックに対する要求とその
    要求を満たせるブロックが上記サブプールに存在しない
    こととに対応し、主記憶域から完全に使用可能な フレー
    ムを選択し、上記要求を満たすため上記フレームのブロ
    ックを割り当て、上記フレームの残りを上記あるサイズ
    の他のブロックに分割し、それらを上記サブプールの待
    ち行列に入れる手段と、 上記あるサイズの記憶域ブロックに対する後続の要求に
    対応し、その要求を満たすため上記サブプールからブロ
    ックを順に割り当てる手段と、 上記あるサイズの記憶域ブロックに対する後続の要求と
    その要求を満たすことのできるブロックが上記サブプー
    ルに存在しないこととに対応し、主記憶域から別の完全
    に使用可能なフレームを選択し、上記要求を満たすため
    上記フレームのブロックを割り当て、上記フレームの残
    りを上記あるサイズの他のブロックに分割し、それらを
    上記サブプールの待ち行列に入れる手段と、 上記あるサイズの記憶域ブロックを戻す後続の要求に対
    応し、上記戻されたブロックを上記サブプールの待ち行
    列へ入れる手段と、 を有する請求項1記載のコンピュータ記憶域管理システ
    ム。
  5. 【請求項5】あるサイズの使用可能ブロックからサブプ
    ールを、複数の別々の記憶域フレームから生成するステ
    ップであって、上記使用可能ブロックは上記サブプール
    で待ち行列に入れられる、上記生成ステップと、 使用のため上記待ち行列の第1のポジションからブロッ
    クを割り当てるステップと、 使用後上記待ち行列の上記ポジションに少なくともいく
    つかの上記あるサイズのブロックを戻すステップと、 上記サブプール上でブロックを保有するフレームのいず
    れが完全に使用可能かを判断し、当該完全に使用可能な
    フレームのブロックを上記待ち行列から取り除き、残さ
    れたブロックがそれぞれのフレームごとにまとまるよう
    に待ち行列を再配置する不要部分回収ステップとを含
    み、 上記戻すステップは、上記待ち行列の第2のポジション
    にまとめられたブロックを有するフレームのブロックに
    ついては、上記待ち行列の上記第1のポジションとは異
    なるポジションに戻し、 上記割り当てるステップは、上記異なるポジションに戻
    された上記ブロックについては、上記待ち行列の上記第
    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 1992-10-29
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

Publications (2)

Publication Number Publication Date
JPH06202936A JPH06202936A (ja) 1994-07-22
JP2571664B2 true 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)

Families Citing this family (117)

* 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
JPH0964918A (ja) * 1995-08-29 1997-03-07 Nec Software Ltd 通信制御装置におけるバッファ管理方式
US5835959A (en) * 1995-12-01 1998-11-10 Sand Technology Systems International, Inc. Memory management system and method using dual indexing structures
CA2230859C (en) * 1995-08-31 2002-12-31 Sand Technology Systems International, Inc. Memory management system and method
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
US6708171B1 (en) 1996-04-23 2004-03-16 Sun Microsystems, Inc. Network proxy
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
US6182083B1 (en) 1997-11-17 2001-01-30 Sun Microsystems, Inc. Method and system for multi-entry and multi-template matching in a database
US6237024B1 (en) 1998-03-20 2001-05-22 Sun Microsystem, Inc. Method and apparatus for the suspension and continuation of remote processes
US6598094B1 (en) 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
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
US6578044B1 (en) 1997-11-17 2003-06-10 Sun Microsystems, Inc. Method and system for typesafe attribute matching
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
US6247026B1 (en) * 1996-10-11 2001-06-12 Sun Microsystems, Inc. Method, apparatus, and product for leasing of delegation certificates in a distributed system
US6438614B2 (en) 1998-02-26 2002-08-20 Sun Microsystems, Inc. Polymorphic token based control
US6226746B1 (en) 1998-03-20 2001-05-01 Sun Microsystems, Inc. Stack-based system and method to combine security requirements of methods
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
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
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
US6138238A (en) 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
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
US6463446B1 (en) 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
US6134603A (en) * 1998-03-20 2000-10-17 Sun Microsystems, Inc. Method and system for deterministic hashes to identify remote methods
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
US5832529A (en) * 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
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
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
US6957427B1 (en) 1997-10-15 2005-10-18 Sun Microsystems, Inc. Remote object activation in a distributed system
US6253256B1 (en) 1997-10-15 2001-06-26 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading 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
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
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
US6917976B1 (en) 2000-05-09 2005-07-12 Sun Microsystems, Inc. Message-based leasing of resources in a distributed computing environment
US7072967B1 (en) 2000-05-09 2006-07-04 Sun Microsystems, Inc. Efficient construction of message endpoints
US6789126B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Addressing message gates 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
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
US7010573B1 (en) 2000-05-09 2006-03-07 Sun Microsystems, Inc. Message gates using a shared transport in a distributed computing environment
US6850979B1 (en) 2000-05-09 2005-02-01 Sun Microsystems, Inc. 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
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
US6792466B1 (en) 2000-05-09 2004-09-14 Sun Microsystems, Inc. Trusted construction of message endpoints in a distributed computing environment
US8001232B1 (en) 2000-05-09 2011-08-16 Oracle America, Inc. Event message endpoints 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
US7716492B1 (en) 2000-05-09 2010-05-11 Oracle America, Inc. Method and apparatus to obtain service capability credentials
US7016966B1 (en) 2000-05-09 2006-03-21 Sun Microsystems, Inc. Generating results gates in a distributed computing environment
US6950875B1 (en) 2000-05-09 2005-09-27 Sun Microsystems, Inc. Message conductors 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
US7260543B1 (en) 2000-05-09 2007-08-21 Sun Microsystems, Inc. Automatic lease renewal with message gates in a distributed computing environment
US7370091B1 (en) 2000-05-09 2008-05-06 Sun Microsystems, Inc. Method and apparatus for obtaining space advertisements
US8082491B1 (en) 2000-05-09 2011-12-20 Oracle America, Inc. Dynamic displays in a distributed computing environment
US6918084B1 (en) 2000-05-09 2005-07-12 Sun Microsystems, Inc. Spawning new repository spaces using information provided in advertisement schema messages
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
US6862594B1 (en) 2000-05-09 2005-03-01 Sun Microsystems, Inc. Method and apparatus to discover services using flexible search criteria
US7065574B1 (en) 2000-05-09 2006-06-20 Sun Microsystems, Inc. Messaging system using pairs of message gates 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
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
US6957237B1 (en) 2000-06-02 2005-10-18 Sun Microsystems, Inc. Database store for a virtual heap
US6865657B1 (en) 2000-06-02 2005-03-08 Sun Microsystems, Inc. Garbage collector 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 伊姆西公司 用于回收存储空间的方法和系统
US9548912B2 (en) * 2012-10-15 2017-01-17 Oracle International Corporation System and method for supporting smart buffer management in a distributed data grid
WO2020093227A1 (zh) * 2018-11-06 2020-05-14 华为技术有限公司 一种异构计算系统及内存管理方法

Family Cites Families (18)

* 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
JPS61279968A (ja) * 1985-06-05 1986-12-10 Fujitsu Ltd パツフア管理方法
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
JP2989608B2 (ja) * 1988-04-04 1999-12-13 富士通株式会社 セルプール管理装置
JPH0227452A (ja) * 1988-07-15 1990-01-30 Fujitsu Ltd 回線制御用領域の動的領域管理処理方式
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
JPH0485637A (ja) * 1990-07-30 1992-03-18 Fujitsu Ltd 動的領域管理方式
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

Also Published As

Publication number Publication date
US5561785A (en) 1996-10-01
JPH06202936A (ja) 1994-07-22

Similar Documents

Publication Publication Date Title
JP2571664B2 (ja) コンピュータ主記憶域管理システムおよび方法
US5109336A (en) Unified working storage management
JP3611305B2 (ja) 永続的且つロバストな記憶割当てシステム及び方法
US5606685A (en) Computer workstation having demand-paged virtual memory and enhanced prefaulting
US5333315A (en) System of device independent file directories using a tag between the directories and file descriptors that migrate with the files
JP2858795B2 (ja) 実記憶割り当て方法
US7346753B2 (en) Dynamic circular work-stealing deque
JP3771803B2 (ja) 永続的且つロバストなメモリ管理のためのシステム及び方法
JPH05508043A (ja) 効率的な非仮想主メモリ管理のための方法
US8423744B2 (en) System and method of squeezing memory slabs empty
US5715452A (en) Process of transferring file, process of gaining access to data and process of writing data
US6804761B1 (en) Memory allocation system and method
JP2000222281A (ja) マルチスレッド仮想マシン内におけるメモリ・アロケ―ションの方法及び装置
JPH05189281A (ja) 記憶装置のファイル割当て方式
US6219772B1 (en) Method for efficient memory allocation of small data blocks
JP4879014B2 (ja) 使用可能なメモリ資源を管理するための構成および方法
US7032093B1 (en) On-demand allocation of physical storage for virtual volumes using a zero logical disk
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
US6629114B2 (en) Method, system, and computer program product for managing a re-usable resource
JP3777162B2 (ja) キューを維持するための方法及び装置
US7509461B1 (en) Method and apparatus for intelligent buffer cache pre-emption
JPH0219938A (ja) ファイル管理システム
JP2625382B2 (ja) ファイル割り当てシステム
JP2989608B2 (ja) セルプール管理装置