问题标签 [rcu]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
concurrency - 当所有线程都是潜在的更新者时,rcu 在某种程度上有用吗?
我的问题实际上是针对 linux 的 rcu list 实现的。我需要为从列表中读取并更新(比如删除该条目)的任何关键部分保留一个自旋锁,因为它在读取后看到的 rcu 版本可能不适合更新。因此,就我而言,我有大多数线程在某个时间点进行更新。您是否认为有一种方法可以在这种情况下有效地利用(即最小化持有自旋锁的部分)rcu 实现?
memory-management - RCU 作为传统垃圾收集的替代品
Read-Copy-Update (RCU) 是一种手动内存管理技术,在 Linux 内核中越来越流行。
是否可以设计一种语言和虚拟机,使用 RCU 而不是传统的垃圾收集器来回收无法访问的内存?
oracle11g - 通过 RCU 安装时找不到 MDS 和 BIPLATFORM 存储库
我的目标是安装 OBIEE 11g。
1) 我安装了 Oracle DB 11 2) 安装了 Oracle SQL Developer 3) 测试了连接并且它工作了 4) 我有 SYS,SYSDBA 用户运行良好,具有所有权限 5) 我从 Oracle 下载了 RCU for Windows 64 位。我正在运行 Windows 8。 6) 在安装 RCU 时,我找不到存储库 MDS 和 BIPLATFORM。我看到的唯一模式如图所示。我有 sysdba 权限,我通过 SQL 开发人员成功测试了 SYS/SYSDBA 的测试连接。
data-structures - smp_wmb() 函数是否可以防止编译器和 CPU 重新排序指令?
代码是:
我知道 smp_wmb() 的功能可以防止编译器从wiki重新排序指令。
但是 RCU 有哪些方法可以防止 CPU 重新排序呢?
linux - 是否有必要在 softirq 上下文中调用 rcu_read_lock
rcu_read_lock 的实现是禁用抢占和屏障。并且 softirq 上下文不会被抢占。那么是否有必要在 softirq 上下文中调用 rcu_read_lock。屏障重要吗?
rcu - RCU锁中的发布-订阅机制和读端临界区
问题一:
在介绍RCU锁的文章中,他写了一个发布-订阅机制。但是我有一个关于rcu_assign_pointer()的问题,在这篇文章中,他说:
rcu_assign_pointer() 将发布新结构,强制编译器和 CPU 在分配给 p 引用的字段之后执行对 gp 的分配。
但是编译器和CPU怎么知道p已经被赋值了呢?比如我只是初始化了p->a和p->b,那么编译器和CPU如何区分这两种情况呢?
问题2:
至于读端临界区,如果有连续的reader读取数据,是writer必须等待还是writer不能进行同步操作?如果是,读者会一直阅读旧版本吗?
linux - rcu_read_lock 中的 spin_lock_irqsave 和 alloc
你好,
我有一个驱动程序代码,它应该适用于接口上接收到的某些数据包。驱动程序使用 spin_lock_irqsave 来管理并行此类请求,然后再将其提供给硬件。
要处理数据包,它需要我正在编写的内核模块提供的一些上下文信息。可以使用受 rcu 保护的 hlist 管理多个上下文信息。现在,当数据包到达时,该模块应该使用 rcu_read_lock() 中的数据包签名查找上下文信息,然后将数据包和找到的上下文提供给驱动程序。
现在,我已经读到内核线程/模块不应该在 rcu_read_lock() 中阻塞/休眠,我应该如何管理它。
任何帮助表示赞赏?
linux - 由 rcu 保护的多个列表
你好,
我是 linux 内核中 rcu 锁定机制的新手。
在尝试了解 rcu 的工作原理和提供的 API 时,我看到 rcu_read_lock()、rcu_synchronize() 没有使用任何锁实例。那么,假设我有 n 个要使用 RCU 保护的独立列表,reads 和 synchronise() 是否保证可以正常工作?
如果这个问题看起来太天真,请原谅我
提前致谢。
c - 从Linux内核中的并发哈希图中删除所有条目
我正在编写一个内核模块,它使用模块范围的哈希图来存储连接。我想释放所有这些连接,当模块被卸载时,从 hashmap 中删除它们,然后删除整个 map。
我定义了哈希图:
添加条目
最后要删除所有条目:
我的问题:
- 我可以在 for 循环中删除 hash_for_each_rcu 吗?
- 如何使这个线程安全?
- 我需要为 hashmap 调用类似 free_hash 的东西吗?(我的猜测是没有,因为它是一个数组并且没有调用 kalloc,但我对 c 不是那么好)
- 奖励:你有关于 Linux 内核中 RCU 的好/简单的教程吗?
谢谢
oracle11g - ORA-12528, TNS:listener: 所有合适的实例都在阻塞新的连接
嗨,当尝试通过数据连接创建存储库创建实用程序时,详细信息不例外。它抛出异常是
tnsnames.ora
请给我关于这个问题的解决方案。