引用:
作者ag5h2wctyos
你願意拿出幾百萬 贊助老闆換軟體嗎 ??
|
說的真好
反正先天上幾乎所有的32bit 軟體也吃不下那麼多記憶體,其實可以連買RAM的錢都可以省了。
回歸正題。
前面dmwc網友說的很好很傳神啊,不過看來他的聲音傳達不到啊
今日,32bit軟體的限制就是如此,基本限制使用最多2GB空間,改編譯設定可以到3GB。
雖然是可以利用AWE API去讓32bit軟體使用超過2GB/3GB的記憶體,但是這種軟體實在是少之又少,而且多半這種軟體會希望你至少在server版上OS執行。
而且,這種軟體多半索價不斐,相比之下,一套MS Windows Server版的價格根本就不算什麼。
最後,那個老外的修改法,最大的意義只是證明x86版的XP/Vista的核心可以控制超過4GB的記憶體。
但是就現實考量下,在XP/Vista x86版搞這東西,還不如把多的記憶體拿去做ramdisk放暫存檔還來得有用多了。
當然,我不敢說這方法完全沒用,各人的需求不盡相同,或許真的有人就要用32bit XP/Vista,裝個8GB RAM去跑有用到AWE API的軟體也說不定,如果你就是這個人的話,那就請服用此帖特效藥然後再拼命幹樵微軟為什麼不開放限制。
還有如果把OS換成linux情況也是差不多。
頂多就是linux開了PAE後就直接給64G定址,還有讓單一32bit軟體可以最多用到4GB(預設值一樣是2GB)。
最後容我總結一下,在32bit windows OS下
1. 單一的32bit軟體最多可以用到2GB的虛擬記憶體(VM),透過設定最多可以用到3GB(VM)
2. 所有的32bit軟體都必需放在4G定址以下的實體記憶體執行
3. 透過PAE所支援超過4G定址的記憶體,該空間只能拿來拿存取資料,並無法將程式放到該空間執行
4. 32bit軟體可以透過AWE API使用超過2GB/3GB(VM)的記憶體,但是只能拿來存取資料
在64bit windows OS下
1. 32bit軟體也還是受到一樣上面列出的限制,但最多可以用到4GB的虛擬記憶體
2. 因仍舊支援AWE API,所以使用AWE API的32bit軟體也一樣可以順利執行
3. 64bit的軟體可以放在高於4G定址空間的實體記憶體空間執行,且無需使用特別的API就可以使用高達8TB的虛擬記憶體
另外再容我解釋一下裝了在32bit OS下裝了4GB的RAM卻只能使用3.xGB的空間問題
這問題只要是有寫過驅動程式的人都知道是怎麼回事。對沒寫過driver的網友我會盡量講得簡單一些。
簡單的說,要操作各式周邊硬體(很多,但不是全部),就是針對特定位址線做讀寫動作,不只是x86,連ARM、MIPS等各種CPU也是使用這方式來控制各式週邊,且看來也是目前的唯一解。
今日剛好這些位址線和記憶體定址空間蓋到了,所以就只好犧牲掉該區的記憶體定址空間來換取可操作硬體的的能力。
為此Intel才提出了memory remapping的解決方案,原理很簡單,大致上就如同字面所述,Intel那邊也有資料可看。問題是在接下來的軟體需求
為了要能使用超過4G定址空間,在32bit OS下就得使用PAE去定址和使用該塊實體記憶體,然後接下來就回到最上面劣者總結出的32bit軟體的限制。
今日為什麼有人在x86 XP/Vista下開了memory remapping後反而可用記憶減少?因為該塊實體記憶已經被remapping到超過4G定址空間,算是給PAE控管區,但是OS又限死在4GB,所以remapping後的記憶體就這樣消失在空氣中了