2011年1月26日 星期三

設定讓Windows作業系統支援大於4GB

正常一般來說,很多人以為主機板把RAM插上去,系統就可以用了,也不用再去特別做什麼樣的設定,這個想法不全然正確,如果RAM只有4G以下(含4G) 的話,那麼確實是插上去就可以用了,如果是4G以上,加上電腦是32位元的,那麼就必需要做一些設定與調整,才能使用到4G以上的記憶體空間.


在前段有提到,32位元的才要設定,64位元的就不用了,原因在於32位元預設最多可定址4GB(2^32)的記憶體空間,操作系統保留2G,另外2G給應用程式進行使用,而64位元可以存取的虛擬記憶體上限為16TB(2^40),雖然話說如此,但看的到不見得吃的到,還要再看作業系統本身的限定.

 32位元64位元
Windows XP Pro4GB128GB
Windows 2003 Server Standard4GB32GB
Windows 2003 Server Enterprice32GB1TB
Windows 2003 Server Enterprice SP164GB1TB
Windows 2003 Server DataCenter64GB1TB
Windows 2003 Server DataCenter SP1128GB1TB
Windows Visita 家用入門4GB8GB
Windows Visita 家用進階4GB16GB
Windows Visita 商用入門4GB128GB
Windows Visita 商用進階4GB128GB
Windows Visita 旗艦版4GB128GB


其它的作業系統,就自己去找看看了,未來的SP更新是否會提升上限,也不得而知,所以這是截至目前為此的資料. 本文的重點在於告訴大家怎麼去用4G以上的記憶體.
首先,BIOS一定要先抓到全部的記憶體,這有點廢話,但也是重點,BIOS抓不到,後續也都是白講,而BIOS抓不到要怎麼辦,那就看各家主機板的說明了.
再來就是OS Level的設定了,這有幾個參數設定是支援4G以上記憶體有關的,而這個設定值就是存在boot.ini裡面.

修改前  boot.ini 內容
===============================

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Windows Server 2003, Standard" /noexecute=optout /fastdetect

================================

修改內容 加上 /PAE 如下

================================

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Windows Server 2003, Standard" /noexecute=optout /fastdetect /PAE

=============================
重開機後就可以看到系統抓到4GB了

為了使作業系統能抓到4G以上的記憶體,我們會加一個參數/PAE,這個參數就能使作業系統正確的抓到4G以上的記憶體,所以上述的boot loader最後一行就會長的跟下面這行一樣 :
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprice" /noexecute=optout /fastdetect /PAE
那作業系統已經抓到記憶體了,就可以正常使用了嗎? 答案是還沒,可以發現到,記憶體用量不管怎麼用,總是只會用到4G,並不會超過4G,所以總是會有記憶體"剩"下來,這時就要加上/AWE這個參數,這個參數能使應用程式使用超過2-3G的記憶體使用,所以加上這個參數後,就可以充份使用4G以上的記憶體了.

其它還有一些記憶體的參數可以使用,例如/3GB,在這個參數沒有下之前,系統是預設2G給操作系統,2G給應用程式,如果下了/3GB後,就會是系統 1G,應用程式3G,那如果是4G以上,這個3GB會是怎麼分配記憶體呢?還是一樣,系統只會用到1GB,剩下的給應用程式,所以不是總記憶體除以3或是應用程式只用到3G,而這個參數在使用時,也有一些要注意的地方,當記憶體超過16G時,就不可使用此參數,因為16G以上時,系統需要2G的記憶體空間,如果只給1G,那就會出問題了,所以切記,當記憶體有16G以上時,不要加上/3GB.
另外還有一個參數/USERVA=XXXX與/3GB相似,不過它是使用者可以自行設定,這部份可以參考MSDN的說明 KB316739

作業系統的設完了,基本上,這記憶體已能被應用程式充份使用,除了應用程式本身的設定限制外,例如SQL本身還可以設定記憶體用量及AWE的功能還可以再去設定限制,是都可以充份使用全部的記憶體了.

註 : boot.ini除了用檔案總管的方式找到它,用記事本開啟修改外,也可在[我的電腦]按右鍵內容,於[進階]的Tag內點取[啟動及修復]的[設定],就可以看到預設作業系統,按下編輯就可以直接修改了.

沒有留言:

張貼留言