gef 435 principes des systèmes dexploitation threads pt i (tanenbaum 2.2)
TRANSCRIPT
GEF 435Principes des systèmes d’exploitation
Threads Pt I(Tanenbaum 2.2)
Revue
• Quand est-ce que les processus sont créés?• Quand est-ce que le processus sont terminés?
Synopsis
• Le modèle des threads• Utilisation des threads (sous titré: pourquoi avoir
des threads?)
Le modèle des threads
• Les systèmes d’exploitation traditionnels ont des processus, chacun ayant son espace de mémoire et un seul fil d’exécution (thread of control)
• Le modèle des processus discuté le dernier cours est basé sur deux concepts indépendants :Groupement de ressources
• Espace d’adresses (texte du programme & data), filières ouvertes, processus enfants, alertes en attente, handlers de signal, etc.
Exécution (Fil d’exécution ou Thread)• La partie du texte du programme qui exécute
Le modèle des threads
• Parfois il peut être utile de séparer les deux conceptsPermettre des threads multiples d’exécuter dans le
même processus Des threads multiples qui exécutent en parallèle dans
un seul processus est analogue à …? ...des processus multiples exécutant en parallèle dans
un seul ordinateur.
• Les threads partageant un processus sont parfois appelés des processus légers (lightweight processes)
Le modèle des threads
• Le CPU change de thread rapidement pour donner l’illusion qu’ils exécutent en parallèle
Le modèle des threads
• Considérations:Les threads dans un seul processus ne sont pas
aussi indépendants que des processus différents:• Espace de mémoire partagé• Variables globales partagées• Un thread peut lire/écrire sur la pile d’un autre thread!
Il n’y a pas de protection entre les threads parce que:
• Il serait difficile sinon impossible à implémenter• Ce ne devrait pas être nécessaire… pourquoi?
Le modèle des threads
• Processus vs. Threads:
Items par Processus Items Par Thread
Espace d’adresses
Variables Globales
Fichiers ouverts
Processus enfant
Alertes en attente
Signaux/handlers de Signal
Information de gestion
Compteur ordinal
Registres
Pile
État
Le modèle des threads
• Propriété des threads:Tout comme les processus, les threads peuvent être
dans un des trois états: bloqué, prêt ou en exécutionMême si la mémoire est partagée, chaque thread a
besoin de sa propre pile:
Le modèle des threads
• Opération des threads :Normalement un processus commence avec un
seul threadOn crée des threads avec une bibliothèque de
procédures•thread_create()
Les threads terminent en utilisant un appel de bibliothèque•thread_exit()• Le thread disparaît et ne peut plus exécuter
Le modèle des threads
• Opération des threads:Certain systèmes d’exploitation permettent au
threads d’attendre qu’un autre termine:•thread_wait()
Les threads peuvent céder l’exécution à un autre•thread_yield()• Donne le CPU à un autre thread dans l’exécution d’un
processus• Important parce que le changement d’un thread à un autre
n’est pas contrôlé par le matériel comme c’est le cas pour les processus
Le modèle des threads
• Quelle complications sont introduites par les threads?Quand on utilise fork(), est-ce que le nouveau processus
obtiennent les threads?Si un thread est bloqué dans un processus est-ce que le
processus enfant a un thread bloqué aussi?Si un thread était bloqué sur une entrée (i.e. clavier) est-
ce que les deux threads reçoivent l’entrée après le fork()?Gestion des ressources: un thread peut fermer un fichier
qui est utilisé par un autre, la gestion de la mémoire est plus compliquée, etc...
Utilisation des threads
• Pourquoi voulons-nous plusieurs threads dans un processus?Plusieurs applications ont des actions multiples qui
arrivent simultanément et certaines actions peuvent bloquer
Performance(1): Parce que moins de ressources sont allouées aux threads, ils peuvent être un ou deux ordres de grandeur plus vite à créer que les processus
Performance(2): Si il y a un grand nombre d’E/S, beaucoup de travail peut être fait simultanément avec des appels qui bloquent
Utilisation des threads
• Exemple: Un traitement de texte
Utilisation des threads
• Exemple: Un serveur Web
Utilisation des threads
• Exemple: Serveur WebEst-ce que cela pourrait être implémenté sans
les threads?Solution un: Le dispatcher lis du disque
• Problème? Pas de travail fait pendant qu’on lis l’information
• Résulte à beaucoup moins de demandes satisfaites par secondes
Utilisation des threads
• Exemple: Serveur WebSolution deux: Un appel de lecture qui ne
bloque pas• Problème? Information retournée doit générer une
interruption ou quelque chose de semblable. Le processus doit se souvenir à quelle demande l’information appartient
• Résulte en une structure qui est compliquée, essentiellement une machine d’état. Ici on crée un genre de Multi-threading avec un programme très compliqué
Conclusion
• Bénéfices des thread:Permet aux opérations séquentiels de
devenir parallèles (pour une meilleur performance) mais on retiens les appels de systèmes qui peuvent bloquer (pour la simplicité)
Les processus peuvent obtenir la performance au coût de la simplicité et vice versa
Quiz Time!
Questions?