RCUインタフェースの例とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > RCUインタフェースの例の意味・解説 

RCUインタフェースの例

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/01/13 15:24 UTC 版)

リード・コピー・アップデート」の記事における「RCUインタフェースの例」の解説

RCUはいくつかのOS利用可能であり、Linuxカーネルには2002年10月追加された。liburcu などのユーザーレベルの実装利用可能である。 Linuxカーネル 2.6 でのRCU実装はよく知られており、以下ではそれを元に RCU API について解説する中核となるAPI極めて小さい。 rcu_read_lock(): RCU保護されデータへの参照開始することを示す。それによってクリティカルセクション間中対象データ再利用されないようにする。 rcu_read_unlock(): 参照者が使用し参照者が参照クリティカルセクションから出たことを更新者に通知するRCU参照クリティカルセクションネスト可能であり、オーバーラップ可能である。 synchronize_rcu(): 全CPU上の既存RCU参照クリティカルセクション全て完了するまでブロックされる。synchronize_rcu は後続RCU参照クリティカルセクションを待つ必要はない。たとえば、以下のようなイベントの流れ考えてみよう。 CPU 0 CPU 1 CPU 2 ----------------- ------------------------- --------------- 1. rcu_read_lock() 2. enters synchronize_rcu() 3. rcu_read_lock() 4. rcu_read_unlock() 5. exits synchronize_rcu() 6. rcu_read_unlock() synchronize_rcu は参照者が参照完了したことを判定するAPIであり、RCU実装の要である。RCUは特に参照多く更新滅多にない場合に有効であり、synchronize_rcu のオーバーヘッド極めて小さくなければならないブロックする代わりに synchronize_rcu でコールバック関数引数登録し動作中のRCU参照クリティカルセクション完了したときにそれがコールされるようにする実装もある。Linuxカーネルでは、このコールバック型のAPIを call_rcu と呼ぶ。 rcu_assign_pointer(): 更新者が使用し更新者から参照者に安全に変化伝えRCU保護されポインタ更新する。この関数は、CPUアーキテクチャ必要なメモリバリア命令実行し新たな値を返す。もっと重要な点として、この関数はどのポインタRCUによって保護されているかを保証する。 rcu_dereference_pointer(): RCU保護されポインタフェッチするために参照者が使用し、そのポインタ指している値を安全に得る。また、CPUアーキテクチャ必要なメモリバリア命令実行する。rcu_dereference_pointer が返す値はRCU参照クリティカルセクション内でのみ有効である。rcu_assign_pointer との関連で rcu_dereference_pointer の重要な機能は、どのポインタRCU保護されているかを示すことである。 以下の図は各API参照者、更新者、再利用者の間でどう関係しているかを示している。 rcu_assign_pointer() +--------+ +---------------------->| 参照者 |---------+ | +--------+ | | | | | | | 保護: | | | rcu_read_lock() | | | rcu_read_unlock() | rcu_dereference() | | +---------+ | | | 更新者 |<---------------------+ | +---------+ V | +-----------+ +----------------------------------->| 再利用者 | +-----------+ 遅延: synchronize_rcu() & call_rcu() RCU内部機構は rcu_read_lock, rcu_read_unlock, synchronize_rcu, call_rcu が呼び出され順番記憶し、(1) synchronize_rcu がそれらの呼び出し側への戻り設定するか、(2) call_rcu のコールバック呼び出される順番決定する効果的な実装としては、各APIオーバヘッド減らして背後バッチ的に処理するほうがよい。

※この「RCUインタフェースの例」の解説は、「リード・コピー・アップデート」の解説の一部です。
「RCUインタフェースの例」を含む「リード・コピー・アップデート」の記事については、「リード・コピー・アップデート」の概要を参照ください。

ウィキペディア小見出し辞書の「RCUインタフェースの例」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「RCUインタフェースの例」の関連用語

RCUインタフェースの例のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



RCUインタフェースの例のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのリード・コピー・アップデート (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS