• Aucun résultat trouvé

Th´eorie et pratique de la concurrence – Master 1 Informatique TP 4 : File FIFO partag´ee en C

N/A
N/A
Protected

Academic year: 2022

Partager "Th´eorie et pratique de la concurrence – Master 1 Informatique TP 4 : File FIFO partag´ee en C"

Copied!
1
0
0

Texte intégral

(1)

Th´ eorie et pratique de la concurrence – Master 1 Informatique TP 4 : File FIFO partag´ ee en C

Exercices

Exercice1: Producteurs-consommateurs avec FIFO et variables de condition Le but est de reprendre l’exercice 3 du TP 2 sur les producteurs consommateurs. Pour rappel on dispose d’une file FIFO partag´ee entre des producteurs et des consommateurs. Le nombre de consommateur est connu. On souhaite que tous les consommateurs aient lu un ´el´ement de la file avant de le retirer. On veut de plus interdire que deux consommateurs lisent en mˆeme temps la eme donn´ee sur la file (c’est-`a-dire les lectures sont prot´eg´ees par des verrous). On proposera trois impl´ementations diff´erentes.

1. Dans la premi`ere impl´ementation, un consommateur pourra lire des donn´ees quand elles sont disponibles (Indication : il faut ajouter des variables de condition pour la communica- tion entre les producteurs et les consommateurs). Pour cette impl´ementation, deux consom- mateurs ne pourront pas lire en mˆeme temps `a deux endroits de la file (c’est-`a-dire la file est prot´eg´ee par un verrou global). Toutefois, chaque consommateur lib´erera r´eguli`erement le verrou sur la file (typiquement apr`es avoir lu une donn´ee).

2. La deuxi`eme n’autorisera pas un consommateur `a lire une nouvelle donn´ee tant que la derni`ere donn´ee lue n’aura pas ´et´e vue par tous les consommateurs (le dernier consommateur aura donc pour rˆole de r´eveiller les autres consommateurs et de supprimer les ´el´ements de la file).

3. La troisi`eme impl´ementation ´etendra la premi`ere, on voudra de plus que plusieurs consom- mateurs puissent lire en mˆeme temps diff´erents endroits de la file (mais deux consommateurs ne pourront pas lire en mˆeme temps le mˆeme endroit de la file).Indication : il faut associer un verrou diff´erent `a chaque ´el´ement de la file.

Remarques :

— Dans les trois cas, si une nouvelle donn´ee n’est pas disponible pour un consommateur il devra s’endormir et sera r´eveill´e par le producteur.

— Il faut faire attention aux cas limites et en particulier aux pointeurs que vous manipulez.

En particulier faire attention `a la manipulation de pointeurs en concurrence. Par exemple, si un consommateur fait un free sur une cellule point´ee par un autre consommateur.

Références

Documents relatifs

Dans ce Tp on impl´ ementera quelques algorithmes d’exclusion mutuelle sans utiliser les prim- itives de haut niveau comme les m´ ethodes synchronized ou les variables de

Le serveur stocke alors cette chaˆıne de caract` eres dans un objet de type ConcurrentBuffer Un client consommateur attend que le serveur lui envoie des chaˆınes de caract` eres qui

Le premier argument est l’adresse d’un descripteur de thread, le deuxi`eme argument (que nous mettrons toujours ` a NULL dans ces TP) est un attribut de thread de type pthread_attr_t

Dans cet exercice on souhaite mod´eliser ce probl`eme du dˆıner des philosophes par un programme en C dans leque chaque baguette sera repr´esent´ee par un verrou et chaque

L`a aussi il est recommand´ e d’appeler cette fonction au sein d’une section critique prot´eg´ee par le mutex utilis´e par le thread en attente (dans l’exemple pr´ec´edent

La premi`ere n’autorisera pas un consommateur ` a lire une nouvelle donn´ee tant que la derni`ere donn´ee lue n’aura pas ´et´e vue par tous les consommateurs (le dernier

Les paniers et les cabines seront repr´esent´es par deux s´emaphores semCabine et semPanier qui seront des champs de la classe Client (ces s´emaphores seront partag´es par tous

Supposez qu’on dispose d’une seule salle de bain qui peut ˆetre utilis´ee par des hommes ou des femmes mais pas au mˆeme moment.. Programmez en utilisant les s´emaphores une