Vous êtes sur la page 1sur 16

Cours de Systèmes d'Exploitation Licence d'Informatique

LES SEMAPHORES

Idée : L'emploi d'une variable entière (sémaphore ) pour


compter le nombre de réveils en attente

un sémaphore =0 => aucune réveil n'a été mémorisé

un sémaphore >0 => 1 ou plusieurs réveils sont en


attente

q A chaque sémaphore s est associé une file contenant les


processus bloqués par l'opération P(s)

q un sémaphore s est manipulé par les opérations :

• P(s) : - décrémente la valeur de s si s>0,


- si s=0, alors le processus est mis en attente.

• V(s) : - incrémente la valeur de s,


- si un ou plusieurs processus sont en attente sur ce
sémaphore, l'un d'entre eux est réveillé,

q Les opérations P(s) et V(s) sont atomiques (indivisibles)

Université de Valenciennes - ISTV 1 H.Bourzoufi


Cours de Systèmes d'Exploitation Licence d'Informatique

q Le protocole d'exclusion mutuelle peut être programmé de


la manière suivante :

initialisation mutex = 1 /* nombre de points d'entrées en section


critique = nombre de processus autorisés à
entrer simultanément dans la section
critique */

P(mutex)
<section_critique> /* mise à jour d'un compte bancaire */
V(mutex)

q Généralisation facile à un nombre quelconque de processus.

Université de Valenciennes - ISTV 2 H.Bourzoufi


Cours de Systèmes d'Exploitation Licence d'Informatique

Application au modèle Producteur / Consommateur

Tampon de taille fixe

Producteur Consommateur

3 sémaphores :

• plein: compte le nombre de places occupées


• vide : compte le nombre de places libres
• mutex : assure que le producteur et le consommateur n'accèdent
jamais en même moment à la mémoire tampon.

mutex = 1
vide = N
plein = 0

producteur () Consommateur ()
{ while (true) { { while (true) {
produire_objet (...); P(plein);
P(vide); P(mutex);
P(mutex); retirer_objet(...);
mettre_objet(...); V(mutex);
V(mutex); V(vide);
V(plein);} utiliser_objet(...);}
} }

Remarque : la manipulation des sémaphores nécessite


beaucoup de prudence
P(s1); P(s2);
Université de Valenciennes - ISTV 3 H.Bourzoufi
Cours de Systèmes d'Exploitation Licence d'Informatique
P(s2); P(s1);
V(s2); V(s1);
V(s1); V(s2);

Université de Valenciennes - ISTV 4 H.Bourzoufi


Cours de Systèmes d'Exploitation Licence d'Informatique

Les Moniteurs de
Hoare

q Un moniteur de Hoare est un module de programme


constitué d'un ensemble de variables (variables d'état), et
d'un ensemble de procédures possédant les caractéristiques
suivantes :

½ Seules certaines procédures, appelées entrées (entry) du


moniteur sont visibles, i.e, seules ces procédures peuvent
être appelées de l'extérieur

½ Les procédures du moniteur sont exécutées en exclusion


mutuelle : Un seul processus actif dans un moniteur à un
moment donné.

½ Les variables d'état ne sont pas visibles de l'extérieur du


module : elles ne sont modifiables que par les procédures du
moniteur.

½ Le moniteur fournit des possibilités de synchronisation au


moyen de conditions.

½ Une instruction initiale est exécutée une seule fois à


l'initialisation du programme

Un moniteur est une primitive de haut


niveau : c'est au compilateur de réaliser
Université de Valenciennes - ISTV 5 H.Bourzoufi
Cours de Systèmes d'Exploitation Licence d'Informatique

l’exclusion mutuelle (synchronisation)

Université de Valenciennes - ISTV 6 H.Bourzoufi


Cours de Systèmes d'Exploitation Licence d'Informatique

Les Moniteurs de
Hoare (suite)

q Un condition c est une variable manipulable par


seulement deux opérations :

½ L'opération attendre (c) : bloque le processus


appelant et le place en queue de file d'attente

½ L'opération signaler(c) : retire un processus en tête de


la file d'attente, si elle est non vide, et l'active

q Une condition est implantée dans un système d'


exploitation comme une file d'attente de processus
bloqués, c'est à dire une structure de données capable
de mémoriser le blocage de processus.

q En général, une condition de synchronisation est


exprimée à l'aide d'une expression booléenne faisant
intervenir les valeurs des variables d'état :

SI NON <condition> ALORS attendre (c) FSI;


Université de Valenciennes - ISTV 7 H.Bourzoufi
Cours de Systèmes d'Exploitation Licence d'Informatique

Implantation de l’exclusion
mutuelle

Moniteur ressource;

var ressource_libre : booleen;


libre : condition;

acquerir : entree;
debut
si non ressource_libre alors attendre(libre) fsi;
ressource_libre:= Faux;
fin acquerir;

