La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique 2008-2009."— Transcription de la présentation:

1 Module Systèmes dexploitation Chapitre 7 Threads Partie II École Normale Supérieure Tétouan Département Informatique

2 2 Revue Décrivez les différences entre un processus et un thread

3 3 Synopsis Théorie dimplémentation des Threads –Espace de lutilisateur –Noyau –Implémentations hybrides Implémentations Spécifique –Activations de lordonnanceur –Threads spontanés ( Pop-Up ) Rendre le code monothread à multithread

4 4 Comment les paquetages de threads sont implémentés? Deux places possible: –Espace de lutilisateur –Noyau Choix est controversé: complexité vs. efficacité Théorie dimplémentation des threads

5 5 Threads dans lespace utilisateur Met le concept des threads entièrement dans lespace utilisateur –Le noyau ne sait rien deux –Le noyau pense quil organise des processus monothread Structure: –Les threads exécutent pardessus un système dexécution (run-time system) (moteur dexécution) Une collection de procédures qui gèrent les threads thread_create(),thread_exit(),thread_wait(), thread_yield(), et plus...

6 6 Chaque processus a besoin dune 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 dexécution Threads dans lespace utilisateur

7 7 Avantages: –Permet limplémentation de threads sur un système dexploitation qui ne les supporte pas –Très vite parce quaucune TRAP au noyau nest requise... Limplémentation est entièrement dans lespace utilisateur –Chaque processus peut avoir son propre algorithme dordonnancement sur mesure en changeant le système dexécution –Facile à être extensible parce que cela requiert seulement de la mémoire extra au lieu de lespace dans le noyau pour les tables et la pile

8 8 Threads dans lespace utilisateur Désavantages: –Comment implémenter les appels de système bloquants? Si un thread appel getKey(), tout le processus va bloquer… cest inacceptable Solutions incluent changer le système dexploitation 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 nest pas élégant ou recommandé –Les défauts de pages sont un problème semblable aux appels de système bloquants

9 9 Threads dans lespace utilisateur Désavantages: –Un thread peut tourner en rond et ne jamais retourner le contrôle au système dexécution. Cest un problème pour un système à processus unique (pas dinterruption) –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 lappel, il ne demande pas beaucoup plus de travail de changer de thread en même temps…

10 10 Met le concept des threads dans le noyau –Pas besoin de moteur dexécution –Le noyau a une table de threads –Les threads font des appels de système pour la création/terminaison –Le noyau tiens linformation des threads: registres, état, etc... Threads dans le noyau

11 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 nefface pas les threads, mais les sauvegarde pour être recyclés Threads dans le noyau

12 12 Threads dans le noyau Avantages: –Beaucoup moins compliqué –Pas besoin de nouveau appels non-bloquants –Les défauts de page narrêtent pas les autres threads dans le processus dexécuter Désavantages: –Les coûts dun appel de système sont substantiels, et les threads dans le noyau vont en demander beaucoup plus

13 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 dun processus entier –Avantage: Le plus efficace –Désavantage: De loin la solution la plus compliquée Implémentations hybrides

14 14 Activations de lordonnanceur –But est de combiner la bonne performance des threads utilisateurs avec la simplicité des threads noyaux –En particulier le système que lon 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 lappel Permettre à dautres threads dans le processus dexécuter quand un thread bloque Éviter les transitions inutiles entre lespace 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écifiques

15 15 Implémentations spécifiques Activations de lordonnanceur –Opération du système: Le noyau assigne un nombre de processeur virtuels à chaque processus Le système dexécution dans lespace utilisateur alloue des threads à ces processeurs Si un thread bloque sur un appel de système, le noyau fait un appel au système dexécution (upcall) pour linformer de quel thread a bloqué et pourquoi Le système dexécution peut réordonnancer ses threads Plus tard un autre upcall du noyau informe le système dexécution que le thread est de nouveau capable dexécuter

16 16 Implémentations spécifiques Activations de lordonnanceur –Opération du système: Les interruptions basculent encore en mode noyau. Si linterruption nétait pas pour le processus en exécution, elle est traitée et le même thread est réactivé plus tard Si linterruption était pour un thread dans le processus courrant, alors le noyau réveille le système dexé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 dentretenir et facile de faire des erreurs

17 17 Implémentations Spécifiques Threads spontanés (pop-up) –La façon traditionnel de traiter les entrées dans les applications distribuées est davoir un thread bloqué sur un appel de système: receive –Au lieu de cela le SE peut créer un nouveau thread quand de linformation arrive Vite parce que on a pas besoin de restaurer létat du thread bloqué Les threads peuvent partir et exécuter dans lespace noyau ce qui donne accès au tables dans le noyau, périphériques dE/S, etc… VITE! Cependant ceci veut dire que un thread bogué pourrait faire des ravages dans le noyau...

18 18 Monothread à 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

19 19 Monothread à multithread Variables Globales –Multithreads qui utilisent les mêmes variables peuvent causer des problèmes

20 20 Monothread à 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) –Quest-ce qui arrive si une procédure assemble un message pour réseau dans une mémoire tampon et quun appel à cette même procédure est faite dun autre thread? –Réparer ces problèmes peut demander la re- programmation entière de bibliothèques!

21 21 Monothread à multithread Signaux –Si un thread demande un service du noyau, tel quun 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 quune clef a été pressée? Piles –Normalement les piles grandissent automatiquement –Le noyau ne connaît rien des piles individuelles

22 22 Quiz Time! Questions?


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

Présentations similaires


Annonces Google