Для Linux RCU, в течение льготного периода, возможно ли, чтобы новый писатель обновил новые данные?
Я новичок в Linux и изучаю раздел RCU. Я видел, что есть льготный период во время операции. Просто хочу знать, хочет ли какой-нибудь новый писатель обновить данные в течение льготного периода, возможно ли это? Я думаю, что есть два пути:
В течение льготного периода он поставляется с блокировкой записи
RCU может работать на RCU, что означает, что он создает новый RCU на старом RCU, ожидает завершения нового RCU и затем старый RCU завершает льготный период.
Какой способ является правильным для Linux?
1 ответ
Просто хочу знать, хочет ли какой-нибудь новый писатель обновить данные в течение льготного периода, возможно ли это?
Да, это возможно. Писателю не нужно ждать, пока закончится льготный период. Кроме того, льготный период важен для стадии восстановления (проще говоря, после удаления мы ожидаем, что читатели, получившие доступ к данным (до нашего удаления), завершат работу с ними и выйдут из критического раздела, например, через rcu_read_unlock()
, тогда мы можем освободить его).
Кроме того, основываясь на том факте, что RCU поддерживает параллелизм между одним средством обновления и несколькими считывателями, это не столько вопрос RCU. Поэтому, если у вас есть несколько средств обновления, следует применить соответствующую блокировку.
Довольно часто RCU используется вместе со спин-блокировками для разрешения параллелизма между модулями обновления. Таким образом, вы можете увидеть несколько ярких примеров использования RCU с несколькими модулями обновления в исходном коде ядра Linux.
Полезные ссылки:
- Что такое RCU? - "Чтение, копирование, обновление" (полная статья с дополнительными ссылками и простыми примерами использования)
- Тур по требованиям RCU