angelsnow 发表于 2013-7-9 14:57

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

本帖最后由 angelsnow 于 2013-7-9 15:10 编辑

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


一般人说道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位系统才是王道有木有??!!!!


我知道的就这些了,希望对大家有帮助{:3_152:}{:3_152:}{:3_152:}


everyone2004 发表于 2013-7-9 15:18

再纠结下去恐怕128位系统都出来了……

delmay 发表于 2013-7-9 16:30

虽然看不懂,但好像很厉害的样子。。。

czy5478 发表于 2013-7-9 18:37

说白了
这个PAE技术,最初出来就是给服务器支持更大内存打造的
所以估计服务器上的一些服务或者应用支持更加好一些
日常家用领域的一些软件,的确很少有软件会针对这个做优化,因为现在4G以上内存用64位操作系统,几乎已经是常识了。而且兼容性基本没问题。

angelsnow 发表于 2013-7-9 19:45

czy5478 发表于 2013-7-9 18:37 static/image/common/back.gif
说白了
这个PAE技术,最初出来就是给服务器支持更大内存打造的
所以估计服务器上的一些服务或者应用支持更 ...

钓你出来真难啊{:3_127:}

a532175960 发表于 2013-7-9 19:46

angelsnow 发表于 2013-7-9 19:45 static/image/common/back.gif
钓你出来真难啊

{:3_94:}你直接一个贴呼叫他/她?不就行了嘛

angelsnow 发表于 2013-7-9 19:50

a532175960 发表于 2013-7-9 19:46 static/image/common/back.gif
你直接一个贴呼叫他/她?不就行了嘛

我哪有你那么水.....{:3_127:}

mycrao 发表于 2013-7-9 19:56

angelsnow 发表于 2013-7-9 19:45 static/image/common/back.gif
钓你出来真难啊

码了这么多字,就是为了钓他出来?{:3_166:}

mycrao 发表于 2013-7-9 20:00

我觉得在64为系统和兼容程序已经相当成熟的今天,非要破解32位内存限制,大有一种“有困难要上,没有困难制造困难也要上”的大(xia)无(zhe)畏(teng)精神。

angelsnow 发表于 2013-7-9 20:20

mycrao 发表于 2013-7-9 20:00 static/image/common/back.gif
我觉得在64为系统和兼容程序已经相当成熟的今天,非要破解32位内存限制,大有一种“有困难要上,没有困难制 ...

就像明明有现成的道路走却非要“摸着石头过河”............{:3_124:}

czy5478 发表于 2013-7-9 20:29

angelsnow 发表于 2013-7-9 19:45 static/image/common/back.gif
钓你出来真难啊

钓我出来干啥。。。我最近忙的很啊

xgzjj 发表于 2013-7-9 21:26

如果用软件可以搞定的话,微软做系统大可以只做一个32位的,然后出个64位补丁,用户如果想换成64位系统只需轻轻点一下鼠标就可以了,但问题是远远不是点鼠标那么简单的。
页: [1]
查看完整版本: 32位系统破解内存限制到底有用否(科普向)