Windows核心编程 - 探索虚拟内存

1. 系统信息

    操作系统中有很多参数是由系统所运行的主机所决定的,如页面大小和分配粒度等,可使用GetSystemInfo函数来获取与主机相关的参数。为了让32位应用程序能够在64位版本Windows上运行,Microsoft提供了一个称为Windows 32-bit On Windows 64-bit的模拟层,称为WOW64。当32位应用程序在WOW64上运行时,调用GetSystemInfo返回的值和64位应用程序调用GetSystemInfo所返回的值可能会有所不同。如果想知道进程是否在WOW64上运行,可调用IsWow64Process函数,只有当32位应用程序在WOW64上运行时,该函数的pbWow64Process参数才会被置为TRUE。如想获取原来的系统信息,可调用GetNativeSystemInfo函数 。

2.虚拟内存状态

     可通过GlobalMemoryStatus函数来取得当前内存状态的动态信息。如果 预计应用会在装有4GB内存的机器上运行,或者页交换文件的大小可能会大于4GB,则应该调用GlobalMemoryStatusEx函数。

3.NUMA机器中的内存管理

     非统一内存访问(Non-Uniform Memory Access , NUMA)机器中的CPU既能访问自己节点的内存,也可以访问其它节点的内存,调用GetNumaProcessNode函数可以知道一个CPU驻留在哪个NUMA节点中。

4.确定地址空间的状态

    可通过调用VirtualQuery函数查询与地址空间中的内存地址有关的特定信息,比如大小、存储器类型以及保护属性。还有另一个函数 VirtualQueryEx可以查询另一个进程的内存信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章