Programmation Parallele/TD2

  1. Recopiez chez vous le répertoire ~griffaul/PP/TD2 et les fichiers pour lesquels vous avez l'autorisation.
  2. le problème de l'exclusion mutuelle avec l'instruction TestAndSet.
    1. Compilez les fichiers SectionCritique.java, Verrou.java, expliquez les méthodes de Verrou.java.
    2. Complétez le fichier TestAndSetV1.java, qui utilise un verrou pour résoudre le problème de l'exclusion mutuelle afin de rrépondre aux points suivants :
      1. Donnez une solution pour deux processus utilisant TestAndSetVerrou().
      2. Donnez une solution pour cinq processus utilisant TestAndSetVerrou().
      3. Donnez une solution fausse pour cinq processus utilisant testAndSetVerrouInterruptible().
      4. Corrigez la solution fausse pour cinq processus qui utilise testAndSetVerrouInterruptible(), à l'aide des instructions synchronized (objet) {inst.}.
      5. Donnez une solution pour cinq processus utilisant la notion de moniteur implémenté dans la méthode testAndSetVerrouSyncInterruptible().
      6. Simplifiez la solution pour cinq processus avec la méthode testAndSetVerrouSync().
  3. Le problème des Producteurs/Consommateurs avec un buffer borné.
    1. Complétez la méthode retirer() du fichier TamponV1.java, qui modélise un buffer de taille quelconque, dont les accès sont gérés par un moniteur, qui garantit l'exécution des méthodes synchronized en section critique.
    2. Complétez les méthodes run() du fichier ProdConsV1.java afin que le producteur transmette via le media des entiers au consommateur.
    3. Ajoutez un parametre afin que le programme principal arrete le producteur et le comsommateur au nout d'un certain temps.
    4. Ajoutez deux parametres afin qu'un nombre quelconque de producteurs et de consommateurs utilisent le même tampon.
    5. Ajoutez une méthode vider() à l'objet tampon qui affiche le contenu restant du buffer en le vidant.