(57)【要約】　　　（修正有）【課題】情報処理システムにおいて、キューを維持するための方法及び装置を提供する。【解決手段】システム１００は、キュー１０４を各アドレス・スペース１０６に対し１つだけ維持する実記憶管理プログラム１０２を含む。各キュー１０４は、キュー・アンカ１１２からの距離により決定される最も古いセクション１０８と、最も新しいセクション１０８との間に順序よく配列された複数のセクション１０８を含む。キュー・エントリ１１６は、キュー・ヘッダ１１４からの距離によって決定される最も古いエントリ１１６と最も新しいエントリ１１６との間に順序よく配列される。最も古いセクション１０８のヘッダ１１４はキュー・アンカ１１２として作用する。【選択図】　図２
2004030567.tif 000002
【特許請求の範囲】
【請求項１】
情報処理システムにおいてキューを維持する方法にして、
最初のキュー・セクションから最後のキュー・セクションまで順序よく配列され、各々が最初のキュー・エントリから最後のキュー・エントリまで順序よく配列された１つ又は複数のキュー・エントリを含む、複数のキュー・セクションを定義するステップと、
前記キュー・セクションの各々に対するウェイト係数を定義するステップと、
前記キュー・セクションの各々における各キュー・エントリに対するウェイト係数を定義するステップとを含み、
前記キュー・エントリの各々は前記キュー・セクションに対して定義された前記ウェイト係数と前記キュー・エントリに対して定義された前記ウェイト係数とを結合することによって形成された有効ウェイト係数を有する、
方法。
【請求項２】
前記キュー・エントリが使用可能な記憶ロケーションに対応する、請求項１に記載の方法。
【請求項３】
前記記憶ロケーションが実記憶アドレスの範囲を含む、請求項２に記載の方法。
【請求項４】
キュー・エントリに対する前記有効ウェイト係数が、該キュー・エントリに対応する記憶ロケーションが参照されなかった時間の量を表す、請求項２に記載の方法。
【請求項５】
新たに使用可能な対応する記憶ロケーションを表す、新たなエントリを前記最後のキュー・セクションに付加するステップをさらに含む、請求項２に記載の方法。
【請求項６】
前記対応する記憶ロケーションが最早使用可能でないことを表す、１つ又は複数のキュー・エントリを削除するステップをさらに含む、請求項２に記載の方法。
【請求項７】
少なくとも所定の有効ウェイト係数を有するキュー・エントリだけが削除される、請求項６に記載の方法。
【請求項８】
前のタイム・インターバルにおいて参照されなかった記憶ロケーションに対応するキュー・エントリだけが削除される、請求項６に記載の方法。
【請求項９】
キュー・エントリが前記キューの最初のセクションからのみ削除される、請求項６に記載の方法。
【請求項１０】
前記対応する記憶ロケーションが参照されたかどうかに従って、前記キュー・エントリの各々の前記有効ウェイト係数を更新するステップをさらに含む、請求項２に記載の方法。
【請求項１１】
前記更新するステップは、前記セクションにおける前記キュー・エントリをそれらの有効ウェイト係数の順序で維持するステップをさらに含む、請求項１０に記載の方法。
【請求項１２】
前記更新するステップは、
前のタイム・インターバルにおいて参照されなかった記憶ロケーションに対応するキュー・エントリの前記有効ウェイト係数をインクレメントするステップと、
前のタイム・インターバルにおいて参照された記憶ロケーションに対応するキュー・エントリの前記有効ウェイト係数をリセットするステップと
を含む、請求項１０に記載の方法。
【請求項１３】
前記インクレメントするステップは、前記キュー・エントリを含む前記キュー・セクションの前記ウェイト係数をインクレメントするステップを含む、請求項１２に記載の方法。
【請求項１４】
前記更新するステップは、
前記対応する記憶ロケーションが参照されたかどうかに従って、前記最初のキュー・セクションにおける各キュー・エントリに対して定義された個々のウェイト係数を更新するステップと、
残りのキュー・セクションにおける各キュー・エントリに対して定義された前記個々のウェイト係数を更新することなく、各残りのキュー・セクションに対して定義された前記ウェイト係数だけを更新するステップと
を含む、請求項１０に記載の方法。
【請求項１５】
参照された記憶ロケーションに対応する前記最初のキュー・セクションにおける各キュー・エントリを他のセクションに移動する、請求項１４に記載の方法。
【請求項１６】
前記キュー・セクションの各々におけるキュー・エントリの数を前記キュー・セクションに対して定義された所定の許容可能な範囲内に維持するステップをさらに含む、請求項１に記載の方法。
【請求項１７】
最初のキュー・セクションから第２のキュー・セクションに１つ又は複数のキュー・エントリを移動させるステップをさらに含む、請求項１に記載の方法。
【請求項１８】
移動した前記キュー・エントリに対して定義された前記ウェイト係数を、前記第２のキュー・セクションにおけるそれらの有効ウェイト係数が、前記最初のキュー・セクションにおけるそれらの有効ウェイト係数と同じになるように調節するステップをさらに含む、請求項１７に記載の方法。
【請求項１９】
新たなキュー・セクションを作成するステップと、
既存のキュー・セクションから前記新たなキュー・セクションに１つ又は複数のキュー・エントリを移動させるステップと
をさらに含む、請求項１に記載の方法。
【請求項２０】
最初のキュー・セクションから１つ又は複数の他のキュー・セクションまで１つ又は複数のキュー・エントリを移動させるステップと、
前記最初のキュー・セクションを削除するステップと
をさらに含む、請求項１に記載の方法。
【請求項２１】
情報処理システムにおいてキューを維持するための手段を遂行するために、機械により実行可能な命令のプログラムを明確に具現化する、該機械により可読なプログラム記憶装置にして、
前記キューを維持するための手段が、
最初のキュー・セクションから最後のキュー・セクションまで順序よく配列され、各々が最初のキュー・エントリから最後のキュー・エントリまで順序よく配列された１つ又は複数のキュー・エントリを含む、複数のキュー・セクションを定義する手段と、
前記キュー・セクションの各々に対するウェイト係数を定義する手段と、
前記キュー・セクションの各々における各キュー・エントリに対するウェイト係数を定義する手段とを含み、
前記キュー・エントリの各々は前記キュー・セクションに対して定義された前記ウェイト係数と前記キュー・エントリに対して定義された前記ウェイト係数とを結合することによって形成された有効ウェイト係数を有する、
プログラム記憶装置。
【請求項２２】
前記キュー・エントリが使用可能な記憶ロケーションに対応する、請求項２１に記載のプログラム記憶装置。
【請求項２３】
前記キューを維持するための手段が、新たに使用可能な対応する記憶ロケーションを表す、新たなエントリを前記最後のキュー・セクションに付加する手段をさらに含む、請求項２２に記載のプログラム記憶装置。
【請求項２４】
前記キューを維持するための手段が、前記対応する記憶ロケーションが最早使用可能でないことを表す、１つ又は複数のキュー・エントリを削除する手段をさらに含む、請求項２２に記載のプログラム記憶装置。
【請求項２５】
キュー・エントリが前記キューの最初のセクションからのみ削除される、請求項２４に記載のプログラム記憶装置。
【請求項２６】
前記キューを維持するための手段が、前記対応する記憶ロケーションが参照されたかどうかに従って、前記キュー・エントリの各々の有効ウェイト係数を更新する手段をさらに含む、請求項２２に記載のプログラム記憶装置。
【請求項２７】
前記キューを維持するための手段が、前記対応する記憶ロケーションが参照されたかどうかに従って、前記最初のキュー・セクションにおける各キュー・エントリに対して定義された個々のウェイト係数を更新する手段と、
残りのキュー・セクションにおける各キュー・エントリに対して定義された前記個々のウェイト係数を更新することなく、各残りのキュー・セクションに対して定義されたウェイト係数だけを更新する手段と
をさらに含む、請求項２２に記載のプログラム記憶装置。
【請求項２８】
参照された記憶ロケーションに対応する前記最初のキュー・セクションにおける各キュー・エントリを他のセクションに移動する、請求項２７に記載のプログラム記憶装置。
【請求項２９】
前記キューを維持するための手段が、前記キュー・セクションの各々におけるキュー・エントリの数を、前記キュー・セクションに対して定義された所定の許容可能な範囲内に維持する手段をさらに含む、請求項２１に記載のプログラム記憶装置。
【請求項３０】
前記キューを維持するための手段が、最初のキュー・セクションから第２のキュー・セクションに１つ又は複数のキュー・エントリを移動させる手段と、
移動したキュー・エントリに対して定義されたウェイト係数を、第２のキュー・セクションにおけるそれらの有効ウェイト係数が最初のキュー・セクションにおけるそれらの有効ウェイト係数と同じになるように調節する手段と
をさらに含む、請求項２１に記載のプログラム記憶装置。
【請求項３１】
最初のキュー・セクションから最後のキュー・セクションまで順序よく配列された複数のキュー・セクションを含み、
前記キュー・セクションの各々が最初のキュー・エントリから最後のキュー・エントリまで順序よく配列された１つ又は複数のキュー・エントリを含み、
前記キュー・セクションの各々及び前記キュー・セクションの各々における各キュー・エントリがそれに対して定義されたウェイト係数を有し、
前記キュー・エントリの各々が前記キュー・セクションに対して定義された前記ウェイト係数と前記キュー・エントリに対して定義された前記ウェイト係数とを結合することによって形成された有効ウェイト係数を有する、
情報処理システムにおけるセクション化され且つ順序付けられたキュー。
【請求項３２】
前記複数のキュー・エントリが使用可能な記憶ロケーションに対応する、請求項３１に記載のキュー。
【請求項３３】
新たに使用可能な対応する記憶ロケーションを表す、新たなエントリが前記最後のキュー・セクションに付加される、請求項３２に記載のキュー。
【請求項３４】
前記対応する記憶ロケーションが最早使用可能でないことを表す、１つ又は複数のキュー・エントリが削除される、請求項３２に記載のキュー。
【請求項３５】
キュー・エントリが前記キューの最初のセクションからのみ削除される、請求項３４に記載のキュー。
【請求項３６】
前記対応する記憶ロケーションが参照されたかどうかに従って、前記キュー・エントリの各々の前記有効ウェイト係数が更新される、請求項３２に記載のキュー。
【請求項３７】
前記対応する記憶ロケーションが参照されたかどうかに従って、前記最初のキュー・セクションにおける各キュー・エントリに対して定義された前記個々のウェイト係数が更新され、
残りのキュー・セクションにおける各キュー・エントリに対して定義された前記個々のウェイト係数を更新することなく、各残りのキュー・セクションに対して定義された前記ウェイト係数だけが更新される、
請求項３２に記載のキュー。
【請求項３８】
参照された記憶ロケーションに対応する前記最初のキュー・セクションにおける各キュー・エントリを他のセクションに移動する、請求項３７に記載のキュー。
【請求項３９】
前記キュー・セクションの各々におけるキュー・エントリの数が、前記キュー・セクションに対して定義された所定の許容可能な範囲内に維持される、請求項３１に記載のキュー。
【請求項４０】
最初のキュー・セクションから第２のキュー・セクションに１つ又は複数のキュー・エントリを移動させ、
移動した前記キュー・エントリに対して定義された前記ウェイト係数を、前記第２のキュー・セクションにおけるそれらの有効ウェイト係数が前記最初のキュー・セクションにおけるそれらの有効ウェイト係数と同じになるように調節する、
請求項３１に記載のキュー。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、概して云えば、セクション化され且つ順序付けられたキューを全探索（ｔｒａｖｅｒｓｉｎｇ）する時及びそれらのキュー・エントリを操作する時のオペレーティング・コストの低減を得るために、オペレーティング・システムがこれらのキューを形成及び維持するための方法に関する。更に詳しく云えば、本発明は、他のアドレス・スペースにおける可能性ある使用のために、オペレーティング・システムが実記憶装置をアドレス・スペースから回復するための効率的な方法に関する。本願では、使用中の実記憶装置をアドレス・スペースにより表すキューは非常に長いキューである。
【０００２】
【従来の技術】
一般に、複数の仮想アドレス・スペースをサポートし、実記憶装置アドレス（以下、フレームと呼ぶ）によって同時に支援されるよりも多くの仮想アドレス（以下、ページと呼ぶ）をサポートする能力を有するオペレーティング・システムでは、フレームの使用を異なるアドレス・スペースに再割り振りする必要があることが時々ある。この技法はページングと呼ばれ、オペレーティング・システムが１つのアドレス・スペースのリソースのサブセットを再利用すること及びそのサブセットを他のアドレス・スペースにおける即時操作のために使用することを可能にする。システムが１つのページを参照又は更新する時、１つのフレームが得られ、そのページに対する動的アドレス変換テーブルが、「バッキング（ｂａｃｋｉｎｇ）」と呼ばれるプロセスを使用して更新される。そのプロセスは、実メモリがそのページと関連付けられることを表す。
【０００３】
このプロセスは、ＩＢＭ　ＯＳ／３９０　オペレーティング・システムに関して　ＩＢＭ　Ｒｅｄｂｏｏｋｓ　ＡＢＣｓ　ｏｆ　ＯＳ／３９０　Ｓｙｓｔｅｍ　Ｐｒｏｇｒａｍｍｉｎｇ　Ｖｏｌｕｍｅ　１，　ＳＧ２４−５５９７−００誌の４３−７１ベージ（２０００年４月発行）及び　ＯＳ／３９０　Ｖｅｒｓｉｏｎ　２　Ｒｅｌｅａｓｅ１０　Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ，　ＳＧ２４−５９７６−００　誌の９−３４ページ（２００１年３月発行）のような文献に開示されている。図１を参照すると、ＯＳ／３９０オペレーティング・システム（ＯＳ）のインスタンス１０が仮想記憶のリクエストを支援するためにフレームを必要とする時、それは、リクエストを満足させるために、使用可能なフレーム１４のキュー１２に進む。この目的のために妥当な数のフレームがこのキュー１２に存在することを保証するために、システム・リソース管理プログラム（ＳＲＭ）１８が定期的にチェックを行う。ＯＳインスタンス１０は、個別の各アドレス・スペース１６のための使用中のフレーム・キュー１２を維持する。ＳＲＭ１８が不足を検出する場合、それは、最低使用頻度（ＬＲＵ）アルゴリズムを使って、使用可能なフレームの供給を満たすためにはそのシステムにおけるどの使用中のフレームが再利用されるべき最良の候補であるかを決定する。（このアルゴリズムを使用すると、最近参照されてないフレームが再利用されるべき最良の候補である）。フレームを再利用するためのこのプロセスは、以下では、スチーリング（ｓｔｅａｌｉｎｇ）と呼ばれる。
【０００４】
実記憶管理プログラム（ＲＳＭ）２０は、アドレス・スペース１６によって使用中の各フレームに対する未参照インターバル・カウント（ＵＩＣ）を維持することによって、フレームがどの程度最近参照されたかを識別する。どのフレームがスチールすべき最良の候補であるかをシステムが速く識別するために、実記憶管理プログラム（ＲＳＭ）２０がアドレス・スペース・フレーム・キューを、最低参照頻度のフレームをキュー１２の始めとするＵＩＣ順に維持する。ＲＳＭ２０は、定期的に更新処理を実行する。その更新処理は、フレームが参照されたかどうかを決定し、そして、その結果が肯定的である場合、フレーム・キュー１２の終わりまでそのフレームを移動させるものである。更新処理が完了すると、一定値だけインクレメントされたＵＩＣ値を有する最小参照頻度のフレームがキューの始めに残り、ゼロにリセットされたＵＩＣ値を有する最高参照頻度のフレームがフレーム・キュー１２の終わりに存在する。
【０００５】
ＳＲＭ１８は、スチールされるべきターゲット・アドレス・スペース１６を選択し、しかも、任意のターゲット・フレーム・キュー１２からスチールされるべきフレームが持ち得る最小のＵＩＣ値を表示する。ＳＲＭ１８は、スチール・リクエストを満足させるために必要なフレームの合計数も指定する。そこで、ＲＳＭスチール処理は、その表示されたアドレス・スペースのフレーム・キューを全探索すること及びＳＲＭのＵＩＣスチール基準に適合したフレームを選択することによって、ＳＲＭのリクエストを満足させようとする。ＲＳＭスチール処理は、フレームが最近参照されたかどうかを決定するための１つの最終チェックを行い、ＲＳＭ　ＵＩＣ更新プロセスのように、いずれの参照フレームも、それらのＵＩＣ値をゼロにリセットすることによってフレーム・キュー１２の終わりまで移動させる。ＲＳＭスチール・プロセスがＳＲＭのリクエストを十分に満たすことができない場合、ＳＲＭ１８は、種々のパラメータを有する新たなスチール・リクエストを作成することを選択し得るし、このプロセスは、フレームに対するシステムの要求が満たされるまで繰り返し得る。
【０００６】
ハードウェア設計の新たな進歩によって、大きな仮想記憶領域がオペレーティング・システムにおけるアドレス・スペース１６にとって使用可能なものにされる。アドレス・スペース１６に関連付けられたフレーム・キューを線形構造に保つその代表的な方法は、キューを全探索する時にシステム・パフォーマンスの低下を生じさせることがある。マルチタスキング環境では、そのようなキュー１２を処理するためにリソース直列化（ｒｅｓｏｕｒｃｅ　ｓｅｒｉａｌｉｚａｔｉｏｎ）を必要とする。そのリソース直列化は、他のプロセスがディスパッチされないようにすることがあり、或いは長いキュー１２の処理がシステムの指定されたタイムアウト・インターバルを越えた場合に異常タスク終了を生じさせることがある。ＲＳＭ　ＵＩＣ更新及びＲＳＭ　ＵＩＣスチール・プロセスは、この大きい仮想記憶領域を表すフレーム・キューを全探索又は処理する時、最早自分の機能を効果的に遂行することができないことがあり得る。
【０００７】
【発明が解決しようとする課題】
一般に、本発明の目的は、データ処理システムにおいてキューを維持するための方法及び装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明では、最初のキュー・セクションから最後のキューセクションまで順序よく配列された複数のキュー・セクションが定義される。各キュー・セクションは、最初のキュー・エントリから最後のキュー・エントリまで順序よく配列された１つ又は複数のキュー・エントリを含む。各キュー・セクションに対して及びそれらキュー・セクションにおける各キュー・エントリに対して、ウェイト係数（ｗｅｉｇｈｔ　ｆａｃｔｏｒ）が定義される。各キュー・エントリは、キュー・セクションに対して定義されたウェイト係数をキュー・エントリに対して定義されたウェイト係数と結合することによって有効ウェイト係数を形成される。
【０００９】
キュー・エントリは、使用可能な記憶ロケーション、特に、実記憶アドレスの範囲に対応し得る。そのようなキュー・エントリに対する有効ウェイト係数は、そのエントリに対応した記憶ロケーションが参照されなかった時間の量を表す。
【００１０】
新たなエントリは、新たに使用可能な対応する記憶ロケーションを表すために、最後のキュー・セクションに加えられる。一方、少なくとも有効ウェイト係数を有し、前のタイム・インターバルにおいて参照されなかった記憶ロケーションに対応する１つ又は複数のキュー・エントリは、その対応する記憶ロケーションが最早使用可能ではないことを表すために、最初のキュー・セクションから削除される。
【００１１】
キュー・エントリの有効ウェイト係数は、対応する記憶ロケーションが参照されたかどうかに従って定期的に更新される。これは、前のタイム・インターバルにおいて参照されなかった記憶ロケーションに対応するキュー・エントリの有効ウェイト係数をインクレメントすること及び前のタイム・インターバルにおいて参照された記憶ロケーションに対応するキュー・エントリの有効ウェイト係数をリセットすることによって行われる。そのような更新中、キュー・エントリは、それらの有効ウェイト係数の順序でセクション内に維持される。望ましくは、最初のキュー・セクションにおける各キュー・エントリに対して定義された個々のウェイト係数は、対応する記憶ロケーションが参照されなかったかどうかに従って更新され、一方、各残りのキュー・セクションに対して定義されたウェイト係数だけが、そのような残りのキュー・セクションにおける各キュー・エントリに対して定義された個々のウェイト係数を更新することなく、更新される。参照された記憶ロケーションに対応する最初１のキュー・セクション内の各キュー・エントリが他のセクションに移動する。
【００１２】
キュー・セクション間でキュー・エントリを移動させること及び必要に応じてキュー・セクションを作成又は削除することによって、各キュー・セクションにおけるキュー・エントリの数がそれらのキュー・セクションに対して定義された所定の許容可能な範囲内に維持されることが望ましい。移動したキュー・エントリに対して定義されたウェイト係数は、新たなキュー・セクションにおけるそれらの有効ウェイト係数が古いキュー・セクションにおけるそれらの有効ウェイト係数と同じになるように調節される。
【００１３】
大量の仮想記憶域を使用するアドレス・スペースを持ったコンピュータ・システムでは、仮想記憶域の量を維持及び制御するために使用されるシステム・リソース・キュー、即ち、実記憶フレーム・キューにおけるエントリの数が比例的に大きくなる。キュー・エントリの順序を維持し、キューを全探索し、及びキュー・エントリを処理する操作コストは、長いキューを一定の最大及び最小数のエントリのセクションに編成すること及びウェイト係数を各セクション及び個々のキュー・エントリに割り当てることによって削減され得る。セクションはそれらのウェイト係数によって順序付けられ、キュー操作処理は、セクションのウェイト係数によって決定されたセクション基準により１つのセクション上で遂行され得る。このキュー構造は、以下では、セクション化され且つ順序付けされたキュー（ｓｅｃｔｉｏｎｅｄ　ｏｒｄｅｒｅｄ　ｑｕｅｕｅ）と呼ばれる。
【００１４】
キュー・エントリを保証するためのウェイト係数更新プロセスが定義され、それらのセクションは、エントリがキューに残っている時間の長さを表すそれらのウェイト係数によって順序付けられる。最低使用頻度（ＬＲＵ）アルゴリズムを使用して、プロセスは、最近参照されてないエントリのウェイト係数を定期的に増加させる。やがて、キュー・エントリが参照されなかった時間が長ければ長いほど、それのウェイト係数の値は高くなる。ウェイト係数は、エントリが如何に長く参照されずにキュー上にあったかを決定するための簡単な方法を提供する。そこで、エントリは、最高のウェイト係数の値がキューにおける最も古いセクション上にあるように、それらのウェイト係数の値に関して降順に順序付けられる。このプロセスは、キューの最も古いセクションが少なくとも最小の許容可能な数のエントリを含むことも保証する。そのようなセクションは、コンピュータ・システムにおいて使用可能な他のキュー操作プロセスに対する最良の候補である。そのウェイト係数更新プロセスは、システム・オペレーションの過程を通して一定のインターバルでシステム・リソース管理プログラムにより開始される。
【００１５】
再使用のためには参照されなかったキュー・エントリをシステム・リソース管理プログラムがスチール・バックすることを必要とする時がある。コンピュータ・システムの選択されたアドレス・スペースにおけるキューを検査するためのキュー・エントリ・スチール・プロセスが定義される。キュー・エントリがウェイト係数更新プロセスによってそれらのウェイト係数値の降順に保持されていたので、そのエントリ・スチール・プロセスは、最近参照されなかったエントリを見つけるためにキューの最初のセクションを見る必要があるだけであり、従って、それらはスチールするための良好な候補である。キューの最も古いセクションが既に最大数のエントリを含んでいるので、そのエントリ・スチール・プロセスは、キューのすべてのセクションを通して全探索することを必要とせずに、これらのセクションからスチールするに十分なエントリを見つけそうである。
【００１６】
セクション化され且つ順序付けられたキューを維持するに不可欠な部分でもあるもう１つのプロセスは、キューの２つのセクションをマージするプロセスである。そのマージ・プロセスは、コンピュータ・システムおける他の任意のプロセスによっていつでも開始され得る。そのプロセスは、最も新しいセクションから最も古いセクションまでの隣接した一対のキュー・セクションを検査する。許容可能なエントリの最大数を超えることなく一対のセクションがマージされ得る時、小さいセクションからのエントリが長いセクションに移動する。移動するエントリのウェイト係数は、それらの新たなセクションに関連するそれらの有効ウェイト係数が元のキュー・セクションにおけるそれらの有効ウェイト係数と同じままであるように調節される。
【００１７】
セクション化され且つ順序付けられたキューの構造及び前述のキュー操作プロセスは、コンピュータ・システムにおいて種々のデータ構造を実現するために使用され得る。そのような構造の１つは優先順位ディスパッチ・キューであり、そのプロセスは、そのキューにおいて使われたそれらの時間又はそれらの経過時間（ａｇｅ）に基づいてディスパッチされるのを待っているキューにおいて進められる。そのようなキューのエントリに対するウェイト係数はそのキューにおけるそれらエントリの経過時間である。
【００１８】
【発明の実施の形態】
図２は、本発明を組み込んだコンピュータ・システム１００の基本エントリを示す。その図に示されるように、システム１００は、一組のセクション化され且つ順序付けられたキュー１０４を、システム１００の各アドレス・スペース１０６に対し１つ宛維持する実記憶管理プログラム（ＲＳＭ）１０２を含む。各キュー１０４は、キュー・アンカ１１２からの距離によって決定される（後述のような）最も古いセクション１０８と（後述のような）最も若い又は最も新しいセクション１０８との間に（適当なポインタ１１０を介して）順序よく配列された複数のセクション１０８を含む。各セクション１０８は、セクション・ヘッダ１１４及び１つ又は複数のキュー・エントリ又はエントリ１１６を含み、それらのキュー・エントリ又は素子１１６は、キュー・ヘッダ１１４からの距離によって決定される最も古いエントリ１１６と最も若い又は最も新しいエントリ１１６との間に（適当なポインタ１１８を介して）同様に順序よく配列される。最も古いセクション１０８のヘッダ１１４はキュー・アンカ１１２として作用する。
【００１９】
上記のように、キュー・セクション１０８を参照するために本願において使用される用語「最も古い」、「最も若い」、「最も新しい」、「最初の」、「最後の」等は、ヘッダ１１４の連鎖におけるロケーションを参照するものである。従って、「最初の」又は「最も古い」キュー・セクション１０８は、キュー・アンカ１１２としてヘッダ１１４を有するキュー・セクション１０８であり、一方、「最も若い」、「最も新しい」又は「最後の」キュー・セクションは、キュー・アンカ１１２から最も遠いヘッダ１１４を有するキュー・セクション１０８である。キュー・アンカ１１２に近いキュー・セクション１０８は、一般に、早い時点で作成されるけれども、後記の例からも明らかなように、これは必ずしも真実とは限らない。
【００２０】
上記従来の技術の項において説明したように、キューの各エントリ１１６は、キュー１０４が維持される特定のアドレス・スペース１０６にシステム１００によって割り当てられた実記憶アドレスのフレーム（一般には、４０９６バイト）に対応する。各キュー・エントリ１１６は、そのエントリがキュー内にあった時間の長さ、即ち、対応する実記憶フレームが、対応するアドレス・スペース１０６に割り当てられていた時間の長さ、を表す未参照のインターバル・カウント（ＵＩＣ）に対応した有効ウェイト係数を有する。
【００２１】
エントリ１１６がそれのキュー１０４において費やした更なる時間の長さを反映するように、定期的に各キュー・エントリ１１６に対する有効ウェイト係数が更新される、詳しくは、インクレメントされる。本発明によれば、キュー・エントリに対する有効ウェイト係数は、キュー・セクション１０８に対して全体として定義されたセクションのウェイト係数と特定のキュー・エントリ１１６に対して定義されたエントリのウェイト係数とを結合すること、即ち、合算することによって得られる。更新されなければならないのはキュー・セクション・ヘッダ１０８だけなので、このようにキュー・エントリ１１６に対する有効ウェイト係数をエンコードすることによって、更新速度を劇的に増加させることが可能である。
【００２２】
ＲＳＭ１０２は、キュー１０４を管理するための多数のプロセスを含む。それらは、ウェイト係数更新プロセス１２０、フレーム・スチール・プロセス１２２、及びセクション・マージ・プロセス１２４を含む。更新プロセス１２０は、各キュー・セクション１０８のウェイト係数を更新することにより、その時点でキュー１０４にある各キュー・エントリ１１６のウェイト係数を更新するために定期的に呼び出される。スチール・プロセス１２２は、実記憶フレームを１つのアドレス・スペース１０６から「スチール」してそのフレームをもっと必要とする他のアドレス・スペース１０６に割り当てる必要があると思われる度に呼び出される。最後に、マージ・プロセス１２４は、種々のセクション１０８の間でキュー・エントリ１１６を移動させる必要がある時に呼び出される。
【００２３】
Ｉ．キュー平衡化
キュー操作処理からの満足すべき結果を保証するためには、キュー１０４の各セクション１０８において一貫した且つ妥当な数のエントリ１１６を維持することが重要である。この技法は、以下では、キュー平衡化プロセスと呼ばれる。これに関する２つの可能な実施方法を次に開示する。
【００２４】
１．第１実施方法
第１実施方法は、いつも十分に多数のセクション１０８でもってキュー１０４を維持するものではない。むしろ、処理時間を少なくするために、従って、システム・パフォーマンスを高めるために、キュー・セクション１０８が最大及び最小の許容可能な値の間の妥当な数のエントリ１１６を含むことは確かである。キュー・セクション・エントリ１１６を維持するプロセスは、単一のキュー・エントリ１１６に対する各エンキュー又はデキュー・リクエストの直後には生じないで、多数のキュー・エントリ１１６に影響すると思われるキュー操作の後に開始される。
【００２５】
Ａ．エントリの付加
この実施方法では、新たなエントリ１１６がキュー１０４に入れられるべき時、それは、最も低いウェイト係数値をいつも割り当てられ、キュー１０４の終わりに入れられる。最後のセクション１０８、従って、その時、最も若いセクション１０８が最大数のエントリ１１６を含んでいる場合、新たな最も若いセクション１０８に対するヘッダ１１４がその新たなエントリ１１６を含むように作成される。キュー・セクション１０８の残り及びそれらのエントリ１１６は、このプロセス中（図３）影響を受けない。
【００２６】
図１７は、本発明のこの実施方法においてキュー・エントリ１１６を付加するための手順１５００を示す。この図及び図３を参照すると、新たなエントリ１１６がキュー１０４に加えられるべき時（ステップ１５０２）、ＲＳＭ１０２は、先ず、（図３におけるヘッダＨＤＲ３を有する）最後のキュー・セクション１０８が満杯であるかどうか、即ち、最大許容数のエントリを既に含んでいるかどうかを決定する（ステップ１５０４）。図３におけるように、最後のセクション１１８が満杯である場合、ＲＳＭ１０２は、（図３におけるヘッダの新ＨＤＲを有する）新たな最後のセクション１０８を作成し、その新たに作成された最後のセクション１０８に新たなエントリを付加する（ステップ１５０８）。ステップ１５０４において、最後のセクション１０８が満杯でない場合、新たなセクション１０８は作成されず、前から存在する最後のセクション１０８に新たなエントリ１１６が付加される（ステップ１５０８）。
【００２７】
Ｂ．エントリの除去
既存のエントリ１１６がキュー１０４から除去される時、それは、現在のキュー・セクション１０８におけるそれの位置から簡単に除去される。再び、残りのキュー・セクション１０８及びそれらのエントリ１１６は影響を受けない。キュー・エントリ平衡化プロセスが開始される前に一貫した除去リクエストが行われることは可能である。この結果、セクション１０８が空になる。そこで、そのセクションのヘッダ１１４がキュー１０４から除去され、フリー・ヘッダ・プール（図示されてない）に戻されるか、又はまばらに存在するようになったキュー・セクション１０８（図４）に戻される。
【００２８】
Ｃ．セクションのマージ
キュー・エントリ平衡化プロセスの主要な目的は、まばらに存在するセクション１０８を除去すること及び残りのセクション１０８に対して妥当な数のエントリ１１６を維持することである。これは、キュー１０４におけるセクション１０８の各対を通して最も若いセクション１０８から最も古いセクション１０８まで通すことによって、及び、可能であれば、セクション１０８におけるエントリ１１６を単一のセクション１０８上に結合することによって達成され得る。セクション１０８が結合され得るかどうかを、以下の要素が決定する。
（１）両セクション１０８におけるエントリ１１６の合計数がエントリ１１６の最大許容数よりも多くない。
（２）セクション１０８を結合するために必要と思われる時間の量が、システム・タイムアウトの発生前に許容可能なタイム・リミットを越え得ない。タイム・リミットは、種々のシステム・ハードウェアに対して変化せず、場合によっては、インストレーションによって制御され得る。単一のエントリ１１６に対する代表的な処理時間及び呼び出されるエントリ１１６の数に基づいて、合計処理時間を計算することができる。
【００２９】
一対のセクション１０８が最大許容数よりも小さいか又はそれに等しい結合数のエントリ１１６を有することがわかった後、少ない数のエントリ１１６を有するセクション１０８からのエントリ１１６が多い数のエントリ１１６を有するセクション１０８にマージされる。マージされるセクション１０８が２つのセクション１０８のうちの高い（即ち、より古い）セクション１０８である場合、それのエントリ１１６は、低い（即ち、新しい）セクション１０８の前に移動する。同様に、マージされるセクション１０８が低い（即ち、新しい）セクション１０８である場合、それのエントリ１１６は、高いセクション１０８の終わりに移動する。
【００３０】
マージ・プロセスが行われる前と同じ有効重み素子値をエントリ１１６が有するようウェイト係数値に関連してキュー・エントリ位置によりキュー整合性を維持するために、新たにマージされたエントリ１１６がそれらのウェイト係数を調整される。高いセクション１０８からのエントリ１１６が低いセクション１０８にマージされた場合、それらのウェイト係数値は、セクション・ヘッダ１１４のウェイト係数の差に等しい量だけ増加する。より低いセクション１０８からのエントリ１１６がより高いセクション１０８にマージされた場合、それらのウェイト係数値は、セクション・ヘッダ１１４のウェイト係数の差に等しい量だけ減少する。
【００３１】
キュー１０４のすべてのセクション１０８に対して、検査及びマージ・プロセスが繰り返される。いつも、新たなペアに対する低いセクション１０８は、マージされ得ない前の対のセクション１０８における高いセクション１０８か又は成功した前のマージ・プロセスから生じた新たな結合セクション１０８である（図５、図６、図７）。
【００３２】
２．第２実施方法
第２実施方法は、新たなエントリ１１６がキュー１０４に加えられるべき時、又は既存のエントリ１１６がキュー１０４から除去されるべき時、いつもキュー・セクション１０８が平衡していることを保証する。
【００３３】
Ａ．エントリの付加
この第２実施方法では、新たなエントリ１１６がキュー１０４に付加される時、それは、最小ウェイト係数値を割り当てられ、それがキュー１０４における最も新しいエントリ１１６であることを表す。最も新しいエントリ１１６に対する位置は、キュー１０４の最後の（即ち、最も新しい）セクション１０８の終わりである（図８）。
【００３４】
最後のセクション１０８が（各セクション１０８に対する所定の最大数のエントリ１１６に基づいて）既に満杯である場合、セクション１０８における最も古いエントリ１１６が次に高い（即ち、古い）セクション１０８に移動して新たなエントリ１１６に対する空きをセクション１０８上に作る。最も古いエントリ１１６における付加が次に高いセクション１０８に最大数のエントリ１１６を越えさせる場合、そのセクション１０８におけるその時の最も古いエントリ１１６が、キュー１０４の次に高いセクション１０８まで移動する（図９）。
【００３５】
プロセスは、移動したエントリ１１６に対するセクション１０８において使用可能な位置が見つかるまで、又はキュー１０４の最も古いセクション１０８が到達するまで、繰り返される。最も古いセクション１０８が現在も最大数のエントリ１１６を保持している場合、最も古いセクション１０８から直ちに移動されるべきエントリ１１６を収容するために、新たなセクション１０８に対するヘッダ１１４が作成される。新たなセクション１０８は、キュー１０４の最初のセクション１０８になる（図１０）。
【００３６】
キュー１０４は、１つの空のセクション１０８でもって開始するものと見なされるので、キュー・エントリ１１６をバブル・アップするプロセスは、キュー１０４が最も古いセクション１０８以外に十分に多くのセクション１０８を有することを保証する。
【００３７】
図１８は、本発明の実施法においてターゲット・エントリ１１６をターゲット・セクションに付加するための手順１６００を示す。新たなエントリ１１６をターゲット・エントリとし且つ最後のセクション１０８をターゲット・セクションとしてキュー１０４にその新たなエントリ１１６を付加するために、ＲＳＭ１０２がこの手順１６００を呼び出す。この図及び図８乃至図１０を参照すると、この手順が呼び出される時（ステップ１６０２）、ＲＳＭ１０２は、先ず、ターゲット・キュー・セクション１０８が満杯であるかどうかを決定する（ステップ１６０４）。ターゲット・セクション１０８が満杯でない場合、ＲＳＭ１０２は、ターゲット・エントリをターゲット・セクションの終わりに付加する（ステップ１６０６）。
【００３８】
ステップ１６０４において、ターゲット・セクション１０８が満杯でない場合、ＲＳＭ１０２は、前のセクション１０８が存在するかどうかを決定する（ステップ１６０８）。それが肯定される場合、ＲＳＭ１０２は、最も古いエントリ１１６を新たなターゲット・エントリとして且つ前のセクション１０８を新たなターゲット・セクションとして手順１６００を帰納的に呼び出すことによって、ターゲット・セクション１０８における最も古いエントリ１１６を前のセクション１０８に移動させ（ステップ１６１０）、しかる後、現在のターゲット・エントリ１１６を現在のターゲット・セクション１０８の終わりに付加する（ステップ１６０６）。
【００３９】
ステップ１６０８において、前のセクション１０８が存在しない場合（即ち、ターゲット・セクション１０８が最初のセクションである場合）、ＲＳＭ１０２は、新たな最初のセクション１０８を作成し（ステップ１６１２）、ターゲット・セクション１０８における最も古いエントリ１１６を新たに作成された最初のセクション１０８に移動させ（ステップ１６１０）、しかる後、現在のターゲット・エントリ１１６を現在のターゲット・セクション１１６の終わりに付加する（ステップ１６０６）。
【００４０】
Ｂ．エントリの除去
ランダムな既存のエントリ１１６がキュー・セクション１０８からデキューされる時、そのデキューされたエントリ１１６の前にあった（即ち、デキューされたエントリよりも古い）エントリ１１６をそのデキューされたエントリ１１６の場所にシフトすることによって、セクション１０８における残りのエントリ１１６が再編成される。
【００４１】
セクション１０８がデキュー・オペレーション前には最大数のエントリ１１６を含むものと予想されるので、それのエントリ１１６の数は、今や、その予想された最大数よりも少ない。そこで、次に高いセクション１０８の終わりにおける１つ又は複数のエントリ１１６がその影響を受けたセクション１０８に移動し、その影響を受けたセクション１０８におけるエントリ１１６の数をその予想された最大数にする。そのシフト・プロセスの結果、次に高いセクション１０８におけるエントリ１１６の数がその考えられた最大数のエントリ１１６よりも少なくなる場合、その次に高いセクション１０８におけるエントリ１１６が残っていれば、それが現在のセクション１０８のエントリを多くするためにシフトされる（図１１）。
【００４２】
このシフト・プロセスは、キュー１０４の最も古いセクション１０８におけるエントリ１１６が処理されてしまうまで、繰り返される。そこで、最も古いセクション１０８が空となる場合、それのヘッダ１１４がデキューされ、フリー・ヘッダ・プールに戻される（図１２）。
【００４３】
当初、ほとんどのキュー・セクション１０８が最大数のエントリ１１６を含むものと考えられるので、シフト・プロセスは、エントリ１１６がキュー１０４から除去されてしまった後、大多数のキュー・セクション１０８を十分に数多くエントリを持つ状態に保つ。
【００４４】
図１９は、本発明のこの実施方法において、ターゲット・エントリ１１６をキュー１０４のターゲット・セクション１０８から除去するための手順１７００を示す。この手順が呼び出される時（ステップ１７０２）、ＲＳＭ１０２は、先ず、ターゲット・セクション１０８からターゲット・エントリ１１６を除去し（ステップ１７０４）、しかる後、そのターゲット・セクション１０８を前のセクション１０８からのエントリでもって満たす（ステップ１７０６）。
【００４５】
図２０は、ターゲット・セクション１０８を前のセクション１０８からのエントリでもって満たすための手順１８００を示す。その手順が呼び出される時（ステップ１８０２）、ＲＳＭ１０２は、先ず、いずれかの前のセクション１０８が存在するかどうかを決定する（ステップ１８０４）。これが否定される場合、エントリ１１６を移動すべき前のセクション１０８が存在しないので、手順は終了する（ステップ１８０６）。これが肯定される場合、ＲＳＭ１０２は、前のセクション１０８からエントリ１１６を移動させる。その移動は、直前のセクション１０８における最後のエントリ１１６でもって始まり、ターゲット・セクション１０８が満杯にされるまで又はそのような前のエントリが存在しなくなるまで行われる（ステップ１８０８）。そこで、ＲＳＭ１２は、同様に、例えば、前のセクション１０８を新たなターゲット・セクションとして手順１８００を帰納的に呼び出すことにより前のセクション１０８を満杯にするように進行する（ステップ１８１０）。
【００４６】
キュー・エントリ１１６の付加又は削除によって影響されるキュー・エントリ１１６の有効ウェイト係数値を維持するために、エントリ１１６の個々のウェイト係数は、そのようなウェイト係数が使用されるべき場合、それらの新たなセクション１０８のウェイト係数に従って調節される。エントリ１１６がそれの元のセクション１０８のウェイト係数よりも高いウェイト係数を有するキュー・セクション１０８に移動したばかりの場合、そのエントリ１１６の個々のウェイト係数は、新たなセクション１０８のウェイト係数及びそのエントリの元のセクション１０８のウェイト係数の間の差に等しい量だけ減じられる。逆に、エントリ１１６がそれの元のセクション１０８のウェイト係数よりも低いウェイト係数を有するキュー・セクション１０８に移動したばかりの場合、そのエントリ１１６のウェイト係数は、それの元のセクション１０８のウェイト係数及びそれの新たなセクション１０８のウェイト係数の間の差に等しい量だけ増加する。
【００４７】
ＩＩ．更新処理
キュー・エントリ１１６に対する有効ウェイト係数は、セクション・ヘッダ１１４におけるウェイト係数と個々のエントリ１１６におけるウェイト係数との結合値である。本発明のセクション化され且つ順序付けられたキュー１０４に対する更新プロセス１２０は、処理時間の劇的な増加なしに大きいキューのための処理を扱うことができる。それは、いくつかの更新が、個々のキュー・エントリ１１６を更新することによるのではなくセクション・レベルで行われるためである。
【００４８】
図１３及び図１４は、セクション化され且つ順序付けられたキュー１０４を操作し得る方法の一例を示す。図１３は、更新処理前のキュー１０４を示し、図１４は、更新処理後のキュー１０４を示す。
【００４９】
更新プロセス１２０は、最初のセクション１０８が、更新処理中にチェックされた後に少なくとも最小数のエントリ１１６を有することを保証する。一旦、必要な個々のエントリ１１６が処理されると、残りのエントリ１１６に対するヘッダ１１４が、ウェイト係数に加えられるべき値でもって更新される。処理されるセクション１０８は、最上のセクション１０８がそのセクションに残るための基準に合致する（即ち、キュー１０４における任意のエントリ１１６の最高の有効ウェイト係数を有し、最近参照されてない）最大数のエントリ１１６に達してない場合、完了まで（即ち、そのセクションにおける最後のエントリ１１６まで）処理される。
【００５０】
更新処理中、セクション・ヘッダ１１４は、最小数及び最大数のキュー・エントリ１１６を維持するために、必要に応じて付加及び削除される。リセットされるべきウェイト係数を有する如何なるエントリも、有効ウェイト係数がゼロのままであることを保証するために、ゼロのウェイト係数を有する新たに作成されたセクション・ヘッダ１１４上に入れられる。
【００５１】
図１３及び図１４に示された例では、キュー１０４上には２０個のエントリ１１６がある。１つのキュー・セクション当たりのエントリ１１６の最大数は６であると仮定し、最小数は３であると仮定する。更新プロセス１２０は、３というカウント（ＵＩＣ）によって参照されてないフレームに対応したエントリ１１６を更新する。この例では、エントリＥ、Ｆ、Ｇ、Ｉ、Ｋ、Ｍ、Ｎ、及びＲが参照されておらず、この値によって更新される。一方、エントリＡ、Ｂ、Ｃ、Ｄ、Ｈ、Ｊ、Ｌ、Ｏ、Ｐ、Ｑ、Ｓ、及びＴが参照されており、従って、それらが有効ウェイト係数をリセットされる必要があることを表すためにフラッグをセットされる。
【００５２】
図１４は、更新処理が遂行された後、セクション化され且つ順序付けられたキュー１０４を示す。セクション・ヘッダＨＤＲ１及びＨＤＲ２は、最上のセクション・ヘッダ１１４における少なくとも最小数のエントリ１１６を持つ前に完全に処理された。
【００５３】
リセットされるべきウェイト係数を有するエントリ１１６（Ａ−Ｄ、Ｈ、Ｊ、及びＬ）を移動させるための場所として、２つの新たなヘッダ１４（ＨＤＲ５及びＨＤＲ６）が作成された。これらの新たなセクション・ヘッダ１１４におけるウェイト係数及びこれらのヘッダ１１４に置かれた個々のエントリ１１６がゼロにセットされる。これらのエントリ１１６の有効ウェイト係数がリセットされているので、これが最早行われる必要がないことを表すために、それらのフラッグがリセットされる。
【００５４】
最上のセクション１０８（ヘッダＨＤＲ１を有する）まで移動したエントリＥ−Ｇ、Ｉ、及びＫは、元のセクション・ヘッダ１１４のウェイト係数、個々のエントリ１１６の（インクレメントしてない）ウェイト係数、及びインクレメント値を含むようにそれらの個々のウェイト係数を更新していた。例えば、エントリＦは、（４＋５０＋３）に起因する５７の新たな有効ウェイト係数を有する。最上のセクション１０８における有効ウェイト係数は、今やエントリ１１６の個々のウェイト係数において完全には表されないので、セクション・ヘッダ１１４のウェイト係数はゼロにリセットされている。
【００５５】
セクション・ヘッダＨＤＲ２は完全に処理され、それのエントリＧ−Ｌは最上のヘッダＨＤＲ１又は新たに作成されたヘッダＨＤＲ５及びＨＤＲ６に移動している。一旦、ヘッダＨＤＲ２を有するセクション１０８が空になると、セクション・ヘッダＨＤＲ２は削除される。
【００５６】
必要な基準に合致する少なくとも最小数のエントリ１１６が今や最上セクション１０８にあるので、セクションＨＤＲ３及びＨＤＲ４における個々のエントリ１１６のすべてを処理する必要はない。しかし、ウェイト係数に対するインクレメント値は記憶される必要があり、従って、セクション・ヘッダ１１４におけるウェイト係数が増加する。例えば、ヘッダＨＤＲ３が２から５に更新される。そこで、エントリ１１６に対する有効ウェイト係数は、インクレメント値だけ自動的に増加するであろう。例えば、エントリＮの新たな有効ウェイト係数は２０である。
【００５７】
ヘッダＨＤＲ３及びＨＤＲ４を有するセクション１０８が、依然として、参照されたエントリＯ−Ｑ及びＳ−Ｔを含み、従って、それらの有効ウェイト係数をリセットさせる必要があることは注目される。しかし、更新プロセス１２０がそれらのセクション１０８の対応する部分を処理する度にそれらがそれらの有効ウェイト係数をリセットさせるように、それらのフラッグはセットされたままである。
【００５８】
図２１は、更新処理のための手順１９００を示す。この手順１９００は、各参照インターバルの終わりに定期的に呼び出される。手順１９００が呼び出される時（ステップ１９０２）、ＲＳＭ１０２が、図２２に示された手順２０００を使用して最上のセクション１０８を完全に処理し（ステップ１９０４）、しかる後、最上のセクション１０８が最小数のエントリを有するかどうかを決定する（ステップ１９０６）。その結果が否定的である場合、ＲＳＭ１０２は、その最小数が得られるまで、キュー１０４を通して下方に作用して更なるセクション１０８を処理する（ステップ１９０８）。そこで、更なるセクション１０８が残っている場合、ＲＳＭ１０２は、所望のインクレメント（この場合、３）でもってセクション・ヘッダ１１４だけを更新する（ステップ１９１０）。
【００５９】
図２２は、個々のセクション１０８を処理するための手順２０００を示す。その手順は、呼び出された時（ステップ２００２）、最上のセクション１０８に最大数のエントリ１１６が存在するまで（ステップ２００４）、又は処理されるべきそれ以上のエントリ１１６がターゲット・セクション１０８に残らなくなるまで（ステップ２００６）継続する。処理される各エントリ１１６に対して、ＲＳＭ１０２は、参照フラッグがセットされているかどうかを決定する（ステップ２００８）。その結果が否定的である場合、ＲＳＭ１０２は、上述の態様でそれのウェイト係数を調節し（ステップ２０１０）、処理されるセクションが最上のセクション以外のものである場合、エントリ１１６を最上のセクション１０８に移動させる（ステップ２０１２）。ステップ２００８においてフラッグがセットされている場合、ＲＳＭ１０２は、エントリ１１６のウェイト係数をゼロにリセットし（ステップ２０１４）、必要な場合には新たなセクションを作成してそのエントリを新たなセクションに移動させ（ステップ２０１６）、フラッグをリセットする（ステップ２０１８）。
【００６０】
最上のセクション１０８が満杯にされた時、又はターゲット・セクション１０８が完全に処理されてしまった時、それが最初に生じる度に、ＲＳＭ１０２は、ターゲット・セクション１０８が今や空であるかどうかを知るためのチェックを行う（ステップ２０２０）。その結果が肯定的である場合、ＲＳＭ１０２は、そのターゲット・セクションのセクション・ヘッダ１１４を削除し（ステップ２０２２）、しかる後、終了する（ステップ２０２４）。その結果が否定的である場合、ＲＳＭ１０２は、セクション・ヘッダ１１４を削除することなくセクション処理を終了する。
【００６１】
ＩＩＩ．スチール処理
システム・アドレス・スペースにおいて大きな仮想領域をバッキングするフレームのキューに対するセクション化され且つ順序付けられたキュー１０４は、妥当なシステム・パフォーマンスが得られることを保証すると共に、ＲＳＭのフレーク・スチール・アルゴリズムがこれらのキュー１０４からフレームをうまくスチールすることを可能にする。この実施方法では、キュー・エントリ１１６に対するウェイト係数は、セクション・ヘッダ１１４及び個々のキュー・エントリ１１６の両方に記録される有効ＵＩＣ値である。次の２つのプロセスに依存して、即ち、
（１）開始セクション１０８が最高のウェイト係数を有するフレームを含むようなセクション化キュー１０４を維持するためにはＲＳＭの更新プロセス１２０に依存して、及び
（２）開始セクション１０８が十分に多く存在することを保証するためにはキュー平衡化プロセスに依存して、
ＲＳＭスチール・プロセス１２２がこの最初のセクション１０８においてのみスチールすべきフレームを捜す。この方法では、潜在的に非常に長いキュー１０４からのフレームのスチールは、そのキュー全体を全探索する時間を浪費することなく行われ得るし、指定された最大数のエントリ１１６よりも多くのエントリを持たないことを保証されるイネーブル・チェックがこの１つのセクション１０８を全探索した後に行われるので、スピン・ループ・タイムアウトを導くことはない。一旦イネーブルされると、ＲＳＭ　ＵＩＣ更新及びキュー平衡化プロセスの別のインスタンスが実行され、最高のウェイト係数を有するエントリ１１６が十分に存在するようにこのキュー・セクション１０８を保つのを助ける。ＲＳＭ　ＵＩＣ更新プロセスとは異なり、ＲＳＭスチール・プロセス１２２は、それがイネーブル・ウィンドウに達した後、それがチェーンにおける中断した所から継続しない。ＳＲＭ１８は、前のスチール・オペレーションの成功に基づいてそれのスチール・リクエストを更新し、スチール・オペレーションは、キュー１０４の更新したセットの始めから開始することができる。
【００６２】
ＲＳＭスチール・プロセス１２２は、最初のセクション１０８において集中するけれども、それは、セクション化され且つ順序付けられたキュー１０４の構造を認識していて、それのフレーム移動プロセスの間この構造の維持を助ける。ＲＳＭスチール・プロセス１２２は、スチール可能なフレームにおけるデータが補助記憶装置において支援されることを確実なものにした後、スチール規準に適合するフレームを使用可能なフレーム・キュー（図示されてない）に移動し、最近参照された（従って、スチールされるには適さない）フレームをその構成されたキュー１０４の真の終わりまで移動する。また、ＲＳＭスチール・プロセス１２２がフレームのウェイト係数を評価及び記録し、それをＳＲＭ１８によりセットされたスチール規準に比較するために、それは、キュー・エントリ１１６及びそれの関連したセクション・ヘッダ１１４の両方に含まれた合計ウェイト係数を調べる。
【００６３】
アプリケーション・アドレス・スペース１０６が或る仮想記憶を参照するつもりのないことを決定する時、そのアドレス・スペースは、それが関連の実記憶フレームをそのシステムにとって使用可能なものにしたいということを、システム・サービスを使用してそのシステムに知らせることができる。これらのフレームは、優れたスチール候補である。これらのフレームの各々に対してＩ／Ｏを直ちに起動して補助記憶管理プログラムを対処不能にするのではなく、これらのフレームは、エントリ１１６が持ち得る最高の可能なウェイト係数を有するセクション化され且つ順序付けられたキュー１０４の真の始めに置かれ、それらをスチールのための最重要な候補にする。この方法では、システムは、それらのフレームが必要であることをそれが決定するまで、Ｉ／Ｏを遅らせることを可能にされる。
【００６４】
セクション化され且つ順序付けられたキュー１０４の最初のセクション１０８上に又はその最初のセクションから離れるようにフレームを移動することは、それのセクション・ヘッダ１１４がこのセクション１０８におけるフレームの新たなカウントでもって更新されることを必要とする。また、この最初のセクション１０８がスチール処理のために空になる場合、ＲＳＭスチール・プロセス１２２は、次のキュー・セクション１０８を新たな最初のセクション１０８として指示するようにキュー構造を再構築する。
【００６５】
ＲＳＭスチール・プロセス１２２が、最近参照したフレームをセクション化され且つ順序付けられたキュー１０４の真の終わりまで移動する時、それは、（現在最も若いセクション１０８が空でない場合）キュー１０４の終わりにおいて新たなセクション・ヘッダ１１４を形成し、これらのフレームをこの新しい最も若いセクション１０８から離れてキューに入れる。この方法では、スチール・プロセス１２２は、キュー・セクション１０８における最大の許容されたフレーム数を越えることを心配する必要はない。
【００６６】
別の方法として、スチール・プロセス１２２は、参照されたフレームを現在最も若いセクション１０８上に付加することによって、それらのフレームをキュー１０４の終わりまで移動し得る。但し、それは、参照されたフレームの新たなセットを付加してもその後セクション１０８に対して許容された最大値を超えないということが条件である。この処理は、更に手の込んだチェックを必要とするであろうし、ＲＳＭスチール・プロセス１２２がそれのキュー操作を終了する時、それがキュー平衡化プロセスを呼び出す場合には必要ない。
【００６７】
図１５及び図１６は、スチール・プロセス１２２が３０以上の有効ウェイト係数を有するキュー・エントリを再要求したスチール処理の前後のセクション化され且つ順序付けられたキュー１０４を示す。図１５は、エントリＡ−Ｅを含む最初のセクションＨＶＨＤＲ１、エントリＦ−Ｊを含む第２のセクションＨＶＨＤＲ２、及びエントリＫを含む第３のセクションＨＶＨＤＲ３を有する未処理のキュー１０４を示す。セクションＨＶＨＤＲ１では、エントリＡ−Ｄは３０以上の有効ウェイト係数を有し、従って、スチーリングに対して適格である。一方、セクションＨＶＨＤＲ２及びＨＶＨＤＲ３では、エントリＦ−Ｊのうち、スチーリングに対してそれらを適格にする有効ウェイト係数を持つものはない。
【００６８】
図１６は、スチール処理後のキュー１０４を示す。アドレス・スペース１０６に対するキュー１０４から対応するフレームを「スチール」ために、エントリＡ、Ｃ、及びＤがセクションＨＶＨＤＲ１から除去された。一方、エントリＢはキュー１０４に残る。それは、それまでは（この例では）、対応するフレームが参照され、エントリＢの有効ウェイト係数をゼロにリセットさせるためである。これを達成するために、エントリＢは、セクションＨＶＨＤＲ１から新たに作成された最後のセクションＨＶＨＤＲ４まで移動し、それの個々のウェイト係数はゼロにセットされる。（この特定の例におけるセクション・ウェイト係数はすべてゼロであると仮定される）。２９という不適格なウェイト係数を有する唯一のエントリＥが最初のキュー・セクションＨＶＨＤＲ１に残る。
【００６９】
図２３は、スチール処理のための手順２１００を示す。その手順２１００は、更なるフレームを求めるリクエストを、例えば、ＳＲＭ１８から受け取ることに応答して、特定のキュー１０４に対してＲＳＭ１０２によって呼び出される（図１）。呼び出される時（ステップ２１０２）、キュー１０４の最初のセクション１０８にそれ以上のエントリ１１６が存在するまで（ステップ２１０４）、又は必要な数のフレームが供給されるまで（ステップ２１１４）、どちらが最初に生じようとも、手順２１００が継続する。
【００７０】
処理される各エントリ１０８に対して、エントリの有効ウェイト係数がＲＳＭに供給されたスチール基準に適合するかどうかをＲＳＭ１０２が先ず決定する（ステップ２１０６）。その結果が否定的である場合、ＲＳＭ１０２は最初のセクションにおけるエントリ１１６を残し、ステップ２１０４に戻る。その結果が肯定的である場合、ＲＳＭ１０２は、エントリ１１６が最近参照されたことを表すフラッグがセットされているかどうかを決定する（ステップ２１０８）。この結果が肯定的である場合、ＲＳＭ１０２はエントリ１１６を新たなセクションに移動させ（ステップ２１１０）、ステップ２１０４に戻る。エントリ１１６が最近参照されていない場合、ＲＳＭ１０２は、キュー１０８からエントリ１１６を除去し、必要な数のフレームが供給されたかどうかを決定する（ステップ２１１４）。その結果が否定的である場合、別の反復のためにステップ２１０４に戻る。
【００７１】
キュー１０４の最初のセクションにそれ以上のエントリ１１６が存在しない時（ステップ２１０４）、又は必要な数のフレームが供給された時（ステップ２１１４）、ＲＳＭ１０２は、最初のセクション１０８が今や空であるかどうかを調べる（ステップ２１１６）。この結果が肯定的ある場合、ＲＳＭ１０２は、終了前に新たな最初のセクションとして次のセクション１０８を指示するためにキュー１０４を再構成する。その結果が否定的である場合、スチール・プロセス１２４は終了するだけである。
【００７２】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００７３】
（１）情報処理システムにおいてキューを維持する方法にして、
最初のキュー・セクションから最後のキュー・セクションまで順序よく配列され、各々が最初のキュー・エントリから最後のキュー・エントリまで順序よく配列された１つ又は複数のキュー・エントリを含む、複数のキュー・セクションを定義するステップと、
前記キュー・セクションの各々に対するウェイト係数を定義するステップと、
前記キュー・セクションの各々における各キュー・エントリに対するウェイト係数を定義するステップとを含み、
前記キュー・エントリの各々は前記キュー・セクションに対して定義された前記ウェイト係数と前記キュー・エントリに対して定義された前記ウェイト係数とを結合することによって形成された有効ウェイト係数を有する、
方法。
（２）前記キュー・エントリが使用可能な記憶ロケーションに対応する、上記（１）に記載の方法。
（３）前記記憶ロケーションが実記憶アドレスの範囲を含む、上記（２）に記載の方法。
（４）キュー・エントリに対する前記有効ウェイト係数が、該キュー・エントリに対応する記憶ロケーションが参照されなかった時間の量を表す、
上記（２）に記載の方法。
（５）新たに使用可能な対応する記憶ロケーションを表す、新たなエントリを前記最後のキュー・セクションに付加するステップをさらに含む、上記（２）に記載の方法。
（６）前記対応する記憶ロケーションが最早使用可能でないことを表す、１つ又は複数のキュー・エントリを削除するステップをさらに含む、上記（２）に記載の方法。
（７）少なくとも所定の有効ウェイト係数を有するキュー・エントリだけが削除される、上記（６）に記載の方法。
（８）前のタイム・インターバルにおいて参照されなかった記憶ロケーションに対応するキュー・エントリだけが削除される、上記（６）に記載の方法。
（９）キュー・エントリが前記キューの最初のセクションからのみ削除される、上記（６）に記載の方法。
（１０）前記対応する記憶ロケーションが参照されたかどうかに従って、前記キュー・エントリの各々の前記有効ウェイト係数を更新するステップをさらに含む、上記（２）に記載の方法。
（１１）前記更新するステップは、前記セクションにおける前記キュー・エントリをそれらの有効ウェイト係数の順序で維持するステップをさらに含む、上記（１０）に記載の方法。
（１２）前記更新するステップは、
前のタイム・インターバルにおいて参照されなかった記憶ロケーションに対応するキュー・エントリの前記有効ウェイト係数をインクレメントするステップと、
前のタイム・インターバルにおいて参照された記憶ロケーションに対応するキュー・エントリの前記有効ウェイト係数をリセットするステップと
を含む、上記（１０）に記載の方法。
（１３）前記インクレメントするステップは、前記キュー・エントリを含む前記キュー・セクションの前記ウェイト係数をインクレメントするステップを含む、上記（１２）に記載の方法。
（１４）前記更新するステップは、
前記対応する記憶ロケーションが参照されたかどうかに従って、前記最初のキュー・セクションにおける各キュー・エントリに対して定義された個々のウェイト係数を更新するステップと、
残りのキュー・セクションにおける各キュー・エントリに対して定義された前記個々のウェイト係数を更新することなく、各残りのキュー・セクションに対して定義された前記ウェイト係数だけを更新するステップと
を含む、上記（１０）に記載の方法。
（１５）参照された記憶ロケーションに対応する前記最初のキュー・セクションにおける各キュー・エントリを他のセクションに移動する、上記（１４）に記載の方法。
（１６）前記キュー・セクションの各々におけるキュー・エントリの数を前記キュー・セクションに対して定義された所定の許容可能な範囲内に維持するステップをさらに含む、上記（１）に記載の方法。
（１７）最初のキュー・セクションから第２のキュー・セクションに１つ又は複数のキュー・エントリを移動させるステップをさらに含む、上記（１）に記載の方法。
（１８）移動した前記キュー・エントリに対して定義された前記ウェイト係数を、前記第２のキュー・セクションにおけるそれらの有効ウェイト係数が、前記最初のキュー・セクションにおけるそれらの有効ウェイト係数と同じになるように調節するステップをさらに含む、上記（１７）に記載の方法。
（１９）新たなキュー・セクションを作成するステップと、
既存のキュー・セクションから前記新たなキュー・セクションに１つ又は複数のキュー・エントリを移動させるステップと
をさらに含む、上記（１）に記載の方法。
（２０）最初のキュー・セクションから１つ又は複数の他のキュー・セクションまで１つ又は複数のキュー・エントリを移動させるステップと、
前記最初のキュー・セクションを削除するステップと
をさらに含む、上記（１）に記載の方法。
（２１）情報処理システムにおいてキューを維持するための手段を遂行するために、機械により実行可能な命令のプログラムを明確に具現化する、該機械により可読なプログラム記憶装置にして、
前記キューを維持するための手段が、
最初のキュー・セクションから最後のキュー・セクションまで順序よく配列され、各々が最初のキュー・エントリから最後のキュー・エントリまで順序よく配列された１つ又は複数のキュー・エントリを含む、複数のキュー・セクションを定義する手段と、
前記キュー・セクションの各々に対するウェイト係数を定義する手段と、
前記キュー・セクションの各々における各キュー・エントリに対するウェイト係数を定義する手段とを含み、
前記キュー・エントリの各々は前記キュー・セクションに対して定義された前記ウェイト係数と前記キュー・エントリに対して定義された前記ウェイト係数とを結合することによって形成された有効ウェイト係数を有する、
プログラム記憶装置。
（２２）前記キュー・エントリが使用可能な記憶ロケーションに対応する、上記（２１）に記載のプログラム記憶装置。
（２３）前記キューを維持するための手段が、新たに使用可能な対応する記憶ロケーションを表す、新たなエントリを前記最後のキュー・セクションに付加する手段をさらに含む、上記（２２）に記載のプログラム記憶装置。
（２４）前記キューを維持するための手段が、前記対応する記憶ロケーションが最早使用可能でないことを表す、１つ又は複数のキュー・エントリを削除する手段をさらに含む、上記（２２）に記載のプログラム記憶装置。
（２５）キュー・エントリが前記キューの最初のセクションからのみ削除される、上記（２４）に記載のプログラム記憶装置。
（２６）前記キューを維持するための手段が、前記対応する記憶ロケーションが参照されたかどうかに従って、前記キュー・エントリの各々の有効ウェイト係数を更新する手段をさらに含む、上記（２２）に記載のプログラム記憶装置。
（２７）前記キューを維持するための手段が、前記対応する記憶ロケーションが参照されたかどうかに従って、前記最初のキュー・セクションにおける各キュー・エントリに対して定義された個々のウェイト係数を更新する手段と、
残りのキュー・セクションにおける各キュー・エントリに対して定義された前記個々のウェイト係数を更新することなく、各残りのキュー・セクションに対して定義されたウェイト係数だけを更新する手段と
をさらに含む、上記（２２）に記載のプログラム記憶装置。
（２８）参照された記憶ロケーションに対応する前記最初のキュー・セクションにおける各キュー・エントリを他のセクションに移動する、上記（２７）に記載のプログラム記憶装置。
（２９）前記キューを維持するための手段が、前記キュー・セクションの各々におけるキュー・エントリの数を、前記キュー・セクションに対して定義された所定の許容可能な範囲内に維持する手段をさらに含む、上記（２１）に記載のプログラム記憶装置。
（３０）前記キューを維持するための手段が、最初のキュー・セクションから第２のキュー・セクションに１つ又は複数のキュー・エントリを移動させる手段と、
移動したキュー・エントリに対して定義されたウェイト係数を、第２のキュー・セクションにおけるそれらの有効ウェイト係数が最初のキュー・セクションにおけるそれらの有効ウェイト係数と同じになるように調節する手段と
をさらに含む、上記（２１）に記載のプログラム記憶装置。
（３１）最初のキュー・セクションから最後のキュー・セクションまで順序よく配列された複数のキュー・セクションを含み、
前記キュー・セクションの各々が最初のキュー・エントリから最後のキュー・エントリまで順序よく配列された１つ又は複数のキュー・エントリを含み、
前記キュー・セクションの各々及び前記キュー・セクションの各々における各キュー・エントリがそれに対して定義されたウェイト係数を有し、
前記キュー・エントリの各々が前記キュー・セクションに対して定義された前記ウェイト係数と前記キュー・エントリに対して定義された前記ウェイト係数とを結合することによって形成された有効ウェイト係数を有する、
情報処理システムにおけるセクション化され且つ順序付けられたキュー。
（３２）前記複数のキュー・エントリが使用可能な記憶ロケーションに対応する、上記（３１）に記載のキュー。
（３３）新たに使用可能な対応する記憶ロケーションを表す、新たなエントリが前記最後のキュー・セクションに付加される、上記（３２）に記載のキュー。
（３４）前記対応する記憶ロケーションが最早使用可能でないことを表す、１つ又は複数のキュー・エントリが削除される、上記（３２）に記載のキュー。
（３５）キュー・エントリが前記キューの最初のセクションからのみ削除される、上記（３４）に記載のキュー。
（３６）前記対応する記憶ロケーションが参照されたかどうかに従って、前記キュー・エントリの各々の前記有効ウェイト係数が更新される、上記（３２）に記載のキュー。
（３７）前記対応する記憶ロケーションが参照されたかどうかに従って、前記最初のキュー・セクションにおける各キュー・エントリに対して定義された前記個々のウェイト係数が更新され、
残りのキュー・セクションにおける各キュー・エントリに対して定義された前記個々のウェイト係数を更新することなく、各残りのキュー・セクションに対して定義された前記ウェイト係数だけが更新される、
上記（３２）に記載のキュー。
（３８）参照された記憶ロケーションに対応する前記最初のキュー・セクションにおける各キュー・エントリを他のセクションに移動する、上記（３７）に記載のキュー。
（３９）前記キュー・セクションの各々におけるキュー・エントリの数が、前記キュー・セクションに対して定義された所定の許容可能な範囲内に維持される、上記（３１）に記載のキュー。
（４０）最初のキュー・セクションから第２のキュー・セクションに１つ又は複数のキュー・エントリを移動させ、
移動した前記キュー・エントリに対して定義された前記ウェイト係数を、前記第２のキュー・セクションにおけるそれらの有効ウェイト係数が前記最初のキュー・セクションにおけるそれらの有効ウェイト係数と同じになるように調節する、
上記（３１）に記載のキュー。
【図面の簡単な説明】
【図１】本発明を組み込み得るコンピュータ・システムを示す。
【図２】実記憶管理プログラム（ＲＳＭ）プロセス及び本発明のキューとそれらのプロセスとの相互作用を示す。
【図３】本発明の第１の実施方法におけるキュー・エントリの付加を示す。
【図４】本発明の第１の実施方法におけるキュー・エントリの除去を示す。
【図５】本発明の第１の実施方法におけるキュー・エントリのマージを示す。
【図６】本発明の第１の実施方法におけるキュー・エントリのマージを示す。
【図７】本発明の第１の実施方法におけるキュー・エントリのマージを示す。
【図８】本発明の第２の実施方法におけるキュー・エントリの付加を示す。
【図９】本発明の第２の実施方法におけるキュー・エントリの付加を示す。
【図１０】本発明の第２の実施方法におけるキュー・エントリの付加を示す。
【図１１】本発明の第２の実施方法におけるキュー・エントリの除去を示す。
【図１２】本発明の第２の実施方法におけるキュー・エントリの除去を示す。
【図１３】更新処理前のキューを示す。
【図１４】更新処理後のキューを示す。
【図１５】スチール処理前のキューを示す。
【図１６】スチール処理後前のキューを示す。
【図１７】本発明の第１の実施方法においてキュー・エントリを付加するための手順を示す。
【図１８】本発明の第２の実施方法においてキュー・エントリを付加するための手順を示す。
【図１９】本発明の第２の実施方法においてキュー・エントリを除去するための手順を示す。
【図２０】本発明の第２の実施方法においてキュー・エントリを満杯にするための手順を示す。
【図２１】更新処理するための手順を示す。
【図２２】更新処理中に特定のセクションを処理するための手順を示す。
【図２３】スチール処理するための手順を示す。
【符号の説明】
１００　コンピュータ・システム
１０２　実記憶管理プログラム
１０４　セクション化され且つ順序付けられたキュー
１０６　アドレス・スペース
１０８　キュー・セクション
１１０　ポインタ
１１２　キュー・アンカ
１１４　ヘッダ
１１６　エントリ
１１８　ポインタ
【図１】
2004030567.tif 000003
【図２】
2004030567.tif 000004
【図３】
2004030567.tif 000005
【図４】
2004030567.tif 000006
【図５】
2004030567.tif 000007
【図６】
2004030567.tif 000008
【図７】
2004030567.tif 000009
【図８】
2004030567.tif 000010
【図９】
2004030567.tif 000011
【図１０】
2004030567.tif 000012
【図１１】
2004030567.tif 000013
【図１２】
2004030567.tif 000014
【図１３】
2004030567.tif 000015
【図１４】
2004030567.tif 000016
【図１５】
2004030567.tif 000017
【図１６】
2004030567.tif 000018
【図１７】
2004030567.tif 000019
【図１８】
2004030567.tif 000020
【図１９】
2004030567.tif 000021
【図２０】
2004030567.tif 000022
【図２１】
2004030567.tif 000023
【図２２】
2004030567.tif 000024
【図２３】
2004030567.tif 000025