Problemes classiques de synchronisation

PROBLÈMES CLASSIQUES DE SYNCHRONISATION Anissa Omrane CLe d? ner des philosophes ? Cinq philosophes chinois sont autour d ? une table ronde chaque philosophe a sa propre assiette et une baguette est disponible entre chaque pair d ? assiettes Les philosophes réitèrent les phases de penser et de manger ? Pour manger un philosophe a besoin de deux baguettes et il est autorisé à prendre une seule baguette à la fois ? Il est clair que c ? est impossible que les philosophes puissent manger en même temps CLe d? ner des philosophes Le problème consiste à décrire l ? algorithme de chaque philosophe pour qu ? ils puissent alterner à l ? in ?ni des phases de manger et de penser sans qu ? il y ait inter-blocages ou famines CLe d? ner des philosophes ? Les philosophes mangent ou pensent ? Mangent avec baguettes ? Prennent une seule baguette à la fois ? Comment prévenir les interbloquages CAlgorithme trivial Philosophe i while Vrai pense prendre baguette i prendre baguette i manger poser baguette i poser baguette i CCritiques de la solution triviale ? Un problème d'inter-blocage si les N philosophes décident de manger en même temps En appliquant la procédure prendre baguette i Tous les philosophes détiennent la baguette de droite et attendent que celle de gauche se libère ? Solution possible En introduisant une notion de délais aléatoires c ? est-à-dire si un philosophe obtient la première et n ? obtient pas la seconde baguette il dépose sa baguette et recommence après un délai aléatoire Mais cette amélioration peut conduire à une situation de famine CSolution avec les sémaphores ? Un philosophe qui veut prendre les baguettes pour 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 baguettes et donc se met en attente ? Si les deux philosophes à côté ne mangent pas alors il peut prendre les deux baguettes et déclarer qu'il mange ? Quand le philosophe a ?ni de manger il déclare 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 CSolution avec les sémaphores ? Un sémaphore est attribué à chaque philosophe ? Etat PENSE MANGE AFAIM sem Semprive N initialisés à zéro Etat Vectetat N PENSE ? PENSE sem mutex Philosophe i while Vrai pense prendrebaguettes i manger poser baguettes i CSolution avec les sémaphores prendrebaguette int i P mutex Vectetat i AFAIM testmange i V mutex P Sem prive i CSolution avec les sémaphores poserbaguette int i P mutex Vectetat i PENSE testmange i N testmange i- N N V mutex CSolution avec les sémaphores testmange int i if Vectetat i AFAIM Vectetat i N MANGE Vectetat i- N N MANGE Vectetat i MANGE V Sem prive i CSolution avec un moniteur monitor dinerPhilosophe début moniteur enum PENSE AFAIM MANGE Etat condition Fileprivé initialization code for int

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