2

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

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

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

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

4

1 回答 1

1

用于shm_open()mmap().

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

于 2012-07-13T04:01:08.787 回答