32位,64位系统寻址空间及最大内存

理论上:32位=2^32B = 4 * 2^30B = 4GB,这是 32 位下单进程内存上限

目前(2015年5月),Intel的32位架构下,可使用的地址线是36个,可使用的最大物理地址是2^36B,折合64GB,可用的地址空间是4GB。

64位架构下,地址线是46个,所以最大的物理地址是2^46B,折合64TB,可用地址空间也是这么大(目前为止):

为什么32位Windows中实际可用内存少于4G:

虽然物理地址有4G,但CPU如果要访问你的显卡上的显存,就必须把物理地址空间的一部分用于标识显存,这种技术被称为memory-mapped I/O,这样可以让CPU操作显存像操作内存一样。

在Windows的设备管理器里,查看显卡的属性页里的“资源”,可以看到内存映射的地址范围,实际上不管32位还是64位,都需要占用一部分地址空间,32位Windows只有4G的地址空间,被显存占去了一部分,所以可用的地址空间就少于4G了

实际上不仅仅是显存,你电脑上的PCI控制器,各种网卡、声卡、USB控制器等等都需要占用一定的物理内存,所以最终的后果就是可用的物理地址范围变得特别少,最少可能只有1.99GB,这种限制在32位Windows上是不可改变的。

所以,32位WIN7的可用内存才变得那么少,解决问题的唯一途径是换64位系统,或者Linux。

CPU CPU Address Bus Size  Maximum RAM 
8086 20 bit  1MB
8088  20 bit  1MB
80286  24 bit  16MB
80386SX 24 bit  16MB
80386DX  32 bit  4GB
80486SX  32 bit  4GB
80486DX 32 bit  4GB
Pentium I  32 bit  4GB
K6 32 bit  4GB
Duron  32 bit  4GB
Athlon  32 bit  4GB
Athlon XP  32 bit 4GB
Celeron   36 bit 64GB
Pentium Pro 36 bit  64GB
Pentium II 36 bit 64GB
Pentium III 36 bit 64GB
Pentium 4  36 bit 64GB
Athlon   40 bit 1TB 
Athlon-64  40 bit 1TB 
Athlon-64 FX  40 bit 1TB 
Opteron   40 bit 1TB 
Itanium  44 bit  16TB 
Itanium 2   44 bit 16TB 

PAE确实可以让x86硬件支持到能够访问64G的地址空间,Windows的内核也支持使用多达64G的物理地址空间,但是微软偏偏要对各个版本的Windows的物理内存上限作出限制,下面是XP和Win7的物理内存上限

参考:https://blog.csdn.net/w892824196/article/details/80558114

https://bbs.pediy.com/thread-137830.htm

https://docs.microsoft.com/zh-cn/windows/win32/memory/memory-limits-for-windows-releases?redirectedfrom=MSDN

发布了162 篇原创文章 · 获赞 125 · 访问量 47万+

猜你喜欢

转载自blog.csdn.net/jiangchao3392/article/details/102475181