Onyest dossier - Les sémaphores Ajouter à mes favoris
Sommaire
Systèmes parallèles
Cours
TDs
Eléments de C (1)
Eléments de C (2)
Mise en oeuvre
Les sémaphores
TPs
Probabilités appliquées aux systèmes
Théorie des langages et compilation
VHDL
Suite : TPs

Les sémaphores

1 Sémaphores binaire mis en oeuvre par opérations d'échanges

Soit l'opération d'échange cx(a,b) = si a=b alors reg:=1 sinon { reg:= 0 ; echange a et b } (reg est une variable locale)
Cette opération est atomique. Pour le sémaphore binaire, on n'exploite pas la notion de file d'attente, on fait une attente active. L'on souhaite juste créer deux primitives de synchronisation qui soient atomiques.

Init(Valeur) = s = valeur
V(S) = s = 1
P(S) = { reg = 1 ; b = 0 ; tant que reg = 1 faire cx(S,b) }

En effet, P(0) attend que s passe à 1 et remet s à 0, P(1) met s à 0. reg = 0 signifie que l'on a permuté les deux variables.

2 Sémaphores binaire mis en oeuvre pour les fichiers (sous UNIX)

P(S) = while (creat(S,0) <0) {}
V(S) = unlink S

3 Mise en oeuvre d'un sémaphore classique

On construit dons maintenant le sémaphore classique à l'aide des sémaphores binaires précédents.

Init(valeur) = { S = valeur ; bmutex =Init(1) ; battente = Init(0) }
P(S) = { Pbin(bmutex) ; S-- ; si S<0 alors Vbin (bmutex) ; Pbin(battente) sinon Vbin(bmutex) }
V(S) = { Pbin(bmutex) ; S++ ; si S <= 0 alors Vbin(battente) ; Vbin(bmutex) }

4 Activation périodique d'un processus

Le principe est de construire un processus horloge qui effectue un V régulier. On peut alors utiliser le P dans d'autre processus.
top init 0, asy init 0, intervalle init 100.

H : repeat V(top) ; O : i = 0
P(top) ; i++
si i = intervalle alors V(asy) ; i=0 ;
P(i) i:1..N
repeat
P(asy[i])
...
until "condition d'arret de la boucle"

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

-