12X009 – TP7 (Solution)

$ 20.99
Category:

Description

1 Objectifs
Durant ce TP, vous allez ´ecrire deux petits programmes: cuisinier.c et serveur.c. Ce TP est une impl´ementation de m´emoire partag´ee et de s´emaphore.
2 Description
Le cuisinier a besoin d’un temps al´eatoire pour cuire une pizza. Quand il n’y a pas de pizza, le serveur attendra. Lorsque les pizzas sont disponibles, le serveur commence `a servir. Lorsqu’il y a trois pizzas sur l’´etag`ere, le cuisinier se repose. Le cuisinier et le serveur doivent savoir combien de pizza sont disponibles sur les ´etag`eres. Le cuisinier s’arrˆetera apr`es dix pizzas. Le serveur s’arrˆetera quand il aura servi toutes les pizzas.
2.1 M´emoire partag´ee
Dans notre cas, les ´etag`eres sont la m´emoire partag´ee entre les processus. Le segment de m´emoire partag´ee sera cr´e´e par le cuisinier. Il d´efinira la taille du segment et le mappera sur cette adresse de processus. Du cˆot´e du serveur, il doit ouvrir la m´emoire partag´ee et mapper sur son adresse de processus. Lorsque le travail est termin´e, le cuisinier et le serveur dissocient la m´emoire partag´ee. Avant que le serveur se ferme, il supprime le segment de m´emoire partag´ee.
La m´emoire partag´ee ne fournit pas de m´ecanisme de synchronisation, c’est-`a-dire qu’il n’existe pas de m´ecanisme automatique pour empˆecher le second processus de commencer `a lire avant que le premier processus ne termine l’´ecriture sur la m´emoire partag´ee. Nous allons utiliser le s´emaphore pour synchroniser l’acc`es `a la m´emoire partag´ee.
2.2 S´emaphore
Le s´emaphore est une variable utilis´ee pour r´esoudre des probl`emes critiques et pour r´ealiser la synchronisation de processus dans un environnement partag´e. Les s´emaphores de comptage sont ´equip´es de deux op´erations, not´ees historiquement P et V. L’op´eration V incr´emente le s´emaphore S et l’op´eration P le d´ecr´emente.
La valeur du s´emaphore S correspond au nombre d’unit´es de la ressource actuellement disponibles. L’op´eration P attend ou dort jusqu’`a ce qu’une ressource prot´eg´ee par le s´emaphore devienne disponible, heure `a laquelle la ressource est imm´ediatement r´eclam´ee. L’op´eration V rend une ressource disponible `a nouveau une fois que le processus a fini de l’utiliser. Une propri´et´e importante du s´emaphore S est que sa valeur ne peut ˆetre chang´ee qu’en utilisant les op´erations V et P.
Un moyen simple de comprendre les op´erations d’attente (P) et de signal (V) est le suivant: wait: Si la valeur de la variable de s´emaphore n’est pas n´egative, d´ecr´ementez-la de 1. Si la variable de s´emaphore est maintenant n´egative, le processus en cours d’attente est bloqu´e (c’est-`a-dire ajout´e `a la file d’attente du s´emaphore) jusqu’`a ce que la valeur soit sup´erieure
1
ou ´egale `a 1. Sinon, le processus continue son ex´ecution apr`es avoir utilis´e une unit´e de la ressource. signal: incr´emente la valeur de la variable s´emaphore de 1. Apr`es l’incr´ement, si la valeur de pr´e-incr´ementation ´etait n´egative (ce qui signifie qu’il y a des processus en attente d’une ressource), un processus bloqu´e est transf´er´e de la file d’attente du s´emaphore vers la file d’attente prˆete.
2.3 Consignes et conseils pratiques
Vous pouvez cr´eer trois s´emaphores pour g´erer les deux processus. Un pour informer le serveur de commencer `a servir. Un pour informer le cuisinier de se reposer. Un pour l’exclusion mutuelle d’´etag`ere. Tous ces trois s´emaphores seront cr´e´es dans cook.c.
Avant de quitter, vous devez fermer le s´emaphore et le dissocier. Lorsque tous les processus ont fini d’utiliser le s´emaphore, vous pouvez le supprimer du syst`eme `a l’aide de sem unlink.
2

Reviews

There are no reviews yet.

Be the first to review “12X009 – TP7 (Solution)”

Your email address will not be published. Required fields are marked *