我使用mmap()
将共享内存对象映射到进程。我的问题有两个部分:
1)mmap()
到linux进程的大小限制是多少? (有这样的限制吗?)
mmap()
的最大尺寸吗?
使用的Linux内核是2.6.27
。共享内存对象的大小约为32MB。我试图通过没有足够的虚拟地址空间来访问mmap()
因这种共享内存对象而失败的可能性。
答案 0 :(得分:1)
mmap
大小没有限制,但取决于给定进程使用的现有地址空间。但强烈建议您不要mmap
到大的连续虚拟地址空间。另一个建议是在访问特定物理地址(或设备地址)时使用mmap
“即时”,并在完成后取消映射
答案 1 :(得分:0)
/proc/sys/vm/overcommit_memory
控制Linux上的最大值
我已经在maximum memory which malloc can allocate
上对此进行了详细解释。基本上,1
的值允许任意虚拟分配,而0
和2
的极限计算更为复杂。