32bit和64bit系统在硬件支持上有差别,整理一些看过的资料,备查。

32位系统和4G内存的关系

为什么32位操作系统最大只能支持4G内存呢?64位操作系统能支持最大多少内存?

32位操作系统,配合32位CPU,寻址空间位2^32次方,计算出来是4294967296字节,就是4G,32位系统最大支持4G空间,如果想要32位系统支持4G以上空间的话,就要用PAE的特殊内核,采用特殊方式访问,但是系统效率会比原生的64位系统低。

smp, bigmem, PAE 內核都可以在 32bit 系统使用多於 4G 內存,但是每一个独立进程只能使用3G 左右。

64位操作系统配合64位CPU,寻址空间是2^64次方,计算出来是
18446744073709551616字节,换算一下4G个G,太大了,反正是
N多G,一辈子也用不完。当然这是64位系统的理论最大内存支持,实际上谁也用不了这么大内存,

反正如果你的系统是64位的,CPU是64位的,那么随便插个8G,16G内存是肯定能支持的。

要完全识别4G内存,是不是必须使用64位系统?

即使32位系统显示出4G内存  也发挥不出4G内存的能量 2G和4G是差不多的  要想充分利用4G内存 还是64位的vista
64 位体系结构和 32 位体系结构的比较

  地址空间    64 位 Windows   32 位 Windows

  虚拟内存    16 TB       4 GB
  页面文件    512 TB      16 TB
  页面缓冲池   128 GB      470 MB
  非页面缓冲池  128 GB      256 MB
  系统缓存    1 TB       1 GB

32位Windows中的虚拟内存空间

  和其他所有32位Windows一样,Windows Vista也被限制于只能使用4 GB的虚拟内存寻址空间。这4 GB内存被分为两部分,其中2 GB用于用户进程,而另外2 GB则用于被操作系统的所有进程共享。在某些特殊的情况下,通过使用/3GB引导参数可以强制让所有系统进程只使用1 GB内存空间,而给用户进程使用3 GB内存,但是该方法也仅适用于设计于可以利用这些额外地址空间的应用程序,而且所有程序都会被操作系统可用的内存数量所限制。

要在PC中使用超过4GB的内存,需要同时满足以下若干条件

(1)主板配置有支持至少8GB内存寻址的芯片组(例如Intel P965/P975)
(2)CPU支持X64指令集(例如Intel Core2处理器)
(3)BIOS支持memory remapping
(4)使用64bit的操作系统(或支持物理内存扩展技术的32bit操作系统)

关于4G内存在32bit OS下使用的一点个人认可的解释

1. 32bit 架构 的理论寻址极限是4GB。

2. PCI协议导致近1G的内存地址被留为设备使用,所以我们不能使用这部分地址的物理内存。这被称为MMIO,即Memory Mapped Input/Output,内存映射输入输出。

3.对于这个问题,CPU厂商提出了内存重定址(Memory Remapping)作为解决方案。通过该技术把被MMIO占用的地址映射到其他地址位去,以便CPU使用。这个技术最早在服务器芯片组上使用,现在已经普及到许多桌面系统。对于Intel来说,在955X以后的芯片组似乎都支持,但是主板BIOS也要设计可设置的地方。对于AMD而言,Athlon 64等级以上的CPU都对类似的技术提供了支持,而NVIDIA只有680i SLI芯片组有提供。

4.有了Remapping事情还没完,映射完的地址大于4G,这就需要PAE(Physical Address Extension)技术,好在这个技术在pentium pro的年代就广泛应用,就是32bit的CPU36bit的内存地址线,使得CPU支持4G外的寻址。要windows支持这个技术需要在引导项后面加 /PAE参数。

5.有了PAE,Remapping,软件上还得OS支持,根据所用OS的不同还是未必能用到4G。据网络测试资料说明,常见WINDOWS里表现最好的是2003,4G全支持,其次是XP SP1及更老的XP,可以支持到3.87G,XP SP2反而只能到3.2G了。但是我自己在XPSP2下用msinfo32看,其实是可以看到已经是4G了。但是只要是不支持remapping技术的系统,至少要浪费掉750M的内存。

6. 部分旧版显卡驱动在4G内存下可能导致不可开机。估计是MMIO和Remapping兼容问题.

关于Linux 32bit和64bit的比较小结

引用
在64bit系统中,大部分64bit程序速度的确快于32bit的系统,最大大概能快50%左右。但是相对的,耗用内存也明显大于32bit,最大大概能多占36%左右的内存。
你完全可以理解成用内存来换性能。而且这个性能更体现在大规模运算中,比如编码视频文件。在LAMP服务中,性能大概只能提升20%左右。
另外64bit现在还不是很普及,至少没有32bit普及,在linux下对于某些闭源的软件,很难找到它所对应的64bit版本。还有就是一些奇奇怪怪的问题,比如拿32bit系统中的cacti来统计64bit系统中的网卡,你会发现数据经常被溢出而导致统计不正常,解决方法是用64bit来统计,好在cacti官方支持64bit的模板。如果官方比较古老不支持呢?那就比较麻烦了吧。。。

其实也没什么好总结的。用32bit还是用64bit就看个人喜好了。


参考阅读:

1 32位系统和4G内存的关系
2 Should you choose 32-bit or 64-bit Linux?
3 linux 64-bit vs 32-bit
4 关于4GB内存的讨论
5 关于4G内存在32bit OS下使用的一点个人认可的解释
6 关于Linux 32bit和64bit的比较小结


原创内容如转载请注明:来自 阿权的书房
收藏本文到网摘
Tags: ,
发表评论
AD
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML 打开UBB 打开表情 隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写
 

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