Question

Il me manque quelque chose en ce qui concerne la compréhension de la nécessité de highmem d'adresser plus de 1 Go de RAM. Quelqu'un pourrait-il indiquer où je me trompe? Merci!

Ce que je sais:

  • 1 Go d'une mémoire virtuelle de processus (la région de mémoire haute) est réservé pour les opérations de noyau. L'espace utilisateur peut utiliser les 3 Go restants. Ceci est la division 3/1.

  • Les caractéristiques de mémoire virtuelle de la carte VM les pages de mémoire virtuelle (en continu) aux pages physiques (RAM).

Ce que je ne sais pas:

  • Quelles opérations utiliser la mémoire virtuelle du noyau? Je suppose que des choses comme kmalloc (...) dans l'espace noyau utiliseraient la mémoire virtuelle du noyau.

  • Je pense que 4 Go de RAM pourrait être utilisé sous ce régime. Je ne comprends pas pourquoi l'espace virtuel noyau 1 Go est le facteur limitant lorsque l'espace d'adressage physique. C'est là brise ma compréhension vers le bas. S'il vous plaît conseiller.

J'ai lu ce ( http://kerneltrap.org/node/2450 ) , qui est super. Mais il ne répond pas tout à fait ma question à mon goût.

Était-ce utile?

La solution

La raison pour laquelle l'espace virtuel noyau est un facteur limitant la mémoire physique utilisable est parce que le noyau a besoin d'accéder à toute la mémoire physique, et la façon dont il accède à la mémoire physique est par le biais des adresses virtuelles noyau. Le noyau ne pas utiliser des instructions spéciales qui permettent un accès direct à des emplacements de mémoire physique -. Il doit mettre en place des entrées de table de page pour toutes les gammes physiques qu'il veut parler à

Dans le schéma « de style ancien », les choses ensemble du noyau afin que les tables de pages de chaque processus mis en correspondance des adresses virtuelles de 0xC0000000 à 0xFFFFFFFF directement aux adresses physiques de 0x00000000 à 0x3FFFFFFF (ces pages ont été marquées de sorte qu'ils étaient accessibles dans l'anneau 0 - mode noyau). Ce sont les « adresses virtuelles noyau ». En vertu de ce système, le noyau peut directement lire et à écrire tout emplacement mémoire physique sans avoir à jouer avec la MMU pour modifier les applications.

Dans le cadre du schéma de highmem, les correspondances des adresses virtuelles noyau à des adresses physiques ne sont pas fixes - parties de la mémoire physique sont mises en correspondance dans et hors de l'espace d'adressage virtuel du noyau que le noyau a besoin d'accéder à cette mémoire. Cela permet plus de mémoire physique à utiliser, mais au prix d'avoir à changer constamment les applications virtuelles à physique, ce qui est tout à fait une opération coûteuse.

Autres conseils

Cartographie 1 Go à noyau dans chaque processus permet aux processus pour passer en mode noyau sans effectuer également un changement de contexte. Les réponses aux appels système tels que read(), mmap() et d'autres peuvent être traitées de façon appropriée dans le processus d'appel espace d'adressage.

Si l'espace pour le noyau n'ont pas été réservés dans chaque processus, le passage à « mode noyau » entre l'exécution du code de l'espace utilisateur serait plus cher et être incapable d'utiliser le mappage d'adresse virtuelle à travers le matériel MMU (unité de gestion de mémoire) le système appelle en réparation.

Les systèmes exécutant un noyau 32 bits avec plus de 1 Go de mémoire physique, sont en mesure d'affecter des emplacements de mémoire physique dans ZONE_HIGHMEM (à peu près au-dessus de la marque de 1 Go), ce qui peut nécessiter le noyau de sauter à travers des cerceaux pour certaines opérations d'interagir avec eux. L'addition de PAE (extension d'adresse physique), étend ce problème en permettant jusqu'à 64 Go de mémoire physique, ce qui diminue le rapport de la mémoire dans la mémoire d'adresse physique de 1 Go, pour les régions affectées dans ZONE_HIGHMEM.

  1. Par exemple, les appels système utilisent l'espace du noyau.
  2. Vous pouvez avoir 64 Go de RAM physique, mais sur les plates-formes processeurs 32 bits peut accéder à 4gb en raison de l'adressage virtuel 32 bits. En fait, vous pouvez avoir 1 Go de RAM et 3 Go de swap et adressage virtuel vous faire ressembler vous avez 4 Go. virtuel sur les plates-formes 64 bits d'adressage est pratiquement illimitée.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top