【问题标题】:POSIX compliant way to walk process memoryPOSIX 兼容的方式来遍历进程内存
【发布时间】:2014-08-23 15:57:59
【问题描述】:

有没有一种方法可以让进程遍历它自己的符合 POSIX 的内存?这必须在不修改进程源代码的情况下完成,但我们可以插入系统调用。

该应用程序适用于需要防止 fork() 之后的写时复制意外延迟的实时系统。一种解决方案是调用 mlockall(),然后对进程映射的所有内存执行虚拟写入。在 Linux 中,内存映射在 /proc/self/maps(或 /proc//maps)中可用,但这不是 POSIX 兼容性的要求。

【问题讨论】:

    标签: memory-management posix real-time


    【解决方案1】:

    在 POSIX 中,我只能找到 posix_madvise(),它需要给定的内存区域作为输入。此外,posix_madvise() 没有指定它是否会影响写入时的性能,并且似乎只适用于内存映射文件。

    我相信这是一个简单的问题,即为自己构建一个已分配数据的列表,然后执行写入。我还看到建议分配一个大的虚拟堆栈并用零填充它,这样堆栈变量访问就不会阻塞。如果我理解这个问题,你不需要也不应该复制程序代码。

    使用 POSIX,您将无法找到和加载在没有程序控制的情况下分配的页面。

    【讨论】:

      猜你喜欢
      • 2011-03-24
      • 2015-02-20
      • 2022-01-08
      • 2015-12-02
      • 1970-01-01
      • 2019-08-08
      • 1970-01-01
      • 2015-08-16
      • 1970-01-01
      相关资源
      最近更新 更多