Onyest dossier - Allocation de ressources (priorités) Ajouter à mes favoris
Sommaire
Systèmes parallèles
Cours
Atomicité et processus
Exclusion mutuelle
Les sémaphores
Mise en œuvre
Producteur(s) – Consommateur(s)
Allocation de ressources (priorités)
Le problème des lecteurs-rédacteurs
Approche "langage"
TDs
TPs
Probabilités appliquées aux systèmes
Théorie des langages et compilation
VHDL
Suite : Le problème des lecteurs-rédacteurs

Allocation de ressources (priorités)

C’est le principe client/serveur, on dispose d’une ressource à accès exclusif. On utilise donc un sémaphore mutex initialisé à 1. Celui ci entoure la section critique : P(mutex) ; SC ; V(mutex). Dans le cas d'un fonctionnement en FIFO, le sémaphore est dit fort.

Si maintenant l'on désire réaliser une allocation de ressource avec priorité mais sans préemption (celui qui arrive est plus prioritaire que celui qui possède la ressource, ce dernier la garde), un seul sémaphore ne suffit pas. Il faut que chaque processus appelle les procédures demander(i) et liberer. Entre ces deux appel, il pourra utiliser la ressource. i sert à calculer la priorité.

demander(i)

structures

liberer

P(mutex)
si occupe alors
bloque[i] := vrai
V(mutex)
P(b[i])
sinon
occupe := vrai
V(mutex)
finsi

occupe booleen init faux
mutex séma init 1
b[1..n] séma init 0
bloque[1..n] booleen init faux

P(mutex)
si il existe un b[j] bloque alors
soit k le processus bloque prioritaire,
bloque[k] := faux
V(b[k])
sinon
occupe := faux
finsi

Suite : Le problème des lecteurs-rédacteurs
Onyest dossier - cours ingénieur informatique et électronique : SPAR, PAS, TLC, VHDL - http://www.onyest.free.fr/dossier/cours - webmaster : novis@chez.com

-