GNU/Linux >> Tutoriels Linux >  >> Linux

Quelle est la différence entre les noyaux PAE 32 bits et 64 bits ?

Le noyau voit la mémoire physique et fournit une vue sur les processus. Si vous vous êtes déjà demandé comment un processus peut disposer d'un espace mémoire de 4 Go si l'ensemble de votre machine ne dispose que de 512 Mo de RAM, c'est pourquoi. Chaque processus possède son propre espace de mémoire virtuelle. Les adresses de cet espace d'adressage sont mappées sur des pages physiques ou sur un espace d'échange. Si vous souhaitez échanger de l'espace, ils devront être remplacés par de la mémoire physique avant que votre processus puisse accéder à une page pour la modifier.

L'exemple de Torvalds dans la réponse de XQYZ (DOS highmem) n'est pas trop tiré par les cheveux, bien que je ne sois pas d'accord avec sa conclusion selon laquelle PAE est généralement une mauvaise chose. Il a résolu des problèmes spécifiques et a ses mérites - mais tout cela est argumentatif. Par exemple, l'implémenteur d'une bibliothèque peut ne pas percevoir l'implémentation comme facile, tandis que l'utilisateur de cette bibliothèque peut percevoir cette bibliothèque comme très utile et facile à utiliser. Torvalds est un exécutant, il est donc tenu de dire ce que dit la déclaration. Pour un utilisateur final, cela résout un problème et c'est ce qui compte pour l'utilisateur final.

Pour un PAE aide à résoudre un autre problème hérité sur les machines 32 bits. Il permet au noyau de mapper la totalité des 4 Go de mémoire et de contourner le trou de mémoire du BIOS qui existe sur de nombreuses machines et fait qu'un noyau 32 bits pur sans PAE ne "voit" que 3,1 ou 3,2 Go de mémoire, malgré les 4 Go physiques.

Quoi qu'il en soit, pour le noyau 64 bits, il s'agit d'une relation symétrique entre la page physique et les pages virtuelles (en laissant de côté l'espace d'échange et d'autres détails). Cependant, le noyau PAE mappe entre un pointeur 32 bits dans l'espace d'adressage du processus et une adresse 36 bits dans la mémoire physique. Plus de comptabilité est nécessaire ici. Mot-clé :"Table de pages étendue". Mais c'est un peu plus une question de programmation. C'est la principale différence. Plus de comptabilité par rapport à un espace d'adressage linéaire complet. Pour PAE, ce sont des morceaux de 4 Go, comme vous l'avez mentionné.

A part ça les deux PAE et 64 bits autorisent les grandes pages (au lieu des pages standard de 4 Ko en 32 bits).

Chapitre 3 du Volume 1 du Manuel du processeur Intel a un aperçu et le chapitre 3 du volume 3A ("Gestion de la mémoire en mode protégé") contient plus de détails, si vous souhaitez en savoir plus.

Il me semble que c'est une grande distinction qui semble être ignorée par beaucoup de gens.

Tu as raison. Cependant, la majorité des personnes sont des utilisateurs, pas des implémenteurs . C'est pourquoi ils ne s'en soucieront pas. Et tant que vous n'avez pas besoin d'énormes quantités de mémoire pour votre application, beaucoup de gens s'en fichent (d'autant plus qu'il existe des couches de compatibilité).


Vous voudrez peut-être consulter ce que Linus Torwalds en dit ici :

PAE a renversé ce fait très simple et a tout foutu en l'air. Celui qui a eu l'idée était totalement incompétent et avait oublié toutes les douleurs de DOS HIGHMEM. Il y a une sacrée bonne raison pour laquelle nous avons laissé le 286 derrière nous et avons commencé à utiliser des 386, au lieu d'avoir de la merde HIGHMEM avec des fenêtres dans un espace physique plus grand.

[...]

Alors répétez après moi :PAE n'a jamais vraiment rien réparé. C'était une erreur. Ce n'était qu'un échec total, et le résultat d'ingénieurs hw ne comprenant pas le logiciel.


Linux
  1. La Différence Entre [[ $a ==Z* ]] Et [ $a ==Z* ] ?

  2. Quelle est la différence entre la mémoire tampon et la mémoire cache sous Linux ?

  3. Quelle est la différence entre arm64 et armhf ?

  4. Quelle est la différence entre $(CC) et $CC ?

  5. Quelle est la différence entre unlink et rm ?

Quelle est la différence entre les noyaux macOS et Linux

Quelle est la différence entre Linux et Unix ?

Quelle est la différence entre la connexion et le shell sans connexion

Qu'est-ce qu'un Hyperviseur ? Quelle est la différence entre les types 1 et 2 ?

Quelle est la différence entre curl et Wget ?

Quelle est la différence entre DMA et les E/S mappées en mémoire ?