RCUの単純な実装とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > RCUの単純な実装の意味・解説 

RCUの単純な実装

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

リード・コピー・アップデート」の記事における「RCUの単純な実装」の解説

RCUおもちゃ的な実装考えるとRCU理解しやすいだろう。ここではそのような簡単な実装説明する。この実装プリエンプション不可環境でのみ動作することに注意void rcu_read_lock(void) { }void rcu_read_unlock(void) { }void call_rcu(void (*callback) (void *), void *arg){// add callback/arg pair to a list}void synchronize_rcu(void){int cpu, ncpus = 0;for_each_cpu(cpu) schedule_current_task_to(cpu); for each entry in the call_rcu list entry->callback (entry->arg);} rcu_assign_pointer と rcu_dereference_pointer を無視して大勢影響はないが、いずれにしろ、以下のようになる。 #define rcu_assign_pointer(p, v)({ \smp_wmb(); \(p) = (v); \})#define rcu_dereference_pointer(p) ({ \ typeof(p) _value = (p); \ smp_rmb(); /* not needed on all architectures */ \ (_value); \ }) rcu_read_lock と rcu_read_unlock は全く何もしないプリエンプション不可な古いカーネルでは、このように参照側のオーバヘッドは全く無い(メモリバリアが必要となるのは DEC Alpha だけである)。したがって rcu_read_lock がデッドロック状態になることもなく、リアルタイムプロセスがスケジューリングデッドライン陥るともなく優先順位の逆転発生するともなくロック衝突激しく発生するともない。 synchronize_rcu の実装は、synchronize_cpu を呼び出した者を各CPU移動させ、全CPUコンテキストスイッチ可能となるまでブロックさせる。プリエンプション不可なのでRCU参照クリティカルセクション内でプリエンプション発生せず、あるCPUで(他のプロセススケジュールする)コンテキストスイッチ起きたときにはそれ以前RCU参照クリティカルセクション完了しているはずである。全CPUコンテキストスイッチ起きたら、既存RCU参照クリティカルセクション全て完了していることを保証できる

※この「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