字體:  

Oracle & Windows 在32bit、64bit下的記憶體關係

camry 發表於: 2008-1-09 17:49 來源: ADJ網路控股集團


標準的32位元位址,最大可以對應4GB的記憶體。因此會將32位元處理序的標準位址空間限制為
4GB。同時,根據Win32 OS 的預設值,會保留上層的2 GB位址空間保留給Kernel使用(Kernel mode),而下層的2GB位址空間則提供給process使用(User mode)。所以
在win32的架構下,預設每個process最多只能使用不超過2GB的記憶體。若要使用到上層的記憶體或更高的記憶體,則需啟動 PAE、3GB等選項。

PAE(Physical Address Extension):為CPU的功能,可以定址4GB以上的實體記憶體。但最大值會受到OS版本的限制。

當PAE啟動後,應用程式即可透過AWE這個API去使用4G以上的位址空間。
而3GB 又稱4GB Tuning Feature,啟動此選項可讓kernel


讓出1GB給PROCESS 使用,4GB的位址會變成:kernel mode占1GB,user mode占3GB。

下表為
Windows 32 bit OS開啟PAE後支援的最大實際記憶體容量:

作業系統
支援 PAE 後的最大記憶體容量
Windows 2000 Advanced Server
8 GB 的實體 RAM
Windows 2000 Datacenter Server
32 GB 的實體 RAM
Windows XP (所有版本)
4 GB 的實體 RAM*
Windows Server 2003 (and SP1) Standard Edition
4 GB 的實體 RAM*
Windows Server 2003 Enterprise Edition
32 GB 的實體 RAM
Windows Server 2003 Datacenter Edition
64 GB 的實體 RAM
Windows Server 2003 SP1 Enterprise Edition
64 GB 的實體 RAM
Windows Server 2003 SP1 Datacenter Edition
128 GB 的實體 RAM
註 *表示此版本中實體位址空間的總容量最大為4GB。
所以,若以Windows 2003 Standard Edition來說,由於它最多只支援到4G的實體記憶體,啟動PAE並沒有任何意義,只能藉由啟動3GB,來使ORACLE 能多用1G的記憶體。
此外,即便使用了AWE,但是額外的記憶體只能用來當做資料快取。其他供鎖定、快取程序排程、使用者連線、與資料指標使用的記憶體只能放在非AWE的記憶體區域,也就是說只可以加大
database buffer cache 這塊memory結構,而其餘的memory結構,無論在何種版本,最大也只能給2GB。


至於
64bit來說,位址最大可對應到16 TB,而在實體記憶體支援下,Standard Edition可支援到32GB,
Enterprise Edition及Datacenter Edition 可支援到1TB。



參考資料:
http://www.microsoft.com/whdc/system/platform/server/PAE/pae_os.mspx
http://support.microsoft.com/?scid=kb%3Bzh-tw%3B283037&x=10&y=11
http://www.microsoft.com/taiwan/whdc/system/platform/server/PAE/PAEdrv.mspx#E2D