我讀經書「瞭解Linux內核」由播威和Cesati。在第二章的「Paging in Linux」中,作者提到了32個不支持PAE的體系結構如何消除Page Middle和Upper Directories。按照作者的意思,我遇到了麻煩。Linux內核的內存管理尋呼水平
他們已經在他們的治療鬆開,並且不作一大堆的直覺。
對於沒有物理地址擴展的32位體系結構,兩個分頁級別就足夠了。實際上,Linux通過聲明它們包含零位來消除Page Upper Directory和Page Middle Directory字段。但是,頁指針目錄和頁中間目錄在指針序列中的位置將保留,以便相同的代碼可以在32位和64位體系結構上工作。內核通過將其中的條目數設置爲1並將這兩個條目映射到Page Global Directory的正確條目中,爲頁面上部目錄和頁面中間目錄保留一個位置。
有人能在一個更可口的方式解釋一下嗎?
好了,所以我給多一點思考,並請看看這是有道理的。所以,基本上,你有這個MMU硬件,它貫穿TLB未命中的頁面層次結構,基本上,單個項目PMD和PUD是不知情的。但是,對於其他內核代碼,我們需要提供一個統一的4級分頁接口。因此,我們有一個單獨的入口PUD和一個入口PMD,每個入口都被仿真爲包含該地址的相應PGD入口的完全相同的值。 – subramanian
是的。在沒有PAE的處理器上,MMU只期望較低的兩個表,但內核期望全部四個表,因此必須僅使用一個條目創建高兩個表。確保你可以添加你的評論作爲答案。 – ughoavgfhw
我覺得我的解釋有漏洞Linuxios很清楚地向我解釋。所以我會標記他的答案是正確的。 – subramanian