Onyest dossier - Solution au problème : L. LAMPORT (1974) Ajouter à mes favoris
Sommaire
Systèmes parallèles
Cours
Atomicité et processus
Exclusion mutuelle
Solution fondée sur des r/w atomiques
Instructions spéciales atomiques
Solution au problème : L. LAMPORT (1974)
Les sémaphores
Approche "langage"
TDs
TPs
Probabilités appliquées aux systèmes
Théorie des langages et compilation
VHDL
Suite : Les sémaphores

Solution au problème : L. LAMPORT (1974)

On peut définir trois types de variables. Les variables sûres, régulières, atomiques. Pour les trois, une lecture ou une écriture seule ne pose pas de problème et fonctionne correctement.

SURE lecture/écriture simultanée résultat : n’importe quelle valeur que peut contenir la variable
REGULIERE résultat : valeur avant ou après
ATOMIQUE résultat : sérialisable

Exemple d’exécution :

Avec des variables sûres, on a une solution qui est un mélange des solutions précédentes.
tour[i] =0 privée, représente le numéro d’ordre.
(tour[i],i) est l’identité de la requête Pi.
définition : (tour[i],i) < (tour[j],j) = ((tour[i] < tour[j]) ou (tour[i] < tour[j] et i < j))
choisir[i] = 0 privée.

Entrant
choisir[i] := 1 ;
tour[i] := max(tour[j])+1 ; 
choisir[i] :=0 ;
Dedans
pour j<>i, j appartient à 1..n
{
tant que choisir[j]<>0 attendre ;
tant que (tour[j]<>0 et (tour[i],i)> (tour[j],j) attendre ;
}
Section Critique ;
tour[i] := 0 ;
Il est important de noter que, comme choisir bascule toujours entre 0 et 1, la variable SURE est assimilée à une variable ATOMIQUE. Lors d’une lecture/écriture de choisir[i], on peut sérialiser.

En cas de crash d’un processus, il suffit de mettre ses variables à 0 pour que les autres puissent continuer.

Preuve de l’algorithme :
A1 : si pi et pj sont dedans et pi est entré dedans avant que pj ne soit entré dans Entrant alors, tour[i]A2 : si pi dans Section Critique et pk Dedans alors, (tour[i],i)<(tour[k],k)
Sureté : pi, pj (i<>j) sont en Section Critique alors A2 :
(tour[i],i)< (tour[j],j) car pi dans Section Critique et pj dedans.
(tour[j],j)< (tour[i],i) car pj dans Section Critique et pi dedans.
On a une contradiction donc on ne peut avoir deux processus en Section Critique.
Vivacité : pas d’interblocage, pas de famine (A1, FIFO).

Suite : Les sémaphores
Onyest dossier - cours ingénieur informatique et électronique : SPAR, PAS, TLC, VHDL - http://www.onyest.free.fr/dossier/cours - webmaster : novis@chez.com

-