pae扩展内存 linux,Linux内核-内存管理-PAE(物理地址扩展)
Intel 通過(guò)在處理器上把管腳數(shù)從 32 增加到 36,以提高處理器的尋址能力,使其達(dá)到 2^36=64GB,然而線性地址的位數(shù)仍然是 32 位,為此,需引入一種新的分頁(yè)機(jī)制。從pentium pro 處理器開(kāi)始,intel引入一種叫做 PAE 的機(jī)制,Linux 中使用了這種機(jī)制。
64GB 的 RAM 被分為 2^24 個(gè)頁(yè)框,頁(yè)表項(xiàng)的物理地址字段從 20 位擴(kuò)展到 24 位,每個(gè)頁(yè)表項(xiàng)必須包含 12 個(gè)標(biāo)志位(固定)和 24 個(gè)物理地址位(36-12,因?yàn)樽疃嘤?2^24 個(gè)頁(yè)框可以被頁(yè)表項(xiàng)指定),共 36 位,因此,每個(gè)頁(yè)表項(xiàng)須從 32 位擴(kuò)展到 64 位(36位>32位,考慮到對(duì)齊,因此應(yīng)將頁(yè)表項(xiàng)擴(kuò)大一倍到64位)。
在4KB的常規(guī)分頁(yè)情況下,由于每個(gè)頁(yè)表項(xiàng)大小為64位,因而,原有4K大小的頁(yè)表中,僅能包含512個(gè)表項(xiàng),這占用了32位線性地址中的9位,同理,由于頁(yè)目錄項(xiàng)與頁(yè)表項(xiàng)具有同樣的結(jié)構(gòu),高一級(jí)的頁(yè)目錄表中也僅能包含512個(gè)頁(yè)表項(xiàng)(目錄項(xiàng)),同樣占用了32位線性地址中的9位,此時(shí),線性地址剩余位數(shù)為:32位(總位數(shù))-12位(頁(yè)內(nèi)偏移量)-9位(指示頁(yè)表中的索引)-9位(指示頁(yè)目錄表中的索引)=2位,同時(shí),Linux引入了一個(gè)頁(yè)目錄指針表(PDPT)的頁(yè)表新級(jí)別,由4個(gè)64位表項(xiàng)構(gòu)成,剩余的2位即用來(lái)指向PDPT中4個(gè)項(xiàng)中的一個(gè)。
下面4張圖詳細(xì)說(shuō)明了4種情況下的頁(yè)表結(jié)構(gòu)(引自Wikipedia)
【未啟用PAE下的4K分頁(yè)的頁(yè)表結(jié)構(gòu)】
【未啟用PAE下的4M分頁(yè)的頁(yè)表結(jié)構(gòu)】
【啟用PAE下4K分頁(yè)的頁(yè)表結(jié)構(gòu)】
【啟用PAE下2M分頁(yè)的頁(yè)表結(jié)構(gòu)】
線性地址的映射過(guò)程如下:
1)cr3:指向一個(gè)PDPT基地址
2)地址的31~30:確定PDPT項(xiàng)
3)地址的29~21:確定頁(yè)目錄項(xiàng)中的一個(gè)
此處,發(fā)生了分支:
A.如果頁(yè)目錄項(xiàng)的PS標(biāo)志位等于0,那么頁(yè)大小是4K
4)地址的20~12:確定頁(yè)表的某一項(xiàng)
5)地址的11~0:確定偏移
B.如果PS=1,啟用2M大頁(yè) 4)地址的20~0:確定2M頁(yè)中的偏移量。
總結(jié)
以上是生活随笔為你收集整理的pae扩展内存 linux,Linux内核-内存管理-PAE(物理地址扩展)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 日落黄昏时安卓(时安卓)
- 下一篇: 内存属于linux文件吗,linux下的