La gestion de la mémoire dans le noyau Linux est-elle effectuée à l'aide de la pagination, de la segmentation ou des deux?
La gestion de la mémoire dans le noyau Linux est-elle effectuée à l'aide de la pagination, de la segmentation ou des deux?
Réponses:
Linux utilise les deux. Il utilise la segmentation pour mapper tout l'espace d'adressage disponible tout en donnant différents droits d'accès: essentiellement un noyau et une vue de l'espace utilisateur. Vous pouvez grep le code source Linux pour KERNEL_DS (segment de données du noyau) pour quelques exemples.
La pagination est ensuite utilisée pour implémenter la mémoire virtuelle (Grep pour "struct gdt_page" dans le noyau, pour un point de départ)
La gestion de la mémoire sous Linux fonctionne exclusivement par pagination.
Linux prend en charge les pages "petites" (généralement 4 Ko) et "grandes" (2 Mo). Les premiers "fonctionnent juste" sans que vous sachiez ou ne fassiez rien de spécial, et les seconds nécessitent un traitement spécial (doivent être réservés au démarrage et cartographiés via un appareil spécial).
Le seul contexte dans lequel "segment" apparaît sous Linux est le syscall brk () qui est utilisé pour augmenter le segment de données d'un processus (vous n'en aurez normalement pas besoin, malloc le fait sans vous en soucier). Mais de toute façon, la mémoire vient en pages et est gérée en pages, et cela n'a rien à voir avec la segmentation x86.