流程是否有办法让它拥有符合POSIX标准的内存?这必须在不修改进程的源代码的情况下完成,但我们可以插入系统调用。
该应用程序适用于需要防止fork()后写入时写入意外延迟的实时系统。解决方案是调用mlockall(),然后对进程映射的所有内存执行虚拟写入。在Linux中,内存映射在/ proc / self / maps(或/ proc // maps)中可用,但这不是POSIX兼容性的要求。
答案 0 :(得分:1)
在POSIX中,我只能找到posix_madvise(),它需要一个给定的内存区域作为输入。此外,posix_madvise()没有指定它在写入时是否会影响性能,并且似乎只对内存映射文件起作用。
我相信这是一个简单的问题,即建立自己的已分配数据列表然后执行写入。我也看到建议分配一个大的虚拟堆栈并用零填充它,这样堆栈变量访问就不会阻塞。如果我理解了这个问题,你就不需要也不应该复制程序代码。
使用POSIX,您将无法找到并加载在没有程序控制的情况下分配的页面。