複製鏈接
請複製以下鏈接發送給好友

地址窗口擴展

鎖定
地址窗口擴展(英語:Address Windowing Extensions,縮寫AWE)是一項Microsoft Windows應用程序接口,它允許32位應用軟件訪問超出其虛擬地址空間限制(4GB)的物理內存。在地址窗口擴展下將應用程序的虛擬地址空間映射到物理內存的過程被稱為“加窗”(windowing),並類似其他環境的覆蓋概念。AWE對於需要操作極大數據集數據密集型應用程序(例如數據庫管理系統,科學工程學軟件)有益。
中文名
地址窗口擴展
外文名
Address Windowing Extensions
縮    寫
AWE
領    域
計算機

地址窗口擴展簡介

應用程序保留虛擬地址空間的區域或“窗口”,並分配物理內存的一個或多個區域。使用地址窗口擴展API,應用可以將虛擬窗口映射到任何一個物理區域。應用程序可以保留多個虛擬地址空間,並將其映射到物理內存的任何分配區域,只需虛擬地址空間中保留的字節數與物理內存區域相匹配。應用程序必須有“鎖定內存頁”的特權才能使用地址窗口擴展。
當保留內存超過4GB時,地址窗口擴展依賴於物理地址擴展的支持。地址窗口擴展在Windows 2000中作為一個取代PSE36方法的新API被引入。PSE36方法自Windows NT 4.0企業版引入,用於訪問超過4GB內存,在Windows 2000中已不支持。第一批使用地址窗口擴展的應用程序是Oracle8.1.6和Microsoft SQL Server2000。
如果/3GB引導標識被使用以重新分配32位虛擬空間(2GB內核空間和2GB用户空間改為3GB用户空間),地址窗口擴展將只能訪問16GB物理內存。此限制是因為只有1GB內存保留給內核,而沒有足夠的內存用於映射超過16GB內存的頁表項。通過地址窗口擴展可尋址的最大內存量也因Windows許可方案而額外限制。例如,Windows 2000 Advanced Server限制為8GB,Windows 2000 Data Center Server則支持64GB。
2004年在Dr. Dobb's Journal發佈的一篇文章稱注意到使用地址窗口擴展分配的內存將不會被寫入頁面文件,並建議AWE區域因此可作為保護敏感的應用程序數據(如加密密鑰)的一種方式。 [1] 

地址窗口擴展擴展存儲器

擴展存儲器(英語:Expanded Memory)是1985年4月24日,由Lotus、英特爾微軟聯合發佈的一項DOS內存技術,可以提供MS-DOS程序更多的存儲器。
八十年代的個人計算機(IBM PC/AT)多半使用實模式,只有1MB的定址空間,且640KB以上的定址空間不可被應用程序讀寫使用。
擴展存儲器的原理是使用1MB扣除640KB後剩下的384KB,稱作上端內存區(upper memory area), 這本來是用來跟外設溝通的空間, 給程序使用。把內存的定址窗口插入到上端內存區的外設定址空間,引入了bank switching (存儲體轉換)的技巧。 同一時間只有一部分的額外存儲器可以被訪問。 使用64KB的memory windows做為bank switching 的單位。
早期可以購買存儲器擴充卡來插在ISA bus插槽上,之後,一些Intel 80286的主機版的芯片組實現了 expanded memory scheme, 就不用再買擴充卡,而用軟件設置就可以決定多少存儲器被用做擴展存儲器,多少存儲器被用做延伸存儲器
1987年開始,內置存儲器管理功能的Intel 80386 處理器讓在傳統實模式下的程序,可以有不受限的 定址空間,硬件解決方案就變得沒有必要。這時擴展存儲器只能用軟件來模擬了。
在80286與之後的處理器,一個更有效率的方法訪問640KB以後的存儲器, 就是用DOS Proteced Mode Interface.DOS extenders 是一個使程序可以在保護模式下運行的驅動程序。與其用banking技巧訪問更多存儲器,這個驅動程序可以讓應用程序在保護模式與實模式間切換, (在需要MS-DOS服務時回到實模式)這樣就使用應用程序可以直接訪問延伸存儲器。 [1] 

地址窗口擴展物理地址擴展

物理地址擴展Physical Address Extension,縮寫為PAE),又釋實體位置延伸,是x86處理器的一個功能,讓中央處理器32位操作系統下存取超過4GB的實體內存。
PAE為IntelPentium Pro及以上級別的CPU(包括除了總線頻率為400MHz的這個版本的奔騰M之外的所有新型號奔騰系列處理器)所支持,其他兼容的處理器,如速龍(Athlon)和AMD的較新型號的CPU也支持PAE。
x86的處理器增加了額外的地址線以選擇那些增加了的內存,所以實體內存的大小從32位增加到了36位。最大的實體內存由4GB增加到了64GB。
32位的虛擬地址線性地址)則沒有變,所以一般的應用軟件可以繼續使用地址為32位的指令;如果用平面內存模式的話,這些軟件的地址空間也被限制為4GB。操作系統用頁表將這4GB的地址空間映射到大小為64GB的實體內存,而這個映射對各個進程一般是不一樣的。這樣一來,即使不能為單單一個程序所用,那些增加了的物理內存仍然可以發揮作用。
對於需要超過4GB內存的應用軟件來説,除了一般的PAE支持,還需要操作系統提供另外的特殊的技術。在Windows上,這種技術叫做Address Windowing Extensions(AWE)。而在類Unix的系統上則有多種技術在使用,例如使用mmap()按需要把一部分文件映射到地址空間;但是,這還沒有成為一個標準。 [2] 
參考資料
  • 1.    Sajal Dam. SQL Server Query Performance Tuning Distilled. Apress. 2004: 28–29.
  • 2.    Tuning IBM xSeries Servers for Performance (PDF) 3rd. IBM SG24-5287-02. June 2002: 92–93.