Vous êtes sur la page 1sur 17

Threads

Multithreading
Hyperthreading
01
Motivation – Notions générales

02
Threading

03
Multithreading

04
Hyperthreading
Motivation

Une application est généralement mise en œuvre comme un processus distinct avec un ou plusieurs threads de
contrôle.

3
Notions générales
Processeur Cœur
(CPU) (CORE)

Circuit électronique à Unité de traitement


l'intérieur de l'ordinateur qui reçoit des
qui gère toutes les instructions pour
instructions qu'il reçoit effectuer des
du matériel et des actions en fonction
logiciels en cours des instructions..
d'exécution sur
l'ordinateur

Système
Processus
d’exploitation

Opération complexe exécutable par un ordinateur et Ensemble de


défini par : programmes qui
• Ensemble d'instructions à exécuter dirige l'utilisation
• Espace d'adressage en mémoire vive pour stocker les des ressources d'un
données ordinateur par des
• Autres ressources, comme des descripteurs de logiciels applicatifs
fichier, des ports réseau, etc.
4
Etat d’un processus
Les états successifs d'un processus sont généralement représentées par un diagramme d'état

• Initialisation : C'est le premier état d'un processus. Il y


attend que l'ordonnanceur le place dans l'état prêt, ce qui
peut prendre plus ou moins longtemps.
Initialisation Terminé

• Prêt ou en attente : le processus a été chargé en mémoire


centrale et attente son exécution sur le processeur.
• Elu ou exécution : Le processus est en cours d'exécution par Prêt Endormi
(en attente) (bloqué)
le processeur.
• Endormi ou bloqué : Le processus a été interrompu ou
Elu
attend un événement. (exécution)

• Terminé : Le processus est terminé, c'est-à-dire soit le


résultat est connu, soit le programme a été forcé de s'arrêter.
5
Thread

Les threads sont


généralement présentés La vision du
en programmeur est
premier lieu comme des d'ailleurs
processus allégés plus orientée sur ce
ne réclamant que peu de dernier point que sur la
ressources pour simplicité de
les changements de commutation des tâches.
contexte.

Les
Le mot thread peut se traduire
différents threads d'une
par « fil
application
d'exécution », c'est-à-dire un
partagent un même
déroulement
espace d'adressage en
particulier du code du
ce qui concerne leurs
programme qui se
données.
produit parallèlement à
d'autres entités en
cours de progression.

6
Types des Threads

• Threads utilisateurs (User) : Les threads utilisateurs sont des threads qui ne sont pas liés au
système d'exploitation. Ceux-ci sont gérés à l'intérieur d'un processus, par une bibliothèque
logicielle. Celle-ci s'occupe de la création et la suppression des threads, ainsi que de leur
ordonnancement. Le système d'exploitation ne peut pas les ordonnancer et n'a donc pas besoin de
mémoriser les informations des threads. Par contre, chaque thread doit se partager le temps alloué
au processus lors de l'ordonnancement.

• Threads noyaux (Kernel) : Les threads noyaux sont gérés par le système d'exploitation, qui peut
les créer, les détruire ou les ordonnancer. L'ordonnancement est donc plus efficace, vu que chaque
thread est ordonnancé tel quel. Il est donc nécessaire de disposer d'une table des threads pour
mémoriser les contextes d'exécution et les informations de chaque thread.

7
Avantages et Inconvénients

Les programmes qui utilise les threads sont plus rapide que
les programmes architecturés classiquement (les machines
comportant plusieurs processeurs)

Le partage des ressources entre les threads rend la


communication plus efficace

La programmation en utilisant les threads est difficile

La complexité des programmes utilisant les threads est plus


grande que celle des programmes déférant le travail à faire
à plusieurs processus plus simples

8
Utilisation

01 Les threads sont utilisés dans les interfaces graphiques des programmes comme dans la
télécommunication et les calculs intensifs
(Encodage d’une vidéo, simulation mathématique …)

02 Traitement de texte dont la correction orthographique


.
.
.
.

Dans certains programmes, l’utilisation de plusieurs threads permet de paralléliser le traitement, ce qui permet de
rendre le traitement plus rapide

9
Processus et Thread

Un processus est une exécution d’un programmes mais un thread est une séquence d’exécution
unique dans le processus. Un processus peut être un ou plusieurs threads.

Processus Processus

Thread Thread Thread Thread


1 1 2 3

Monothread MultiThread

10
MultiThreading

Un processeur est dit multithread s'il est capable d'exécuter efficacement plusieurs threads simultanément.
Contrairement aux systèmes multiprocesseurs (tels les systèmes multi-cœur), les threads doivent partager les
ressources d'un unique cœur

Processus

Thread Thread Thread


1 2 3

11
Modèles du MultiThreading

• One-to-One : - Chaque thread de niveau utilisateur correspond à un thread du noyau

K K K

• Many-to-one : Nombreux threads utilisateur sont associés à un seul thread noyau

• Many-to-Many : Plusieurs threads utilisateurs peuvent être mappés à plusieurs threads noyau

12
K K K
Avantages du MultiThreading

Economique
01 Il est économique car ils partagent les mêmes ressources de processeur. Il faut moins de
temps pour créer des threads

Partage des ressources


02 Il permet aux threads de partager des ressources comme les données, la mémoire, les fichiers, etc.
Par conséquent, une application peut avoir plusieurs threads dans le même espace d'adressage.

Réactivité
03 Il augmente la réactivité vis-à-vis de l'utilisateur car elle permet au programme de continuer à
fonctionner même si une partie de celui-ci effectue une longue opération ou est bloquée.

Evolutivité
04
Il augmente le parallélisme sur les machines à CPU multiples. Il améliore les
performances des machines multiprocesseurs.

13
HyperThreading

Hyper-threading consiste à créer deux processeurs logiques sur une seule puce, chacun doté de ses propres
registres de données et de contrôle, et d’un contrôleur d’interruptions particulier.
Ces deux unités partagent les éléments du cœur de processeur, le cache et le bus système. Ainsi, deux sous-
processus peuvent être traités simultanément par le même processeur.
Le premier processeur qui supporte cette technologie est lancé en 2002 (Intel Pentium 4)

14
HyperThreading

15
16
Threads
Multithreading
Hyperthreading

Vous aimerez peut-être aussi