Résoudre exercice oral CCINP pour la définition de l'algorithme de Peterson (dernière question à priori vous n'avez pas encore la réponse) Démontrer que l'algorithme de Peterson vérifie l'exclusion mutuelle et l'absence de famine Implémenter l'algorithme de Peterson en C pour faire un compteur partagé par 2 processus En pratique, l'algorithme de Peterson est rendu obsolète par des techologies plus modernes. Par exemple le mutex (pour mutual exclusion) : c'est un verrou partagé entre les fils d'exécution que l'on peut verrouiller ou déverrouiller. Il garanti qu'un seul fil peut le verrouiller à la fois et que seul celui qui l'a verrouillé peut le déverrouiller. Analogie : un baton de parole dans certaines classes d'école : seul celui qui a le baton peut parler, pour qu'un autre le prenne, il doit attendre que celui qui parle repose le baton. Remplacer l'algorithme de Peterson par l'utilisation d'un verrou pour le compteur partagé puis généraliser à N processus ce compteur partagé. Bonus : créer une structure de compteur partagé contenant à la fois la valeur du compteur (un entier) et son verrou associé (un mutex) En pratique, en C : pthread_mutex_t m; // déclare un mutex - à mettre en dehors des fonctions pour l'avoir comme variable globale pthread_mutex_init(&m, NULL); // initialise le mutex m, le deuxième argument contient des paramètres, on se contente de NULL pthread_mutex_lock(&m); // verrouille le mutex m pthread_mutex_unlock(&m); // déverrouille le mutex m