Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.90 KB | None | 0 0
  1. /*
  2. 4. La traverse de babouins.
  3. Dans le parc national Kruger en Afrique, il existe un profond canyon au-dessus duquel
  4. on a tendu une corde de fa¸con `a ce que les babouins puissent le traverser `a bout de
  5. bras. Plusieurs babouins peuvent traverser en mˆeme temps, pourvu qu’ils aillent tous
  6. dans la mˆeme direction. Cependant, la corde n’est pas assez forte pour supporter le
  7. poids de plus de cinq babouins.
  8. Si des babouins, se dirigeant dans des directions oppos´ees, se trouvent sur la corde
  9. au mˆeme moment, cela d´eclenche une bagarre qui entraˆınent les babouins dans une
  10. chute mortelle au fond du canyon. En effet, ils n’ont pas la possibilit´e de passer les uns
  11. par-dessus les autres alors qu’ils sont suspendus au-dessus du canyon. Si un babouin
  12. souhaite traverser le canyon, il doit donc d’abord v´erifier qu’aucun autre babouin ne
  13. traverse en sens inverse.
  14. Au moyen de s´emaphores, ´ecrivez un programme pour synchroniser le passage des
  15. babouins. Votre solution doit assurer qu’il n’y aura pas de famine, i.e. que l’arriv´ee
  16. continue de babouins provenant d’une mˆeme direction ne bloquera pas le passage en
  17. permanence aux babouins essayant de passer dans l’autre direction.
  18. */
  19.  
  20.  
  21. direction = left ou right
  22. int nbBabouin = 0
  23. mutex request
  24. mutex pont
  25. mutex queue
  26.  
  27. process BabouinVersGauche(0 to n):
  28.     attente = true
  29.     while (attente):
  30.         P(request)
  31.         if (nbBabouin == 0)
  32.             P(pont)
  33.             attente = false
  34.             nbBabouin++
  35.         if (nbBabouin < 5 && direction == gauche)
  36.             attente = false
  37.             nbBabouin++
  38.         V(request)
  39.         P(queue)   --Unsure about this (Evite l'attente active mais brise peut-etre l'algo)
  40.  
  41.     Traverser()
  42.  
  43.     P(request)
  44.     nbBabouin--
  45.     if (nbBabouin == 0)
  46.         V(pont)
  47.     V(request)
  48.     V(queue) --Unsure about this
  49.  
  50. process BabouinVersDroite(0 to n): (meme chose)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement