Licence 2 - I4b
Semaine du 19/04 au 23/04/2009
TD 7 • Synchronisation et verrous mortels
Exercice 1. Les philosophes
Cinq philosophes sont assis en rond autour d’une table ronde. Un philosophe passe sa vie alternativement
`a penser et `a manger. La table comporte 5 assiettes de spaghetti et 5 fourchettes. Pour manger un philosophe utilise deux fourchettes. Une fourchette est plac´ee entre chaque philosophe. Pour manger, un philosophe uti- lise uniquement la fourchette plac´ee `a sa droite et celle plac´ee `a sa gauche. Un philosophe ne prend pas une fourchette qui est d´ej`a d´etenue par un autre philosophe. Une fois qu’il a mang´e, un philosophe repose les deux fourchettes qu’il a utilis´e.
1. Identifier les ´el´ements qui constituent les ressources et les threads 2. Expliquer le(s) probl`eme(s) de concurrence
3. Proposer un programme pour simuler le fonctionnement des philosophes 4. La situation peut-elle faire apparaˆıtre un probl`eme de verrou mortel ?
5. Comment r´esoudre ce probl`eme : proposer au moins deux strat´egies et expliquer en quoi elles sont diff´erentes (ne se rapportent pas au mˆeme principe).
Exercice 2. Verrous mortels
1. ´Ecrire un programme qui g´en`ere, dans certains cas, un verrou mortel. Il faut utiliser au moins 2 threads, 2 ressources .
2. Proposez deux strat´egies pour r´esoudre le probl`eme des verrous mortels.
Eric Leclercq —http://ludique.u- bourgogne.fr/˜leclercq— D´epartement IEM —http://ufrsciencestech.u- bourgogne.fr 1