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