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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
Description
【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピューター主記憶
域の管理に一般的に関連し、特に不要部分の整理、すな
わち主記憶域への戻しおよび空ら記憶域ブロックの収集
および接合を扱う。
域の管理に一般的に関連し、特に不要部分の整理、すな
わち主記憶域への戻しおよび空ら記憶域ブロックの収集
および接合を扱う。
【0002】
【従来の技術】プログラム、データ、制御情報、バッフ
ァ、ワーク・エリア等を記憶するために、コンピュータ
・システムは主記憶域を持つ。サブシステム・プログラ
ムを記憶するような主記憶域のいくつかは、初期プログ
ラム・ロードで割り当てられ、そのサブシステムが稼働
する限りは必要とされよう。一方、データおよびワーク
・エリアを記憶するような主記憶域の必要性は一時的な
ものに限られよう。オペレーティング・システムはその
サブシステムによって必要とされる(または「要求され
る」)主記憶域を割り当て、そのサブシステムは、もは
や必要としなくなると、オペレーティングシステムにこ
の主記憶域を戻す。大規模なコンピューター・システム
では、オペレーティング・システムは、例えば、毎秒4
0、000にも達する種々のサイズのブロックを割り当
て、同じ程度の数のブロックを戻りとして受け取る。主
記憶域が異なるまたはより大きいサイズのブロックに対
する要求を満たすことができるように、主記憶域の中で
戻されたブロックを相互に定期的に接合するために、不
要部分回収は、不可欠である。
ァ、ワーク・エリア等を記憶するために、コンピュータ
・システムは主記憶域を持つ。サブシステム・プログラ
ムを記憶するような主記憶域のいくつかは、初期プログ
ラム・ロードで割り当てられ、そのサブシステムが稼働
する限りは必要とされよう。一方、データおよびワーク
・エリアを記憶するような主記憶域の必要性は一時的な
ものに限られよう。オペレーティング・システムはその
サブシステムによって必要とされる(または「要求され
る」)主記憶域を割り当て、そのサブシステムは、もは
や必要としなくなると、オペレーティングシステムにこ
の主記憶域を戻す。大規模なコンピューター・システム
では、オペレーティング・システムは、例えば、毎秒4
0、000にも達する種々のサイズのブロックを割り当
て、同じ程度の数のブロックを戻りとして受け取る。主
記憶域が異なるまたはより大きいサイズのブロックに対
する要求を満たすことができるように、主記憶域の中で
戻されたブロックを相互に定期的に接合するために、不
要部分回収は、不可欠である。
【0003】主記憶域を割り当てるための既知の技法が
いくつかある。1つの既知の技法では、要求された正確
な量は、サイズに関係なく探し求められ、もし使用可能
であれば、割り当てられる。この技法は、割り付けに関
し記憶域を浪費しないが、一方では、正確なサイズの使
用可能なブロックをつきとめるには相当な探索時間を必
要とするかもしれないし、主記憶域の様々な断片化(フ
ラグメンテーションFRAGMENTATION)を発生させる。こ
れらの問題に対処するため、他の既知の技法ではあらか
じめ決められたあるサイズの大きさに作られたブロック
のみを割り当て、各サイズの戻されたブロックは、次の
要求のためにそれぞれのサブプールの中で管理される。
例えば、1つの先行技術であるIBM CP 67システ
ムでは、最初の要求が出される時、その要求に等しい
か、あるいは越える中では最小のあらかじめ決められた
サイズのブロックが、主記憶域から割り当てられる。こ
れらのブロックの1つが戻されるまで、このブロック・
サイズに対する主記憶域の割り付けは、継続する。ブロ
ックはそのサイズのブロック専用のサブプールへ戻さ
れ、このサイズに対する次の割り付け要求はそのサブプ
ールから満たされる。時間の経過と共に、多くのブロッ
クが多くの異なるサブプールに戻される。 各々のサブ
プールは、他のサブプールのブロックと異なるサイズの
ブロックを保有する。あるサイズのブロックに対する需
要が殺到し、次に、そのサイズの需要が急激に減少する
と、対応するサブプールは、このサイズのブロックを過
大に保有することとなる。定期的に、そのサブプールか
らのすべてのブロックは主記憶域に戻され、連続するブ
ロックが接合され、次の要求を満たすためにより大きい
ブロックが形成される。そのような不要部分回収プロセ
スは、需要の殺到と次に続く急激な減少に対応するよ
う、異なるまたはより大きいサイズのブロックの可用性
を保証するために必要である。前述のテクニックが主記
憶域にそのサブプールのすべてのブロックを戻すことに
効果的である一方、種々のサイズのブロックが主記憶域
に対応するギャップを残しながら尚使用中であるので、
主記憶域は、なお非常に断片化されている場合がある。
この断片化は、主記憶域から次の要求を満たすための探
索時間を増加させ、主記憶域の中の連続したロケーショ
ンを要求に応じて割り当てることができないという機会
を増加させる。
いくつかある。1つの既知の技法では、要求された正確
な量は、サイズに関係なく探し求められ、もし使用可能
であれば、割り当てられる。この技法は、割り付けに関
し記憶域を浪費しないが、一方では、正確なサイズの使
用可能なブロックをつきとめるには相当な探索時間を必
要とするかもしれないし、主記憶域の様々な断片化(フ
ラグメンテーションFRAGMENTATION)を発生させる。こ
れらの問題に対処するため、他の既知の技法ではあらか
じめ決められたあるサイズの大きさに作られたブロック
のみを割り当て、各サイズの戻されたブロックは、次の
要求のためにそれぞれのサブプールの中で管理される。
例えば、1つの先行技術であるIBM CP 67システ
ムでは、最初の要求が出される時、その要求に等しい
か、あるいは越える中では最小のあらかじめ決められた
サイズのブロックが、主記憶域から割り当てられる。こ
れらのブロックの1つが戻されるまで、このブロック・
サイズに対する主記憶域の割り付けは、継続する。ブロ
ックはそのサイズのブロック専用のサブプールへ戻さ
れ、このサイズに対する次の割り付け要求はそのサブプ
ールから満たされる。時間の経過と共に、多くのブロッ
クが多くの異なるサブプールに戻される。 各々のサブ
プールは、他のサブプールのブロックと異なるサイズの
ブロックを保有する。あるサイズのブロックに対する需
要が殺到し、次に、そのサイズの需要が急激に減少する
と、対応するサブプールは、このサイズのブロックを過
大に保有することとなる。定期的に、そのサブプールか
らのすべてのブロックは主記憶域に戻され、連続するブ
ロックが接合され、次の要求を満たすためにより大きい
ブロックが形成される。そのような不要部分回収プロセ
スは、需要の殺到と次に続く急激な減少に対応するよ
う、異なるまたはより大きいサイズのブロックの可用性
を保証するために必要である。前述のテクニックが主記
憶域にそのサブプールのすべてのブロックを戻すことに
効果的である一方、種々のサイズのブロックが主記憶域
に対応するギャップを残しながら尚使用中であるので、
主記憶域は、なお非常に断片化されている場合がある。
この断片化は、主記憶域から次の要求を満たすための探
索時間を増加させ、主記憶域の中の連続したロケーショ
ンを要求に応じて割り当てることができないという機会
を増加させる。
【0004】もうひとつの先行技術IBM VM/XA
SPIシステムでは、その主記憶域は、各々連続した記
憶域の4096バイトのフレームに論理的に分割され
る。主記憶域へのすべての割り付けおよび戻しは、フレ
ームに基づいて行われる。あらかじめ決められたサイズ
の使用可能なブロックは、使用可能なブロックを識別す
るために必要となる探索を最小化するために主記憶域か
らの割り付けの後サブプールにおいて維持される。
SPIシステムでは、その主記憶域は、各々連続した記
憶域の4096バイトのフレームに論理的に分割され
る。主記憶域へのすべての割り付けおよび戻しは、フレ
ームに基づいて行われる。あらかじめ決められたサイズ
の使用可能なブロックは、使用可能なブロックを識別す
るために必要となる探索を最小化するために主記憶域か
らの割り付けの後サブプールにおいて維持される。
【0005】以下は、先行技術IBM VM/XA SP
Iシステムのより詳細な記述である。初めのブロック要
求が出される時、フレームの1つが、その要求を満たす
最小のあらかじめ決められたサイズの数多くのブロック
に論理上分割される。次に、そのブロックの1つが、そ
の要求者に割り当てられる。残りのブロックは、サブプ
ールの中で一緒に集められ、制御ブロックによって連鎖
され、(主記憶域の各フレームの使用に供され、フレー
ム・テーブル・エントリーFRTEーと呼ばれる)記憶
域サブプール中のブロックが、次の要求を満たすために
使われる。サブプールがこれら引き続き発生する要求の
ために空らになり、同じサイズのブロックに対するもう
ひとつの要求が出される時、もうひとつのフレームが主
記憶域域から選択され、ブロックに分割され、そのブロ
ックの一つがその要求をたすために使われる。残りのブ
ロックは、同じサブプールに割り当てられるが、もうひ
とつのフレーム・テーブル・エントリの下にグループ化
される。ブロックがいずれかのフレームから戻されるに
つれ、それらはこのサブプールの中のそれぞれのフレー
ム・テーブル・エントリの下にグループ化される。
Iシステムのより詳細な記述である。初めのブロック要
求が出される時、フレームの1つが、その要求を満たす
最小のあらかじめ決められたサイズの数多くのブロック
に論理上分割される。次に、そのブロックの1つが、そ
の要求者に割り当てられる。残りのブロックは、サブプ
ールの中で一緒に集められ、制御ブロックによって連鎖
され、(主記憶域の各フレームの使用に供され、フレー
ム・テーブル・エントリーFRTEーと呼ばれる)記憶
域サブプール中のブロックが、次の要求を満たすために
使われる。サブプールがこれら引き続き発生する要求の
ために空らになり、同じサイズのブロックに対するもう
ひとつの要求が出される時、もうひとつのフレームが主
記憶域域から選択され、ブロックに分割され、そのブロ
ックの一つがその要求をたすために使われる。残りのブ
ロックは、同じサブプールに割り当てられるが、もうひ
とつのフレーム・テーブル・エントリの下にグループ化
される。ブロックがいずれかのフレームから戻されるに
つれ、それらはこのサブプールの中のそれぞれのフレー
ム・テーブル・エントリの下にグループ化される。
【0006】フレームにおける使用可能なブロックが空
らになるまで、同じサイズのブロックに対する引き続き
発生する要求は、同じフレームから満たされる。異なる
サイズのブロックを含む他のサブプールが、同様に生成
される。オペレーティング・システムは、それぞれのフ
レームが完全に使用可能であるかを判断するため各サブ
プール内の各フレーム・テーブル・エントリの内容を定
期的にチェックし、もしそうならば、主記憶域にそのフ
レームの全体を戻す。このテクニックは、不要部分回収
に際し全体として戻されるフレームの数を最大にする点
で非常に効果的である。しかし、対応するフレーム・テ
ーブル・エントリにブロックを戻すために余分のオーバ
ーヘッドを必要とする。各々の戻しのために、そのフレ
ーム・テーブル・エントリのアドレスは、最初に計算さ
れていなければならない。また、各ブロックの戻しが行
われている間に、システムは、そのブロック戻りにより
そのフレームの使用可能性が完全となるのか、あるいは
そのフレームの中で単に使用可能なブロックであるのか
を判断しなければならない。前者の場合、FRMTEは
引き続く不要部分回収のため待ち行列からはずされる。
後者の場合、FRMTEは再び待ち行列に入れられる;
このFRMTEは、その割り当てるブロックのための待
ち行列全体にわたるサーチを単純化するために使用可能
なブロックが全くなくなった時、待ち行列からはずされ
たものである。中間的FRMTE待ち行列の使用は、C
PUに負荷を与える記憶域追加参照を必要とする。
らになるまで、同じサイズのブロックに対する引き続き
発生する要求は、同じフレームから満たされる。異なる
サイズのブロックを含む他のサブプールが、同様に生成
される。オペレーティング・システムは、それぞれのフ
レームが完全に使用可能であるかを判断するため各サブ
プール内の各フレーム・テーブル・エントリの内容を定
期的にチェックし、もしそうならば、主記憶域にそのフ
レームの全体を戻す。このテクニックは、不要部分回収
に際し全体として戻されるフレームの数を最大にする点
で非常に効果的である。しかし、対応するフレーム・テ
ーブル・エントリにブロックを戻すために余分のオーバ
ーヘッドを必要とする。各々の戻しのために、そのフレ
ーム・テーブル・エントリのアドレスは、最初に計算さ
れていなければならない。また、各ブロックの戻しが行
われている間に、システムは、そのブロック戻りにより
そのフレームの使用可能性が完全となるのか、あるいは
そのフレームの中で単に使用可能なブロックであるのか
を判断しなければならない。前者の場合、FRMTEは
引き続く不要部分回収のため待ち行列からはずされる。
後者の場合、FRMTEは再び待ち行列に入れられる;
このFRMTEは、その割り当てるブロックのための待
ち行列全体にわたるサーチを単純化するために使用可能
なブロックが全くなくなった時、待ち行列からはずされ
たものである。中間的FRMTE待ち行列の使用は、C
PUに負荷を与える記憶域追加参照を必要とする。
【0007】
【発明が解決しようとする課題】本発明は、使用可能記
憶域探索に要する時間や記憶域のフラグメンテーション
の発生または使用済みブロックの主記憶域への戻しにと
もなうオーバーヘッド等の従来技術上の問題を解決する
ため、記憶域割付け、戻し、および不要部分回収の技術
を提供し、その不要部分回収プロセスによって完全に使
用可能なフレームを効率的に多数産み出すことを意図す
る。
憶域探索に要する時間や記憶域のフラグメンテーション
の発生または使用済みブロックの主記憶域への戻しにと
もなうオーバーヘッド等の従来技術上の問題を解決する
ため、記憶域割付け、戻し、および不要部分回収の技術
を提供し、その不要部分回収プロセスによって完全に使
用可能なフレームを効率的に多数産み出すことを意図す
る。
【0008】
【課題を解決するための手段】本発明は、以下記述の新
たなコンピュータの記憶域管理システムを提示する。複
数の別々の記憶域フレームから1つのサイズの使用可能
ブロックがサブプールの待ち行列に入れられる。不要部
分回収ルーチンが、サブプールの待ち行列上にブロック
を保持するどのフレームが完全に使用可能であるかを、
各フレーム用の待ち行列上の使用可能ブロックの数を基
に、定期的または時折、判断する。次に、上記不要部分
回収ルーチンは、それらブロックを待ち行列から取り出
し、完全に使用可能なフレームのブロックに再生させ
る。上記ルーチンは、また、その他のフレームのブロッ
ク(同一フレームのその他のブロックと待ち行列でひと
まとめにされるこれらその他のフレームのブロック)を
再び待ち行列に入れる。ブロックは、待ち行列の先頭か
ら割り当てられ、使用後大部分のブロックは待ち行列の
先頭に戻される。このようにして、ブロックは、次々
と、待ち行列の先頭から割り当てられ、先頭へ戻される
ので、サブプールの利用度が低い場合は、待ち行列の最
後部近傍のフレームからのブロックは割り当てられな
い。戻されるブロックのいくつかは待ち行列の最後部近
傍のブロックによって表されるフレームの一部であるこ
ともあるので、そのようなブロックが、再生のためフレ
ームを使用可能とすることができる。本発明の好ましい
実施例では、待ち行列の最後部近傍のブロックによって
表されるフレームの一部であるブロックは、待ち行列上
のその他のブロックとは異なるポジションへ戻され、そ
の他のブロックの後で割り当てられる。この方法によっ
て、待ち行列の最後部近傍で表されるフレームが次回の
不要部分回収プロセスにおいて完全に利用可能となる見
込みが増加する。
たなコンピュータの記憶域管理システムを提示する。複
数の別々の記憶域フレームから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の内の種々のプ
ログラムおよびサブシステムによって、そのような要求
は出される。
図中のエレメントを表す。図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を参照しながら以下詳細に記述され
る。これらの機能は以下記述の構造および制御ブロック
を使用する。
記憶域管理プログラム140は、要求に従って主記憶域
をサブシステム125に割り当てるためのブロック割当
てルーチン400と、ブロックがもはや必要とされない
時、サブプール151〜153に割当てブロックを戻す
ためのブロック戻しルーチン800と、定期的に戻され
たブロックを回収し、完全に使用可能なフレームと接合
し、主記憶域120へ完全に使用可能なフレームを戻す
ための不要部分回収ルーチン600とを含む。これらの
機能は、 図5〜8を参照しながら以下詳細に記述され
る。これらの機能は以下記述の構造および制御ブロック
を使用する。
【0011】主記憶ブロックの急速な割当ておよび戻し
を容易にするために、空き記憶域管理プログラムは、使
用可能なブロックから成る複数のサブプールを維持す
る。同じサブプール内のすべてのブロックは同じサイズ
を持ち、各サブプールは他のサブプールのブロックとは
異なるサイズのブロックを持つ。サブプールのためのア
ンカーを含むサブプール制御ブロック151〜153
(図1)によって各サブプールは、代表される。サブプ
ール制御ブロックのすべては、主記憶の連続したロケー
ションに記憶されて、サブプール制御ブロック・テーブ
ル155を形づくるために昇順に並べられる。図3と図
4の参照によって詳細に記述されるが、それらが関連づ
けられるフレームに関係なく同じサブプールの範囲内の
すべての使用可能なブロックは、サブプール制御ブロッ
ク・アンカー320から待ち行列に入れられる。
を容易にするために、空き記憶域管理プログラムは、使
用可能なブロックから成る複数のサブプールを維持す
る。同じサブプール内のすべてのブロックは同じサイズ
を持ち、各サブプールは他のサブプールのブロックとは
異なるサイズのブロックを持つ。サブプールのためのア
ンカーを含むサブプール制御ブロック151〜153
(図1)によって各サブプールは、代表される。サブプ
ール制御ブロックのすべては、主記憶の連続したロケー
ションに記憶されて、サブプール制御ブロック・テーブ
ル155を形づくるために昇順に並べられる。図3と図
4の参照によって詳細に記述されるが、それらが関連づ
けられるフレームに関係なく同じサブプールの範囲内の
すべての使用可能なブロックは、サブプール制御ブロッ
ク・アンカー320から待ち行列に入れられる。
【0012】オペレーティング・システム130は、ま
た、主記憶域からのすべてのフレームを表わすためにフ
レーム制御ブロックまたはフレーム・テーブル・エント
リ171〜179(FRMTE)から成るフレーム・テ
ーブル170を含む。グローバル使用可能フレーム待ち
行列アンカー179は、(システム使用のために)完全
に使用可能だがサブプールに割り当てられてない最初の
FRMTEをポイントする。すべての未割り当てだが完
全に使用可能なFRMTEがグローバル使用可能フレー
ム待ち行列180を形づくるために一緒に連鎖されるま
で、これら未割り当てで使用可能なFRMTEは、次の
未割当てだが完全に使用可能なFRMTEに、ポイント
し、次々にこの操作が行われる。要求サイズに対応して
いるサブプールが空らの場合のみ、空ら記憶域管理プロ
グラムは、グローバル使用可能フレーム待ち行列から割
り当てる。この時、これらの未割当てだが完全に使用可
能なフレームの1つは、空らサブプールに割り当てら
れ、1またはそれ以上のブロックが割り当てられる。残
りのFRMTEのいくつかは、サブプールに割り当てら
れ、部分的にまたは完全に使用可能なフレームを表わ
す。サブプールに割り当てられる完全に使用可能なフレ
ームは、以前のある時点では部分的か完全にか使用され
たものである;すなわち、そのブロックはそのサブプー
ルにその後戻されたが、そのフレームはまだグローバル
使用可能フレーム待ち行列に戻されなかったものであ
る。残りのFRMTEは、完全に利用され、どのサブプ
ールにも割り当てられてないフレームを表す。本発明の
一つの目的は、本発明の実施に必要なオーバーヘッドを
最小限に押さえながら、グローバル使用可能フレーム待
ち行列に全体において戻されることができる、別々のサ
ブプールに割り当てられるフレームの数を極大化するこ
とである。
た、主記憶域からのすべてのフレームを表わすためにフ
レーム制御ブロックまたはフレーム・テーブル・エント
リ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を維持し、本発明を実施
するため必要となるオーバーヘッドを減少させる。
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は使われ
ない。)
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に
戻される。
ク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または半分のフレームからのブロックを
回収待ち行列に戻すことは、望ましいかもしれない。更
に下記に詳細に述べるように、サブプール待ち行列が空
らになり、もうひとつの要求がそのサブプールからのブ
ロックに対し行われなければ、ブロックは回収待ち行列
から割り当てられない。かくして、ブロックが最後の不
要部分回収時にサブプール待ち行列の最後部近くで待ち
行列に入れられたフレームで、そのブロックがその後回
収待ち行列に戻されるフレームは、(このサイズに対す
る需要が弱まるならば)次の不要部分回収時に完全に使
用可能となる。
ドを減らすため、ブロック・アンカー320から始まる
サブプール待ち行列が空らになる時の割当て要求を満た
すため、グローバル使用可能フレーム待ち行列180か
らのフレームが使用される前に空フレーム待ち行列から
のフレームが使われる。フィールド360は、そのサブ
プールの中のすべてのブロックのサイズを示す。フィー
ルド370は、「回収待ち行列」の最初のブロックへポ
イントする回収待ち行列アンカーである。回収待ち行列
は、前回の不要部分回収時にサブプール待ち行列の最後
にブロックが既に入れられているそのフレームの戻され
るブロックのための貯蔵所である。しかし、本発明に従
えば、戻されるブロックが前回の不要部分回収時にサブ
プール待ち行列の最後部またはその近くで待ち行列に入
れられた複数フレームのブロックを回収待ち行列が受け
取ることができることに注意すべきである。ブロックが
回収待ち行列に戻されるフレームの正確な数は、各サブ
プールに割り当てられたフレームの数に依存する。たと
えば、フレームからのブロックが最後の不要部分回収時
にサブプール待ち行列の最後部近くに入れられた限り、
これらの1/4または半分のフレームからのブロックを
回収待ち行列に戻すことは、望ましいかもしれない。更
に下記に詳細に述べるように、サブプール待ち行列が空
らになり、もうひとつの要求がそのサブプールからのブ
ロックに対し行われなければ、ブロックは回収待ち行列
から割り当てられない。かくして、ブロックが最後の不
要部分回収時にサブプール待ち行列の最後部近くで待ち
行列に入れられたフレームで、そのブロックがその後回
収待ち行列に戻されるフレームは、(このサイズに対す
る需要が弱まるならば)次の不要部分回収時に完全に使
用可能となる。
【0017】図3は、不要部分回収の直後にそのサブプ
ールの中で使用可能なブロックを図示する。不要部分回
収ルーチンは、各フレーム からの使用可能ブロックの
すべてを一団にまとめるためにサブプール待ち行列を再
配置した。大括弧の各々は、フレーム175、171、
178および173のそれぞれの範囲内で、使用可能ブ
ロックのすべてを示す。フレーム173からのブロック
は、サブプール待ち行列の最後部にまためられた。引き
続いて、ブロックは先に述べたようにサブプール待ち行
列または回収待ち行列に戻される。各ブロックは戻され
るにつれ、その待ち行列の中で先頭となり、待ち行列内
のその他のブロックを1ポジション後方に置き換える。
これは、各待ち行列からのブロックの割り当ておよびそ
の戻しをおこなうための「LIFO」または「プッシュ
ダウンスタック」として知られている手法である。ある
場合には複数のブロックが1個のフレームからかためて
戻されるかもしれない。一方、1時点で1フレームから
ただひとつのブロックが戻される場合もある。戻された
ブロックを持つフレームの順序は、予測できない。
ールの中で使用可能なブロックを図示する。不要部分回
収ルーチンは、各フレーム からの使用可能ブロックの
すべてを一団にまとめるためにサブプール待ち行列を再
配置した。大括弧の各々は、フレーム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アンカーを介
して次の戻しのために入れられることができる。
ル待ち行列の最後部の近くで、フレーム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またはそれ以上のフレームから、回収
待ち行列にブロックを戻すよう拡張できる。
ブロックのグループ化と、サブプール待ち行列の先頭か
らのブロックの割当てと、回収待ち行列へのフレーム1
73からの(サブプール待ち行列の最後に表わされる)
ブロックの戻しと、サブプール待ち行列の先頭へのその
他のブロックの戻しとは、以下記述のような効果を持
つ。不要部分回収の間にそのサブプールが完全に使用/
割り当てされないと仮定すると、その待ち行列の最後の
フレーム173のブロックは、新しい要求のために割り
当てられない。しかしながら、フレーム173の他のブ
ロックが使用の後戻される時、それらは回収待ち行列の
中に入れられる。上記のように、サブプール待ち行列が
空らになり、もうひとつの要求がこのサブプールのため
に存在するのでなければ、ブロックは回収待ち行列から
割り当てられない。次の不要部分回収時に回収待ち行列
上のブロックはサブプール待ち行列からのブロックと組
み合わせられ、図示された例で、フレーム173が完全
に使用可能となる。(同様に、その次の不要部分回収時
に、あらゆる不完全なフレームの戻されたブロックすべ
ては、先に述べたようにサブプール待ち行列の上にまと
められる。) したがって、前述の技法は、待ち行列の
最後のフレームが次の不要部分回収時に完全に使用可能
で、グローバル使用可能フレーム待ち行列180に全体
においてその後戻されることができるという機会を増や
す。上記のように、本発明は、サブプール待ち行列の最
後に表わされる1またはそれ以上のフレームから、回収
待ち行列にブロックを戻すよう拡張できる。
【0020】また、本発明の目的に従えば、ブロックの
割り当てと戻し、および、不要部分回収の実行とに必要
とされるオーバーヘッドは僅かである。 以下にさらに
詳細に記述されるが、ブロック割当ておよびブロック戻
しルーチンは短く、不要部分回収ルーチンは30秒に1
回だけ実行されればよい。同様に、各サブプールから割
り当てるブロックに対する探索と、どの待ち行列が戻さ
れるブロックを受け取るべきかの決定と、ブロックを受
け取る待ち行列の位置の探索とに要する時間は短い。
割り当てと戻し、および、不要部分回収の実行とに必要
とされるオーバーヘッドは僅かである。 以下にさらに
詳細に記述されるが、ブロック割当ておよびブロック戻
しルーチンは短く、不要部分回収ルーチンは30秒に1
回だけ実行されればよい。同様に、各サブプールから割
り当てるブロックに対する探索と、どの待ち行列が戻さ
れるブロックを受け取るべきかの決定と、ブロックを受
け取る待ち行列の位置の探索とに要する時間は短い。
【0021】図5は、空き記憶域管理プログラム140
のブロック割当てルーチン400を図示する。サブシス
テム125またはほかのプログラムが主記憶域のブロッ
クを要求するとき、このルーチンは、起動される。ステ
ップ410の中で、ブロック割当てルーチン400は、
その要求を満たすことのできる最小の、あらかじめ決め
られたブロック・サイズを持っているサブプールを探索
する。要求された倍長語数に等しい行数をテーブル41
2(図1)に指標付けすることによってこれは実行され
る。テーブルの各々の行は、要求サイズに正確に等しい
か、あるいは他のどのサブプールよりもわずかな数だけ
要求サイズを超えているブロック・サイズを持っている
サブプールをポイントする。次に、ルーチン400は、
フィールド310を設定することによってサブプール制
御ブロック上のロックを獲得し、次に、そのサブプール
が空らならば、サブプール待ち行列の先頭のブロックの
アドレスまたはゼロであるサブプール待ち行列アンカー
320を読む(ステップ430)。次に、ルーチン40
0は、ブロック・アンカー・アドレスがゼロかを判断す
る (ステップ440)。ゼロでないならば、サブプー
ル待ち行列に使用可能ブロックがあり、ルーチン400
はそのサブプール上の先頭のブロックを取り出し、(ブ
ロック・アンカーを次のブロックをポイントするように
し)、その要求元にそのブロック・アドレスを供給する
(ステップ450)。次に、ルーチン400は、そのロ
ックを解放する(ステップ470)。
のブロック割当てルーチン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まで飛
ぶ。
ル待ち行列が空らならば、ブロック割当てルーチン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に飛ぶ。
待ち行列および回収待ち行列が空らで、空らの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 = フレーム番号)。
ラム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のループへ戻
る。
のブロックを待ち行列に入れ、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ポジション後方におきかえるので、待ち行列に入れら
れた最初のブロックは、不要部分回収プロセスの結果、
サブプール待ち行列の最後のブロックとなる。
れの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の
プロセスをくり返す。
表わされる最後のフレームに対するその後戻されたブロ
ックは、回収待ち行列(サブプール待ち行列ではない)
に入れられる。したがって、ブロックが戻される時それ
らが適切な待ち行列に入れられるように、サブプール待
ち行列上に表わされる最後のフレームは識別されていな
ければならない。それ故に、ルーチン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が新しいブロックを戻すことができるように部分的に
使用可能なフレームそれぞれのブロックのすべてが一緒
にグループ化される。
は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)。
示する。このルーチンは、それがもはやブロックを必要
としないとき、サブシステム125またはほかのプログ
ラムによって呼び出され、もうひとつのサブシステムま
たはほかのプログラム使用のためにブロックを戻す。ス
テップ810で、ルーチン800は、どのサブプールが
戻されているサイズのブロックを含むかをテーブル41
2を基に判断し(ステップ810)、そのサブプールの
ロックを入手する(ステップ820)。次に、サブプー
ル待ち行列または回収待ち行列にそのブロックを戻すか
どうか、ルーチン800は、決めなければならない。し
たがって、ルーチン800は、戻されたブロックのアド
レスをサブプール待ち行列の上に表わされた最後のフレ
ームに対応しているフィールド380と比較する。戻さ
れたブロックがサブプール待ち行列で表される最後のフ
レームの一部でないならば(ステップ822)、ルーチ
ン800はサブプール待ち行列上の最初のポジションに
そのブロックを入れる(ステップ830)。ステップ8
30は、ブロック・アンカー320が、新しいブロック
をポイントするために変更されること、および、サブプ
ール待ち行列の次のブロックをポイントするするように
戻されたブロックの中へポインタが書かれることののみ
を必要とする。次に、ルーチン800は、そのブロック
がもはや用いられていないのでこのサブプールに対する
使用カウントを減少させ(ステップ840)、そのサブ
プール上のロックを取り除く(ステップ850)。
【0030】再びステップ822で、戻されたブロック
がサブプール待ち行列の上に最後に表わされたフレーム
の一部であるならば、そのブロックが回収待ち行列に最
初に入れられ(ステップ852)、次にステップ840
および850が、実行される。
がサブプール待ち行列の上に最後に表わされたフレーム
の一部であるならば、そのブロックが回収待ち行列に最
初に入れられ(ステップ852)、次にステップ840
および850が、実行される。
【0031】回収待ち行列に戻されるブロックの例外は
あるが、ブロックがサブプール待ち行列の先頭割り当て
られ、サブプール待ち行列の先頭に戻されるので、サブ
プール待ち行列の利用が低めの場合は、サブプールの最
後のフレームのブロックが割り当てられることは殆どな
いだろうということは注意されるべきである。かくし
て、ブロックが戻されるにつれ、戻されたブロックのい
くつかは、そのサブプールの最後にあるフレームからの
ものとなり、その最後の時点でフレームの利用性が完成
する。サブプール待ち行列の最後にある1またはそれ以
上の特定フレームのための回収待ち行列の使用は、回収
待ち行列上のブロックによって表されるフレームが次の
不要部分回収時に完全に使用可能となる機会を大いに増
加させる。しかしながら、サブプール待ち行列最後部近
辺での1またはそれ以上の他のフレームの他のブロック
の集合はまた、これらたのブロックが割り当てられる可
能性が少ないので次の不要部分回収時に完全に使用可能
となる機会を増加させる。したがって、回収待ち行列の
使用をせず、サブプール待ち行列の先頭のすべてのブロ
ックの戻しがあっても、不要部分回収時に完全に使用可
能なフレームが存在する機会は増加することとなる。ま
た、サブプール待ち行列の先頭からのブロックの割り当
て、および、サブプール待ち行列の先頭または回収待ち
行列の先頭へのブロックの戻しとに要するオーバーヘッ
ドは最小のものとなる。
あるが、ブロックがサブプール待ち行列の先頭割り当て
られ、サブプール待ち行列の先頭に戻されるので、サブ
プール待ち行列の利用が低めの場合は、サブプールの最
後のフレームのブロックが割り当てられることは殆どな
いだろうということは注意されるべきである。かくし
て、ブロックが戻されるにつれ、戻されたブロックのい
くつかは、そのサブプールの最後にあるフレームからの
ものとなり、その最後の時点でフレームの利用性が完成
する。サブプール待ち行列の最後にある1またはそれ以
上の特定フレームのための回収待ち行列の使用は、回収
待ち行列上のブロックによって表されるフレームが次の
不要部分回収時に完全に使用可能となる機会を大いに増
加させる。しかしながら、サブプール待ち行列最後部近
辺での1またはそれ以上の他のフレームの他のブロック
の集合はまた、これらたのブロックが割り当てられる可
能性が少ないので次の不要部分回収時に完全に使用可能
となる機会を増加させる。したがって、回収待ち行列の
使用をせず、サブプール待ち行列の先頭のすべてのブロ
ックの戻しがあっても、不要部分回収時に完全に使用可
能なフレームが存在する機会は増加することとなる。ま
た、サブプール待ち行列の先頭からのブロックの割り当
て、および、サブプール待ち行列の先頭または回収待ち
行列の先頭へのブロックの戻しとに要するオーバーヘッ
ドは最小のものとなる。
【0032】上記のように、本発明に従ったシステム、
方法およびプログラムが、開示された。しかしながら、
本発明の有効範囲からはずれることなく、多数の変更お
よび置換を行うことは可能である。たとえば、希望する
場合、サブプール待ち行列の最後部近傍で表わされるフ
レームから戻されるブロックは、回収待ち行列へ戻す代
わりにサブプール待ち行列の最後部へ戻してもよい。こ
れは、サブプール待ち行列の最後に不要部分回収の後表
わされるフレームから戻されるブロックの再配分を避け
るという同様の効果を持つ。しかし、第2のポインタ
が、サブプール待ち行列の最後のために必要とはなる。
方法およびプログラムが、開示された。しかしながら、
本発明の有効範囲からはずれることなく、多数の変更お
よび置換を行うことは可能である。たとえば、希望する
場合、サブプール待ち行列の最後部近傍で表わされるフ
レームから戻されるブロックは、回収待ち行列へ戻す代
わりにサブプール待ち行列の最後部へ戻してもよい。こ
れは、サブプール待ち行列の最後に不要部分回収の後表
わされるフレームから戻されるブロックの再配分を避け
るという同様の効果を持つ。しかし、第2のポインタ
が、サブプール待ち行列の最後のために必要とはなる。
【0033】
【発明の効果】本発明が提示する記憶域割付け、戻し、
および不要部分回収の技術を実施することによって、従
来技術で課題であった、使用可能記憶域探索に要する時
間短縮、記憶域の断片化の極小化および使用済みブロッ
クの主記憶域への戻しにともなうオーバーヘッドの極小
化が実現し、その不要部分回収プロセスによって完全に
使用可能なフレームを多数生成することが可能となり、
よって主記憶域の有効利用が図られる。
および不要部分回収の技術を実施することによって、従
来技術で課題であった、使用可能記憶域探索に要する時
間短縮、記憶域の断片化の極小化および使用済みブロッ
クの主記憶域への戻しにともなうオーバーヘッドの極小
化が実現し、その不要部分回収プロセスによって完全に
使用可能なフレームを多数生成することが可能となり、
よって主記憶域の有効利用が図られる。
【図1】本発明を具体化するオペレーティングシステム
を含むコンピューターシステムのブロック図である。
を含むコンピューターシステムのブロック図である。
【図2】不要部分回収時にフレームの範囲内で使用可能
なブロックのすべてを表わして、アンカーに連結するた
めに図1のオペレーティングシステムによって使われる
フレーム制御ブロックまたはフレーム・テーブルエント
リの図表である。
なブロックのすべてを表わして、アンカーに連結するた
めに図1のオペレーティングシステムによって使われる
フレーム制御ブロックまたはフレーム・テーブルエント
リの図表である。
【図3】サブプール制御ブロックと不要部分回収時の関
連づけされたブロックの図表で、ここで、サブプール制
御ブロックは、ひとつ以上のフレームからの同じサイズ
の使用可能なブロックのすべてを表わしアンカーに結合
させるよう図1のオペレーティングシステムによって使
われる。
連づけされたブロックの図表で、ここで、サブプール制
御ブロックは、ひとつ以上のフレームからの同じサイズ
の使用可能なブロックのすべてを表わしアンカーに結合
させるよう図1のオペレーティングシステムによって使
われる。
【図4】図3と同じサブプール制御ブロックの図表であ
るが、時間的に図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)
- 【請求項1】あるサイズの使用可能ブロックからサブプ
ールを、複数の別々の記憶域フレームから生成する手段
であって、上記使用可能ブロックは上記サブプールで待
ち行列に入れられる、上記生成手段と、 使用のため上記待ち行列の第1のポジションからブロッ
クを割り当てる手段と、 使用後上記待ち行列の上記ポジションに少なくともいく
つかの上記あるサイズのブロックを戻す手段と、 上記サブプール上でブロックを保有するフレームのいず
れが完全に使用可能かを判断し、当該完全に使用可能な
フレームのブロックを上記待ち行列から取り除き、残さ
れたブロックがそれぞれのフレームごとにまとまるよう
に待ち行列を再配置する不要部分回収手段とを含み、 上記戻す手段は、上記待ち行列の第2のポジションにま
とめられたブロックを有するフレームのブロックについ
ては、上記待ち行列の上記第1のポジションとは異なる
ポジションに戻し、 上記割り当てる手段は、上記異なるポジションに戻され
た上記ブロックについては、上記待ち行列の上記第1の
ポジションに戻され、または、まとめられたブロックよ
りも後順位に割り当てることを特徴とする コンピュータ
記憶域管理システム。 - 【請求項2】上記フレームは、初期的には、主記憶域の
リストまたはサブプールから獲得され、完全に使用可能
なフレームを上記主記憶域リストまたはサブプールへ戻
す手段を有する請求項1記載のコンピュータ記憶域管理
システム。 - 【請求項3】上記請求項1記載の不要部分回収手段は、
一定期間毎または時折、呼び出され、上記不要部分回収
プロセスの次回呼び出しの間に、上記リストまたはサブ
プールへ完全に使用可能なフレームを戻す手段を有する
請求項1記載のコンピュータ記憶域管理システム。 - 【請求項4】上記生成手段は、 上記のあるサイズの記憶域ブロックに対する要求とその
要求を満たせるブロックが上記サブプールに存在しない
こととに対応し、主記憶域から完全に使用可能な フレー
ムを選択し、上記要求を満たすため上記フレームのブロ
ックを割り当て、上記フレームの残りを上記あるサイズ
の他のブロックに分割し、それらを上記サブプールの待
ち行列に入れる手段と、 上記あるサイズの記憶域ブロックに対する後続の要求に
対応し、その要求を満たすため上記サブプールからブロ
ックを順に割り当てる手段と、 上記あるサイズの記憶域ブロックに対する後続の要求と
その要求を満たすことのできるブロックが上記サブプー
ルに存在しないこととに対応し、主記憶域から別の完全
に使用可能なフレームを選択し、上記要求を満たすため
上記フレームのブロックを割り当て、上記フレームの残
りを上記あるサイズの他のブロックに分割し、それらを
上記サブプールの待ち行列に入れる手段と、 上記あるサイズの記憶域ブロックを戻す後続の要求に対
応し、上記戻されたブロックを上記サブプールの待ち行
列へ入れる手段と、 を有する請求項1記載のコンピュータ記憶域管理システ
ム。 - 【請求項5】あるサイズの使用可能ブロックからサブプ
ールを、複数の別々の記憶域フレームから生成するステ
ップであって、上記使用可能ブロックは上記サブプール
で待ち行列に入れられる、上記生成ステップと、 使用のため上記待ち行列の第1のポジションからブロッ
クを割り当てるステップと、 使用後上記待ち行列の上記ポジションに少なくともいく
つかの上記あるサイズのブロックを戻すステップと、 上記サブプール上でブロックを保有するフレームのいず
れが完全に使用可能かを判断し、当該完全に使用可能な
フレームのブロックを上記待ち行列から取り除き、残さ
れたブロックがそれぞれのフレームごとにまとまるよう
に待ち行列を再配置する不要部分回収ステップとを含
み、 上記戻すステップは、上記待ち行列の第2のポジション
にまとめられたブロックを有するフレームのブロックに
ついては、上記待ち行列の上記第1のポジションとは異
なるポジションに戻し、 上記割り当てるステップは、上記異なるポジションに戻
された上記ブロックについては、上記待ち行列の上記第
1のポジションに戻され、または、まとめられ たブロッ
クよりも後順位に割り当てることを特徴とするコンピュ
ータ記憶域管理方法。
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)
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)
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 |
-
1992
- 1992-10-29 US US07/969,870 patent/US5561785A/en not_active Expired - Fee Related
-
1993
- 1993-08-24 JP JP5229599A patent/JP2571664B2/ja not_active Expired - Lifetime
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) | セルプール管理装置 |