close

Se connecter

Se connecter avec OpenID

Chap5 - Fils = Threads

IntégréTéléchargement
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/
1
Concepts importants du Chap. 5

Threads et processus: différence

Threads de noyau et d’usager: relations

Ch.5
LWP: lightweight processes, threads
légers
2
Flots = threads = lightweight processes



Ch.5
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)
3
Processus à un thread et à plusieurs threads
En commun
Séparés
Ch.5
4
Exemple

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.

Ch.5
Ces threads partagent tous le même fichier
.doc et autres données
5
Threads et processus [Stallings]
Ch.5
6
Processus


Ch.5
Possède sa mémoire, ses fichiers, ses
ressources, etc.
Accès protégé à la mémoire, fichiers,
ressources d’autres processus
7
Thread



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
8
Pourquoi les threads

Reactivité: un processus peut être
subdivisé en plusieurs threads,
 L’un

Ch.5
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
9
La commutation entre threads est moins dispendieuse
que 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,

Ch.5
Incluant sa pile
10
La communication aussi est moins dispendieuse entre
threads 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
11
La création et terminaison sont moins
dispendieuses

La création et terminaison de nouveaux
threads dans un processus existant sont
aussi moins dispendieuses
 que
Ch.5
la création ou terminaison d’un processus
12
Threads 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
Ch.5
mixtes
13
Threads d’utilisateur et de noyau (kernel)

Threads de noyau: supportés directement par le noyau du SE
(Windows, Solaris)




Ch.5
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
14
Solutions 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
15
Plusieurs threads utilisateur pour un thread noyau:
l’usager ou son langage de progr. contrôle les threads
usager
noyau

Le SE ne connaît pas les threads utilisateur

Ch.5
v. avantages et désavantages mentionnés avant
16
Un vers un: le SE contrôle les threads
usager
noyau


Ch.5
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
17
Plusieurs à plusieurs: solution mixte
usager
noyau




Ch.5
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
18
Concept de Light-Weight Process (LWP)



Ch.5
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
19
Lightweight processes
Tâche = processus
Plusieurs à plusieurs, usager et noyau
Ch.5
20
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
Ch.5
21
Revenons aux deux méthodes d’E/S



Ch.5
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
22
Plutôt génial …


Ch.5
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
23
Utilisation 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
24
Exécution des LWP: flexibilité



Ch.5
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
25
Structures 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
26
Dans les sessions exercices, vous verrez
comment Java implémente les threads vous
cachant tous ces mécanismes
Ch.5
27
Concepts importants du Chap. 5

threads et processus: différence

threads de noyau et d’usager: relations


Ch.5
LWP: lightweight processes, processus
légers
Implémentation utilisant UCT physiques
28
Quoi étudier dans le manuel




Ch.5
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
29
Auteur
Документ
Catégorie
Без категории
Affichages
6
Taille du fichier
590 Кб
Étiquettes
1/--Pages
signaler