该MMAP文件说,下面讲的标志MAP_NORESERVE.
不要为此映射保留交换空间.保留交换空间时,可以保证可以修改映射.如果没有保留交换空间,如果没有可用的物理内存,则可能在写入时获得SIGSEGV.
实际上我想要的只是保留虚拟内存地址而不是分配实际的物理内存.可以使用带有MAP_NORESERVE的mmap完成吗?如果我想使用任何物理内存,我会使用MAP_FORED再次在地址范围内使用MAP_NORESERVE通过mmap分配的地址范围内.
总而言之,我希望内核不为使用带有MAP_NORSERVE标志的mmap分配的内存保留任何物理页面.它是否真的像这样工作,或者如果内核有足够的物理内存,内核是否会分配物理页面?
什么相当于VirtualAllocOS X中的Windows ?也就是说,如何保留一个连续的地址空间而不实际提交它,然后再提交它的块?
谢谢,
亚历克斯
我有一个应用程序,使用带有MEM_RESERVE标志的Windows上的VirtualAllocEx保留连续的内存块.这会保留虚拟内存块,但不会使用物理页面或页面文件块进行备份.因此,访问分配的内存将导致分段错误 - 但其他分配将不会与此虚拟内存块相交.
如何使用mmap为Linux做同样的事情?我确实注意到了这个问题的答案,但这确实可以保证,如果我不触摸分配的页面,1 GB的物理内存将不会分配给我的进程吗?我不想要任何颠簸问题.