Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan...

22
Module Module Systèmes d’exploitation Systèmes d’exploitation Chapitre 7 Threads Partie II École Normale École Normale Supérieure Supérieure Tétouan Tétouan Département Département Informatique Informatique 2008-2009

Transcript of Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan...

Page 1: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

ModuleModuleSystèmes d’exploitationSystèmes d’exploitation

Chapitre 7

Threads

Partie II

École Normale SupérieureÉcole Normale SupérieureTétouanTétouan

Département InformatiqueDépartement Informatique

2008-2009

Page 2: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

2

RevueRevue

• Décrivez les différences entre un processus et un thread

Page 3: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

3

SynopsisSynopsis

• Théorie d’implémentation des Threads– Espace de l’utilisateur– Noyau– Implémentations hybrides

• Implémentations Spécifique– Activations de l’ordonnanceur– Threads spontanés (Pop-Up)

• Rendre le code monothread à multithread

Page 4: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

4

• Comment les paquetages de threads sont implémentés?

• Deux places possible:– Espace de l’utilisateur– Noyau

• Choix est controversé: complexité vs. efficacité

Théorie d’implémentation des threadsThéorie d’implémentation des threads

Page 5: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

5

Threads dans l’espace utilisateurThreads dans l’espace utilisateur

• Met le concept des threads entièrement dans l’espace utilisateur– Le noyau ne sait rien d’eux– Le noyau pense qu’il organise des processus

monothread

• Structure:– Les threads exécutent pardessus un système

d’exécution (run-time system) (moteur d’exécution)• Une collection de procédures qui gèrent les threads• thread_create(),thread_exit(),thread_wait(), thread_yield(), et plus...

Page 6: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

6

• Chaque processus a besoin d’une table de threads–Similaire à une table de

processus, mais traque seulement:

• Compteur ordinal• Pointeur de pile• Registres• État

• Table est gérée par le système d’exécution

Threads dans l’espace utilisateurThreads dans l’espace utilisateur

Page 7: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

7

Threads dans l’espace utilisateurThreads dans l’espace utilisateur

• Avantages:– Permet l’implémentation de threads sur un système

d’exploitation qui ne les supporte pas– Très vite parce qu’aucune TRAP au noyau n’est

requise... L’implémentation est entièrement dans l’espace utilisateur

– Chaque processus peut avoir son propre algorithme d’ordonnancement sur mesure en changeant le système d’exécution

– Facile à être extensible parce que cela requiert seulement de la mémoire extra au lieu de l’espace dans le noyau pour les tables et la pile

Page 8: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

8

Threads dans l’espace utilisateurThreads dans l’espace utilisateur

• Désavantages:– Comment implémenter les appels de système

bloquants?• Si un thread appel getKey(), tout le processus va

bloquer… c’est inacceptable• Solutions incluent changer le système d’exploitation pour

créer des appels non-bloquants (pas désirable) ou placer du code intervenant au tour des fonctions de bibliothèque (un jacket ou wrapper) ceci n’est pas élégant ou recommandé

– Les défauts de pages sont un problème semblable aux appels de système bloquants

Page 9: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

9

Threads dans l’espace utilisateurThreads dans l’espace utilisateur

• Désavantages:– Un thread peut tourner en rond et ne jamais retourner

le contrôle au système d’exécution. C’est un problème pour un système à processus unique (pas d’interruption)

– Les threads sont habituellement utilisés pour les applications où il y aura beaucoup de blocages (ie: Serveur Web)

– Parce que le blocage arrive durant les appels de système

• Les traps doivent être exécuté dans le noyau de toute façons.

• Une fois dans le noyau pour servir l’appel, il ne demande pas beaucoup plus de travail de changer de thread en même temps…

Page 10: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

10

• Met le concept des threads dans le noyau

– Pas besoin de moteur d’exécution

– Le noyau a une table de threads

– Les threads font des appels de système pour la création/terminaison

– Le noyau tiens l’information des threads: registres, état, etc...

Threads dans le noyauThreads dans le noyau

Page 11: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

11

• Considérations de design :– Tout appel qui peut bloquer un thread doit être

implémenté comme un appel de système (donc plus de fonctions dans la bibliothèque sont des appels de système). Ceci résulte en plus de temps de système (overhead!)

– Quand un thread bloque, le noyau doit décider ou bien de donner le contrôle à un autre thread dans le même processus ou dans un autre processus (peut être moins désirable pour le processus qui perd sa place)

– Certains systèmes n’efface pas les threads, mais les sauvegarde pour être recyclés

Threads dans le noyauThreads dans le noyau

Page 12: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

12

Threads dans le noyauThreads dans le noyau

