Les conditions d'accès concurrents sont :
A un instant donné, n processus lecteurs ( n ³1) peuvent accéder à l'information à condition qu'aucun processus rédacteur ne la modifie (
accès partagé).
A un instant donné, l'
accès exclusif de l'information à un processus rédacteur est garanti.
La gestion des accès en écriture ou en lecture est une opération complexe dans un environnement distribué. Le modèle des lecteurs et des rédacteurs permet de modéliser les différents cas et de mettre en évidence les sections critiques en écriture.
1°) Ecrire les conditions d'accès concurrents avec des sémaphores binaires.
2°) On considère quatre stratégies de gestion des priorités des processus lecteurs et rédacteurs. Quels en sont les inconvénients et les avantages ?
a) Un processus rédacteur n'est jamais mis en attente sauf si un processus lecteur est actif.
b) La requête d'un processus rédacteur est satisfaite dès que les processus lecteurs actifs au moment de la requête sont terminés. Tous les nouveaux processus lecteurs sont alors mis en attente.
c) Aucune catégorie de processus n'est prioritaire. Quand un processus lecteur est actif, toute requête d'un nouveau processus lecteur est satisfaite jusqu'à l'émission d'une requête d'un processus rédacteur. A partir de ce moment, tous les processus arrivants attendent sans distinction de catégorie. Quand le processus rédacteur est terminé, il réveille le premier processus (inconnu) en attente.
d) Les processus lecteurs sont prioritaires sur les processus rédacteurs si et seulement un processus lecteur est actif. Dans le cas contraire, les processus lecteurs et rédacteurs ont la même priorité.
3°) On cherche un algorithme au cas 2a. Soient les sémaphores
mutex et
wrt et la variable entière
readcount définis de la façon suivante :
readcount est le compteur associé au nombre de processus lecteurs simultanés de l'objet partagé,
mutex est un sémaphore d'exclusion mutuelle associé à la variable d'état readcount,
wrt est le sémaphore d'exclusion mutuelle associé soit à la phase d'écriture des processus rédacteurs soit à la phase de lecture des processus lecteurs.
a) Quelles sont les valeurs initiales de
readcount,
mutex, et
wrt.
b) A partir des variables que l'on vient de définir, proposer un algorithme suivi par un processus lecteur.
Indication :
wrt est utilisé par le premier et le dernier des processus lecteurs dans la phase d'écriture.
c) Même question pour un processus rédacteur.
1.3.3Méthodes de verrouillage d'accès
Une solution au problème des accès concurrents est la pose d'un
verrou d'accès lors d'une transaction suivant l'algorithme :
structure verrou lock
lock = faux
/* requête de transaction */
si lock == faux alors
lock = vrai
exécution de la transaction
lock =faux
réveil du processus en attente du verrou
sinon
mise en attente de la requête
is
Il est possible de définir un verrou sur un fichier, un enregistrement logique ou un champ d'un enregistrement. C'est la
granularité du verrou.
Un verrou est
consultatif (
advisory locking) s'il n'a pas d'influence sur les primitives d'entrée/sortie. Un verrou consultatif n'empêche pas un processus ayant les droits d'accès convenables d'écrire sur un fichier verrouillé par un autre processus.
Un verrou est
impératif (
mandatory locking) s'il peut modifier le fonctionnement habituel d'une primitive d'entrée/sortie. Par exemple, en contrôlant la phase d'écriture en la rendant bloquante ou en l'empêchant. Ce type de verrou garantit le meilleur niveau de sécurité.
Verrou partagé et verrou exclusif
Un verrou
partagé en lecture garantit à plusieurs processus lecteurs l'accès à un fichier en empêchant la pose d'un
verrou exclusif en écriture.