Contrôle de l'exclusion mutuelle

Ce TP utilise le langage Java.

Plusieurs processus utilisent une même ressource (qui sera ici plutôt symbolique) ; deux processus ne doivent pas simultanément utiliser la ressource (il doit y avoir exclusion mutuelle sur l'utilisation de la ressource). Dans la version actuelle du programme fourni, l'exclusion mutuelle n'est pas respectée. Le travail consiste à réaliser l'exclusion mutuelle gryâce à l'algorithme de Naimi et Tréhel.

Chaque utilisateur de la ressource a un "gestionnaire" chargé d'obtenir la ressource quand l'utilisateur en a besoin puis de restituer la ressource quand l'utilisateur la libère.
Concrètement, chaque utilisateur est un processus démarré par une méthode main ; chaque utilisateur crée son gestionnaire qui devra être une instance de la classe Thread (ou d'une sous-classe de celle-ci). L'utilisateur et son gestionnaire font donc partie du même processus, mais ont chacun une "file d'exécution". Le thread du gestionnaire est démarré dans le constructeur de celui-ci.

La communication entre les différents gestionnaires se fait par datagrammes.

Le travail effectué par chaque utilisateur est une succession répétitive de :

Un programme "serveur" sert uniquement à :


Les fichiers contenant les classes servant au TP (en principe, il ne vous est pas nécessaire de prendre connaissance du détail de ces classes, seul le fichier GestionnaireNaimi.java devra être modifié) sont :

Cinq fichiers de "scénarios", donnant le travail de chaque processus utilisateur de la ressource, sont fournis :scenarios/2.dat, scenarios/3.dat, scenarios/4.dat, scenarios/5.dat, scenarios/6.dat. Le chiffre indique le nombre d'utilisateurs correspondant.
 

Vous allez :

Les mêmes opérations peuvent être effectuées directement dans l'environnement Eclipse.
Si vous exécutez tous les programmes directement sur votre machine, vous pouvez la nommer localhost.

Vous devez constater avec l'expérience ci-dessus l'absence d'exclusion mutuelle et arranger le problème en complétant le fichier GestionnaireNaimi.java pour y programmer l'algorithme de Naimi et Tréhel. Vous n'avez pas à modifier d'autre fichier que celui-ci.

S'il vous reste du temps à la fin du TP, vous pouvez faire en sorte que l'arborescence de l'algorithme soit affichée dans l'affichage graphique du serveur. Il vous suffi pour cela d'utiliser les méthodes prévues dans GestionnaireNaimi.java.

S'il vous reste encore du temps, vous pouvez programmer un autre algorithme de contrôle de l'exclusion mutuelle.

Corrigé

Voici le corrigé complet de GestionnaireNaimi.java
Irene Charon

Last modified: Thu Mar 8 11:13:39 MET 2001