TP8 : Utilisation des IPC Unix
1 Partage de zone m´emoire
Commencez par lire cette documentation sur les IPC Unix1et faites tourner l’exemple propos´e. Nous allons
utiliser la m´emoire partag´ee IPC pour inplanter un petit exemple de producteur/consommateur. La zone partag´ee
pourrait ˆetre du type suivant :
struct {
int nb_chars_prod; /* Nb de caract`eres produits */
int nb_chars_conso; /* Nb de caract`eres consomm´es */
char data[MAX]; /* tampon */
int fin; /* signal de fin d’entr´ee */
} ...
Le nombre de caract`eres disponibles dans le tampon est ´egal `a (nb chars prod-nb chars conso). Le consom-
mateur peut consommer si, et seulement si, (nb chars prod > nb chars conso). Le producteur peut produire
ssi ((nb chars prod-nb chars conso) < MAX). Je vous propose de suivre les ´etapes ci-dessous :
1. Le producteur et le consommateur sont des processus diff´erents et des programmes diff´erents. Le produc-
teur lit des caract`eres au clavier et les place dans le tampon. Le consommateur les r´ecup`ere et les affiche.
Ces deux acteurs appliquent la m´ethode de l’attente active pour se synchroniser.
2. Faites en sorte que la zone partag´ee soit cr´e´ee et initialis´ee par le producteur. Si le consommateur est plus
rapide, il doit attendre que la zone partag´ee soit disponible.
3. Prenez soin de ralentir le producteur et le consommateur pour tester tous les cas de figure.
4. La fin de la lecture au clavier est indiqu´ee au consommateur par la mise `a un du drapeau fin. Ce dernier
a la charge de supprimer la ressource partag´ee avant de se terminer.
2 Les s´emaphores `a messages
Refaites le mˆeme exercice mais en rempla¸cant la m´emoire partag´ee par un envoi de message entre le producteur
et le consommateur. Faites en sorte de ne pas envoyer un caract`ere dans chaque message, mais plutˆot une ligne.
3 Montage de fichiers en m´emoire
La fonction mmap permet de projeter un fichier en m´emoire (plus de pr´ecisions avec man mmap). Voila un petit
exemple :
1ref:dil-doc-IPC
1