Segment (memoire)

Segment (memoire)

Segmentation (informatique)

Page d'aide sur l'homonymie Pour les articles homonymes, voir Segmentation.

En informatique, la segmentation est une technique gérée par l'unité de segmentation de la MMU, utilisée sur les systèmes d'exploitation modernes, qui divise la mémoire physique (dans le cas de la segmentation pure) ou la mémoire virtuelle (dans le cas de la segmentation avec pagination) en segments caractérisés par leur adresse de début et leur taille (décalage).

Sommaire

Utilité de la segmentation

La segmentation permet la séparation des données et du programme (entre autres segments) dans des espaces logiquement indépendants facilitant alors la programmation, l'édition de liens et le partage interprocessus. La segmentation permet également d'offrir une plus grande protection grâce au niveau de privilège de chaque segment (voir Descripteur de segment).

Fonctionnement

Lorsque la MMU doit traduire une adresse logique en adresse linéaire, l'unité de segmentation doit dans un premier temps utiliser la première partie de l'adresse, c’est-à-dire le sélecteur de segment, pour retrouver les caractéristiques du segment (base, limit, DPL, etc.) dans la table de descripteurs (GDT ou LDT). Puis il utilise la valeur de décalage (sur 32 bit) qui référence l'adresse à l'intérieur du segment.

Il existe sur la majorité des processeurs actuels, des registres de segments (cs, ds, ss, etc.) qui contiennent le sélecteur de segment dernièrement utilisé par le processeur et qui sont utilisés pour accélérer l'accès à ces sélecteurs.

Sur les processeurs récents, il existe également des registres associés à chaque registre de segment et qui contiennent le descripteur de segment associé pour un accès plus rapide aux descripteurs.

Segmentation : l'adresse virtuelle issue du processeur a la forme (segment, déplacement). Elle est traduite en adresse physique par le biais d'une table de segments. Un test est effectué pour vérifier que l'adresse est bien dans l'intervalle du segment.

Segment mémoire

Un segment mémoire est un espace d'adressage indépendant défini par deux valeurs :

  • L'adresse où il commence (aussi appelée base, ou adresse de base)
  • Sa taille ou son décalage (aussi appelée limite ou offset)

Un segment constitue donc dans la mémoire principale une plage d'adresse continue.

Une adresse logique d'une donnée désirée est donc exprimée sous la forme (segment, décalage), le segment étant référencé par le sélecteur de segment (16 bits) et le décalage (offset) exprimé dans un champ de 32 bits.

Les segments se chevauchent donc tous les 16 bits. On peut donc adresser la même zone mémoire avec plusieurs couple segment/offset.

Par exemple :

Segment : Offset
00FFAC : 000008
00FFA0 : 0000C8
00FF00 : 000AC8
00F000 : 00FAC8
000000 : 0FFAC8

On remarquera que pour passer d'un adressage par segment à un adressage par offset on multiplie simplement par 10h.

Types de segment

Il existe différents types de segment :

Sélecteur de segment

Un sélecteur de segment est l'identifiant d'un segment par son descripteur dans une table de descripteurs (GDT ou LDT). En effet un sélecteur de segment est utilisé par le processeur pour retrouver l'adresse du descripteur de ce même segment.

Le sélecteur de segment est également, avec le décalage, une partie (de 16 bits) d'une l'adresse logique.

Format d'un sélecteur de segment

Un selecteur de segment est constitué de 3 champs :

  • Un Index qui contient l'adresse du descripteur dans la table
  • Un champ TI (Table indicator) qui précise de quel table il s'agit (GDT ou LDT)
  • Un champ RPL (Request Privilege Level)

Utilisation d'un sélecteur de segment

