为什么32位系统最大只支持4G内存

寻址空间一般指的是CPU对于内存寻址的能力。CPU最大能查找多大范围的地址叫做寻址能力。CPU的寻址能力以字节为单位 (字节是最小可寻址单位)

  1. 内存把8个比特(8bit)排成一组,每一组为一个单位,大小记为一个字节(Byte),CPU每次只能访问去访问一个字节(Byte),不能去访问每一个比特。一个字节就是最小的内存IO单位
  2. 计算机系统会给内存中的每一个 字节 分配一个内存地址,CPU只要知道某个数据类型的地址,就可以到地址所指向的内存去读取数据
  3. 在32位系统中,内存地址就是32位的二进制数,所以32位地址范围就是从0x0——0xFFFFFFFF,即一共有232个地址,每个地址对应一个字节
  4. 232 = 4*1024*1024*1024=4G,如上,每一个地址对应一个字节,所以232个地址就对应着这232个字节(Byte),即对应着4GB(B即Byte)的内存容量
    如果你给32系统配上了8G内存,操作系统最多只能给其中的4GB分配地址,其他4GB是没有地址的。
  5. 指针
    我们都知道指针在32位系统上用sizeof可以得出其大小为4个字节,之前就一直很奇怪,为什么无论是int型还是char型,其大小都是4个字节。
    首先,指针是用来保存地址的,因此无论是什么类型,其大小应该都是一样的。
    第二,指针是用来保存地址的,而对于32位系统,内存地址是1个32位长度的二进数,因此,为4个字节;而对于64位系统,则会返回8个字节

你可能感兴趣的:(为什么32位系统最大只支持4G内存)