Julien Sopena

TD 01 – Producteurs/Consommateurs réparti

On s'intéresse dans l'ensemble de ce TD à des processus communiquant par l'intermédiaire d'un schéma producteur/consommateur. Dans ce schéma, les communications entre processus se font par l'intermédiaire d'un tampon où sont stockés les messages émis par les producteurs. Ces messages peuvent ensuite être retirés par les consommateurs.

On se place ici dans le cas où les messages sont de taille fixe, et l'on considérera que le tampon est une table composée de N entrées, chaque entrée ayant la taille d'un message. Un processus producteur dépose un message dans une entrée quelconque à l'aide de la primitive déposer(nom message, contenu). Le message est prélevé par un processus consommateur au moyen de la primitive retirer(nom message, contenu). On n'étudiera pas ici la gestion des cases du tampon.

Exercice 1: Mise en œuvre centralisée

Question 1.1 )

Rappeler les différents états possibles pour un processus. Indiquer les actions provoquant les changements d'états :
  • dans un système avec multiprogrammation en mode batch
  • dans un système avec multiprogrammation en temps partagé

Question 1.2 )

Expliquer les problèmes de conflits d'accès simultanés à la table qui peuvent survenir si aucune synchronisation entre les processus qui y accèdent n'existe.

Question 1.3 )

On suppose que les primitives déposer et retirer sont exécutées en exclusion mutuelle. Donner l'algorithme de ces deux primitives.

Exercice 2: Mise en œuvre répartie

Les processus producteur et consommateur sont désormais situés sur des sites distincts connectés par des lignes bidirectionnelles. On suppose que la communication s'effectue sans perte de message.

Question 2.1 )

Quels sont les problèmes posés par la répartition des ressources ?

Question 2.2 )

Dans le cas d'un processus producteur et un processus consommateur, indiquer les avantages et les inconvénients d'une implémentation sur deux sites puis sur trois sites.

Question 2.3 )

On se place dans le cas d'une implémentation sur deux sites. Pourquoi ne programme-t-on pas déposer et retirer comme dans la question 3 ?

Question 2.4 )

Donner les algorithmes de déposer et retirer. La solution proposée est-elle simplement extensible à plusieurs producteurs ?

Question 2.5 )

Quels sont les nouveaux problèmes qui se posent si on lève l'hypothèse de fiabilité des communications ? Comment peut-on gérer la panne d'un site ?

Question 2.6 )

Donner les algorithmes de déposer et retirer dans le cas d'une implémentation sur trois sites.

Question 2.7 )

Proposer une solution résistant à la panne du site contenant le tampon.

Designed by OWSD.org. Valid CSS & XHTML
Ce site et l'ensemble de son contenu est mis à disposition sous un contrat Creative Commons.
Creative Commons License