Aller au contenu

Gestion de la concurrence et synchronisation

Notions Commentaires
Notion de fils d’exécution. Non-déterminisme de l’exécution. Les notions sont présentées au tableau en privilégiant le pseudo-code; elles sont mises en œuvre au cours de travaux pratiques en utilisant les bibliothèques POSIX pthread (en langage C) ou Thread(en langage OCaml), au choix du professeur, selon les modalités précisées en annexe. On s’en tient aux notions de base : création, attente de terminaison.
Synchronisation de fils d’exécution. Algorithme de Peterson pour deux fils d’exécution. Algorithme de la boulangerie de Lamport pour plusieurs fils d’exécution. On illustre l’importance de l’atomicité par quelques exemples et les dangers d’accès à une variable en l’absence de synchronisation. On présente les notions de mutex et sémaphores.

L’apprentissage des notions liées au parallélisme d’exécution se limite au cas de fils d’exécutions ( threads ) internes à un processus, sur une machine. Les problèmes d’algorithmes répartis et les notions liées aux réseaux et à la communication asynchrone sont hors programme. Les concepts sont illustrés sur des schémas de synchronisation classiques : rendez-vous, producteur-consommateur. Les étudiants sont également sensibilisés au non-déterminisme et aux problèmes d’interblocage et d’équité d’accès, illustrables sur le problème classique du dîner des philosophes.