教科書相互排除アルゴリズムの実際的な関連性は何ですか?


8

相互排除アルゴリズムについてはかなりの量の研究が行われています。たとえば、その多くは、マルチプロセッサプログラミングのような古典的な教科書で紹介されており、章全体がそれらに向けられています。

一般的な言語とOSが提供する同期プリミティブ(たとえば、pthreadライブラリによって提供される)を使用するのではなく、コンカレントシステムのエンジニアリング中にこれらのアルゴリズムが必要になる可能性がある実際の状況は何でしょうか。

標準のプリミティブが特別に調整されていないと思われる多くの特殊なケースを考えることができます。 -そのような状況での実践において、教科書の相互排除アルゴリズムのいずれかが大幅に改善されていますか?

簡単に言えば、どの相互排除アルゴリズムが、並行処理プリミティブの典型的な言語提供ライブラリをすでに自由に使えるエンジニアに実際に関連していますか?


これは、数十年前にこれらの「プリミティブ」を作成する際の活発な研究分野であり、エンジニアリングの実践において大幅に変化しました。また、これのいくつかは、実際に適用されることを必ずしも意図されていない可能性についての理論的な作業でした。一部の構造はやや人工的であり、未解決の理論的な質問に答えます。それらは、同時実行性の多くの/驚くべき微妙な点を理解し、領域に直感を構築するのに役立つ演習です。
vzn 2014年

回答:


6

回答:なし。それは、HerlihyとShavitのThe Art of Multiprocessor Programmingに関するセクションではありません。相互排除に関する章では、HerlihyとShavitはpthreadライブラリに代わるものを提供しておらず、ライブラリと同等のものを実装する方法を示していますpthread

HerlihyとShavitの第2章のタイトルは「相互排除」です。pthread_mutex_lock()逐次一貫した共有メモリのみと同等のものを実装するためのさまざまなクラシックアルゴリズムを提供します。私の回答https://cs.stackexchange.com/a/12632/7459およびhttps://cs.stackexchange.com/a/30249/7459は、これらの実装の重要性について説明しており、実用的な実装へのポインタを持っていますハードウェア同期操作が組み込まれていないマシンで使用します。(Lamportの1987年のACM Trans。on Computer Systemsの論文)。

HerlihyおよびShavitの第7章ではpthread_mutex_lock()、と同等のさまざまなスピンロックおよびキューロックの実装を提供し、第8章ではpthread_cond_t(条件変数)、pthread_rwlock_t(リーダー/ライターロック)について説明し、に簡単に触れsemaphoresます。パフォーマンス上の理由で(通常はそうではない)のpthread_rwlock_t代替として使用できる状況がありpthread_lock_t、Posixではsemaphoresプロセス間同期に使用する必要がある場合があります。

第9章から第16章では、主にアプリケーション(さまざまな種類の同時コンテナ)について説明します。第17章では、の同等物について簡単に説明しpthread_barrier_tます。

そうは言っても、HerlihyとShavitは、トランザクションメモリとさまざまな種類の非ブロッキング(および待機なし)同期の最も声高な提案者の2つです。これらの手法は、特定の場合に相互排除の代替手段として意図されています。HerlihyとShavitは、第9章から第16章までのさまざまな非ブロッキング実装を散りばめ、第18章でトランザクションメモリの詳細について説明します。

トランザクションメモリおよびその他の非ブロッキング同期手法は、一部の不適切に設計されたアルゴリズムが、クリティカルセクションを非常に長時間保持する必要のあるスレッドの問題に対処することを目的としています。トランザクションメモリと真にノンブロッキングの同期は、現在、実際の状況では実用的な代替手段ではありませんが、ブロッキングデータ構造をノンブロッキングデータ構造に変換する手法は、ブロッキングデータ構造がクリティカルにとどまる時間を最小限に抑えるために実際に役立ちます。セクション。(多くの場合、クリティカルセクションのサイズをいくつかの機械語命令に減らすことができます。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.