对于linux和windows,在同一个进程中,如何让两个页条目引用同一个物理页?
对于windows,通过阅读MSDN,看起来我可以CreateFileMapping
通过传递INVALID_HANDLE_VALUE
来创建文件映射而无需文件支持。然后我可以MapViewOfFileEx
用 different 调用两次lpBaseAddress
,这实际上使两个不同的地址引用同一个物理地址。
我的问题是,如何在linux下做到这一点?我阅读了手册mmap
,但没有找到方法,除非该区域由文件(带有标志MAP_SHARED
)支持,但对该区域的修改将写入文件,这不是我想要的。有谁知道以某种方式做到这一点?我不反对文件支持,只要对该区域的写入实际上并未写入磁盘。使用tmpfs
不是一个选项,因为我不能保证用户已tmpfs
安装。
顺便说一句,代码应该是用户模式代码,而不是内核模式。