gpt4 book ai didi

memory-management - RCU 作为传统垃圾收集的替代方案

转载 作者:行者123 更新时间:2023-12-02 11:22:27 25 4
gpt4 key购买 nike

Read-Copy-Update (RCU) 是一种手动内存管理技术,在 Linux 内核中越来越流行。

是否可以设计一种使用 RCU 而不是传统垃圾收集器来回收无法访问的内存的语言和 VM?

最佳答案

是否可以:是的,有点 ,Linux内核就是一个活生生的例子。
在linux内核中,使用RCU时,垃圾收集之前版本的数据结构发生在 schedule() 期间因为在这一点上,所有读者都已完成。
当然,Linux 内核没有垃圾收集器,对不可达内存的回收通常是显式和即时的。 RCU 更新 是一种特殊情况,其中回收是明确的但不是立即的。

可以吗?通用虚拟机 就像 JavaScript 中的 Python:会很难。

  • RCU 需要垃圾收集器
  • RCU 用于以读取为主的工作负载
  • RCU 用于短临界区

  • RCU 仍然需要垃圾收集器;相反,RCU 与垃圾收集器一起工作可以避免大多数时间的锁定,即读临界区在没有并发写入的情况下完成时。
    以读取为主的工作负载。引用计数的写入量特别大,以至于多线程 Python VM 具有 GIL 以防止并发引用计数更新,因为这会导致缓存同步损失。因此,一些 其他技术垃圾收集是必需的。
    与此同时,一个简单的 JavaScript 实现根本不需要同步,因为它是单线程的(尽管可以想象一个 JavaScript 实现,其中垃圾收集被卸载到一个单独的线程)。
    由于无休止的间接性,动态语言 VM 中临界区的长度特别难以预测。例如,考虑 int(code.replace(" ", "")) : int可能会通过 __int__ 过载, .replace可能通过属性重载, (...)可能会通过 __call__ 过载.每个重载都是可能需要任意长的 Python 代码。同样适用于内置数据结构,其中更新(最后一条语句)为 c=1; d={c:42}; d[c]=43可以在内部使用 RCU 做某事,除非它必须非常小心,因为 c可能只是实现 __hash__这可能需要任意长的时间。
    恐怕我对编译语言及其 VM 了解得还不够多。
    我的 直觉那种新颖的、高性能的垃圾收集器确实可以在内部使用 RCU,然后可能会将 RCU 暴露给内置数据结构的实现。我 该操作系统可能需要提供更好的 API 以将执行固定到特定内核,以从本地缓存中受益和/或在用户空间被抢占时运行自定义代码。

    虽然这是 不是完整的答案 ,我希望这个扩展评论有助于限制原始问题。

    关于memory-management - RCU 作为传统垃圾收集的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17437165/

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