Comment la pagination étendue (4 Mo) et régulière (4 Ko) coexiste-t-elle?

Sur l'architecture x86, la "pagination étendue" permet aux frameworks de page (memory physique) d'être de 4 Mo au lieu de 4 Ko.

Dans le chapitre 2 «Adressage de la memory», sous-chapitre «Paging in Linux», la section «Kernel Page Tables» explique que pour la table de pages du kernel final, lorsque la taille de la RAM est inférieure à 896 Mo :

[…] le kernel peut adresser la RAM en utilisant de grandes pages (voir la section "Paging étendue" plus haut dans ce chapitre).

Cependant, dans la section "Paging étendue" (sous-chapitre "Paging in Hardware"), il est écrit:

La pagination étendue coexiste avec la pagination régulière.

Je ne comprends pas comment la pagination étendue et régulière coexistent. Pouvez-vous s'il vous plaît quelqu'un expliquer ces questions:

  • Dans quels cas le kernel utilise-t-il des pages de 4 Mo? ou 4 Ko de pages?
  • Quelle taille de trame de page sera utilisée pour les opérations kmalloc? pour vmalloc?
  • Si nous supposons que le code initial et datatables (segments du kernel, tables de pages provisoires et 128 Ko pour datatables dynamics) correspondent aux 8 premiers Mo de RAM (comme l'indique le livre), que se passe-t-il si la quantité réelle de code & datatables sont 5MB seulement: le kernel perdra-t-il 8 – 5 = 3 Mo?