我正在阅读Bovet和Cesati撰写的《了解Linux内核》一书。在第二章的“Linux中的分页”下,作者提到了如何通过32种未启用PAE的体系结构消除Page Middle和Upper Directories。我在遵循作者的意思时遇到了麻烦。

他们的治疗方法比较宽松,没有很多直观的意义。



有人可以用更可口的方式解释吗?

最佳答案

好吧,我认为这意味着内核始终使用4个级别的页表,这些页表可以同时容纳普通的32位,PAE和长模式。我认为报价中的含义是PM4L和PDT设置为一个条目的长度,而该长度仅指向下一个条目。因此,这意味着在正常的32位中,您可以得到:

                              /-> Page table
PM4L -> PDT -> Page Directory --> Page table
                              \-> Page table

但是在PAE中,您得到以下信息:
PM4L -> PDT -> 512 Page Directories -> 1024 Page tables

在长模式下,您会得到以下信息:
PM4L -> 512 PDTs -> 512 Page Directories -> 1024 Page tables

但是由于总是4个级别,内核的其余部分在32位,PAE和长模式下具有统一的接口(interface)。

08-05 12:28