次章へ。その前に ..
【 次章へ。その前に ... 】
今回から、「生産者消費者同期」の話題に入ろうと思います。
「生産者消費者同期」問題というのは、データを生み出すデバイス(生産者)とデータを受け取るデバイス(消費者)との間をどう同期させるのがいいのかという問題です。
コンピュータが誕生したその最初期から、ハードウェア的な「バッファー」は使われてきました。バッファーのコントロールは、典型的な「生産者消費者同期」問題です。
その前に、というか、その最初に、ダイクストラの semaphore を取り上げようと思います。というのも、この問題を初めて並列プログラミングの問題として捉え、semaphoreを利用してこの問題を定式化したのは、ダイクストラだったからです。
semaphoreの性質をまとめておきましょう。
● semaphore というのは、全てのプロセスから共通にアクセスできる、0 または 正の整数値を取る変数のことです。
● semaphore には、値を +1だけ増やす操作と、値を -1だけ減らす操作が用意されています。
● semaphoreに対する操作は、アトミックに行われます。(他のプロセスが操作途中に介在することを許さない)
これだけですが、semaphoreの導入は、並列アルゴリズムの記述に、大きな威力を発揮します。
今回のセッションでは、以前見たダイクストラの 「排他制御アルゴリズム」と、これから見ていく「生産者消費者同期アルゴリズム」が、semaphore を使うとどう記述できるかを紹介したいと思います。
-------------------------------------------
セッションの動画のURL
https://youtu.be/KFOxAummbBg?list=PLQIrJ0f9gMcOeqlB09PdBddfXLv2QjG-F
スライドのpdf
https://drive.google.com/file/d/13xbaDAWvH0ETk-KZFHEYzVViM32TJYjz/view?usp=sharing
関連blog 「次章へ。その前に ...」
https://maruyama097.blogspot.com/2022/07/blog-post_15.html
参考資料
Dijkstra, E.W. Cooperating sequential processes. In Programming Languages. F. Genuys, ed. Academic Press, New York, 1968, 43112. Originally appeared as EWD123(1965).
https://www.cs.utexas.edu/users/EWD/transcriptions/EWD01xx/EWD123.html
https://pure.tue.nl/ws/files/4279816/344354178746665.pdf
セミナーのまとめページ
https://www.marulabo.net/docs/concurrent/
セミナー告知・申込ページ
https://concurrent.peatix.com/view
-------------------------------------------
コメント
コメントを投稿