Français
Électronique industrielle

descripteur de segment

Anglais: segment descriptor

Partie de l'unité de segmentation, utilisée pour traduire une adresse logique en une adresse linéaire.

descripteur de segment: enregistrement de traduction de mémoire dans les processeurs x86

Un descripteur de segment est une structure de données de 64 bits, contenue dans une table de segments, qui décrit l'emplacement, la taille et les autorisations d'accès d'un segment de mémoire. Le processeur l'utilise pour convertir une adresse logique (sélecteur de segment plus décalage) en une adresse linéaire qui pointe vers la mémoire physique réelle. Cette traduction se produit en microsecondes lors de chaque accès mémoire en mode protégé sur les architectures x86 et x86-64.

Chaque descripteur contient l'adresse de base du segment (32 bits dans les processeurs 386 et ultérieurs), la limite du segment (qui définit la taille ou la limite supérieure du segment) et des bits de contrôle qui spécifient le type de segment (code, données ou système), le niveau de privilège et les autorisations de lecture/écriture. Le descripteur comprend également un bit de présence qui indique si le segment est actuellement chargé en mémoire, et un bit de granularité qui détermine si la limite est mesurée en octets ou en pages de 4 kilo-octets.

Où résident les descripteurs et comment ils fonctionnent

Les descripteurs de segment sont stockés soit dans la Global Descriptor Table (GDT), la Local Descriptor Table (LDT), ou l'Interrupt Descriptor Table (IDT), selon leur portée et leur objectif. Lorsque le logiciel charge un sélecteur de segment dans un registre de segment (CS pour le code, DS pour les données, etc.), le processeur récupère automatiquement le descripteur correspondant dans la table appropriée et le met en cache dans un registre caché. Les opérations mémoire ultérieures utilisent ce descripteur mis en cache pour la traduction d'adresses jusqu'à ce que le registre de segment change.

Le champ de niveau de privilège dans le descripteur (2 bits, permettant 4 niveaux de 0 à 3) applique la protection de la mémoire en empêchant le code de privilège inférieur d'accéder aux segments de privilège supérieur. Un descripteur avec un niveau de privilège 0 n'est accessible qu'au code du noyau; un descripteur marqué niveau 3 est accessible aux applications utilisateur. Si le code tente d'accéder à un segment pour lequel il n'a pas l'autorisation, le processeur déclenche une erreur de protection générale.

Des problèmes courants surviennent lorsque les descripteurs sont mal configurés: une adresse de base ou une limite incorrecte entraînera la lecture ou l'écriture de la mémoire à un mauvais emplacement, corrompant souvent d'autres données ou codes; un bit de présence manquant déclenchera une exception. Le débogage des problèmes de descripteur nécessite la lecture directe de la GDT et de la LDT à l'aide d'outils du noyau, car les valeurs mises en cache dans les registres de segment ne sont pas directement visibles par le logiciel.

Sources

Entrée IG725512/12/2009

Autres termes : Électronique industrielle

Tout voir

Recevez le mot du jour

Un terme industriel chaque jour, avec le métier auquel il appartient et pourquoi il mérite d'être connu. Sans publicité.