efrei/programmation-multitaches-temps-reel/philosophes/README.md

38 lines
1.8 KiB
Markdown
Raw Normal View History

2022-09-06 16:27:23 +02:00
# Synchonisation - Dîner des philosophes
## Principe
Ce paradigme modélise lordonnancement des processus et lallocation des ressources critiques à ces derniers.
La résolution de ce problème met en œuvre 2 techniques dutilisations différentes des sémaphores : lexclusion mutuelle classique mais aussi la possibilité de bloquer un processus grâce à un sémaphore privé.
- N philosophes assis autour dune table.
- Une fourchette entre chaque paire de voisins.
- Pour manger, un philosophe a besoin de deux fourchettes.
- Comment assurer que les philosophes vont pouvoir manger ?
Chaque philosophe passe par les états suivants :
- Penser (sans interaction avec les autres),
- Essayer de manger, et pour cela attraper une des fourchettes à sa disposition, puis lautre et ce dans lordre souhaité.
- Déposer les fourchettes.
## Ce qui peut arriver
Interblocage : chaque philosophe tient sa fourchette de gauche et attend la deuxième.
- Idée : obliger les philosophes à reposer la fourchette au bout dun certain temps si la deuxième nest pas libre.
- mais... on peut avoir un cycle infini sans que personne ne mange :
* chaque philosophe prend la fourchette de gauche
* puis chaque philosophe la repose
* puis chaque philosophe prend la fourchette de droite
* ...
## Solutions
- Un serveur : chaque philosophe lui demande la permission avant de prendre une fourchette.
- Hiérarchie des ressources : les fourchettes sont numérotées et chaque philosophe prend dabord la fourchette avec le plus grand numéro.
- "Right left dining philosophers" : les philosophes sont numérotés et prennent en premier la fourchette de gauche ou de droite suivant leur parité.
- Ne donner à un philosophe ses baguettes que si elles sont TOUTES DEUX disponibles.