作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我面临着一个非常棘手的问题。我试图让 2 个虚拟内存区域指向相同的物理内存。关键是在不同的内存区域有不同的页面保护参数。
在这个论坛上,用户似乎有一个解决方案,但似乎有点老套,而且很明显可以在性能方面做得更好: http://www.linuxforums.org/forum/programming-scripting/19491-map-two-virtual-memory-addres-same-physical-page.html
因为我面临同样的问题,我想在这里试一试,看看是否有人有更好的主意。不要害怕提及引擎盖背后的肮脏细节,这就是这个问题的目的。
提前致谢。
最佳答案
从 Linux 内核 3.17(2014 年 10 月发布)开始,您可以使用 memfd_create
系统调用以创建由匿名内存支持的文件描述符。然后多次映射同一区域,如上述答案中所述。
请注意,memfd_create
系统调用的 glibc 包装器已添加到 glibc 2.27(2018 年 2 月发布)中。 glibc manual还描述了返回的描述符如何用于创建到同一底层内存的多个映射。
关于c - 如何在 linux 上将两个虚拟地址映射到同一物理内存上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7335007/
我是一名优秀的程序员,十分优秀!