POSIX兼容的方式走进程内存



是否有一种方法可以让进程走自己的内存是POSIX兼容的?这必须在不修改进程源代码的情况下完成,但我们可以干预系统调用。

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

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

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

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

最新更新