3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 17458|回复: 11
打印 上一主题 下一主题

[原创] 32位系统破解内存限制到底有用否(科普向)

  [复制链接]

48

主题

1813

帖子

1744

积分

游戏狂人

壮哉我红白大神

Rank: 6Rank: 6

贡献度
184
金元
10079
积分
1744
精华
0
注册时间
2011-9-6
跳转到指定楼层
主题
发表于 2013-7-9 14:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 angelsnow 于 2013-7-9 15:10 编辑

之前逛老滚5区找MOD的时候发现一个帖子里人们在争论32位系统破解内存限制究竟是有用还是没有用,就想着写一篇帖子出来分析一下。
楼主本人对系统算不上精通,但是也多多少少了解一些,结合实际使用的体会,还有收集了一些资料凑了这篇帖子,如有形容有误之处还望海涵。
校对了好多遍,觉得大体上没错......


一般人说道32位和64位系统对内存的寻址能力,首先会想到32位是2^32、64位是2^64。其实这个是CPU数据总线位宽,和寻址能力并无直接联系。就主板芯片来说,目前Intel X86平台使用的是一种MMIO(内存映射技术),就是将I/O设备放在内存空间而非I/O空间,粗略来讲就是访问一个硬件也就是访问内存空间。
操作系统方面目前Windows采用分页内存的管理机制,每个进程都占用一定的虚拟地址空间,从0x00001000开始依次类推。所以目前32位系统中用最高20位来标记物理页,剩余的12位用来添加一些标记信息等等。这样的话就是可以支持到最大(2^20)*4096=4GB内存,这样的话除去I/O保留的内存映射空间和系统本身保留的,剩下的就是可用空间。大家可以在Win7任务管理器里面直观的看到。


那么现在说正题,一般32位系统在大内存下的悲剧基本是下图这个样子


为了能够让32位使用上大内存一般我们会选择用一个叫 Ready4GB 的程序来破解。这边粗略的说一下这个小程序到底做了些什么。
有一个技术叫Physical Address Extension(PAE),也就是所谓的物理地址扩展,这个东西其实并不新鲜。为了能够让PC服务器对大内存提供支持,将现有的IA32架构处理器的地址总线从32位扩展到了36位,这样的话从硬件上看最多可以支持64G的内存。
这是微软官方提供的开启PAE的方法Physical Address Extension 有兴趣的可以一看。


那么关键的问题来了,很多人认为即便开启了PAE,单个32位程序也无法分配到超过4G的空间,所以没用。


之前说过现在程序运行都会被分配到一个“虚拟”的空间中,所有内存的请求都是在这个虚拟地址内完成的,然后很具映射关系将这些虚拟的地址转换位具体的物理内存地址,或者是硬盘上的空间。
所以说上面那个说法有一半是对的。因为对于普通32位程序来说,你能得到的最多4G虚拟内存地址(0x00000000-0xFFFFFFFF),而这里面还有2G是操作系统保留的核心内存,剩下的2G才是程序能够自由分配的。这是32位程序机制决定的,哪怕我们在64位系统中运行它,也只能分配到4G内存,2G可用。


网上找的分配机制图大家凑合看

不过即便单个程序无法使用超过4G的内存,不代表整个系统不可以,更多的内存可以有利于操作系统对多任务进行内存分页,提高在多任务下的表现。


支持PAE的几个系统还支持另一项AWE技术,地址窗口扩展。这是一个程序设计时的接口,可以使得32位程序访问到超过4GB的内存。但是如果程序设计时没使用的话就没戏了。

64位系统才是王道有木有??!!!!


我知道的就这些了,希望对大家有帮助


评分

2

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2026-4-7 18:33 , Processed in 0.029499 second(s), 19 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表