社区
Windows Server
帖子详情
AWE是如何使用32位指针管理大于4gb的内存的
sunm42000
2010-03-29 09:50:51
rt
...全文
54
回复
打赏
收藏
AWE是如何使用32位指针管理大于4gb的内存的
rt
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
linux 编译
内存
,如何编译程序以使其能够在
32位
Linux上
使用
大于
4GB
的
内存
?(How to compile a program to make it capable to use >
4GB
...
如何编译程序以使其能够在
32位
Linux上
使用
大于
4GB
的
内存
?(How to compile a program to make it capable to use >
4GB
memory on 32-bit Linux?)整个代码是用C,C ++和Fortran编写的。 是否有可能使其
使用
超过
4GB
的
内存
。 现在它达到3GB
内存
时总是崩溃。如果可能,如何设置编译选项(或配置标志)?我们可...
32位
程序
使用
超过4G的
内存
众所周知,所有的
32位
应用程序都有
4GB
的进程地址空间,因为
32位
地址最多可以映射
4GB
的
内存
。对于Microsoft Windows操作系统,应用程序可以访问2GB的进程地址空间(
32位
Linux可以访问3GB地址空间),这就是称为用户模式的虚拟地址空间。这2GB的用户模式虚拟地址空间位于
4GB
地址空间的低一半,而与之相对应的高一半2GB地址空间由操作系统内核
使用
,因此被成为内核模式的虚拟地址空
32位
应用程序如何
使用
大于
2GB的
内存
?
32位
应用程序如何
使用
大于
2GB的
内存
? 不管是在 32 位 Windows 还是在 64 位 Windows,32 位应用程序都只能
使用
最大 2GB 的
内存
,这是我们司空见惯的一个设定。但其实 Windows 提供了一些方法让我们打破这样的设定,使程序
使用
大于
2GB 的
内存
。 为什么 32 位程序只能
使用
最大 2GB
内存
? 32 位寻址空间只有
4GB
大小,于是 32 位应用程序(进程)最大只能用到
4GB
的
内存
。然而,除了应用程序本身要用
内存
,操作系统内核也需要
使用
。应用程序
使用
的
内存
空间
32位
程序
使用
超过4G的
内存
实例
最近在做个程序,虽然是小型程序,但是
使用
的
内存
量却很大,动辄达到10G。在64位系统上可以轻松实现,无奈我是基于
32位
的系统进行开发,程序还没跑起来就已经被终止了。 试过很多办法,包括文件
内存
映射等,效率不高,而且由于
32位
应用程序的限制,可用的
内存
地址最高只能到0x7FFFFFFF,能调用的
内存
到2G就是极限了。最后好不容易找到了
AWE
(Address Windowing Exte
如何在
32位
程序中突破地址空间限制
使用
超过4G的
内存
众所周知,所有的
32位
应用程序都有
4GB
的进程地址空间,因为
32位
地址最多可以映射
4GB
的
内存
(对于虚拟地址空间概念不太熟悉的朋友建议去看一下《Windows核心编程》这本书)。对于Microsoft Windows操作系统,应用程序可以访问2GB的进程地址空间(
32位
Linux可以访问3GB地址空间),这就是称为用户模式的虚拟地址空间。这2GB的用户模式虚拟地址空间位于
4GB
地址空间的低一半,而
Windows Server
6,868
社区成员
177,996
社区内容
发帖
与我相关
我的任务
Windows Server
Windows 2016/2012/2008/2003/2000/NT
复制链接
扫一扫
分享
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章