2011-07-13 4 views
1

Je dois admettre que j'ai fait des recherches minimales pour cette question (quelques recherches google peu profondes). Est-ce que les threads de threading (pthreads spécifiquement, mais ma question s'applique à toutes les bibliothèques de threads d'utilisateur x86 unix) sauvegardent les registres de segments (fs, cs, ds, etc) par thread? En d'autres termes, chaque thread a-t-il sa propre copie des registres de segments?Registres de segments Pthread

+0

Pourquoi vous en souciez-vous? –

Répondre

3

Sur la plupart des systèmes d'exploitation modernes, les registres de segment ont des significations spécifiques déterminées par le système d'exploitation. Les bibliothèques de threads du système d'exploitation garantissent que les registres sont correctement définis pour chaque thread à tout moment. par exemple. sous Windows, le registre FS pointe vers un segment avec des données spécifiques au thread, qui est ainsi mis à jour à chaque changement de thread, tandis que le registre DS fait référence à un segment à l'échelle du processus.

Si une plate-forme permet à l'utilisateur de définir des valeurs de registre de segment, alors je m'attendrais à ce qu'ils soient correctement conservés dans les commutateurs de thread, comme n'importe quel autre registre.

En général, je m'attendrais à ce que les registres de segments soient conservés, car cela est plus facile que de rechercher ce qu'ils devraient "être", et conduit à la moindre possibilité de surprise.

+0

Génial. J'ai posé la question parce que j'ai développé (à des fins d'apprentissage) une bibliothèque de threads en C récemment. Je vous remercie! – Chris