• Aucun résultat trouvé

Th´eorie et pratique de la concurrence – Master 1 Informatique TP 7 : S´emaphores en Java (suite)

N/A
N/A
Protected

Academic year: 2022

Partager "Th´eorie et pratique de la concurrence – Master 1 Informatique TP 7 : S´emaphores en Java (suite)"

Copied!
1
0
0

Texte intégral

(1)

Th´ eorie et pratique de la concurrence – Master 1 Informatique TP 7 : S´ emaphores en Java (suite)

Exercice 1: La travers´ ee des babouins

Il y a un canyon quelque part dans le parc national Kruger, Afrique du Sud, et une seule corde qui traverse le canyon. Les babouins peuvent traverser le canyon sur la corde, mais si deux babouins allant dans des directions oppos´ ees se rencontrent au milieu, ils vont se battre et tomber.

En outre, la corde est assez forte pour tenir seulement cinq babouins. Programmez une solution ` a ce probl` eme telle que :

— une fois qu’un babouin a commenc´ e ` a traverser, il est garanti d’arriver de l’autre cˆ ot´ e sans croiser un babouin dans l’autre sens.

— il n’y a jamais plus de 5 babouins sur la corde.

— un flux continu de babouins allant dans un sens ne devrait pas empˆ echer des babouins de faire la travers´ ee dans l’autre sens ind´ efiniment (pas de famine).

Exercice 2: Chimie amusante

Dans cet exercice, il existe deux types de threads, Oxyg` ene et Hydrog` ene. Pour assembler ces threads dans des mol´ ecules d’eau (H

2

O), on va cr´ eer une barri` ere qui est attendue par chaque thread tant qu’il n’y a pas suffisamment de threads pour cr´ eer une molecule d’eau (compos´ ee de deux threads Hydrog` ene et un thread Oxyg` ene). Juste avant qu’un thread passe la barri` ere, il va afficher un message. Il faut garantir que les messages des threads qui forment une molecule sont affich´ es avant les messages des threads d’une autre molecule. Plus pr´ ecis´ ement, le programme devra respecter les conditions suivantes :

— si un thread Oxyg` ene arrive ` a la barri` ere quand aucun thread Hydrog` ene n’est pr´ esent, il doit attendre deux threads Hydrog` ene,

— si un thread Hydrog` ene arrive ` a la barri` ere quand aucun autre thread n’est pr´ esent, il doit attendre un thread Oxyg` ene et un autre thread Hydrog` ene.

Les threads doivent passer la barri` ere dans des ensembles complets ; ainsi, en examinant la s´ equence de messages affich´ es et en les divisant en groupe de trois, chaque groupe doit contenir un thread Oxyg` ene et deux threads Hydrog` ene.

On souhaite developper un programme concurrent simulant le comportement d´ ecrit ci-dessus : 1. D´ efinir la m´ ethode waitBarrier() qui bloque jusqu’au moment o` u trois threads rentrent

dans cette m´ ethode (on ne se pr´ eoccupe pas de la nature des threads).

2. ´ Ecrire un programme concurrent qui mod´ elise le comportement des atomes Oxyg` ene et Hydrog` ene d´ ecrit ci-dessus.

3. Modifier votre programme pour traiter le cas de l’eau oxyg´ en´ ee H

2

O

2

(deux atomes Oxyg` ene et deux atomes Hydrog` ene).

4. Modifier votre programme pour traiter le cas de l’eau et du m´ ethane C H

4

(on ajoute un troisi` eme type d’atome, l’atome Carbone). La barri` ere retiendra les threads jusqu’` a former une mol´ ecule d’eau ou de m´ ethane :

— si un thread Oxyg` ene arrive ` a la barri` ere quand aucun thread Hydrog` ene n’est pr´ esent, il doit attendre deux threads Hydrog` ene,

— si un thread Carbone arrive ` a la barri` ere quand aucun autre thread n’est pr´ esent, il doit attendre quatres threads Hydrog` ene,

— si un thread Hydrog` ene arrive ` a la barri` ere quand aucun autre thread n’est pr´ esent, il doit attendre un thread Oxyg` ene et un autre thread Hydrog` ene, ou un thread Carbone et un trois autres thread Hydrog` ene (selon ceux qui arrivent en premier).

Les atomes de la mol´ ecule form´ ee quittent la barri` ere laissant ´ eventuellement un thread

Carbone ou Oxyg` ene, qui continue donc ` a attendre.

Références

Documents relatifs

La préemption est la capacité d'un système d'exploitation multitâche à suspendre un processus au prot d'un autre.. Le multitâche préemptif est assuré par

– au standard POSIX pthread largement mis en oeuvre sur les systèmes UNIX/Linux – à l’API WIN32 threads fournie par Microsoft ©Windows pour les processus légers Les pages man

Contrairement à un processus lourd qui, lorsqu'il est créé, implique la réservation des ressources telles qu'un espace mémoire, une table de fichiers ouverts et une pile interne

Un exemple de thread d’interface : L’explorateur de Windows, en fait si vous aller dans le Gestionnaires de Tˆ ache (NT ou 2000) ou que vous appuyez sur Ctrl+Alt+Del (sous Win9x)

– Exécuté dans la worker thread après onPreExecute(), doit tester isCancelled(), peut appeler publishProgress() pour des résultats intermédiaire, renvoie un

In the paper, we will also propose a particular interleaving strategy for thread algebra called the cyclic strategic interleaving with persistence operator.. This strategy invokes

[r]

 Une méthode synchronisée peut appeler la méthode notifyAll d’un objet pour prévenir tous les threads en attente sur cet objet et leur donner la possibilité de