Le problème du « dîner des philosophes » est un cas d'école classique sur le partage de ressources en informatique système. Il concerne l'ordonnancement des processus et l'allocation des ressources à ces derniers et a été énoncé par Edsger Dijkstra. vignette|Illustration du problème La situation est la suivante: Cinq philosophes (initialement, mais il peut y en avoir beaucoup plus) se trouvent autour d'une table; Chacun des philosophes a devant lui un plat de spaghettis; À gauche de chaque plat de spaghettis se trouve une fourchette. Un philosophe n'a que trois états possibles: Penser pendant un temps indéterminé; Être affamé pendant un temps déterminé et fini (sinon il y a famine); Manger pendant un temps déterminé et fini. Des contraintes extérieures s'imposent à cette situation: Pour manger, un philosophe a besoin de deux fourchettes: celle qui se trouve à gauche de sa propre assiette, et celle qui se trouve à droite (c'est-à-dire les deux fourchettes qui entourent sa propre assiette); Quand un philosophe a faim, il va se mettre dans l'état «affamé» et attendre que les fourchettes soient libres; Si un philosophe n'arrive pas à s'emparer d'une fourchette, il reste affamé 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. Cet ordre est imposé par la solution que l'on considère comme celle de Dijkstra avec sémaphores ou Courtois avec des compteurs. Les philosophes, s'ils agissent tous de façon naïve et identique, risquent fort de se retrouver en situation d'interblocage. En effet, il suffit que chacun saisisse sa fourchette de gauche et, qu'ensuite, chacun attende que sa fourchette de droite se libère pour qu'aucun d'entre eux ne puisse manger, et ce pour l'éternité. On considère qu'un philosophe qui meurt (crash du processus) reste dans une phase «penser» infiniment.
Alireza Karimi, Achille Nicoletti
Alireza Karimi, Achille Nicoletti