很多人可能都聽過類似微軟的
聲明,32位操作系統(tǒng)的內(nèi)存上限為4GB,原因是32位架構(gòu)只能處理這么大的物理尋址空間,如果要利用4GB以上的內(nèi)存則需要64位操作系統(tǒng)。這些都是胡說八道,4GB的限制不是因為架構(gòu)或物理硬件限制等問題,而是微軟
只許可你使用這么多內(nèi)存。我們可以追溯一下歷史,如果按照這一理論,16位操作系統(tǒng)的內(nèi)存限制為64K,但比爾蓋茨讓微軟的第一個16位版本操作系統(tǒng)設(shè)計能在1MB的物理尋址空間內(nèi)使用640KB內(nèi)存。Geoff Chappell在
一篇文章內(nèi)詳細(xì)解釋了為什么32位Windows Vista其實可以使用4GB以上的物理內(nèi)存。
Windows Server 2008和Windows Vista SP1的核心代碼是完全相同的,微軟宣傳32位Windows Server 2008可以使用最大64GB內(nèi)存,但為什么Windows Vista SP1只能限制為4GB。難道Windows Server 2008的驅(qū)動能安全的使用4GB以上內(nèi)存,而Windows Vista SP1卻不行?這是一個許可問題,因為微軟自己就是這么稱呼它的,通過調(diào)用名為ZwQueryLicenseValue的函數(shù),可以從注冊表中檢索到4GB內(nèi)存限制。實際上早在10年前,32位操作系統(tǒng)就能在Intel的32位處理器上使用4GB以上的物理尋址空間,如Windows 2000 Professional便可以通過物理地址擴(kuò)展(PAE)使用4GB以上的內(nèi)存。32位和64位Windows都能使用所有物理內(nèi)存,但32位Windows只能分配給每個應(yīng)用程序不超過3GB的內(nèi)存,這是由于線性地址空間的限制。