Vous êtes sur la page 1sur 7

OPERATING SYSTEM

Projet : Mise en œuvre d’une solution au problème de l’exclusion mutuelle basee


sur les semaphores
CAS du problème des LECTEURS / REDACTEURS
LE CONTEXTE

 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

 En utilisant les sémaphores, développer un simulateur qui permet d’illustrer la dynamique


présentée dans les slides précédents.

 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

 Modélisation : La réalisation de ce travail nécessite la modélisation des processus et des sémaphores


A. Processus
o Id – Identifiant unique du processus (entier)
o Duration - Durée d’exécution (entier en millisecondes)
o RemainingTime - Durée d’exécution restante (entier en millisecondes)
o ProgramName - Nom programme en cours d’exécution (chaine)
o Priority - Priorité du processus (entier 1 à 9)
o UserId – Identifiant de l’utilisateur propriétaire du processus (entier)
o Type – Rédacteur | Lecteur
o Implémenter les codes des processus lecteurs et rédacteurs de sorte à ce que chacun accèdent à la base en
faisant les vérifications préalables.
B. Sémaphore
o K : compteur des ressources disponibles de type entier
o wq_processus : file d’attente des processus.
o Implémenter les opérations P et V selon leur principe de fonctionnement comme vu en cours.
LIVRAISON

 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.

Vous aimerez peut-être aussi