32位系统为什么只能识别4GB内存?
这个问题解答之前首先要弄懂几个概念:
- 内存 是我们计算机上的临时储存设备,用来存放程序和程序处理的数据,主存(内存)的读取速度要比我们的硬盘要快的多,原因之一就是我们可以在主存中直接寻址,比机械硬盘这种还需要机械读取的存储方式要快很多。
- 信息存储 我们这里默认信息以二进制存储,单个0或者1储存的信息有限,计算机中以8个bit作为一个小块,即字节(byte),字节是最小可寻址内存单位。
- 直接寻址 换句话就是程序可以直接通过地址找到所需要的储存内容。机器程序将内存看做一个非常大的字节数组。对每一个字节都有一个地址来标识,所有地址的集合称之为虚拟地址空间(virtual address space)。
- 32位系统中的32位就是用32个bit来标识地址空间。
了解了以上概念也就基本明白了:32位系统中直接寻址的地址空间只有2^32 bit,也就是4Gbyte. 顺便也就知道了4GB中的B是byte的意思。
one more:
这里说的32位就是指计算机的字长(word size)
大多数32位机器编译的程序是可以在64位机器上运行的,但是如果程序对字长依赖可能会造成兼容性问题。