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