Linux kernel kernel swap levels

I am reading Beauvais and Cesati's Understanding the Linux Kernel. In the second chapter, in the "Paging on Linux" section, the author mentions how the middle and upper directory pages with 32 architectures that do not have PAE are eliminated. I am having problems with what the author means.

They were free in their treatment and did not show much intuitive feeling.

For 32-bit architectures without extending the physical address, two levels of paging are sufficient. Linux substantially excludes the “Upper Page Directory” and “Middle Directory Pages” fields, saying that they contain zero bits. However, the positions of the Top Page and the Middle Catalog in the sequence of pointers are stored so that the same code can work on 32-bit and 64-bit architectures. The kernel saves the position for the Top page directory and the Middle page directory, setting the number of entries in them to 1 and comparing these two entries with the corresponding entry in the Global page directory.

Can someone explain this in a more acceptable way?

+5
source share
2 answers

, , , ​​ 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 .

+2

, , .
:

PML4 (Linux: PGD) -> PDPT (Linux: PUD) -> PD (Linux: PMD) -> PT

, , PUD PMD "", 1 . < > , PML4 (PGD) PD (PMD) PT. , PUD PMD "". .
, 32- syscall 64- ? MMU , .
, - , . , - .

0

All Articles