Mémoire segmentée

Définition, exemples et bonnes pratiques

À retenir

  • Découpage de la mémoire en blocs de tailles variables.
  • Organisation basée sur la logique du programme (code vs données).
  • Utilise un couple Sélecteur : Offset pour trouver une adresse précise.

La mémoire segmentée est une technique d'organisation de la mémoire vive (RAM) où celle-ci est découpée en plusieurs morceaux de tailles variables appelés segments. Chaque segment correspond généralement à une unité logique d'un programme, comme le code source, les données ou la pile de calcul. C'est un peu comme ranger ses affaires dans des boîtes de tailles différentes selon leur contenu, plutôt que dans des casiers tous identiques.

Étymologie

Vient du latin segmentum (« morceau coupé »). En informatique, ce terme est devenu courant avec l'architecture des processeurs 16 bits (comme l'Intel 8086), où il fallait ruser pour adresser plus de mémoire que ce que les registres standards permettaient initialement.

Exemples d'usage

  • L'architecture x86 (processeurs Intel/AMD) qui utilise des registres de segments (CS pour le code, DS pour les données).
  • Le système d'exploitation MS-DOS qui reposait lourdement sur ce modèle pour gérer ses programmes.

Cas d'usage

Ce concept intervient principalement dans la conception des systèmes d'exploitation et l'architecture des processeurs. Il permet d'isoler les différentes parties d'un logiciel pour éviter qu'un programme ne modifie par erreur son propre code en croyant manipuler des données.

Bonnes pratiques

Pour un développeur système, il est crucial de ne pas faire déborder les données d'un segment sur un autre (dépassement de segment), ce qui peut provoquer des plantages ou des failles de sécurité. Aujourd'hui, la plupart des développeurs de haut niveau n'ont plus à s'en soucier car le système gère une mémoire à plat de manière transparente.

Synonymes

adressage segmenté segmentation de mémoire

Antonymes

mémoire linéaire mémoire à plat pagination (concept différent mais lié)

Conseil

Si vous débutez, retenez simplement que la segmentation est une vieille méthode (toujours présente sous le capot) pour aider l'ordinateur à savoir où s'arrête le code et où commencent les données. Si vous étudiez l'assembleur, c'est une notion incontournable pour comprendre comment le processeur accède à la RAM.

Questions fréquentes

Quelle est la différence avec la pagination ?

La segmentation utilise des blocs de tailles variables basés sur la logique, tandis que la pagination découpe la mémoire en blocs de taille fixe (pages) pour faciliter la gestion technique.

Est-ce encore utilisé aujourd'hui ?

Oui, mais de façon souvent invisible. Les processeurs modernes combinent segmentation et pagination, bien que la plupart des systèmes actuels préfèrent un modèle de mémoire 'plat' pour simplifier le développement.