32位系统最大只能支持4GB内存原因

作者: gsonliu | 来源:发表于2017-01-07 18:44 被阅读6517次

大家肯定都看过自己系统的内存,估计大家都遇到过下面的情况(都是32位系统):

  • 自己装的是4G内存条,可是操作系统显示的内存却是3.75G
  • 自己装的是8G内存条,可是操作系统显示的内存也是3.75G

上面这两种情况为什么呢,下面分析其中的缘由,在分析缘由之前,先了解下计算机系统结构方面的知识。

1.认识计算机总线

其实大家在生活中经常用到总线,就是USB接口,其实就是一种总线,叫做USB总线。

1.1 为什么需要总线

冯诺伊曼计算机结构

上图是冯诺依曼计算机结构图,由五大部分组成: 逻辑运算器、控制器、存储器、输入设备、输出设备

如果输入或者输出设备想把数据存储到存储器或者从存储器取数据,则需要通过逻辑运算器(CPU中),则CPU会停止工作,影响CPU的效率,为了提高CPU工作效率,出现了总线的概念。

总线结构图

上图是计算机中的一种总线结构,如果想了解更多的总线设计结构,可以查看计算机组成原理相关书籍,这里主要是为了说明为什么需要总线。

总线是连接多个部件的信息传输线,是各部件共享的传输介质。输入输出设备可以和主存通信而不用影响CPU的工作,这样CPU的工作效率得到了很大的提升。

  • 系统总线: 用于IO接口、主存、CPU之间的信息传输,IO和CPU之间只传输指令信息。
  • 主存总线: 专门用于主存和CPU之间的信息传输

1.2 系统总线的分类

  • 数据总线:

数据总线用来传输各功能部件之间的数据信息,它是双向传输总线,其位数就是数据总线的宽度。总之是用来传输数据的。

  • 地址总线:

地址总线主要用来指出数据总线上的源数据或目的数据在主存单元的地址或者I/O设备的地址。总之就是传输数据所在地址。

  • 控制总线:

由于数据总线、地址总线都是被挂在总线上的所有部件共享的,如何使各部件能在不同时刻占有总线使用权,需依靠控制总线来完成,因此控制总线是用来发出各种控制信号的传输线。总之是用来传输控制指令的。

2.分析问题缘由

问题:

  • 自己装的是4G内存条,可是操作系统显示的内存却是3.75G
  • 自己装的是8G内存条,可是操作系统显示的内存也是3.75G

在使用计算机时,其支持的最大内存是由操作系统和硬件两方面决定的。

硬件方面:

上面介绍总线的时候已经介绍了地址总线,是用来传输数据所在地址的,而32位系统一般有32根地址总线,那么所能传输的最大数据地址就是232
,这里所指的地址是真实的数据地址,即物理地址,CPU在执行指令时需要先将指令的逻辑地址变换为物理地址才能执行。

地址总线数目 最大支持内存
32位系统 32 2的32次方 = 4G
64位系统 36或40 2的36次方 = 64G 或 2的40次方= 1024G = 1T

系统方面:

用户在使用计算机时能够访问的最大内存不单是由CPU地址总线的位数决定的,还需要考虑操作系统的实现。实际上用户在使用计算机时,进程访问到的地址都是逻辑地址,并不是真实的物理地址,逻辑地址是由操作系统提供的,并维护了逻辑地址和物理地址的映射。

对于32位的windows操作系统,提供的逻辑地址寻址范围是4G,但是对于这4G的逻辑地址,又要划分出来一份给CPU寄存器、ROM的这些物理地址进行映射,那么剩下和内存条的物理地址进行映射的空间肯定没有4G了,如下图所示:

其实操作系统显示的内存3.75G,是逻辑地址。

相关文章

  • 32位系统最大只能支持4GB内存原因

    大家肯定都看过自己系统的内存,估计大家都遇到过下面的情况(都是32位系统): 自己装的是4G内存条,可是操作系统显...

  • Linux C 内存管理

    32位操作系统内存最大空间为 2^32 = 210*2102^104 = 4GB; 64位操作系统的内存分布 ​ ...

  • 概论;基本知识

    MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表...

  • #续 重装电脑系统

    上篇讲我终于把电脑密码破解了,这期就来聊聊重装系统。 我电脑原来的内存只有4GB,挺小,只能用win7系统。我当然...

  • 物理内存和虚拟内存的关系

    物理内存和虚拟内存的关系 进程容器中4GB空间的内容分布 在所谓的4GB空间内,系统内核占据了高2GB的空间,普通...

  • 48位寻址模式

    对于32位Linux操作系统,内存虚拟地址寻址空间为 232 字节=4GB。然而,64位Linux操作系统下内存虚...

  • 本地搭建kubernetes,运行golang程序(mac环境)

    1、mac安装docker 系统要求:Docker Desktop for Mac内存要求:4GB的RAM下载地址...

  • 进程

    1. 假设物理机内存大小为8GB,我现在系统剩余可用内存4GB。申请一个连续4GB的空间为什么一定能够申请成功?有...

  • Python Web服务器并发性能测试

    Python Web服务器并发性能测试 测试条件 测试机器:四核,4GB内存 系统环境:Ubuntu 14.04 ...

  • gitlab安装

    一:硬性要求: 内存:4GB 存储:100GB 系统:centos7.4 二:环境配置 1.selinux值为di...

网友评论

  • b96d9f77c164:问个问题,为什么32位系统只提供4G逻辑寻址范围?提供多些不就能利用全部4G内存了吗?所以逻辑寻址范围大小和地址总线数目有什么关系吗
    叫我龙哥:因为内存最小单位是字节(Byte),32位的二进制数的个数就是 2的32次方个,
    所以能展示出来的字节就只有这么多,
    就像你只有十个手指头,你单用手指头数不出来11一样,
    就是因为这个数只能有这么大,2的32次方个Byte换算出来就是 4 GigaByte

    2^10 * 2^10 * 2^10 * 2^2 Byte
    2^10 * 2^10 * 2^2 KiloByte (Byte -> KB)
    2^10 * 2^2 MegaByte (KB -> MB)
    2^2 GigaByte (MB -> GB)

本文标题:32位系统最大只能支持4GB内存原因

本文链接:https://www.haomeiwen.com/subject/kevfbttx.html