C 虚拟分配粒度和页面大小

C 虚拟分配粒度和页面大小,c,windows,winapi,win64,C,Windows,Winapi,Win64,Win64平台上虚拟分配粒度和页面大小的典型值是什么?这就是SYSTEM_INFO的dwAllocationGranularity和dwPageSize 在Win32系统上,这些将是64k和4k 我需要知道,因为我已经为Win32应用程序设计了一个基于VirtualAlloc的自定义分配器,我想知道我的设计选择在Win64上是否仍然有效。我无法访问Win64系统 提前谢谢 在Vista x64上仍然是64k和4k。不太确定是否有一天这种情况不会改变,较小的页面大小给TLB缓存带来了严重的压力,大

Win64平台上虚拟分配粒度和页面大小的典型值是什么?这就是SYSTEM_INFO的dwAllocationGranularity和dwPageSize

在Win32系统上,这些将是64k和4k

我需要知道,因为我已经为Win32应用程序设计了一个基于VirtualAlloc的自定义分配器,我想知道我的设计选择在Win64上是否仍然有效。我无法访问Win64系统


提前谢谢

在Vista x64上仍然是64k和4k。不太确定是否有一天这种情况不会改变,较小的页面大小给TLB缓存带来了严重的压力,大大降低了分配千兆字节块的程序的性能。我还看到了一些关于在程序执行过程中无法在某些难以理解的点上分配大页面的问题报告。但目前这只是一个水晶球。

我听说安腾的页面大小是8k。无论如何,谢谢你的回答!是的,IA64上有8K。见过吗?安腾-它正被英特尔公司淘汰。很高兴你从来没有做过。当Windows XP被命名为“Whistler”时,我就这么做了。这个盒子是由英特尔公司(Intel)用早期版本的Visual Studio 7.0进行的预制作(并被“更好”的盒子替换了好几次)。慢,吵得要命,就像一整天都有一个大真空吸尘器在你的办公桌旁。我将Win32应用程序移植到Win64上,2000000行C++。我很高兴这部分工作完成了,我不必再使用安腾了。这些设计选择是取决于这些特定的常量值,还是动态查询dwAllocationGranularity和dwPageSize?换句话说,您能共享更多上下文吗?代码查询这些值。但是,我想知道对应用程序的影响。例如,如果粒度足够小,我可以将专用地址范围分配给不同的模块。如果太大(几MB),这可能会耗尽地址空间,因此有必要共享它们。