前川アルゴリズムは、分散システムにおける相互排除アルゴリズムです。このアルゴリズムの基礎は、クォーラムに似たアプローチであり、任意の1つのサイトは他のサイトのサブセットからのみ許可を求める必要があります。
アルゴリズム
用語
- サイトとは、前川のアルゴリズムを実行するあらゆるコンピューティングデバイスである。
- クリティカルセクションに入る要求の1つに対して:
- 要求元サイトとは、クリティカル セクションに入ることを要求しているサイトです。
- 受信サイトとは、要求サイトからの要求を受信する他のすべてのサイトです。
- tsは、論理クロックに従ったシステムのローカルタイムスタンプを指します。
アルゴリズム
リクエストサイト:
- 要求元サイトは、クォーラム セット内のすべてのサイトにメッセージを送信します。



受取場所:
- メッセージを受信すると、受信サイトは次の処理を実行します。


- site に未処理のメッセージ (つまり、解放されていないメッセージ)がない場合、 site はsite にメッセージを送信します。






- サイトに、要求よりも優先度の高いプロセスに関する未処理のメッセージがある場合、サイトはサイトにメッセージを送信し、サイトはサイトからの要求をキューに入れます。







- サイト に、要求よりも優先度の低いプロセスとの未処理のメッセージがある場合、 サイト は、現在 サイト によってクリティカル セクションへのアクセスを許可されているプロセスにメッセージを送信します。(つまり、未処理のメッセージがあるサイトです。)






- メッセージを受信すると、サイトは次の処理を実行します。


- サイトが他のサイトからメッセージを受信した場合、または他のサイトに yield を送信したが新しいメッセージを受信していない場合に限り、サイトにメッセージを送信します。





- メッセージを受信すると、サイトは次の処理を実行します。


- リクエストキューの先頭にあるリクエストにメッセージを送信します。先頭にあるリクエストは最も優先度が高いことに注意してください。

- リクエスト キューに配置します。

- メッセージを受信すると、サイトは次の処理を実行します。


- リクエスト キューから削除します。

- リクエスト キューの先頭にあるリクエストにメッセージを送信します。

クリティカルセクション:
- サイトは、 内のすべてのサイトからメッセージを受信すると、クリティカル セクションに入ります。



- クリティカル セクションを終了すると、内のすべてのサイトにメッセージを送信します。



クォーラム セット ( )
:
クォーラム セットは次のプロパティに従う必要があります。
![{\displaystyle \forall i\,\forall j\,[R_{i}\bigcap R_{j}\neq \emptyset ]}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \forall i\,[P_{i}\in R_{i}]}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \forall i\,[|R_{i}|=K]}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- サイトはリクエストセットに正確に含まれています


- したがって:

- ネットワークメッセージの数;


- 同期遅延: 2 メッセージ伝播遅延
- 保護対策を講じないとアルゴリズムがデッドロックする可能性があります。[1] [2]
参照
参考文献
- ^ 「前川の相互排除アルゴリズム:投票アプローチ」。
- ^ 「分散相互排除」(PDF) .
- M. Maekawa、「分散システムにおける相互排除のための√Nアルゴリズム」、ACM
コンピュータシステムに関する取引、第3巻、第2号、pp.145-159、1985年。
- 前川守、アーサー・E・オルデホフト、ロドニー・R・オルデホフト (1987). 『オペレーティングシステム:高度な概念』 Benjamin/Cummings Publishing Company, Inc.
- B. サンダース (1987). 分散型相互排除アルゴリズムの情報構造. ACM Transactions on Computer Systems, Vol. 3, No. 2, pp. 145–59.