無理は承知で ...

【 無理は承知で ... 】

このセッションでは、ランポートの「パン屋のアルゴリズム」の新しいバージョンを紹介します。

何が新しいかというと、彼はアルゴリズムを記述するのに「並列にプロセスを実行する」という命令を導入して、その命令を使って「パン屋のアルゴリズム」を書き換えました。

以前のアルゴリズムそのものにに不満があったというより、そのアルゴリズムの「正しさの証明」 -- Assertiion ベースの証明に不満があったようです。

アルゴリズムの新しい記述法の導入にともなって、「並列にプロセスを実行する」とはどういうことなのか、「プロセスの相互排除」とはどういうことなのかを、改めて考えることになりました。

彼が注目したのは、時間の問題です。プロセスAの実行時間とプロセスBの実行時間の、時間軸上での関係を考えます。

プロセスAの実行が完全に終わってからプロセスBの実行がはじまる、あるいは、その逆に、プロセスBの実行が完全に終わってからプロセスAの実行がはじまるなら、それは、プロセスAとプロセスBの「並列実行」とは言いません。

並列実行(コンカレントな)実行というのは、二つ以上のプロセスが同時あるいは時間的には重複して実行される状態をさします。

critical section にはたかだか一つのプロセスの侵入しか許さないという、プロセスの相互排除が目指している状態は、それとは、まったく逆のものです。

プロセスAの実行が完全に終わってからプロセスBの実行がはじまる、あるいは、プロセスBの実行が完全に終わってからプロセスAの実行がはじまること、それが、プロセスAとプロセスBの相互排除です。

時間の流れが、過去から未来に一方向に流れている様に見えるのですが、世の中には、同時に起きることはたくさんあります。継起するイベントと同時に起きるイベントの数を比較してみてもいいのですが、「同時性」という概念自体、きちんと定義されるわけではありません。

とまれ、同時に走る並行プロセスでプロセスの相互排除を実現しようとすることは、本来同時並行に生起するものを無理やり一列に並ばせるようなものです。もちろん、こうした原理的には困難に思える無理を承知で、可能なアルゴリズムを模索しているのです。

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

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

スライドのpdf
https://drive.google.com/file/d/13l9qxGZ6VNI_rk-t5k-B6NmaAR15f-RM/view?usp=sharing

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

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


コメント

このブログの人気の投稿

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

初めにことばありき

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