💨

分散処理を勉強した記録~その14~

2020/12/26に公開

この記事は、
「分散処理システム」著:真鍋義文 森北出版株式会社
を参考にしています。

今回は、「優先度つきキュー」です。
優先度とプロセスIDを持った要素のキューを用意します。

このキューにおいては、優先度の順番に要素を並び替えます。

そのため、後から到着した要素の方が割り込むこともあります。

この優先度つきキューを採用した複数管理プロセスによる分散相互作用排除アルゴリズムを考えてみます。

上部の管理プロセスの持つwaitingに優先度キューを用います。

プロセスID「1」のプロセスがリソースを使いたい時、
管理プロセスにリクエストを送信します。
この時、現在の時刻t1と自分のプロセスIDを送信します。

管理プロセスはwaitingにプロセスID「1」を追加し、
送信元のプロセスに「OK」を送信します。
その後、管理プロセスのstatusを「sendOK」に変更します。

プロセスID「1」のプロセスは、
「OK」を受信した管理プロセスのIDをReceivedに格納します。
全ての管理プロセスのIDがReceivedに格納されている場合、
リソースを使うことができます。
プロセスID「1」のプロセスはリソースを使用した後、
管理プロセスに「Release」メッセージを送信します。

「Release」メッセージを受信した管理プロセスは、
statusを「null」、waitingを初期化します。

今回はここまでです。ありがとうございました。

Discussion