Windows(x86)下大内存的分配

     Windows(x86)下,由于进程的地址空间只有4G,而实际上可以使用的虚拟地址空间也就2G左右。如果有需求,需要分配较大的内存,比如需要分配16G的内存空间,以作特殊用途,如做大缓存,则可以使用AWE(地址窗口扩展),同时还需要开启PAE,这里有个限制,就是只有Server系统才能开启PAE,方法是在boot.ini里添加/PAE选项,对于2008 Server需要在BCDEdit里进行编辑。

      由于要分配大内存,需要锁定内存页,需要在组策略里做如下配置:

     计算机配置-->Windows设置-->安全设置-->本地策略-->用户权限分配,在右侧双击“内存中锁定页面”,添加当前系统账户,然后重启系统即可。

AWE应用步骤:

1 调用HeapAlloc,在堆上分配空间,存储即将要分配的内存页框架数量

2 获取锁定内存页的权限

3 调用AllocateUserPhysicalPages分配物理内存页

4 调用VirtualAlloc,在进程的虚拟地址空间分配一个AWE窗口,以做映射使用

5 调用MapUserPhysicalPages,映射到4里面分配的AWE窗口上或者调用此方法取消映射

6 调用FreeUserPhysicalPages、VirtualFree和HeapFree,释放资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值