アルゴリズムを図解する

 【 「パン屋のアルゴリズム」を図解する 】

このセッションでは、ランポートのアルゴリズムが正しいことを、ランポートの論文に従って示そうと思います。できるだけ図を使おうと思います。

ランポートは、アルゴリズムについての「三つの主張」が正しいことを示すことで、「パン屋のアルゴリズム」の正しさを証明しようとします。

三つの主張で重要なのは、critical section に入れるのは一つのプロセッサーだけだという主張(主張 2)と、レジ待ちのプロセッサーは、いずれ、critical section に入るという主張(主張 3)の二つです。

前者(主張 2)は、排他制御の safety という性質で、後者(主張 3)は、排他制御の liveness という性質です。ただし、この論文では、ランポートは、こうした言葉を使っていません。

アルゴリズム自身が進化・発展するだけでなく。アルゴリズムの記述のスタイル、アルゴリズムの正しさの証明のスタイルも時代と共に変化していることに留意してください。

このセッションで見るアルゴリズムの正しさの証明は、チケット番号全体に対する読み書きが、アトミックに行われる必要はないことを示しています。このbakeryアルゴリズムは、その値がコンカレントに書き込まれたものでないとしても、その読み出しが正しい値を返すならば、正しいのである。書き込みと重なった読み出しがどんな値を返すかは問題ではないのです。

コンカレントな書き込みによって9から10に変わろうとしているある数の読み出しが、2496という値を返したとしても、このアルゴリズムは正しいのです。

bakeryアルゴリズムの、この驚くべき性質は、それがプロセスがチケット番号に相互排除的にアクセスすることを想定していない相互排除のアルゴリズムの実装であることを意味しています。それは、下位のレベルの相互排除を前提としない、相互排除アルゴリズムの最初の実装です。 

1973年当時は、そうしたことは不可能だと考えられていました。1990年になっても、専門家でさえ、それは不可能だと考えていたように見えます。

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

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

スライドのpdf
https://drive.google.com/file/d/13B_0_s74kk-b7MpQpkV3Ceq3Xdqp3P97/view?usp=sharing

関連blog 「アルゴリズムを図解する」https://maruyama097.blogspot.com/2022/07/blog-post_11.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

 Lamport, L. A new approach to proving the correctness of multi-process programs. ACM Trans. Program.Lang. Syst. 1, 1 (July 1979), 8497. https://lamport.azurewebsites.net/pubs/new-approach.pdf 

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

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

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


コメント

このブログの人気の投稿

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

初めにことばありき

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