【Windows核心编程笔记】第十四章 探索虚拟内存

本文主要探讨了Windows系统中关于虚拟内存的相关知识点,包括使用GetSystemInfo获取主机信息,了解32位程序在64位系统上的运行方式,以及IsWow64Process判断进程是否在WOW64环境下运行。此外,还讲解了获取CPU和内存状态的方法,如GetLogicalProcessorInformation、GlobalMemoryStatus和GlobalMemoryStatusEx,以及在NUMA架构下的内存管理。最后,介绍了VirtualQuery和VirtualQueryEx用于查询地址空间状态的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统消息

GetSystemInfo      获取主机相关的值,比如页面大小、分配粒度等

 

32位程序在64位系统上运行,涉及到模拟层(WOW64),32位程序通过WOW64运行和64位程序运行这两种情况,GetSystemInfo获取的信息可能会不同

IsWow64Process   进程是否在WOW64运行

只有返回值为TRUE的时候,第二个参数FALSE表示32在324,6在64,TRUE表示32位程序运行在64位系统(通过WOW64运行)

GetNativeSystemInfo    上述函数第二个参数为TRUE时,用此函数获取系统信息

 

另一种方法

IsOs        参数为OS_WOW6432  返回值TRUE表示32在64,FALSE则32在32

 

GetLogicalProcessorInformation        获取与CPU相关的详细信息

 

虚拟内存状态

GlobalMemoryStatus    获取当前内存状态的动态信息

GlobalMemoryStatusEx        获取当前内存状态的动态信息(内存4G或页交换文件大于4G),ullAvailPhys参数返回所有节点可用内存的总量

 

NUMA机器中的内存管理

NUMA:非统一内存访问

GetNumaAvailableMemoryNode       获取特定NUMA节点的内存数量

GetNumaProcessorNode     CPU在哪个NUMA节点

GetNumaHighestNodeNumber  获取系统中节点总数

GetNumaNodeProcessorMask    获取某个节点中的CPU列表

GetProcessMemoryInfo       获取进程当前工作集大小和最大工作集大小

 

确定地址空间的状态

VirtualQuery 查询与地址空间中的内存地址有关的特定信息(大小、存储器类型、保护属性)

VirtualQueryEx      一个进程查询另一个进程的内存信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值