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

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章