解答 x86架構下,頁面大小為什麼是4K?

2021-09-28 06:21:17 字數 916 閱讀 6759

以上前提是目前x86架構32位系統的真實情況

設:頁大小為x(byte)

則:x/4就是每個頁中可以訪問的條目個數

圖1:假設在乙個32位的條目中存放此記憶體的位址,則2*log2(x/4)就是圖1中,p1+p2的位數。

2^(p1+p2):系統可以定址多少個頁面

(x/4)^2:前兩級頁表共可以選擇多少個entry,因為第一級頁表entry個數是x/4,第二級相同,所以相乘既共有多少個entry

系統可以定址的頁面數目=前兩級頁表共可以選擇多少個entry,即2^(p1+p2)=(x/4)^2====>2*log2(x/4)=p1+p2。

此外:如果頁大小為x,那麼為了偏移量能夠定址所有的x位,需要:2的d次方=x,即log2(x)=d。

然而由圖一知,p1+p2+d=32,所以:

2*log2(x/4)+log2(x)=32

可以計算得到x=4096.即頁的大小為4096bit=4k。

以上只是硬體在最充分利用資源情況下的方式,有人說為什麼其他大小的頁面(如8k)不行?不是不行,是這麼做效能無法最優,為什麼?解釋如下:

前提如上面所述,如果頁面大小是8k,d就必須等於13(2^13=8k),p1+p2=19;

此時每個entry還是4b,則每個頁面共有entry=8k/4b=2048個;

假設用p2定址2048個entry,則p2=11,此時p1=8;

問題來了,p1=8,則第一級頁表只能定址2^8=256個entry,此時第一級頁表就有2048-256=1792個entry不能使用,這是多大的資源浪費???!!!

當然,系統其他地方的開銷是需要平衡的,所以4k是乙個綜合評價後的結果。

但是,以後的大型系統,記憶體很可能上公升到t級別,到那時在用4k頁就是傻x。目前armv8 64位的linux中,大記憶體情況下2m頁是比較合理的,而且os中對其支援很完美。

解答 x86架構下,頁面大小為什麼是4K?

前提 32位邏輯位址空間的計算機系統,頁表,每個頁中每個條目佔4byte,即32位的資料 以上前提是目前x86架構32位系統的真實情況 設 頁大小為x byte 則 x 4就是每個頁中可以訪問的條目個數 圖1 假設在乙個32位的條目中存放此記憶體的位址,則2 log2 x 4 就是圖1中,p1 p2...

x86架構中特權級

特權級,可以分為三種 第 一 描述符中的特權級dpl,表示這個段的特權 第 二 選擇子的rpl表示請求方的特權級 第 三 當前特權級,表示正在執行的 段所具有的特權 下面有關特權級知識的總結 第一 對於資料段來說,特權級dpl表示了可以訪問該資料的最低特權。若資料段的dpl為1,那麼只有特權級為0或...

x86架構和arm構架

x86是英特爾公司開發的並且通治了幾十年.x86反應快在pc應用廣泛.86與arm最大不同在於指令集上.x86跟硬體發揮優勢.但是帶來的功耗大.arm構架指令簡單執行起來快功耗也低.現在智慧型手機和平板很火.平板電腦要求便攜和續航能力.arm構架具有低功耗.使之有了市場.那麼為什麼沒有得到普及原因主...