物理地址擴(kuò)展
在計(jì)算機(jī)科學(xué)中,物理地址擴(kuò)展是指x86和x86-64處理器的一個(gè)特色,即如果操作系統(tǒng)提供適當(dāng)支持,則可以在32位的系統(tǒng)中使用超過(guò)4GiB字節(jié)的實(shí)體內(nèi)存,那么物理地址擴(kuò)展是什么意思?學(xué)習(xí)啦小編整理了物理地址擴(kuò)展的相關(guān)資料,下面大家跟著學(xué)習(xí)啦小編一起去了解一下吧。
物理地址擴(kuò)展
x86的處理器增加了額外的地址線以選擇那些增加了的內(nèi)存,所以實(shí)體內(nèi)存的大小從32位增加到了36位。最大的實(shí)體內(nèi)存由4GiB增加到了64GiB。32位的虛擬地址(線性地址)則沒(méi)有變,所以一般的應(yīng)用軟件可以繼續(xù)使用地址為32位的指令;如果用平面內(nèi)存模式的話,這些軟件的地址空間也被限制為4GiB。操作系統(tǒng)用頁(yè)表將這4GiB的地址空間映射到大小為64GiB的實(shí)體內(nèi)存,而這個(gè)映射對(duì)各個(gè)進(jìn)程一般是不一樣的。這樣一來(lái),即使不能為單單一個(gè)程序所用,那些增加了的物理內(nèi)存仍然可以發(fā)揮作用。對(duì)于需要超過(guò)4GiB內(nèi)存的應(yīng)用軟件來(lái)說(shuō),除了一般的PAE支持,還需要操作系統(tǒng)提供另外的特殊的技術(shù)。在Windows上,這種技術(shù)叫做Address Windowing Extensions(AWE)。而在類Unix的系統(tǒng)上則有多種技術(shù)在使用,例如使用mmap()按需要把一部分文件映射到地址空間;但是,這還沒(méi)有成為一個(gè)標(biāo)準(zhǔn)。
在傳統(tǒng)的32位的保護(hù)模式中,x86處理器使用一種兩級(jí)的轉(zhuǎn)換方案。在這種方案中,控制暫存器CR3指向一個(gè)長(zhǎng)4KiB的頁(yè)目錄(page directory);頁(yè)目錄又分為1024個(gè)每個(gè)4KiB的頁(yè)表(page table);最后頁(yè)表又分為1024個(gè)每個(gè)長(zhǎng)4KiB的頁(yè)。
啟用PAE(通過(guò)設(shè)置控制暫存器CR4的第5位來(lái)啟用)會(huì)改變上面的方案。默認(rèn)情況下,每頁(yè)的大小是4KiB的。頁(yè)表和頁(yè)目錄中的表項(xiàng)都從32位擴(kuò)為64位(8字節(jié))以使用附加的地址位。但是,頁(yè)表和頁(yè)目錄的總大小不變。所以,頁(yè)表和頁(yè)目錄現(xiàn)在都只有512個(gè)表項(xiàng)。因?yàn)檫@變成了原來(lái)方案的一半,所以另外的一個(gè)級(jí)加了進(jìn)來(lái):CR3現(xiàn)在指向的是頁(yè)目錄指針表,即一個(gè)包含4個(gè)頁(yè)目錄指針的表。
頁(yè)目錄里的表項(xiàng)的第7位叫做PS(Page Size)。如果這個(gè)位設(shè)為1,則頁(yè)目錄的表項(xiàng)不再指向頁(yè)表,而是指向一個(gè)2MiB的頁(yè)。頁(yè)目錄里還有另外一個(gè)叫NX位元的標(biāo)志位。它是第63位,表示No eXecute。因?yàn)轫?yè)表項(xiàng)中最低的12位,要么是這種標(biāo)識(shí)位,要么是和操作系統(tǒng)相關(guān)的數(shù)據(jù),所以最多可有52位在將來(lái)用于在2^52字節(jié),即4pebibyte的物理內(nèi)存中尋址。
現(xiàn)在,x86架構(gòu)只使用該52位中的36位。對(duì)于在長(zhǎng)模式(long mode)中的x86-64處理器,PAE是必須的;其中使用了52位中的40位或48位
操作系統(tǒng)的支持
FreeBSD
FreeBSD的4.x系列從4.9開(kāi)始支持PAE,而5.x系列則從5.1開(kāi)始。6.x及以后的系列都支持PAE。對(duì)內(nèi)核的關(guān)于PAE的配置是必須的。如果一個(gè)可加載內(nèi)核模塊是啟用了PAE的,則它只可以被加載到一個(gè)啟用了PAE的內(nèi)核;FreeBSD中二進(jìn)制版本的模塊沒(méi)有啟用PAE,所以它們不能加載到啟用了PAE的內(nèi)核。并不是所有驅(qū)動(dòng)程序都支持4GiB的物理內(nèi)存的;這種驅(qū)動(dòng)程序不能在啟用了PAE的內(nèi)核下正常工作[2] 。
Linux
Linux內(nèi)核從2.6版本開(kāi)始全面支持PAE[3] ,這使得在32位的機(jī)器上可以訪問(wèn)64GB的內(nèi)存。啟用了PAE的Linux內(nèi)核還需要同樣支持PAE的CPU。從2008年起,很多一般的發(fā)布的Linux版本都默認(rèn)使用啟用了PAE的內(nèi)核。
Mac OS X
運(yùn)行在Intel CPU上的Mac OS X都支持PAE和NX位;在受蘋果支持的CPU上它也支持該兩種特性。即使Mac OS X 10.5 Leopard內(nèi)核仍然是32位的,但是Mac Pro和Xserve系統(tǒng)現(xiàn)在也是支持32GiB的RAM的。[4]
Solaris
Solaris從版本7開(kāi)始支持PAE。但是,版本7的那些沒(méi)有專門支持PAE的第三方驅(qū)動(dòng)程序在支持PAE的系統(tǒng)上可能會(huì)發(fā)生錯(cuò)誤,甚至完全崩潰。
Windows
PAE受下列版本的32位版的Windows所支持:
Windows XP SP2和其他新的版本,默認(rèn)在有no-execute (NX)和execute-disable (XD)特性的處理器上以PAE模式運(yùn)行以允許NX。NX(或XD)在頁(yè)表項(xiàng)的第63位。如果沒(méi)有PAE,頁(yè)表項(xiàng)只就32位;所以要利用NX這個(gè)特性的話,就必須運(yùn)行在PAE模式下。但是,基于為保證驅(qū)動(dòng)兼容等原因,微軟通過(guò)許可證,在內(nèi)核中把桌面版Windows(包括Windows XP、Windows Vista和Windows 7)和部分低端Windows Server的物理地址空間限制為4GiB。
看過(guò)“ 物理地址擴(kuò)展”的人還看了: