前川のアルゴリズム

前川アルゴリズムは、分散システムにおける相互排除アルゴリズムです。このアルゴリズムの基礎は、クォーラムに似たアプローチであり、任意の1つのサイトは他のサイトのサブセットからのみ許可を求める必要があります。

アルゴリズム

用語

  • サイトは、前川のアルゴリズムを実行するあらゆるコンピューティングデバイスである。
  • クリティカルセクションに入る要求の1つに対して:
    • 要求元サイトとは、クリティカル セクションに入ることを要求しているサイトです。
    • 受信サイトとは、要求サイトからの要求を受信する他のすべてのサイトです。
  • tsは、論理クロックに従ったシステムのローカルタイムスタンプを指します。

アルゴリズム

リクエストサイト:

  • 要求元サイトは、クォーラム セット内のすべてのサイトにメッセージを送信します P {\displaystyle P_{i}} リクエスト t s {\displaystyle {\text{request}}(ts,i)} R {\displaystyle R_{i}}

受取場所

  • メッセージを受信すると、受信サイトは次の処理を実行します。 リクエスト t s {\displaystyle {\text{request}}(ts,i)} P j {\displaystyle P_{j}}
    • site に未処理のメッセージ (つまり、解放されていないメッセージ)がない場合、 site はsite にメッセージを送信します P j {\displaystyle P_{j}} 付与 {\displaystyle {\text{grant}}} 付与 {\displaystyle {\text{grant}}} P j {\displaystyle P_{j}} 付与 j {\displaystyle {\text{grant}}(j)} P {\displaystyle P_{i}}
    • サイトに、要求よりも優先度の高いプロセスに関する未処理のメッセージがある場合、サイトはサイトにメッセージを送信し、サイトはサイトからの要求をキューに入れます P j {\displaystyle P_{j}} 付与 {\displaystyle {\text{grant}}} P j {\displaystyle P_{j}} 失敗した j {\displaystyle {\text{失敗}}(j)} P {\displaystyle P_{i}} P j {\displaystyle P_{j}} P {\displaystyle P_{i}}
    • サイト に、要求よりも優先度の低いプロセスとの未処理のメッセージがある場合、 サイト は、現在 サイト によってクリティカル セクションへのアクセスを許可されているプロセスにメッセージを送信します。(つまり、未処理のメッセージがあるサイトです。) P j {\displaystyle P_{j}} 付与 {\displaystyle {\text{grant}}} P j {\displaystyle P_{j}} 問い合わせる j {\displaystyle {\text{問い合わせ}}(j)} P j {\displaystyle P_{j}} 付与 {\displaystyle {\text{grant}}}
  • メッセージを受信すると、サイトは次の処理を実行します。 問い合わせる j {\displaystyle {\text{問い合わせ}}(j)} P {\displaystyle P_{k}}
    • サイトが他のサイトからメッセージを受信した場合、または他のサイトに yield を送信したが新しいメッセージを受信して​​いない場合に限り、サイトにメッセージを送信します 収率 {\displaystyle {\text{収量}}(k)} P j {\displaystyle P_{j}} P {\displaystyle P_{k}} 失敗した {\displaystyle {\text{失敗}}} P {\displaystyle P_{k}} 付与 {\displaystyle {\text{grant}}}
  • メッセージを受信すると、サイトは次の処理を実行します。 収率 {\displaystyle {\text{収量}}(k)} P j {\displaystyle P_{j}}
    • リクエストキューの先頭にあるリクエストにメッセージを送信します。先頭にあるリクエストは最も優先度が高いことに注意してください。 付与 j {\displaystyle {\text{grant}}(j)}
    • リクエスト キューに配置します。 P {\displaystyle P_{k}}
  • メッセージを受信すると、サイトは次の処理を実行します。 リリース {\displaystyle {\text{リリース}}(i)} P j {\displaystyle P_{j}}
    • リクエスト キューから削除します。 P {\displaystyle P_{i}}
    • リクエスト キューの先頭にあるリクエストにメッセージを送信します。 付与 j {\displaystyle {\text{grant}}(j)}

クリティカルセクション:

  • サイトは、 内のすべてのサイトからメッセージを受信すると、クリティカル セクションに入ります P {\displaystyle P_{i}} 付与 {\displaystyle {\text{grant}}} R {\displaystyle R_{i}}
  • クリティカル セクションを終了すると、内のすべてのサイトにメッセージを送信します P {\displaystyle P_{i}} リリース {\displaystyle {\text{リリース}}(i)} R {\displaystyle R_{i}}

クォーラム セット ( ) R × {\displaystyle R_{x}} :
クォーラム セットは次のプロパティに従う必要があります。

  1. j [ R R j ] {\displaystyle \forall i\,\forall j\,[R_{i}\bigcap R_{j}\neq \emptyset ]}
  2. [ P R ] {\displaystyle \forall i\,[P_{i}\in R_{i}]}
  3. [ | R | K ] {\displaystyle \forall i\,[|R_{i}|=K]}
  4. サイトはリクエストセットに正確に含まれています P {\displaystyle P_{i}} K {\displaystyle K}
したがって: | R | 1 {\displaystyle |R_{i}|\geq {\sqrt {N-1}}}

パフォーマンス

  • ネットワークメッセージの数; 3 {\displaystyle 3{\sqrt {N}}} 6 {\displaystyle 6{\sqrt {N}}}
  • 同期遅延: 2 メッセージ伝播遅延
  • 保護対策を講じないとアルゴリズムがデッドロックする可能性があります。[1] [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.
「https://en.wikipedia.org/w/index.php?title=Maekawa%27s_algorithm&oldid=1306919367」より取得