Académique Documents
Professionnel Documents
Culture Documents
Dr. Olfa FAKHFAKH ● En effet, chaque nouveau processus possède son propre
PCB et sa propre zone de mémoire.
fakhfakh.olfa@essths.u-sousse.tn
A.U. 2022-2023 2
2/6/2023 Dr. Olfa FAKHFAKH
● Il s'ensuit trois problèmes des machines parallèles: ● Un thread est une partie des instructions du processus en
▶Problème de performance à la création du cours d'exécution.
processus, puisque l'allocation et la recopie du PCB
et de la zone mémoire sont des mécanismes coûteux, ● Chaque processus peut s’exécuter comme le système
▶Problème de performance à la commutation (dans d'exploitation en lançant des sous-tâches internes au
processus.
l'unité centrale) d'un processus à l'autre, puisque les
processus travaillent sur des zones de mémoire
différentes qu'il faut recharger. ● Ces sous-tâches sont nommées, « flot d’exécution »,
«processus légers », ou Threads.
▶Problème de communication entre les processus,
qui ont des variables séparées (... d'où la nécessité
d'utiliser des segments de mémoire partagée pour ● Le processus est considéré comme étant un ensemble de
ressources (périphériques, segments de données, de fichiers,
mettre des données en commun).
etc.) que les Threads partagent.
3 4
2/6/2023 Dr. Olfa FAKHFAKH 2/6/2023 Dr. Olfa FAKHFAKH
Usage des Threads : Word processor Processus vs Thread
● Chaque thread a :
● Un thread pour interagir avec l’utilisateur, – un identificateur unique
● Un thread pour reformater en arrière plan, – une pile d'exécution
● Un thread pour sauvegarder périodiquement le document – des registres (un compteur ordinal)
5
– un état… 6
2/6/2023 Dr. Olfa FAKHFAKH 2/6/2023 Dr. Olfa FAKHFAKH
● Threads noyau
● Le multithreading permet l’exécution simultanée ou en pseudo- ▶Ils sont gérés par le noyau du S.E.
parallèle de plusieurs parties d’un même processus. ▶Le changement de contexte est lent
9 10
2/6/2023 Dr. Olfa FAKHFAKH 2/6/2023 Dr. Olfa FAKHFAKH
● Ce processus léger s'exécutera de façon concurrente avec le ● pthread_self() retourne l’identificateur du thread
processus appelant : si la machine a plusieurs processeurs, alors
chaque processus léger pourra s'exécuter sur un processeur courant dans le processus courant
différent ; sinon le parallélisme sera simulé...
13 14
2/6/2023 Dr. Olfa FAKHFAKH 2/6/2023 Dr. Olfa FAKHFAKH
15 16
2/6/2023 Dr. Olfa FAKHFAKH 2/6/2023 Dr. Olfa FAKHFAKH
Terminaison des threads Exemple 1
● Création de 2 threads : un qui affiche « Hello », et l'autre qui affiche « World
»
void* ma_proc( void *ptr ){
void pthread_exit( char *message;
message = (char *) ptr;
void *valeur_de_retour);
printf("%s ", message);
}
Suite Exemple