Td interblocage Problème des philosophes avec les sémaphores et moniteurs CD? ner des Philosophes Cinq philosophes se trouvent autour d'une table Chacun des philosophes a devant lui un plat de spaghetti A gauche de chaque assiette se trouve une fourchette

Problème des philosophes avec les sémaphores et moniteurs CD? ner des Philosophes Cinq philosophes se trouvent autour d'une table Chacun des philosophes a devant lui un plat de spaghetti A gauche de chaque assiette se trouve une fourchette Un philosophe n'a que trois états possibles penser pendant un temps indéterminé A faim pendant un temps déterminé et ?ni sinon il y a famine manger pendant un temps déterminé et ?ni Des contraintes extérieures s'imposent à cette situation ? Quand un philosophe a faim il va se mettre dans l'état a faim ? et attendre que les fourchettes soient libres ? Pour manger un philosophe a besoin de deux fourchettes celle qui se trouve à sa droite et celle qui se trouve à sa gauche ? Si un philosophe n'arrive pas à s'emparer d'une fourchette il reste a ?amé pendant un temps déterminé en attendant de renouveler sa tentative Le problème consiste à trouver un ordonnancement des philosophes tel qu'ils puissent tous manger chacun à leur tour sans provoquer d ? interblocage C Il s'agit donc d'écrire les procédures prendrefourchette et poserfourchette C Première solution C Première solution C Première solution On prend un sémaphore par fourchette Chaque sémaphore est initialisé à sem fourch N Cette implémentation pose un problème d'interblocage dans le cas o? les N philosophes décident de manger donc d'appliquer la procédure prendre fourchette En e ?et tous les philosophes détiennent la fourchette qui est à leur droite et attendent que celle qui est a leur gauche se libère C Deuxième solution On se centre ici sur les philosophes Un sémaphore est attribué à chaque philosophe Etat PENSE MANGE AFAIM Un philosophe qui veut prendre les fourchettes donc manger déclare qu'il a faim Si l'un de ses deux voisins est en train de manger il ne peut donc pas prendre les deux fourchettes pour l'instant et donc se met en attente Si les deus philosophes a coté ne mangent pas alors il peut prendre les deux fourchettes et déclarer qu'il mange Quand le philosophe a ?ni de manger il déclare donc qu ? il pense et regarde si ses deux voisins qui forcément ne pouvaient pas manger en ont dès lors l'opportunité Si c'est le cas il les réveille sem philoprive N Etat EtatPhilo N PENSE ? PENSE sem mutex mutex c pour que l'écriture dans le tableau EtatPhilo se fasse en exclusion mutuelle C C En utilisant les moniteurs Déclarons les variables suivantes ? Etat Tableau de Faim Pense Mange ? Self Tableau de Condition La solution à proposer doit garantir les règles suivantes ? Le philosophe i ne peut ?xer la variable etat i à mange que si ses deux voisins i- mod N et i mod N ne sont pas en train de manger ? Le philosophe i peut se retarder quand il a faim mais il est incapable d ? obtenir les baguettes dont il a besoin En utilisant une instance dp du moniteur DinerPhilosophe le code d ? un processus philosophe devient Processus

  • 23
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Aucune attribution requise
Partager