32位操作系统针对的32位的CPU设计。
CPU从原来的8位,16位,到现在的32位和64位。
cpu处理计算的时候“数据”和“指令”是不同对待的。
8位的CPU,一次只能处理一个8位的“数据”或者一个8位的"指令"。比如'00001101'.
又比如:“+1”这个运算,你要先指示CPU做“+”,完成后再输入“1”数据给CPU。
8位的CPU优点是设计简单,处理速度比较快。
缺点就是:软件设计复杂,繁琐。不利于计算机的发展。
后来推出了16位的CPU,我们就可以一次处理两个字节(16位)的数据了,比如“加1”这个命令。“加”是一个指令,占用8个位,余下的8位我们可以存放数据“1”了。
32位的CPU就更加方便了,我们就可以一次处理一个a=a+b这样的命令了。
优点:简化了软件设计的复杂度
缺点:硬件设计更加复杂,计算速度下降。
一般来讲32位的CPU对于我们来讲是最理性的CPU,对于软件开发来讲足够了。
但是2的32次方 = 4294967296bit = 4G左右
很显然32位CPU只有4G左右的内存寻址空间,对于一些服务器来讲4G的内存的远远不够的了。我们需要更加大的内存寻址空间的话就需要对CPU进升级。64位CPU就这样诞生了。64位CPU的内存寻址空间是多少你算算看!呵呵。
2的64次方(理论上)。
但是现在的AMD和Inter的64位CPU并不是真正意义上的64CPU,只是进行了部分64位的改进,比如64位的内存寻址等。
要是真的全部都是64位的了,那么现在市场上的软件将全部被淘汰不能使用了~呵呵,想像一下会是什么样子。
64位的操作系统针对64位CPU设计的,增加了一些64位的指令,但还是和32兼容的。对于我们普通用户来讲64位系统意义不大。
事实上,对于在32位和64位操作系统之间进行选择的问题,其关键的问题还是在于兼容性。很多在32位系统中运行正常的程序,在64位系统下却会出现各种莫名其妙的问题。因此让32位操作系统支持4GB以上大内存的做法也有它存在的意义。但需要注意的是,由于32位操作系统的内存寻址限制,单线程所能使用的内存容量最大仍为3GB,但这并不意味着其它线程无法使用超过那3GB以外的其它内存。
32位操作系统能支持4G以上内存原因1) 为什么32位的系统可以使用超过4GB的内存?
只要CPU、主板、操作系统都支持并启用PAE(物理地址扩展),那么此时的物理内存地址总线就是36位。
2^36 = 68719476736 = 64 GB
另外,当前的x64并非真正使用64位的地址总线,而是48位,所以内存上限是 2^48。
所以,现在的32位系统并非纯正的“32位”;x64并非纯正的"64位"。
2) 为什么Windows 2003 32位版本最高可以支持128GB内存?
自P4、K8以后的32位CPU,物理地址地址都是40位,所以可以支持128GB。
3) 为什么主板支持4GB内存,并且已经安装上4GB内存,但32位Windows只能使用3.25GB?
原因有两个:
a, 受限于Windows 的许可证限制。
Windows内核会在系统启动时检查当前操作系统的许可,从中确定当前允许使用的物理内存最大值。
例如Windows XP/Vista许可的上限为4GB。
b, 主板,及其上面的各种PCI设备的资源的限制。
主板必须支持超过4GB以上内存,并且必须支持内存重影射功能
当主板打开内存重影射功能时,PCI设备的内存地址将被BIOS影射到4GB以上的空间,
所以PCI设备此前所占用的地址空间可以空出来而为物理内存使用。此时系统可用的物理内存可以达到接近4GB。
4) 为什么有些设备的驱动程序在4GB内存时无法正常工作?
如3所示,设备的内存地址超出4GB,这些旧的驱动无法接收正确的地址。
5) 为什么32位的Windows 可以管理超过4GB的内存?
将32位的地址从两层转换改为三层转换。
PDPE/PDE/PTE都扩展到64位。