gpt4 book ai didi

c - 如何保护 RCU 阅读器部分免于抢占?

转载 作者:太空狗 更新时间:2023-10-29 15:26:11 26 4
gpt4 key购买 nike

(来自 LWN 上的一篇文章)

 1 rcu_read_lock();
2 list_for_each_entry_rcu(p, head, list) {
3 do_something_with(p->a, p->b, p->c);
4 }
5 rcu_read_unlock();

RCU 更新操作将执行 synchronize_rcu() 以断言每个 CPU 已切换上下文,因此每个 RCU 读取器已完成其工作。但 RCU 必须依赖 reader 不被抢占。事实上,LWN 接下来说:

Although this simple approach works for kernels in which preemption is disabled across RCU read-side critical sections, in other words, for non-CONFIG_PREEMPT and CONFIG_PREEMPT kernels, it does not work for CONFIG_PREEMPT_RT realtime (-rt) kernels.

我知道非 CONFIG_PREEMPT 内核禁用抢占,但为什么 CONFIG_PREEMPT 内核也可以抢占?

最佳答案

在 CONFIG_PREEMPT 内核上是可以的,因为在任务被抢占之前注意完成 rcu 读取临界区。调度程序检查当前任务是否在 rcu 读取临界区中,如果是,它会提高其优先级以完成临界区。有关详细信息,请参阅本文:http://lwn.net/Articles/220677/

关于c - 如何保护 RCU 阅读器部分免于抢占?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32260422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com