10、Windows系统内存管理全解析

Windows系统内存管理全解析

1. 内存管理基础

Windows 2000和Windows 98采用了相似的内存管理技术。在当前进程的堆中,有一个指向内存地址的32位指针,每个进程都有独立的内存地址空间,与其他进程相互隔离。

1.1 内存架构

在Win32环境下,每个进程拥有一个最大为4GB的32位虚拟地址空间。低内存(0x00000000到0x7FFFFFFF)的2GB供用户使用,高内存(0x80000000到0xFFFFFFFF)的2GB则为内核保留。在Windows 2000的高级版本中,用户内存扩展到3GB,内核内存减少到1GB。

进程使用的地址并非内存中的实际物理位置。内核为每个进程维护一个页映射,用于将虚拟地址转换为对应的物理地址。这样,内存管理器就能根据现有需求移动内存并保持其高效性。所有内存地址都相对于进程的地址空间,进程无法在自己的地址空间之外进行读写操作,以此保护进程之间的独立性。

1.2 全局内存

全局内存从进程的全局堆中分配,使用 GlobalAlloc 函数进行分配,该函数会返回一个指向内存的句柄。在大多数情况下,这个句柄就是指向已分配内存的指针。内存以具有读写访问权限的私有、已提交页面的形式分配,其他进程无法访问这些私有内存。

使用带有 GMEM_DDESHARE 标志的 GlobalAlloc 函数,并不像旧版本的Windows那样实现真正的全局共享。该标志仅用于兼容性,一些应用程序可使用它来提高动态数据交换(DDE)操作的性能。需要共享内存的应用程序必须使用文件映射对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值