下你所需,载你所想!
汇集开发技术源码资料

AWE实现32位程序申请超大物理内存

:3.962KB :1 :2023-02-02 14:57:54

部分简介

众所周知,32位程序理论上是不能 申请/读写 超过4GB内存的,不过这里的内只能指虚拟内存。
如果把这个概念拓展到物理内存,情况就完全不同了。
虚拟内存有 大小/读写 限制,不代表物理内存有 大小/读写 限制。(虚拟内存最终是映射到物理内存的)
如何申请物理内存?
微软其实是已经提供API的:AllocateUserPhysicalPages
如何读写物理内存呢?
很可惜,应用层不能直接读写物理内存,但是提供了API将物理内存映射到虚拟内存:MapUserPhysicalPages。
所以,AWE其实就是允许32位的程序申请物理内存(需要SeLockMemoryPrivilege权限),并允许程序将指定的物理内存映射到虚拟内存。
物理内存有多少取决于内存条大小。
所以可以利用这个方式很轻松地实现 申请超大内存/读写超大内存。
反复强调:这个方法并没有解除虚拟内存的限制!仅仅是允许将同一虚拟内存映射到不同的物理内存。
所以上面的图就很容易解释了。

AWE实现32位程序申请超大物理内存

热门推荐

相关文章