【发布时间】:2016-07-17 12:24:55
【问题描述】:
\Device\PhysicalMemory 是一个节对象,在 Win32 API 术语中是一个内存映射文件。鉴于它的名字,它可能是一个由 RAM 支持的 MMF 完全;是物理页面的一对一映射。
这几乎是我的问题:这个部分对象是代表非分页的物理内存还是非分页的系统地址空间?
如果是前者,那么物理内存中的“漏洞”呢?例如,在启用 PAE 的系统上,系统地址空间下的物理内存实际上可能是“碎片化的”。如果我在将视图映射到 \Device\PhysicalMemory 部分对象后访问这些孔会发生什么?
我之所以感到困惑是因为MmMapIoSpace 函数采用PHYSICAL_ADDRESS PhysicalAddress 参数并将该物理地址映射到非分页系统地址空间。另请参阅其他内存管理器功能,例如 MmAllocateContiguousMemory。让实际物理内存可用并假装可以以连续方式访问它似乎很危险。
很明显,非分页物理内存和非分页系统地址空间之间不一定存在一对一的映射。
试图在 Windows Internals,第 6 版中找到上述和一些相关术语。没有给出任何明确的答案。第 10 章主要处理 WDK 文档所称的系统地址空间。所以我在这里问。
请确保指向权威来源以获得您的答案。
【问题讨论】:
标签: windows memory memory-management internals