Famine (informatique)

Un article de Wikipédia, l'encyclopédie libre.

Pour les articles homonymes, voir Famine.
Problèmes classiques des
méthodes de synchronisation

Couplage fort - Famine

Interblocage - Inversion de priorité

La famine est un problème que peut avoir un algorithme d'exclusion mutuelle. Il se produit lorsqu'un algorithme n'est pas équitable, c'est-à-dire qu'il ne garantit pas à tous les threads souhaitant accéder à une section critique une probabilité non nulle d'y parvenir en un temps fini.

Il est difficile de concevoir des systèmes à l'abri de famines. Pour le cas de l'exclusion mutuelle par exemple, il existe deux algorithmes garantissant qu'il ne se produira pas de famine, l'algorithme de Dekker et l'algorithme de Peterson, mais dans les deux cas, cette garantie est obtenue au prix d'une coûteuse attente active.

[modifier] Causes possibles de famine

Une des causes possibles de famine provient d'algorithmes qui ne garantissent pas que les processus qui souhaitent entrer dans une section critique y entrent dans le même ordre que les demandes (c'est-à-dire un comportement FIFO). Un exemple typique de mécanisme de synchronisation qui ne garantit pas cet ordre est le synchronized du langage java.

[modifier] Voir aussi

  • Luigi Zaffalon et Pierre Breguet, Programmation concurrente et temps réel avec ADA 95, Presses polytechniques et universitaires romandes, Lausanne, 1999
  • Le problème du dîner des philosophes