日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

pae扩展内存 linux,浅析linux内核内存管理之PAE

發布時間:2023/12/3 linux 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pae扩展内存 linux,浅析linux内核内存管理之PAE 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

淺析linux內核內存管理之PAE

早期Intel處理器從80386到Pentium使用32位物理地址,理論上,這樣可以訪問4GB的RAM。然而,大型服務器需要大于4GB的RAM來同時運行數以千計的進程,近幾年來這對Intel造成了壓力,所以必須擴展32位80x86所支持的RAM容量。

Intel通過在它的處理器上把管腳數從32增加到36已經滿足了這些需求,可以尋址64GB。同時引入了一種新的分頁機制PAE(Physical Address Extension,物理地址擴展)把32位線性地址轉換為36位物理地址才能使用所增加的物理內存,通過設置CR4的第5位來開啟對PAE的支持。引入PAE就是為了訪問大于4GB的RAM,線性地址仍然是32位,而物理地址是36位。

64GB的RAM被分為2^24個頁框,頁表項的物理地址字段從20位擴展到了24位。PAE表項必須包含12個標志位和24個物理地址位,總數之和為36,頁表項大小從32位變為64位。這樣原來一個頁框有1024個entry,現在有512個entry。開啟PAE的80x86 32位使用的是三級頁表,第一級是新引入的PDPT(頁目錄指針表,相當于PGD了),第二級是PMD,第三級是PTE。PDPT只有4個entry,每個對應1GB RAM,每個entry 是64位。CR3中有27位作為PDPT的起始地址。

在開啟PAE前,CR3中用20來存儲頁目錄的起始地址;開啟PAE后,用27位來存儲page directory pointer table的起始地址。

下邊分兩種情況來討論,一個是PS=0,一個是PS=1:

當CR4的第5位被置位(開啟PAE),第4位被置位(開啟PSE)

線性地址31~30,用來指向一個PDPT的entry

線性地址29~21,用來指向一個pmd的entry

線性地址20~0,為4MB大頁中的offset

當CR4的第5位被置位(開啟PAE),第4位被清除(關閉PSE)

線性地址31~30,用來指向一個PDPT的entry

線性地址29~21,用來指向一個pmd的entry

線性地址20~12,用來指向一個pte

線性地址11~0,為4KB頁中的offset

如何訪問64GB?

從上邊的三級分頁可以看到2^2*2^9*2^9*2^11=4GB,仍然訪問的是4GB。訪問64GB方法如下:

修改CR3中的值使其指向不同的PDPT,這樣就指向不同的4GB

修改PDP entry中的值,使其指向不同的PMD表,這樣可以指向不同的1GB

但是實際上是不能訪問這么大的內存的,實際可用的內存被限制在16GB,因為如果有64GB,那么每個struct page結構需要32字節,總共512MB,這樣ZONE_NORMAL的內核地址空間就被大量占用,這樣是不允許的。

總結

以上是生活随笔為你收集整理的pae扩展内存 linux,浅析linux内核内存管理之PAE的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。