易语言资源网 - 做最全的易语言资源下载社区
精易论坛授权登录

利用AWE实现32位程序申请超大物理内存,*是物理内存*   [复制链接]

    2022-09-14 08:42:17
    模块控件源码
    易语言资源网
    1239 次浏览
    来源链接

前言:

  • 镇楼图:
  • 用到的技术:Address Windowing Extensions
  • 提示,如果觉得看上一张图很懵逼,请看这张图(一般会更懵逼):

正文:

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


点我下载 (已有 45 次下载)

引用模块





引用支持库


源码文件名 支持库文件名 支持库标识
AWE.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325


[错误报告]   上一篇:word文档批量删除图片...     下一篇:取本机联网IP 取路由器地址2.0...