Next: Up: Previous:

オブジェクトの表現

figure242

         図2.3: Pointオブジェクトの表現

Herlihy [12], [13] によって提案されているように, 基本アイデアは, 図2.4のように, 分割したインスタンス変数のレコードを持ち, オブジェクトを インスタンス変数へのポインタを持ったレコード(self record)で 表現することである.

Self record は次の2つのフィールドを持っている.

Mutex
これは書き込みメソッドの前段階の排他制御を実現する
インスタンス変数へのポインタ
ポインタそのものは 1 ワードで表現されている(それらは原子的にメモリから読みだし, メモリに書き込み可能である).

Mutex はフラグと待ちスレッドのキューからなる. 分散メモリマシン においては, ロックの獲得はフラグのチェックと, もし獲得の 操作が失敗したときは, キューの操作である. ロックの解放では, もしあれば, 中断していたスレッドを再開する. 共有メモリマシンでは, 上の手続きは小さいクリティカル・セクションによって保護される.

figure253

         図2.4: 大きなオブジェクトの表現

2.2.4 (1)節での 簡単な point クラスのオブジェクトの可能な表現が 図2.3に図解されている. 2.2.5 (3)節で議論するように, インスタンス変数のレコードの 表現の仕方には自由度がある. 表現の選択はインスタンス変数の 読みだし/書き込みのコストに影響を与える. どちらの場合も, 二つの重要な規則がある.

これらの2つの規則は, 読みだしオンリーのメソッドは 全く排他制御がいらず, オブジェクトの一貫性のある 状態のみを観測することを即座に保証する.



Mitsubishi Research Institute,Inc.
Mon Feb 24 19:24:01 JST 1997