两个页面条目引用同一物理页面

时间:2012-07-13 02:21:57

标签: windows linux mmap

对于linux和windows,在同一个过程中,如何让两个页面条目引用同一个物理页面?

对于Windows,通过在MSDN上阅读,看起来我可以通过传递CreateFileMapping来调用INVALID_HANDLE_VALUE来创建没有文件支持的文件映射。然后,我可以使用不同的MapViewOfFileEx两次调用lpBaseAddress,这实际上使两个不同的地址引用相同的物理地址。

我的问题是,在linux下如何做到这一点?我阅读mmap的手册,并没有找到办法,除非该区域由文件(带有标志MAP_SHARED)支持,但对该区域的修改将写入文件,这不是我想要的。有人知道这样做吗?我不反对文件支持,只要写入该区域实际上不会进入磁盘。使用tmpfs不是一种选择,因为我无法保证用户已安装tmpfs

顺便说一句,代码应该是用户模式代码,而不是内核模式。

1 个答案:

答案 0 :(得分:1)

使用shm_open()mmap()创建文件。

“我想写一些模拟器”与我使用此技巧时的目的相同。 我确实使用过ipc / shm,但我忘记了细节。非常非常非常可能:shmget()+shmat()