[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