實體地址擴充套件

  在電腦科學中,是指x86和x86-64處理器的一個特色,即如果作業系統提供適當支援,則可以在32位的系統中使用超過4GiB位元組的實體記憶體,那麼是什麼意思?小編整理了的相關資料,下面大家跟著小編一起去了解一下吧。

  

  x86的處理器增加了額外的地址線以選擇那些增加了的記憶體,所以實體記憶體的大小從32位增加到了36位。最大的實體記憶體由4GiB增加到了64GiB。32位的虛擬地址***線性地址***則沒有變,所以一般的應用軟體可以繼續使用地址為32位的指令;如果用平面記憶體模式的話,這些軟體的地址空間也被限制為4GiB。作業系統用頁表將這4GiB的地址空間對映到大小為64GiB的實體記憶體,而這個對映對各個程序一般是不一樣的。這樣一來,即使不能為單單一個程式所用,那些增加了的實體記憶體仍然可以發揮作用。對於需要超過4GiB記憶體的應用軟體來說,除了一般的PAE支援,還需要作業系統提供另外的特殊的技術。在Windows上,這種技術叫做Address Windowing Extensions***AWE***。而在類Unix的系統上則有多種技術在使用,例如使用mmap******按需要把一部分檔案對映到地址空間;但是,這還沒有成為一個標準。

  在傳統的32位的保護模式中,x86處理器使用一種兩級的轉換方案。在這種方案中,控制暫存器CR3指向一個長4KiB的頁目錄***page directory***;頁目錄又分為1024個每個4KiB的頁表***page table***;最後頁表又分為1024個每個長4KiB的頁。

  啟用PAE***通過設定控制暫存器CR4的第5位來啟用***會改變上面的方案。預設情況下,每頁的大小是4KiB的。頁表和頁目錄中的表項都從32位擴為64位***8位元組***以使用附加的地址位。但是,頁表和頁目錄的總大小不變。所以,頁表和頁目錄現在都只有512個表項。因為這變成了原來方案的一半,所以另外的一個級加了進來:CR3現在指向的是頁目錄指標表,即一個包含4個頁目錄指標的表。

  頁目錄裡的表項的第7位叫做PS***Page Size***。如果這個位設為1,則頁目錄的表項不再指向頁表,而是指向一個2MiB的頁。頁目錄裡還有另外一個叫NX位元的標誌位。它是第63位,表示No eXecute。因為頁表項中最低的12位,要麼是這種標識位,要麼是和作業系統相關的資料,所以最多可有52位在將來用於在2^52位元組,即4pebibyte的實體記憶體中定址。

  現在,x86架構只使用該52位中的36位。對於在長模式***long mode***中的x86-64處理器,PAE是必須的;其中使用了52位中的40位或48位

  作業系統的支援

  FreeBSD

  FreeBSD的4.x系列從4.9開始支援PAE,而5.x系列則從5.1開始。6.x及以後的系列都支援PAE。對核心的關於PAE的配置是必須的。如果一個可載入核心模組是啟用了PAE的,則它只可以被載入到一個啟用了PAE的核心;FreeBSD中二進位制版本的模組沒有啟用PAE,所以它們不能載入到啟用了PAE的核心。並不是所有驅動程式都支援4GiB的實體記憶體的;這種驅動程式不能在啟用了PAE的核心下正常工作[2] 。

  Linux

  Linux核心從2.6版本開始全面支援PAE[3] ,這使得在32位的機器上可以訪問64GB的記憶體。啟用了PAE的Linux核心還需要同樣支援PAE的CPU。從2008年起,很多一般的釋出的Linux版本都預設使用啟用了PAE的核心。

  Mac OS X

  執行在Intel CPU上的Mac OS X都支援PAE和NX位;在受蘋果支援的CPU上它也支援該兩種特性。即使Mac OS X 10.5 Leopard核心仍然是32位的,但是Mac Pro和Xserve系統現在也是支援32GiB的RAM的。[4]

  Solaris

  Solaris從版本7開始支援PAE。但是,版本7的那些沒有專門支援PAE的第三方驅動程式在支援PAE的系統上可能會發生錯誤,甚至完全崩潰。

  Windows

  PAE受下列版本的32位版的Windows所支援:

  Windows XP SP2和其他新的版本,預設在有no-execute ***NX***和execute-disable ***XD***特性的處理器上以PAE模式執行以允許NX。NX***或XD***在頁表項的第63位。如果沒有PAE,頁表項只就32位;所以要利用NX這個特性的話,就必須執行在PAE模式下。但是,基於為保證驅動相容等原因,微軟通過許可證,在核心中把桌面版Windows***包括Windows XP、Windows Vista和Windows 7***和部分低端Windows Server的實體地址空間限制為4GiB。