liberer : entree;
debut
ressource_libre := vrai;
signaler(libre);
fin liberer;

debut
ressource_libre := vrai;
fin ressource;

Université de Valenciennes - ISTV 8 H.Bourzoufi


Cours de Systèmes d'Exploitation Licence d'Informatique

Application au modèle
Producteur/Consommateur

Moniteur Producteur/Consommateur

plein, vide : Condition;


compteur : entier;

deposer : entree (...);


debut
si compteur = N alors attendre (plein);
mettre_objet(...);
compteur = compteur + 1;
si compteur = 1 alors signaler( vide);
fin;

retirer : entree (...);


debut
si compteur = 0 alors attendre (vide);
retirer_objet(...);
compteur = compteur -1;
si compteur = N-1 alors signaler (plein);
fin;

fin Producteur/Consommateur;

C’est plus simple ! J

Université de Valenciennes - ISTV 9 H.Bourzoufi


Cours de Systèmes d'Exploitation Licence d'Informatique

LE PROBLEME DU SIGNAL

ex : MONITEUR
c: CONDITION;
....
e1 : ENTREE ;
DEBUT
<debut e1>
SI <condition> ALORS ATTENDRE (c) FSI;
<reste e1>
FIN e1;

e2 : ENTREE;
DEBUT
....
SIGNALER(c);
<reset e2>
FIN e2;

Quand P2 exécute SIGNALER(c), les 2 processus P1 et P2 sont


potentiellement actifs :

• P1 exécute <reste e1>


• P2 exécute <reste e2>

Or, l'exclusion mutuelle doit être respectée.

2 soluions :

½ Relancer le processus qui vient d'être réveillé et suspendre l'autre;

½ Le processus qui a effectué le signal doit quitter le moniteur


immédiatement, autrement dit, une opération SIGNAL ne peut
Université de Valenciennes - ISTV 10 H.Bourzoufi
Cours de Systèmes d'Exploitation Licence d'Informatique
apparaître qu'à la fin d'une procédure du moniteur

Université de Valenciennes - ISTV 11 H.Bourzoufi


Cours de Systèmes d'Exploitation Licence d'Informatique

Communication par message

q Le système d'exploitation fournit 2 procédures : envoyer (send) et


recevoir (receive) qui permettent à deux processus de
commnuniquer par échange de message.

q ✥n général le contenu des messages n'est pas interprété par le


système d'exploitation .

q Des contraintes diverses peuvent être imposées :


½ typage des messages, taille fixe, taille maximale, format, .....

q La synchronisation est une conséquence immédiate de la


communication car la primitive recevoir est nécessairement
bloquante pour le processus qui l'exécute.

q La primitive envoyer doit elle être bloquante ?

La communication par message peut être modélisée par le modèle


Producteur/Consommateur où le tampon joue le rôle de boite aux
lettres :

•Tampon de taille nulle : L'émission peut être bloquante:


Envoi avec rendez-vous

•Tampon de taille bornée : L'émission peut être bloquante quand le


tampon est plein :
Envoi synchrone

•Tampon de taille infinie : L'émission n'est pas bloquante:


Envoi asynchrone

Université de Valenciennes - ISTV 12 H.Bourzoufi


Cours de Systèmes d'Exploitation Licence d'Informatique

q Autres problèmes conceptuels : désignation des processus, fiabilité


des primitives, ......

Université de Valenciennes - ISTV 13 H.Bourzoufi


Cours de Systèmes d'Exploitation Licence d'Informatique

Réalisation de l'exclusion mutuelle


par communication

q Utilisation d’un processus Coordinateur

Processus
Coordonnateur
1 demande
2
4

Processus Processus Processus

Ressource
critique

1: demande d'accès (send)


2: réponse (receive)
3: accès à la section critique
4: libérer la section critique (send)

Exercice : Etudier l'équivalence des primitives

• Utilisation des sémaphores pour réaliser les moniteurs et les


messages

• Utilisation des moniteurs pour réaliser les sémaphores et les


messages

Université de Valenciennes - ISTV 14 H.Bourzoufi


Cours de Systèmes d'Exploitation Licence d'Informatique
• Utilisation des messages pour réaliser les sémaphores et les
moniteurs

Université de Valenciennes - ISTV 15 H.Bourzoufi


Cours de Systèmes d'Exploitation Licence d'Informatique

Les outils de communication et de Synchronisation dans Unix

Les communications dans Unix peuvent être réalisées à l'aide:


q Processus appartenant au même noyau:
½ des fichiers partagés
½ des signaux
½ des tubes de communication

½ des IPC (Inter Process Communication) du System V :


♦ les files de messages
♦ les mémoires partagées
♦ les sémaphores
q Processus pouvant appartenir à des noyaux différents:
½ des sockets de Unix de berkeley (BSD 4.2)
½ des TLI ( Transport Level Interface ) de système V

Université de Valenciennes - ISTV 16 H.Bourzoufi