添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

理论上: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

理论上:32位=2^32B = 4 * 2^30B = 4GB,这是 32 位下单进程内存上限目前(2015年5月),Intel的32位架构下,可使用的地址线是36个,可使用的最大物理地址是2^36B,折合64GB,可用的地址空间是4GB。64位架构下,地址线是46个,所以最大的物理地址是2^46B,折合64TB,可用地址空间也是这么大(目前为止):为什么32位Win... ip地址是 32位 的,那么所有可能的ip地址一共有2**32=4G个。 那么问题来了,这所有的ip地址存储起来到底是多大的 空间 呢? 一开始忽略了这个问题,直接认为是4G的 空间 ,仔细想了想,不对啊,每一个ip地址是 32位 =4byte,那么4G种变化x4byte=16GB 空间 啊。这应该才是正解。 于是第二个问题来了: 32位 寻址 地址的操作 系统 内存 应该是多大
对于Linux 64位 系统 ,理论上,64bit 内存 地址可用 空间 为0x0000000000000000 ~ 0xFFFFFFFFFFFFFFFF(16位十六进制数),这是个相当庞大的 空间 ,Linux实际上只用了其中一小部分(256T)。 Linux 64位 操作 系统 仅使用低47位,高17位做扩展(只能是全0或全1)。所以,实际用到的地址为 空间 为0x0000000000000000 ~ 0x00007FFFFFFFFFFF(user space)和0xFFFF800000000000 ~ 0xFFFFFFFFFFF