threads et lightweight processes
DESCRIPTION
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 Java. http://w3.uqo.ca/luigi/. Concepts importants du Chap. 5. Threads et processus: différence - PowerPoint PPT PresentationTRANSCRIPT
1
Threads et Lightweight ProcessesThreads et Lightweight Processes
Chapitre 5Chapitre 5
En français on utilise parfois ‘flots’ ou ‘fils’ pour ‘threads’.
Votre manuel préfère le mot anglais thread:
terminologie Java
http://w3.uqo.ca/luigi/http://w3.uqo.ca/luigi/
Ch.5 2
Concepts importants du Chap. 5Concepts importants du Chap. 5
Threads et processus: différence
Threads de noyau et d’usager: relations
LWP: lightweight processes, threads légers
Ch.5 3
Flots = threads = lightweight processesFlots = threads = lightweight processes
Processus: programme en exécution Chaque processus a ses variables et fichiers
indépendants des autres processus Un thread est une subdivision d`un processus
Un fil de contrôle dans un processus Les différents threads d’un processus partagent
les variables et les ressources d’un processus lorsqu’un thread modifie une variable (non locale à
lui), tous les autres threads voient la modification un fichier ouvert par un thread est accessible aux
autres threads (du même processus)
Processus à un thread et à plusieurs threadsProcessus à un thread et à plusieurs threads
Ch.5 4
En commun
Séparés
Ch.5 5
ExempleExemple
Le processus MS-Word peut impliquer plusieurs threads: Interaction avec le clavier Rangement de caractères sur la page Sauvegarde régulière du travail fait Contrôle orthographe Etc.
Ces threads partagent tous le même fichier .doc et autres données
Ch.5 6
Threads et processus Threads et processus [Stallings][Stallings]
Ch.5 7
ProcessusProcessus
Possède sa mémoire, ses fichiers, ses ressources, etc.
Accès protégé à la mémoire, fichiers, ressources d’autres processus
Ch.5 8
ThreadThread
Possède un état d’exécution (prêt, bloqué…) Possède sa pile et un espace privé pour
variables locales A accès à l’espace adressable, fichiers et
ressources du processus auquel il appartient En commun avec les autres threads du même
proc
Ch.5 9
Pourquoi les threadsPourquoi les threads
Reactivité: un processus peut être subdivisé en plusieurs threads, L’un peut exécuter tant que l’autre est bloqué
Utilisation de multiprocesseurs: les threads peuvent exécuter en parallèle sur des UCT différentes
Ch.5 10
La La commutationcommutation entre threads est moins dispendieuse entre threads est moins dispendieuse que la commutation entre processusque la commutation entre processus
Un processus possède mémoire, fichiers, autres ressources
Changer d`un processus à un autre implique sauvegarder et rétablir l’état de tout ça
Changer d’un thread à un autre dans le même proc est bien plus simple, implique sauvegarder seulement les registres de l’UCT, les vars locales du thread,
Incluant sa pile
Ch.5 11
La La communicationcommunication aussi est moins dispendieuse entre aussi est moins dispendieuse entre threads d’un proc qu’entre procthreads d’un proc qu’entre proc
Étant donné que les threads partagent leur mémoire, la communication entre threads dans un même
processus est plus efficace que la communication entre processus
elle utilise les variables qui sont en commun entre threads
Ch.5 12
La création et terminaison sont moins La création et terminaison sont moins dispendieusesdispendieuses
La création et terminaison de nouveaux threads dans un processus existant sont aussi moins dispendieuses que la création ou terminaison d’un processus
Ch.5 13
Threads de noyau (kernel) et d’utilisateurThreads de noyau (kernel) et d’utilisateur
Où implémenter les threads: Dans les bibliothèques d’usager ou dans le
système d’exécution du langage utilisé (Java?) contrôlés directement ou indirectement par
l’usager Dans le noyau du SE:
contrôlés par le noyau Solutions mixtes
Ch.5 14
Threads d’utilisateur et de noyau Threads d’utilisateur et de noyau (kernel)(kernel)
Threads de noyau: supportés directement par le noyau du SE (Windows, Solaris)
les ops sur les threads sont des appels au système le noyau est capable de gérer directement les états des threads Il peut affecter différents threads à différentes UCTs
Threads d’utilisateur: supportés par des bibliothèques d’usager ou le langage de prog (p.ex Java)
les ops sur les threads ne demandent pas des appels du système sont gérées par le système d’exécution du langage de
programmation (p.ex. Java) le noyau ne peut pas les gérer directement
Ch.5 15
Solutions mixtes: threads utilisateur et noyauSolutions mixtes: threads utilisateur et noyau
Relation entre threads utilisateur et threads noyau plusieurs à un un à un plusieurs à plusieurs
Nous devons prendre en considération plusieurs niveaux: Processus Thread usager Thread noyau Processeur (UCT)
Ch.5 16
Plusieurs threads utilisateur pour un thread noyau:Plusieurs threads utilisateur pour un thread noyau:l’usager ou son langage de progr. contrôle les threadsl’usager ou son langage de progr. contrôle les threads
Le SE ne connaît pas les threads utilisateur v. avantages et désavantages mentionnés avant
noyau
usager
Ch.5 17
Un vers un: Un vers un: le SE contrôle les threadsle SE contrôle les threads
Les ops sur les threads sont des appels du système
Permet à un autre thread d’exécuter lorsqu’un thread exécute un appel de système bloquant
noyau
usager
Ch.5 18
Plusieurs à plusieurs: solution mixtePlusieurs à plusieurs: solution mixte
Flexibilité pour l’usager d’utiliser la technique qu’il préfère Si un thread utilisateur bloque, son thread noyau peut être affecté à un autre utilisateur Si plus. UCT sont disponibles, plus. threads noyau peuvent exécuter en même temps Complexité: les threads usager et les thread noyau doivent être ordonnancés séparément et ceci
peut causer des inefficacités et impasses
noyau
usager
Concept de Light-Weight Process (LWP)Concept de Light-Weight Process (LWP)
Les LWP sont des UCT virtuelles Représentent des threads de noyau qui
peuvent exécuter des threads d’usager
Concept implémenté dans plusieurs systèmes d’exploitation
Ch.5 19
Ch.5 20
Lightweight processesLightweight processes
Plusieurs à plusieurs, usager et noyau
Tâche = processus
Ch.5 21
Processus légers (lightweight, LWP)Processus légers (lightweight, LWP) Implémentent le concept d’UCT
virtuelle, pouvant exécuter des threads niveau usager
Il y a des ordonnanceurs pour les LWP comme pour les UCT, et leurs logiques sont semblables à ce que nous avons vu (états prêt, en attente, etc.)
Il y a un thread noyau pour chaque LWP Les threads utilisateur sont exécutés
sur les LWP disponibles Si un thread noyau bloque, ses LWPs et
ses threads usagers bloquent aussi Seulement les threads usager qui sont
associés à un LWP peuvent exécuter, les autres sont bloqués
Thread usager
LWP
Thread noyau
UCT
Revenons aux deux méthodes d’E/SRevenons aux deux méthodes d’E/S
La méthode (a) d’attente sur E/S est conceptuellement la plus simple
Nous pouvons travailler avec la méthode (a) si nous avons assez d’UCT, qui peuvent rester bloquées dans les E/S
Le SE peut créer un nombre arbitraire de LWP
Ch.5 22
Plutôt génial …Plutôt génial …
Par rapport aux LWP, nous utilisons ici la méthode d’E/S (a): Le LWP attend le complètement de l’E/S
Mais par rapport à l’UCT réelle, nous utilisons la méthode (b) Dans l’attente l’UCT est allouée à un autre LWP,
s’il y en a
Ch.5 23
Ch.5 24
Utilisation des LWPUtilisation des LWP
Quand un thread usager fait un appel au SE, p.ex. E/S, on crée un nouveau LWP pour s’occuper de cette opération le premier LWP peut continuer l’exécution du thread
Il y a besoin d’un LWP pour chaque thread qui peut devenir bloqué pour un appel de système un programme qui ne fait qu’exécuter sur l’UCT a
besoin d’un seul thread s ’il y a 5 demandes d’E/S en même temps, 5 LWP
nous permettent de les lancer (virtuellement) en même temps
s`il y a seul. 4 LWP, une des demandes d ’E/S doit attendre qu’un LWP devienne libre ou soit créé
Ch.5 25
Exécution des LWP: Exécution des LWP: flexibilitéflexibilité
Les threads de noyau qui implémentent les LWP exécutent sur les UCT qui deviennent disponibles
Si un thread noyau se bloque, son LWP se bloque aussi, mais un processus (tâche) peut en obtenir un autre, ou un
nouveau LWP peut être créé Si un LWP bloque, l’UCT qui l’exécute peut être affectée à un
autre thread
Ch.5 26
Structures de données: SolarisStructures de données: Solaris
Une tâche=processus Solaris peut être associée à plusieurs LWP
Un LWP contient un ensemble de registres, les vars locales etc.
PCB du proc
Données pour chaque LWP dans le proc principal
Ch.5 27
Dans les sessions exercices, vous verrez Dans les sessions exercices, vous verrez comment Java implémente les threads vous comment Java implémente les threads vous cachant tous ces mécanismes cachant tous ces mécanismes
Ch.5 28
Concepts importants du Chap. 5Concepts importants du Chap. 5
threads et processus: différence
threads de noyau et d’usager: relations
LWP: lightweight processes, processus légers
Implémentation utilisant UCT physiques
Ch.5 29
Quoi étudier dans le manuelQuoi étudier dans le manuel
En classe, nous avons vu seulement 5.1- 5.2 et 5.3.6
5.3.1 jusqu’à 5.3.5 sont utiles pour mieux comprendre mais pas matière d’examen
5.4 et 5.5 sont intéressants mais ils ne sont pas matière d’examen
Pendant les sessions exercices vous verrez 5.6 et suivants