Aller au contenu principal

Processus et threads

Progression

#Processus et threads

À quoi ça sert ?

À quoi ça sert: structurer l’exécution en unités isolées (processus) ou légères (threads) pour paralléliser et répondre vite. Comment: le noyau planifie, et on synchronise l’accès aux données partagées.

#Processus vs threads

  • Processus: espace mémoire séparé, isolation plus forte.
  • Threads: partagent l’espace mémoire du processus, plus légers.

Cycle de vie des threads

Visualisez les transitions prêt/exécution/blocage pour différents profils de charge. Chaque jeton représente un thread concret.

Lecture auto
Nouveau

Créé par le processus mais pas encore planifié

UI
Prêt

En file d’attente, attend un quantum CPU

Batch
En exécution

Occupe un cœur CPU

Bloqué (I/O)

Attend un événement externe ou un verrou

I/O
Terminé

A libéré ses ressources

Création des threads

L’interface utilisateur (UI) vient d’être lancée, un worker I/O attend des requêtes disque, la tâche batch est en attente.

Le scheduler place UI devant pour respecter la réactivité.

Latence attendue UIFaible
Quantum5 ms
À retenir
  • La priorité adaptative garde l’interface fluide sans affamer le batch.
  • Le worker I/O retourne au pool après avoir signalé l’UI.

#Ordonnancement

  • Préemptif vs coopératif; politiques RR, priorité, multi‑niveau; affinités CPU pour la localité de cache.

#Synchronisation

  • Mutex, sémaphores, barrières; sections critiques et invariants.

Exemple (pseudo‑code) section critique protégée par mutex:

cc
1mutex m;2int compteur = 0;3 4void travail() {5  lock(m);6  // section critique7  compteur += 1;8  unlock(m);9}
Pièges de concurrence

Deadlocks si l’ordre d’acquisition diffère; inversion de priorité; ABA sur structures lock‑free. Définissez des ordres globaux et utilisez des primitives atomiques adaptées.

#Pièges

  • Deadlocks (attente circulaire), conditions de course, inversion de priorité.

#Quiz

Laquelle n’est PAS une condition nécessaire à un interblocage (Coffman) ?
Laquelle n’est PAS une condition nécessaire à un interblocage (Coffman) ?