• Avantages:– Beaucoup moins compliqué– Pas besoin de nouveau appels non-bloquants– Les défauts de page n’arrêtent pas les autres threads

dans le processus d’exécuter

• Désavantages:– Les coûts d’un appel de système sont substantiels, et

les threads dans le noyau vont en demander beaucoup plus

Page 13: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

13

• Essaie de prendre avantage des deux designs– Les threads utilisateurs et noyaux

sont implémenté là où ils seront plus efficaces

– Maintenant un défaut de page ne causera pas nécessairement le blocage d’un processus entier

– Avantage: Le plus efficace– Désavantage: De loin la solution

la plus compliquée

Implémentations hybridesImplémentations hybrides

Page 14: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

14

• Activations de l’ordonnanceur– But est de combiner la bonne performance des

threads utilisateurs avec la simplicité des threads noyaux

– En particulier le système que l’on désire va:• Les threads utilisateurs ne devraient pas avoir à faire

seulement des appels non-bloquants ou avoir à vérifier si un appel va bloquer avant de faire l’appel

• Permettre à d’autres threads dans le processus d’exécuter quand un thread bloque

• Éviter les transitions inutiles entre l’espace utilisateur et noyau

– (ie: laisser un thread se bloquer dans processus si il veut en attendre un autre sans faire intervenir le noyau)

Implémentations spécifiquesImplémentations spécifiques

Page 15: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

15

Implémentations spécifiquesImplémentations spécifiques

• Activations de l’ordonnanceur– Opération du système:

• Le noyau assigne un nombre de processeur virtuels à chaque processus

• Le système d’exécution dans l’espace utilisateur alloue des threads à ces processeurs

• Si un thread bloque sur un appel de système, le noyau fait un appel au système d’exécution (upcall) pour l’informer de quel thread a bloqué et pourquoi

• Le système d’exécution peut réordonnancer ses threads• Plus tard un autre upcall du noyau informe le système

d’exécution que le thread est de nouveau capable d’exécuter

Page 16: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

16

Implémentations spécifiquesImplémentations spécifiques

• Activations de l’ordonnanceur– Opération du système:

• Les interruptions basculent encore en mode noyau. Si l’interruption n’était pas pour le processus en exécution, elle est traitée et le même thread est réactivé plus tard

• Si l’interruption était pour un thread dans le processus courrant, alors le noyau réveille le système d’exécution et le laisse décider quel thread doit exécuter

– Quel est le gros problème avec ce système???• Upcalls violent le principe des systèmes en couches• Beaucoup plus difficile d’entretenir et facile de faire des

erreurs

Page 17: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

17

Implémentations SpécifiquesImplémentations Spécifiques

• Threads spontanés (pop-up)– La façon traditionnel de traiter les entrées dans les

applications distribuées est d’avoir un thread bloqué sur un appel de système: receive

– Au lieu de cela le SE peut créer un nouveau thread quand de l’information arrive• Vite parce que on a pas besoin de restaurer l’état du thread

bloqué• Les threads peuvent partir et exécuter dans l’espace noyau ce

qui donne accès au tables dans le noyau, périphériques d’E/S, etc… VITE!

• Cependant ceci veut dire que un thread bogué pourrait faire des ravages dans le noyau...

Page 18: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

18

Monothread à multithreadMonothread à multithread

• Quelles sont les difficultés pour convertir un programme monothread à multithread? – Variables globales– Procédures de bibliothèques non-réentrantes– Signaux, comme ceux du clavier– Gestion de la pile

Page 19: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

19

Monothread à multithreadMonothread à multithread

• Variables Globales– Multithreads qui utilisent les mêmes variables peuvent

causer des problèmes

Page 20: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

20

Monothread à multithreadMonothread à multithread

• Procédures de bibliothèque non-réentrantes– On se souvient que les bibliothèques sont compilés

pour chaque programme et existent dans chaque processus (liens pour DLL)

– Qu’est-ce qui arrive si une procédure assemble un message pour réseau dans une mémoire tampon et qu’un appel à cette même procédure est faite d’un autre thread?

– Réparer ces problèmes peut demander la re-programmation entière de bibliothèques!

Page 21: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

21

Monothread à multithreadMonothread à multithread

• Signaux– Si un thread demande un service du noyau, tel qu’un

alarme, comment ce signal est livré au bon thread?• Le noyau ne connaît rien des threads en mode usagers!

– Avec les multithreads, quel thread va avoir la notification qu’une clef a été pressée?

• Piles– Normalement les piles grandissent automatiquement– Le noyau ne connaît rien des piles individuelles

Page 22: Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009.

22

Quiz Time!Quiz Time!

Questions?