Zone

名前

Zone — ストレージ割り当てのモジュール単位。

説明

新しいゾーンは常に既存のゾーンを認識する必要があるため、ゾーンが存在していない限り新しいゾーンを作成することはできません。そのようなゾーンのうちのいくつかはdefobjライブラリの一部としてあらかじめ定義されています。サマリについては既定のゾーンを参照してください。

ゾーンは他のオブジェクトと同様、標準のcreateメッセージを使用して作成することができます。つまり、zoneはそのストレージを取得する元となる他のゾーンを指定しなければなりません。ストレージはページと呼ばれる大きな単位で既存のゾーンから取得され、次に内部的な割り当て機能をサポートするためにローカルゾーンによって管理されます。Drop型のgetZoneメッセージは、これらのベースページを提供するゾーンを返します。

Zone型は完全に実装された型で、オブジェクトやその他の割り当てられたストレージに対して、デフォルトのストレージ管理サポートを提供します。この型はまた、特別な状況で利用するための代替ポリシーを実装した他のゾーンのスーパータイプでもあります。

ゾーンはオブジェクトのストレージだけでなく、Cのmalloc関数が提供するような生のストレージブロックも取得できます。あるゾーンに割り当てられたオブジェクトやストレージブロックは、すべてそのゾーンに対してローカルなままです。つまり、他のゾーン内にストレージを割り当てても、個々のゾーン内のストレージの割り当て効率に影響はありません。ほとんどのゾーン型では、あるゾーン内での個々の割り当ては自由で、ゾーンの合計ストレージは総量の必要条件に応じて増減します。割り当てはそれぞれ解放でき、ゾーン全体をドロップすることもできます。ゾーンをドロップすると、その中で作成されたすべての割り当ては自動的に解放され、同時に、割り当てられたオブジェクトでドロップが必要なものについても最終的なドロップ処理がなされます。ゾーン全体の解放は、その中にあるオブジェクトを1つ1つ解放していくよりずっと高速です。

Zoneはまた、そのゾーン内に割り当てられているすべてのオブジェクトのコレクションを管理します。このコレクションはゾーンの"母集団"とも呼ばれる集合で、ゾーン内で作成されてまだドロップされていないオブジェクトはすべてコレクションに含まれます。コレクションはゾーンに自動的に管理されるため、オブジェクトの母集団全体のトラックを維持する必要のあるアプリケーションでも、コレクションを別に管理する必要はありません。割り当てられたオブジェクトのコレクションでは、オブジェクトクエリー、外部オブジェクトストレージ、自動ストレージ再生へのサポートが提供されます。

ゾーンは、オブジェクトやその他に割り当てられるデータ用のストレージソースです。新しいオブジェクトが作成されると、ゾーンはそのインスタンス変数や他の内部データについて、どのストレージからそれが取得されるかを認識する必要があります。プログラムを使えば、複数のゾーンを確立して、似たような存続期間あるいは似たようなストレージの必要条件を持つオブジェクトが間違いなく同じところに割り当てられるようにしたり、ストレージの割り当てや再利用を最適化することができます。

Zoneに採用されているプロトコル

Create Drop CREATABLE

メソッド

フェーズ: Creating

フェーズ: Using

グローバル

id <Symbol> ReclaimImmediate

ReclaimPolicyオプションのシンボル値

id <Symbol> ReclaimDeferred

ReclaimPolicyオプションのシンボル値

id <Symbol> ReclaimFrontierInternal

ReclaimPolicyオプションのシンボル値

id <Symbol> ReclaimInternal

ReclaimPolicyオプションのシンボル値

id <Symbol> ReclaimFrontier

ReclaimPolicyオプションのシンボル値