19
GEF 435 Principes des systèmes d’exploitation Threads Pt I (Tanenbaum 2.2)

GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

Embed Size (px)

Citation preview

Page 1: GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

GEF 435Principes des systèmes d’exploitation

Threads Pt I(Tanenbaum 2.2)

Page 2: GEF 435 Principes des systèmes dexploitation 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?

Page 3: GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

Synopsis

• Le modèle des threads• Utilisation des threads (sous titré: pourquoi avoir

des threads?)

Page 4: GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

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

Page 5: GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

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)

Page 6: GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

Le modèle des threads

• Le CPU change de thread rapidement pour donner l’illusion qu’ils exécutent en parallèle

Page 7: GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

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?

Page 8: GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

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

Page 9: GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

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:

Page 10: GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

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

Page 11: GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

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

Page 12: GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

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...

Page 13: GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

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

Page 14: GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

Utilisation des threads

• Exemple: Un traitement de texte

Page 15: GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

Utilisation des threads

• Exemple: Un serveur Web

Page 16: GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

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

Page 17: GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

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é

Page 18: GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

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

Page 19: GEF 435 Principes des systèmes dexploitation Threads Pt I (Tanenbaum 2.2)

Quiz Time!

Questions?