Principe de gestion de la mémoire utilisé par Linux

9

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?

Gilles 'SO- arrête d'être méchant'
la source

Réponses:

7

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)

Frederik Deweerdt
la source
6

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.

Damon
la source
La segmentation X86 était obsolète lors de la sortie de l'i386. Linux n'a jamais utilisé la segmentation pour la gestion de la mémoire. Certains dérivés comme ELKS et (éventuellement) uClinux pourraient.
LawrenceC