これは、やさしいアルゴリズムだ!

【 これは、やさしいアルゴリズムだ!】

今回は、排他制御のアルゴリズムとして、ランポートの「bakery アルゴリズム」というのを紹介しようと思います。

「bakeryアルゴリズム」は、「パン屋のアルゴリズム」ということです。混雑している人気のパン屋をイメージしましょう。こんな感じです。

● パン屋の店先には、番号付きの整理券を発行する機械がある。整理券の番号は一つづつ増えていく。
● お客は、パン屋に入る前に、機械から整理券を受け取る。同時に一人しか整理券を受け取れない。
● パン屋には、一つのレジしかない。一番小さな番号の整理券を持ったお客から、パンを買うことができる。

パン屋じゃなくても病院でも銀行でも、身の回りの日常で混雑整理の方法として、よくみる風景ですね。

最初に、先行したダイクストラらのアルゴリズムの特徴をおさらいしておきましょう。それは、次のような性質を持っていました。

● どの時点でも、多くても一つのコンピュータしかcritical sectionに入ることができない。● どのコンピュータも、(途中でマシンが停止しなければ)最終的にはいずれcritical sectionに入ることができる。
● どのコンピュータも、非critical sectionで停止しても構わない。また、それぞれのコンピュータの処理スピードは問わない。

ランポートのアルゴリズムでは、最後の実際にレジでパンを買うところが、critical sectionに入ることに相当します。ダイクストラらの排他制御アルゴリズムの特徴を、ランポートのbakery アルゴリズムが持つことは、直感的には明らかに思えます。

だって、

 レジでパンを買えるのは、一人だけ。
 整理券を持っていれば、いずれ、パンを買える。
 途中で店を抜けても、時間をかけてゆっくりパンを選んでも構わない。

ですからね。

その上、アルゴリズムはとてもわかりやすいですね。ソースにコメントを入れました。ダイクストラのアルゴリズムでギブアップした人も、ランポートのアルゴリズムのわかりやすさを体験ください。

ただ、アルゴリズムのわかりやすさだけが、ランポートのアルゴリズムのメリットではないのです。実は、ダイクストラらのアルゴリズムには(クヌース、ド・ブルイジンらの「改良版」でも共通に)、実践的には弱点がありました。

それは、N台のコンピュータがコミュニケーションに利用する「共有領域」の読み書きに障害が発生すると、このアルゴリズムは機能しなくなるという弱点です。

ランポートのアルゴリズムでは、排他制御に重要な役割をはたすそれぞれのマシンが受け取ったチケットの番号を、N台のマシン全体が共有する領域に置くのではなく、それぞれのマシンが持ちます。その値を、外部のマシンから読み出すことは可能であることにします。

ダイクストラらのアルゴリズムは、共有領域に置かれた k, b[k]の読み書きが、アトミックに行われることに依存しています。別の言葉で言えば、システム全体の排他性は、システムの一部の排他性を保証することによって成り立っています。これは微妙な、奥の深い問題です。

ランポートのアルゴリズムで、他のマシンのチケット番号を全て読み出す操作は、アトミックなものにはなり得ないはずです。それに対するランポートの答えは驚くべきものなのですが。難しい話は後にしましょう。

-------------------------------------------

セッションの動画のURL
https://youtu.be/uvx9dE5J788?list=PLQIrJ0f9gMcOeqlB09PdBddfXLv2QjG-F

スライドのpdf
https://drive.google.com/file/d/130ERBEEOCG4SIMs4WD3_s5HpZNHDRYXS/view?usp=sharing

関連blog 「これは、やさしいアルゴリズムだ!」https://maruyama097.blogspot.com/2022/07/blog-post_08.html

参考資料

Leslie Lamport, A new solution of Dijkstra's concurrent programming problem ,Communications of the ACM Volume 17 Issue 8 Aug. 1974 pp 453–455
https://dl.acm.org/doi/pdf/10.1145/361082.361093 

セミナーのまとめページ
https://www.marulabo.net/docs/concurrent/

セミナー告知・申込ページ
https://concurrent.peatix.com/view

-------------------------------------------


コメント

このブログの人気の投稿

マルレク・ネット「エントロピーと情報理論」公開しました。

初めにことばありき

人間は、善と悪との重ね合わせというモデルの失敗について