Read-copy-update
Read-copy-update (RCU) — один із механізмів синхронізації в інформатиці, що забезпечує ексклюзивний доступ до спільного ресурсу; застосовується для розв'язання задачі читачів та записувачів.
Перевагами RCU над read–write lock є:
- малі накладні витрати на блокування, бо немає ексклюзивного блокування, оскільки операція запису є атомарною;
- операції читання виконуються без затримки (англ. wait-free).
Недоліками є:
- додаткові ресурси пам'яті та часу на створення копії даних при кожному записі.
Алгоритм :
- rcu_read_lock() — встановлює спільний блок на поточну версію даних, блокуючи її від видалення;
- rcu_read_unlock() — знімає блок з версії даних;
- rcu_assign_pointer() — атомарна операція оновлення вказівника на дані, щоб він показував на новосторену версію.
- synchronize_rcu() — очікує зняття всіх блоків з даної версії даних і видаляє її.
Див. також
Посилання
- Paul E. McKenney, Mathieu Desnoyers, and Lai Jiangshan: User-space RCU. Linux Weekly News.
- Paul E. McKenney and Jonathan Walpole: What is RCU, Fundamentally?, What is RCU? Part 2: Usage, and RCU part 3: the RCU API. Linux Weekly News.
- Paul E. McKenney's RCU web page
- Hart, McKenney, and Demke Brown (2006). Making Lockless Synchronization Fast: Performance Implications of Memory Reclamation An IPDPS 2006 Best Paper comparing RCU's performance to that of other lockless synchronization mechanisms. Journal version (including Walpole as author).
- U.S. Patent 5 442 758 (1995) "Apparatus and method for achieving reduced overhead mutual exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring"
- Paul McKenney: Sleepable RCU. Linux Weekly News.
Джерело: стаття у Вікіпедії та історія редагувань (автори).