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 d’exploitation

Présentations similaires


Présentation au sujet: "Module Systèmes d’exploitation"— Transcription de la présentation:

1 Module Systèmes d’exploitation
BTS Génie Informatique École Normale Supérieure Tétouan Département Informatique Module Systèmes d’exploitation Chapitre 7 Threads Partie II Enseignant : AAMMOU Souhaib

2 Module Systèmes d'exploitation
BTS Génie Informatique Revue Décrivez les différences entre un processus et un thread Primary: shared address space between threads within a single process A thread is how flow of execution is separated. Processes separate resources Typically, threads need to relinquish control to yield to other threads within the same process. Hardware schedules processes Threads really only care about PC, stack, registers and state Processes care about address space, global variables, open files, pending alarms, signals and signal handlers, and accounting information Enseignant : AAMMOU Souhaib

3 Module Systèmes d'exploitation
BTS Génie Informatique Synopsis 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 Enseignant : AAMMOU Souhaib

4 Théorie d’implémentation des threads
Module Systèmes d'exploitation BTS Génie Informatique Théorie d’implémentation des threads Comment les paquetages de threads sont implémentés? Deux places possible: Espace de l’utilisateur Noyau Choix est controversé: complexité vs. efficacité Enseignant : AAMMOU Souhaib

5 Threads dans l’espace utilisateur
Module Systèmes d'exploitation BTS Génie Informatique Threads 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... Pardessus : nm Manteau d’homme Enseignant : AAMMOU Souhaib

6 Threads dans l’espace utilisateur
Module Systèmes d'exploitation BTS Génie Informatique Threads dans l’espace utilisateur 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 When a thread is moved between states, the information needed to restore it is saved in the table by the run-time system in the same way that the process table saves information when processes change state. Enseignant : AAMMOU Souhaib

7 Threads dans l’espace utilisateur
Module Systèmes d'exploitation BTS Génie Informatique Threads 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 Enseignant : AAMMOU Souhaib

8 Threads dans l’espace utilisateur
Module Systèmes d'exploitation BTS Génie Informatique Threads 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 Altering the OS is especially undesirable in this case as the whole point of user-space threads was to avoid altering the OS The altering involves potentially making system calls that don’t block, but don’t return data if they’re not ready...confusing! Talk about the select system call in unix to wrap blocking system calls Wrapping the system calls might involve adding a call to a function which will reveal if a call to a particular function will block or not...that’s just a mess... Page faults: Refer to the fact that not all of the program text is necessarily in memory. If the OS has to load part of the program back into memory it will block that process. We have no way of telling it just to switch to a different thread instead Requiring voluntary relinquishing of control means that if one thread has an error, it may never pass control to another thread Enseignant : AAMMOU Souhaib

9 Threads dans l’espace utilisateur
Module Systèmes d'exploitation BTS Génie Informatique Threads 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… Enseignant : AAMMOU Souhaib

10 Module Systèmes d'exploitation
BTS Génie Informatique Threads dans le noyau 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... Enseignant : AAMMOU Souhaib

11 Module Systèmes d'exploitation
BTS Génie Informatique Threads dans le noyau 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 Recycled threads are quicker to create as the data storage is already allocated...it just has to be filled in with the relevant information Le thread est marqué comme étant non exécutable jusqu’à ce que le système reload la table pour un nouveau thread On aurait été capable de faire cela pour les threads utilisateurs, mais, on ne s’en soucie pas parce que la création de threads utilisateurs est léger Enseignant : AAMMOU Souhaib

12 Module Systèmes d'exploitation
BTS Génie Informatique Threads 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 Enseignant : AAMMOU Souhaib

13 Implémentations hybrides
Module Systèmes d'exploitation BTS Génie Informatique Implémentations hybrides 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 Note that the picture is showing a single process. It has two kernel-level threads that have a number of user level threads on them Enseignant : AAMMOU Souhaib

14 Implémentations spécifiques
Module Systèmes d'exploitation BTS Génie Informatique Implémentations spécifiques 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) Make it clear to them that these are the ‘requirements’ to which we are designing a new system...Scheduler Activations Enseignant : AAMMOU Souhaib

15 Implémentations spécifiques
Module Systèmes d'exploitation BTS Génie Informatique Implé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 An upcall is where the lower services call the upper services Usually accomplished by starting the code at some known address Enseignant : AAMMOU Souhaib

16 Implémentations spécifiques
Module Systèmes d'exploitation BTS Génie Informatique Implé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 This is very flexible and allows for each process to have its own scheduling policies ie: draw out layer n calling on layer n+1 to show the principle Enseignant : AAMMOU Souhaib

17 Implémentations Spécifiques
Module Systèmes d'exploitation BTS Génie Informatique Implé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... This is just an example of how threads can be used Do I even want to test on something like this? Probably not... Enseignant : AAMMOU Souhaib

18 Monothread à multithread
Module Systèmes d'exploitation BTS Génie Informatique 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 It should be easy, right? Enseignant : AAMMOU Souhaib

19 Monothread à multithread
Module Systèmes d'exploitation BTS Génie Informatique Monothread à multithread Variables Globales Multithreads qui utilisent les mêmes variables peuvent causer des problèmes errn o is a global variable included with libraries that you would include in a C program in UNIX If a user space run-time library was managing the threads, then errno can easily be overwritten at inconvenient moments... ie: using the open call on a file Solutions: No global variables (unlikely – too much use in existing software) New scoping of global variables at the thread level, but no language offer this, so new library procedures required such as: create_global(“bufptr”); set_global(“bufptr”, &buf); Enseignant : AAMMOU Souhaib

20 Monothread à multithread
Module Systèmes d'exploitation BTS Génie Informatique 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) 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! Draw a small diagram showing where the library procedures live. Explain how Scheduler Activations work. Enseignant : AAMMOU Souhaib

21 Monothread à multithread
Module Systèmes d'exploitation BTS Génie Informatique Monothread à 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 Enseignant : AAMMOU Souhaib

22 Module Systèmes d'exploitation
BTS Génie Informatique Quiz Time! Questions? Why are threads in user space more dangerous than those managed by a kernel? Enseignant : AAMMOU Souhaib


Télécharger ppt "Module Systèmes d’exploitation"

Présentations similaires


Annonces Google