次章へ。その前に ..

【 次章へ。その前に ... 】

今回から、「生産者消費者同期」の話題に入ろうと思います。

「生産者消費者同期」問題というのは、データを生み出すデバイス(生産者)とデータを受け取るデバイス(消費者)との間をどう同期させるのがいいのかという問題です。

コンピュータが誕生したその最初期から、ハードウェア的な「バッファー」は使われてきました。バッファーのコントロールは、典型的な「生産者消費者同期」問題です。
  
その前に、というか、その最初に、ダイクストラの  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

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

コメント

このブログの人気の投稿

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

初めにことばありき

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