物理地址擴展
物理地址擴展(Physical Address Extension,縮寫為PAE),又釋實體位置延伸,是
x86處理器的一個功能,讓
中央處理器在
32位作業系統下存取超過4
GB的實體記憶體。
x86的處理器增加了額外的地址線以選擇那些增加了的記憶體,所以實體記憶體的大小從32位增加到了36位。最大的實體記憶體由4GB增加到了64GB。
32位的
虛擬地址(
線性地址)則沒有變,所以一般的套用軟體可以繼續使用地址為32位的指令;如果用
平面記憶體模式的話,這些軟體的地址空間也被限制為4GB。作業系統用
頁表將這4GB的地址空間映射到大小為64GB的實體記憶體,而這個映射對各個
進程一般是不一樣的。這樣一來,即使不能為單單一個程式所用,那些增加了的物理記憶體仍然可以發揮作用。
對於需要超過4GB記憶體的套用軟體來說,除了一般的PAE支持,還需要作業系統提供另外的特殊的技術。在
Windows上,這種技術叫做Address Windowing Extensions(AWE)。而在
類Unix的系統上則有多種技術在使用,例如使用mmap()按需要把一部分檔案映射到地址空間;但是,這還沒有成為一個標準。
有關術語
頁表結構
在傳統的32位的
保護模式中,x86處理器使用一種兩級的轉換方案。在這種方案中,控制暫存器CR3指向一個長4
KiB的
頁目錄(page directory);頁目錄又分為1024個每個4KB的
頁表(page table);最後頁表又分為1024個每個長4KB的
頁。
啟用PAE(通過設定控制暫存器CR4的第5位來啟用)會改變上面的方案。默認情況下,每
頁的大小是4KB的。頁表和頁目錄中的表項都從32位擴為64位(8位元組)以使用附加的地址位。但是,頁表和頁目錄的總大小不變。所以,頁表和頁目錄現在都只有512個表項。因為這變成了原來方案的一半,所以另外的一個級加了進來:CR3現在指向的是
頁目錄指針表,即一個包含4個頁目錄指針的表。
頁目錄里的表項的第7位叫做PS(Page Size)。如果這個位設為1,則頁目錄的表項不再指向頁表,而是指向一個2MB的頁。頁目錄里還有另外一個叫NX位元的標誌位。它是第63位,表示No eXecute。因為頁表項中最低的12位,要么是這種標識位,要么是和作業系統相關的數據,所以最多可有52位在將來用於在2位元組,即4pebibyte的物理記憶體中定址。
現在,
x86架構只使用該52位中的36位。對於在長模式(
long mode)中的
x86-64處理器,PAE是必須的;其中AMD64使用了52位中的40位或48位,而Intel64將最多使用46位。
CPU對PAE模式的支持可以通過
CPUID標誌
PAE來識別。
地址視窗擴展
應用程式保留虛擬地址空間的區域或“視窗”,並分配物理記憶體的一個或多個區域。使用地址視窗擴展API,套用可以將虛擬視窗映射到任何一個物理區域。應用程式可以保留多個虛擬地址空間,並將其映射到物理記憶體的任何分配區域,只需虛擬地址空間中保留的位元組數與物理記憶體區域相匹配。應用程式必須有“鎖定記憶體頁”的特權才能使用地址視窗擴展。
如果/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區域因此可作為保護敏感的應用程式數據(如加密
密鑰)的一種方式。
IPv4擴展地址技術
CIDR
無類別域間路由(Classless Inter-Domain Routing、CIDR)是一個用於給用戶分配IP位址以及在網際網路上有效地路由IP數據包的對IP位址進行歸類的方法。
在域名系統出現之後的第一個十年里,基於分類網路進行地址分配和路由IP數據包的設計就已明顯顯得可擴充性不足 (參見RFC 1517)。為了解決這個問題,網際網路工程工作小組在1993年發布了一新系列的標準——RFC 1518和RFC 1519——以定義新的分配IP位址塊和路由IPv4數據包的方法。
一個IP位址包含兩部分:標識網路的前綴和緊接著的在這個網路內的主機地址。在之前的分類網路中,IP位址的分配把IP位址的32位按每8位為一段分開。這使得前綴必須為8,16或者24位。因此,可分配的最小的地址塊有256(24位前綴,8位主機地址,28=256)個地址,而這對大多數企業來說太少了。大一點的地址塊包含65536(16位前綴,16位主機,216=65536)個地址,而這對大公司來說都太多了。這導致不能充分使用IP位址和在路由上的不便,因為大量的需要單獨路由的小型網路(C類網路)因在地域上分得很開而很難進行聚合路由,於是給路由設備增加了很多負擔。
無類別域間路由是基於可變長子網掩碼(VLSM)來進行任意長度的前綴的分配的。在RFC 950(1985)中有關於可變長子網掩碼的說明。CIDR包括:
指定任意長度的前綴的可變長子網掩碼技術。遵從CIDR規則的地址有一個後綴說明前綴的位數,例如:192.168.0.0/16。這使得對日益缺乏的IPv4地址的使用更加有效。
將多個連續的前綴聚合成超網,以及,在網際網路中,只要有可能,就顯示為一個聚合的網路,因此在總體上可以減少路由表的表項數目。聚合使得網際網路的路由表不用分為多級,並通過VLSM逆轉“劃分子網”的過程。
根據機構的實際需要和短期預期需要而不是分類網路中所限定的過大或過小的地址塊來管理IP位址的分配的過程。
DHCP
DHCP(Dynamic Host Configuration Protocol,動態主機配置協定)是一個區域網路的網路協定,使用UDP協定工作, 主要有兩個用途:給內部網路或網路服務供應商自動分配IP位址,給用戶或者內部網路管理員作為對所有計算機作中央管理的手段,在RFC 2131中有詳細的描述。DHCP有3個連線埠,其中UDP67和UDP68為正常的DHCP服務連線埠,分別作為DHCP Server和DHCP Client的服務連線埠;546號連線埠用於DHCPv6 Client,而不用於DHCPv4,是為DHCP failover服務,這是需要特別開啟的服務,DHCP failover是用來做“雙機熱備”的。
DHCP(Dynamic Host Configuration Protocol,動態主機配置協定)通常被套用在大型的區域網路環境中,主要作用是集中的管理、分配IP位址,使網路環境中的主機動態的獲得IP位址、Gateway地址、DNS伺服器地址等信息,並能夠提升地址的使用率。
DHCP協定採用客戶端/伺服器模型,主機地址的動態分配任務由網路主機驅動。當DHCP伺服器接收到來自網路主機申請地址的信息時,才會向網路主機傳送相關的地址配置等信息,以實現網路主機地址信息的動態配置。DHCP具有以下功能:
1. 保證任何IP位址在同一時刻只能由一台DHCP客戶機所使用。
2. DHCP應當可以給用戶分配永久固定的IP位址。
3. DHCP應當可以同用其他方法獲得IP位址的主機共存(如手工配置IP位址的主機)。
4. DHCP伺服器應當向現有的BOOTP客戶端提供服務。
NAT
網路地址轉換(Network Address Translation)簡稱為NAT,是將IP數據包包頭中的IP位址轉換為另一個IP位址的協定。當IP數據包通過路由器或者安全網關時,路由器或者安全網關會把IP數據包的源IP位址和/或者目的IP位址進行轉換。在實際套用中,NAT主要用於私有網路訪問外部網路或外部網路訪問私有網路的情況。NAT有以下優點:
私有網路一般使用私有地址,RFC1918規定的三類私有地址如下:
A類:10.0.0.0 - 10.255.255.255(10.0.0.0/8)
B類:172.16.0.0 - 172.31.255.255(172.16.0.0/12)
C類:192.168.0.0 - 192.168.255.255(192.168.0.0/16)
上述三個範圍的IP位址不會在網際網路上被分配,因而可以不必向ISP(Internet Service Provider)或註冊中心申請,而在公司或企業內部自由使用。