大家肯定都看过自己系统的内存,估计大家都遇到过下面的情况(都是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,是逻辑地址。
转发:https://www.jianshu.com/p/ead6129c6cb4