mmap的大小限制是多少

use*_*732 5 linux mmap

mmap()用来将共享内存对象映射到进程。我的问题分为两部分:

1)mmap()linux进程的大小限制是多少?(有此限制吗?)

2)进程运行一段时间后,我认为进程虚拟内存地址空间将以某种方式分散。这会影响我mmap()在此过程中可以做的最大尺寸吗?

使用的linux内核是2.6.27。共享内存对象的大小约为32MB。我试图访问mmap()由于没有足够的虚拟地址空间而导致此类共享内存对象失败的可能性。

小智 1

大小没有限制mmap,但取决于给定进程使用的现有地址空间。但强烈建议您不要mmap使用较大的连续虚拟地址空间。另一个建议是在访问特定物理地址(或设备地址)时使用mmap“即时”,并在完成后取消映射