Aller au contenu

TNSI : OS - Processus Légers / Threads⚓︎

Introduction⚓︎

Un processus peut lui-même être décomposé en sous-processus / threads ou tâches / tasks. Les threads permettent de ne plus être liés à une exécution totalement sérielle des instructions. Il est dès lors possible d’avoir, par exemple, un thread responsable d’exécuter un calcul lourd pendant qu’un autre gère les interactions avec l’utilisateur. Un serveur FTP, par exemple, peut plus facilement gérer plusieurs connexions simultanées, chaque connexion étant gérée par un thread.

Threads⚓︎

Définition⚓︎

Fil d'exécution / Thread

  • Un processus est composé de un ou plusieurs Threads 🇬🇧 🇫🇷 / Processus léger / Fil d'exécution 🇫🇷,
  • Un Processus léger / thread est semblable à un processus: il représente l'exécution d'un ensemble d'instructions du langage machine d'un processeur, mais il partage un même espace mémoire avec d'autres threads.
  • Il existe un thread principal (main)
  • Un thread est attaché à un processus lourd parent

Groupes de Threads⚓︎

Groupes de Threads

  • Les threads partageant un même espace mémoire sont regroupés en des groupes : cela permet par exemple de faciliter le parallélisme sur des machines multi-processeurs.
  • En contrepartie, les données étant partagées dans le même espace mémoire, cela peut créer des conflits et impose une plus grande surveillance pour la synchronisation. (cf exercice ...)

Processus Multithreads

Principales Utilisations⚓︎

Pte

Classiquement, les threads sont utilisés :

  • pour développer des logiciels avec des Interfaces Graphiques, qui peuvent se focaliser sur la détection des événements extérieurs (souris, clavier, etc..) sans bloquer l'interface
  • pour gérer les accès concurrents à des bases de données

Ressources d'un Thread⚓︎

Ressources d'un Thread

Pour fonctionner, un thread dispose de :

  • Ressources Indépendantes:
    • Une Pile 🇫🇷 / Stack 🇬🇧 : Un pointeur dans la mémoire qui sert à stocker les variables locales, et l'information suffisante pour que le processeur comprenne quel sera la prochaine instruction à exécuter
    • Registres
  • Ressources Partagées:
    • L'Espace d'adressage mémoire du processus parent
    • Les Fichiers ouverts par le processus parent
    • Ressources gérées par le noyau correspondant au processus parent :
      • État du processus
      • Une Priorité : Information que le système d’exécution utilisera pour déterminer quel thread sera le prochain à obtenir du temps de processeur.

Mémoire partagée des Threads

Threads vs Processus⚓︎

Voici une table de comparaison1 :

Processus Thread
Définition Un Processus est une instance
d'un programme en cours d’exécution
Un Thread est une petite partie d’un processus.
Communication
entre eux
La communication entre deux processus
est uniquement externe,
coûteuse et limitée.
La communication entre deux threads
se fait via la mémoire partagée,
elle est moins coûteuse que
celle entre processus.
Multitâche Le multitâche basé sur les processus
permet à un ordinateur d’exécuter
deux ou plusieurs programmes simultanément.
(Pseudo-Parallélisme)
Le multitâche basé sur les threads
permet à un programme unique d’exécuter
deux threads ou plus simultanément.
Espace d'adressage Chaque processus a son
espace d’adressage distinct.
Tous les threads d’un processus
partagent le même espace d’adressage
(que celui du processus).
Tâche Les processus sont des tâches lourdes Les threads sont des tâches légères.
Changement
de Contexte
Moins Rapide Rapide
Exemple Vous travaillez sur un éditeur de texte,
il fait référence à l’exécution d’un processus.
Vous imprimez un fichier
à partir d’un éditeur de texte
tout en travaillant dessus,
ce qui ressemble à l’exécution
d’un thread dans le processus.

Notes & Références⚓︎

Références⚓︎

Notes⚓︎