[SOS] Pbs de compréhension sur la segmentation et les interruptions

Thomas Petazzoni thomas.petazzoni at enix.org
Lun 20 Déc 15:40:23 CET 2004


Bonjour,

BRICEFOURNIER at aol.com a écrit :

> 1/ SEGMENTATION : La première concerne les LDT et se pose sur plusieurs 
> points des LDT. Vous précisez que le registre "ldtr"
> contient l'adresse et la taille de la LDT courante. Qu'est-ce que la LDT 
> courante? Dépend-elle  du programme en cours d'exécution?
>        Qui modifie le registre ldtr pour spécifier la LDT courante?
>        Et comment récupérer l'adresse de la LDT courante pour la mettre 
> dans le registre? Ou sont stockées toutes les adresses des LDT pour 
> retrouver celle dont on a besoin?

David a déjà très bien résumé le fonctionnement des LDT. Je rajoute une 
couche.

Il faut bien comprendre que les LDTs sont optionnelles et que le 
processeur ne définit aucune utilisation précise pour ces LDTs. David et 
la documentation d'Intel donnent comme exemple "une LDT par tâche", mais 
c'est un choix purement arbitraire laissé à la discrétion du concepteur 
du système d'exploitation. Il n'y a rien de fixé à ce niveau là.

En revanche, ce qui est fixé c'est la GDT : en mode protégé, tu *dois* 
avoir une GDT.

Pour répondre très simplement à chacune de tes quetions :

  Q) Qu'est-ce que la LDT courante ?

  R) C'est la LDT dont l'adresse est contenue dans le registre LDTR.

  Q) Dépend-elle du programme d'éxécution ?

  R) Pas forcément. Comme je l'ai dit plus haut, les LDT sont un 
mécanisme du processeur que le concepteur-développeur de l'OS peut 
utiliser comme il le souhaite. Il n'y a pas de relation fixée entre LDT 
et tâche.

  Q) Qui modifie le registre LDTR ?

  R) Le noyau.

  Q) Comment récupérer l'adresse de la LDT courante ? Où sont stockées 
les adresses des LDT ?

  R) C'est au noyau de gérer tout ce bazar. C'est le 
concepteur-développeur du noyau qui décide de comment utiliser les LDT. 
Si par exemple, il décide d'avoir une LDT par tâche, vraisemblablement 
qu'il décidera de conserver l'adresse de la LDT dans une structure 
associée à chaque tâche (type "struct task" par exemple).

Le truc à retenir dans tout ça, c'est que les processeurs (et le 
matériel en général) fournissent moultes moultes options de partout, 
avec plein d'optimisations à droite à gauche. Il faut donc choisir en 
fonction de ce que l'on a envie de faire les options et optimisations 
qui nous intéressent. Ce n'est donc pas parce que la documentation Intel 
parle de LDT ou de TSS (Task State Segment) qu'il faut _forcément_ les 
utiliser.

J'espère que ça répond à tes questions. Si ce n'est pas le cas, n'hésite 
pas à demander des précisions.

Bonne journée,

Thomas
-- 
PETAZZONI Thomas - thomas.petazzoni at enix.org
http://thomas.enix.org - Jabber: thomas.petazzoni at jabber.dk
http://kos.enix.org, http://sos.enix.org
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 256 bytes
Desc: OpenPGP digital signature
Url : http://the-doors.enix.org/pipermail/sos/attachments/20041220/e3252f09/signature.pgp


Plus d'informations sur la liste de diffusion Sos