在32位和64位进程之间共享内存映射文件

时间:2010-11-08 10:26:23

标签: 64-bit 32bit-64bit mmap memory-mapped-files

我的要求是在32位和64位进程之间提供共享内存文件。这个文件可以由任何进程创建,取决于谁先来。 - 我仍然不确定这是否可行,若然,以后会有任何陷阱? - 从谷歌获得的一些信息: 内存映射文件 32位应用程序只能共享映射到32位虚拟地址空间的内存映射文件。 64位应用程序可以在32位或64位虚拟地址空间中共享内存映射文件。要将文件映射到可在64位和32位应用程序之间共享的内存,64位应用程序必须在调用mmap(2)时使用MAP_SHARED标志指定MAP_ADDR32标志。 网址:http://docs.hp.com/en/5966-9844/ch02s08.html#d0e3037

这是否意味着对于这种共享,应使用给定标志通过64位进程创建内存映射文件?

由于

1 个答案:

答案 0 :(得分:0)

我没有尝试过,但是我不明白你为什么不能使用MAP_SHARED进行mmap,并让它只是工作。

如果您不希望单个段对于32位进程的地址空间来说太大(请记住碎片),并且您不希望它映射到两个进程中的同一地址(可能不会它是可能的,它应该只是工作。

毕竟,mmap()在效果上不依赖于体系结构(仅限于其实现)