Programme de colles - Informatique MPI

Semaine du lundi 3 mars 2025

Tout ce qui précède, auquel on rajoute l'utilisation de mutex et de sémaphores. Il faut :

- savoir ce qu'est un thread ("sous-programme" qui partage la mémoire du processus qui l'a créé).

- savoir ce qu'est une section critique - savoir utiliser un ou plusieurs mutex pour protéger des sections critiques, en utilisant le principe de verrouillage/déverrouillage.

- connaître l'algorithme de Peterson et l'algorithme de la Boulangerie de Lamport, qui fournissent des implémentations basiques de lock/unlock (même si elles ne sont plus utilisées aujourd'hui)

- savoir utiliser un ou plusieurs sémaphores pour synchroniser des processus, en connaissant le principe des opérateurs P et V.

- connaître et savoir résoudre au moins le problème du rendez-vous entre deux threads.

- connaître les définitions des problèmes suivants qui peuvent survenir lors de l'exécution de threads en parallèles : interblocage, attente active, famine. Ces problèmes peuvent survenir si on fournit une mauvaise implémentation des outils de synchronisation (Peterson/Lamport ont de l'attente active), mais même avec une bonne implémentation de ces outils, leur mauvaise utilisation peut conduire à ces problèmes.

On ne demande pas de connaître par coeur les types et les fonctions à utiliser en OCaml ou en C pour gérer des threads, mutex, et sémaphores, mais il faut savoir les utiliser quand ils sont fournis.

Pour le reste, on peut s'attendre à proposer des solutions à des problèmes de synchronisation posés, et à justifier si une solution est problématique (interblocage, attente active, famine), ou si elle vérifie la spécification du problème posé.