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

发表回复

后才能评论