Lors de la traduction d'une adresse logique en une adresse linéaire par l'unité de segmentation de la MMU, celle-ci utilise le sélecteur de segment (contenue dans l'adresse logique) pour se réferer à la table (la plupart du temps la GDT) qui contient le descripteur du segment et grâce auquel elle va pouvoir traduire l'adresse.

Actuellement il existe des registres de 32 bits associés à chaque registre de segment dans lesquels sont chargés le descripteur du segment pour que la MMU ne soit pas dans l'obligation de se référer à chaque fois à la table de descripteur.

Descripteur de segment

Un descripteur de segment est une structure à 8 octets contenant les caractéristiques d'un segment.

Les segments les plus utilisés voient leur descripteur référencé dans la GDT (Global Descriptor Table), les autres peuvent se situer dans une LDT (Local Descriptor Table).

Un descripteur de segment est utilisé conjointement à un sélecteur de segment pour permettre la traduction des adresses logiques en adresses linéaires.

Champs d'un descripteur de segment

Un descripteur contient les champs suivants :

  • une valeur Base contenant l'adresse linéaire du premier octet du segment ;
  • une valeur Limit contenant le décalage du dernier octet du segment ;
  • un flag G définissant l'unité de l'adresse (en octet ou en multiple 4096 octets) ;
  • un flag S définissant ou non un segment système ;
  • un champ Type indiquant le type de segment (données, code, etc.) ;
  • un champ DPL représentant le niveau de privilège minimal pour accéder au segment ;
  • un flag P permettant de savoir si le segment est présent ou non dans la mémoire principale (voir pagination) ;
  • un champ D ou B définissant le contenu du segment (données ou code) ;
  • un champ AVL utilisable par le programmeur ;

Utilisation des descripteurs

Lorsqu'un sélecteur est chargé dans un registre de segment (cs, ds, ss, etc.), le descripteur associé est chargé dans un registre associé au registre de segment (s'il n'y est pas déjà présent). Ainsi l'unité de segmentation chargée de traduire les adresses logiques en adresses linéaires n'a pas besoin de se référer à chaque fois à une table de descripteurs située dans la mémoire principale.

Exemples de descripteurs de segment

Outre les segments qu'un programmeur peut insérer grâce à une table locale de descripteurs, il existe de nombreux segments généraux dont presque tous sont référencés dans la table globale de descripteurs.

  • Descripteur de segment d'état de tâche
  • Descripteur de segment de données
  • Descripteur de segment de code

Voir aussi

  • Portail de la programmation informatique Portail de la programmation informatique
Ce document provient de « Segmentation (informatique) ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Segment (memoire) de Wikipédia en français (auteurs)

Игры ⚽ Нужно сделать НИР?

Regardez d'autres dictionnaires:

  • Segment (mémoire) — Segmentation (informatique) Pour les articles homonymes, voir Segmentation. En informatique, la segmentation est une technique gérée par l unité de segmentation de la MMU, utilisée sur les systèmes d exploitation modernes, qui divise la mémoire… …   Wikipédia en Français

  • Memoire virtuelle — Mémoire virtuelle En informatique, le mécanisme de mémoire virtuelle a été mis au point dans les années 1960. Il est basé sur l utilisation d une mémoire de masse (type disque dur ou anciennement un tambour), pour le but, entre autres, de… …   Wikipédia en Français

  • Mémoire Virtuelle — En informatique, le mécanisme de mémoire virtuelle a été mis au point dans les années 1960. Il est basé sur l utilisation d une mémoire de masse (type disque dur ou anciennement un tambour), pour le but, entre autres, de permettre à des… …   Wikipédia en Français

  • segment — [ sɛgmɑ̃ ] n. m. • 1536; lat. segmentum, de secare « couper » 1 ♦ Portion, partie détachée d un ensemble. ♢ Math. Segment de droite : ensemble des points d une droite compris entre deux points donnés de la droite. Segment de sphère ou sphérique …   Encyclopédie Universelle

  • Memoire de traduction — Mémoire de traduction Une mémoire de traduction est une base de données contenant des segments de texte ainsi que l équivalent de ces segments dans une autre langue. Elle permet de stocker des segments de phrase et de les réutiliser. On parle… …   Wikipédia en Français

  • Mémoire De Traduction — Une mémoire de traduction est une base de données contenant des segments de texte ainsi que l équivalent de ces segments dans une autre langue. Elle permet de stocker des segments de phrase et de les réutiliser. On parle dans ce cas de traduction …   Wikipédia en Français

  • Mémoire virtuelle — Schéma de principe de la mémoire virtuelle En informatique, le mécanisme de mémoire virtuelle, ou swap, a été mis au point dans les années 1960. Il repose sur l utilisation d une mémoire de masse (type disque dur ou anciennement un tambour), dans …   Wikipédia en Français

  • Segment de données — Un segment de données est une portion d’espace d’adressage virtuel d’un programme, qui contient les variables globales et les variables statiques qui sont initialisées par le programmeur. Cette portion a une taille fixe pour chaque programme, qui …   Wikipédia en Français

  • Segment BSS — En informatique, le nom .bss ou bss est utilisé par nombre de compilateurs et d’éditeurs de liens pour désigner une partie du segment de données contenant les variables statiques représentées initialement (càd, quand l’exécution commence)… …   Wikipédia en Français

  • Segment — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Sur les autres projets Wikimedia : « Segment », sur le Wiktionnaire (dictionnaire universel) Le mot segment désigne généralement une partie …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”