Module Systèmes d’exploitation

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

Module Systèmes d’exploitation
Module Systèmes d’exploitation
Module Systèmes d’exploitation
Module Systèmes d’exploitation
GEF 243B Programmation informatique appliquée Listes chaînées I – Tableaux de structures §15.1 – 15.2.
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes dexploitation Le matériel des ordinateurs Revue Pt II (Tanenbaum 1.4)
GEF 243B Programmation informatique appliquée
GEF 435 Principes des systèmes dexploitation Structure du logiciel dE/S Partie II (Tanenbaum & 5.3.4)
GEF 435 Principes des systèmes dexploitation Principes et structure du logiciel dE/S (Tanenbaum 5.2 & 5.3)
GEF 435 Principes des systèmes dexploitation Les systèmes dexploitation en général (Tanenbaum 1.1 et 1.3)
Fonctions & procédures
Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie III École Normale Supérieure Tétouan Département Informatique
Threads et Capsules Optionnels
Systèmes en temps réel Modélisation du comportement en temps réel avec UML.
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes dexploitation Ordonnancement partie I (Tanenbaum 2.5)
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitations
GEF 243B Programmation informatique appliquée Boucles §
GEF 435 Principes des systèmes d’exploitation
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Considération de temps.
GEF 435 Principes des systèmes dexploitation Communication Interprocessus (CIP) II (Tanenbaum 2.3)
GEF 435 Principes des systèmes d’exploitation
GEF 243B Programmation informatique appliquée
GEF 435 Principes des systèmes dexploitation Communication Interprocessus (CIP) III (Tanenbaum 2.3)
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes dexploitation Structure des systèmes dexploitation (Tanenbaum 1.7)
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes dexploitation Concepts des Systèmes dexploitation (Tanenbaum 1.5)
GEF 435 Principes des systèmes d’exploitation
GEF 243B Programmation informatique appliquée Pointeurs et adresses §9.1.
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitation
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
GEF 243B Programmation informatique appliquée
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Objectif de l’exposé.
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
Administration de SharePoint
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
Points importants de la semaine Le paramétrage. La portée. Le passage par copie. Le passage par référence.
ECF 5 PRESENTATION « BULLE APPLICATIVE »
1 Threads et Lightweight Processes Chapitre 5 En français on utilise parfois flots ou fils pour threads. Votre manuel préfère le mot anglais thread : terminologie.
5.1 URDL22005 Systèmes dexploitation Threads Vue dEnsemble Modèles de Multithreading Problèmes des Threads Pthreads Threads Windows XP Threads Linux Threads.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
IGL301 - Spécification et vérification des exgiences 1 Chapitre 1 Introduction (ref : Bray chapitre 1)
Module 51 Module 5 - Synchronisation de Processus (ou threads, ou fils ou tâches) Module 5 - Synchronisation de Processus (ou threads, ou fils ou tâches)
GPA435, GPA – ÉTS, T. Wong Génie de la production automatisée GPA435 Système dexploitation et programmation de système Chapitre 6 Partie II 2014.
Programmation concurrente
1 Module 3 - Fils (Threads) Lecture: Chapitre 4 Objectif: Comprendre le concept de fils et sa relation avec le processus Comprendre le concept de fils.
Chapitre 6 (Silberchatz)
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Synchronisation Classique
Module 8 : Surveillance des performances de SQL Server
Gestion de processus Corrigé TD 1 EFREI I
Interactions entre Processus
Programmation Système et Réseau
Processus Légers. Rappel sur le fork() fork() Processus 1 Pile Data Text Processus 2 Pile Data Text.
Architecture Client/Serveur
Architecture et technologie des ordinateurs II
Gestion des Tâches Les Processus. Un système multitâches La carte mère comporte Le Processeur (calcul et attente) Les jeux de composants spécialisés (entrées-sorties.
1 UNIX AVANCE Yves PAGNOTTE – Janvier – LES PROCESSUS SOUS UNIX.
Transcription de la présentation:

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 2008-2009 Enseignant : AAMMOU Souhaib

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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