相互排除

分散システム

                                       電子・情報工学系
                                       新城 靖
                                       <yas@is.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.hlla.is.tsukuba.ac.jp/~yas/coins/dsys-1997/1998-02-10 /mutual-exclusion.html
あるいは、次のページから手繰っていくこともできます。
http://www.hlla.is.tsukuba.ac.jp/~yas/coins/
http://www.hlla.is.tsukuba.ac.jp/~yas/index-j.html

■相互排除

共有データを他のプロセスが同時に利用しないようにすることを保証する。

◆集中システム

集中システムでは、次のような方法が使われる

◆コーディネータを使うアルゴリズム

集中システムのエミュレーション。 1つのプロセスをコーディネータとして選ぶ

普通のプロセス:

  1. 臨界領域に入る前に、コーディネータに要求メッセージを送る。
  2. コーディネータから許可の応答が得られれば、臨界領域に入る。
  3. 臨界領域から出る時には、解放メッセージをコーディネータに知らせる。
コーディネータのプロセス:
  1. 要求メッセージを受け付けた時に、他に利用しているプロセスがいなけ れば、許可の応答を送る。
  2. 他にプロセスがいれば、待ち行列に入れる。
  3. 解放メッセージを受け取った時に、待ち行列からプロセスを 取り出し、それに応答メッセージを送る。
性質

◆分散相互排除

仮定

プロセスが臨界領域に入ろうとすると、 領域の名前、自分のプロセス番号、現在時刻のメッセージを用意する。

このメッセージを他のプロセス(自分も含む)に送信する。

あるプロセスがメッセージを受け取った時、次の3つの場合がある。

すべてのプロセスからOKをもらったら、臨界領域に入る。

臨界領域から出る時には、待ち行列のすべてのプロセスにOKを送る。

アルゴリズムの性質:

結論:元の集中アルゴリズムよりも、遅く、複雑で、高価で、ロバスト性も小 さい。

分散アルゴリズムの可能性が示されたこと、将来への課題、 ほうれん草やラテン語。

◆トークンリング・アルゴリズム

たとえネットワークがバス型でも、ソフトウェア的にトークンリングを作る。

図 トークンリング
図 トークンリング

トークンは、point-to-point のメッセージで送られる。 (グループ通信は使われない。)

隣のプロセスからトークンを受け取ると、自分が臨界領域に入りたければ入る。

性質

◆まとめ

相互排除アルゴリズムの比較
アルゴリズム1回当たりのメッセージ数入る前の遅れ 問題
集中 3 2 コーディネータのクラッシュ
分散 2(n-1) 2(n-1) プロセスのクラッシュ
トークンリング 1〜無限 0〜n-1 トークンの紛失、プロセスのクラッシュ

[論理クロック] [物理クロック] [相互排除]
↑[もどる] ←[2月3日] ・[2月10日] →[2月17日]
Last updated: 1998/02/10 02:07:59
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>