Académique Documents
Professionnel Documents
Culture Documents
Le problème des lecteurs / rédacteurs permet la modélisation des accès aux bases de
données. Imaginons, par exemple, un système de réservation de billets d’avion où de
nombreux processus entrent en concurrence pour y effectuer des lectures et des
écritures. Il serait acceptable que plusieurs processus puissent lire la base de données en
même temps.
Mais si un processus est entrain d’actualiser la base (écriture), aucun autre processus ne
doit pouvoir y accéder, pas même en lecture. Comment programmer ces lecteurs et ces
rédacteurs ?
LE CONTEXTE
Supposons que pendant qu’un lecteur utilise la base, un autre lecteur se connecte. Etant
donné que deux lecteurs peuvent consulter la base en même temps, le deuxième lecteur
est admis. Un troisième lecteur et d’autres le seront également s’ils se présentent.
C’est alors qu’arrive un rédacteur. Il ne peut pas être admis à entrer dans la base, car les
rédacteurs doivent disposer d’une exclusivité d’accès. Le rédacteur est donc suspendu.
Ensuite d’autres lecteurs arrivent.
Tant qu’un lecteur au moins est actif, les lecteurs suivants le sont aussi. Une telle stratégie
donne la priorité aux lecteurs et fait que tant qu’il y a une succession régulière de lecteurs,
ceux-ci entrent dès qu’ils arrivent. Le rédacteur sera suspendu jusqu’à ce qu’aucun lecteur
ne soit présent. Si un nouveau lecteur arrive toutes le 2 secondes et que chacun mette 5
secondes à effectuer son travail, le rédacteur ne pourra jamais entrer.
LE CONTEXTE
Pour éviter cela, le programme peut être développé de manière à ce que, lorsqu’un
lecteur se présente alors qu’un rédacteur est en attente, le lecteur est maintenu derrière
le rédacteur au lieu d’être admis immédiatement dans la base.
De cette façon le rédacteur doit attendre que les lecteurs actifs aient terminé, mais pas
ceux qui viennent après lui.
TRAVAIL A FAIRE
Exigences fonctionnelles :
Donner la possibilité à l’utilisateur, de définir dans le simulateur l’ordre d’arrivée des processus
(lecteurs, rédacteurs) et le temps mis dans la base de données.
Proposer une interface présentant les traces d’exécution (type de processus, date de passage dans
la base, liste des processus en attente, durée de passage, durée d’attente, etc …).
TRAVAIL A FAIRE
Développement :
Le choix du langage de programmation et le type d’application sont laissés à votre appréciation.
Livrables :
Une documentation sommaire justfiant les choix des technologies utilisées, présentant les
fonctionnalités du simulateur et la conception détaillée.
Les codes sources du simulateur
Une démonstration vidéo du simulateur
Durée du projet :
3 semaines soit la date limite de livraison : Dimanche 07 Avril 2022 à 23:59 au plus tard.