Académique Documents
Professionnel Documents
Culture Documents
CHEHBOUR
1. Introduction
Des processus multiple dans le système d’exploitation n’évoluent pas toujours de manière
indépendante. Ils coopèrent pour réaliser une tâche commune. Ils partagent donc les
données, plus généralement des ressources.
Pour mettre en œuvre cette coopération, des mécanismes dits de synchronisation doivent être
fournie par le système d’exploitation. Ces mécanismes permettent d’établir un ordre
d’exécution entre les processus coopérants.
Une ressource partageable est une ressource qui possède plusieurs points d’entrée (à
accès multiple, peut être utilisée simultanément par plusieurs processus).
Une ressource non partageable est une ressource à un seul point d’entrée (accès exclusif).
Dans ce cas il est nécessaire d’ordonner l’accès à ce type de ressources pour éviter les
situations incohérentes.
Programme reservation {
If ( place_dispo>0) {
place_dispo -- ;
else
(I3): sub R1 1
R1≠0 (I2)
R1=0 (I3)
P2 s’exécute jusqu’à la fin --> place_dispo est toujours=1, il réserve une place et se termine
La portion du code dans laquelle est manipulée la variable partagée est appelée la section
critique
3. La Section Critique
3.1. Définition
La section critique d’un programme donné est une suite d’instructions de ce programme
dont l’exécution est gérée en exclusion mutuelle.
Un processus parmi ceux qui s’exécutent en parallèle ne peut entrer en section critique
(S.C) si l’un des autres s’y trouve déjà.
P1 P2 . . . Pn
: : :
S.C1 S.C2 S.Cn
: : :
Puisque un seul processus Pi qui est autorisé à exécuter sa section critique (S.Ci ) . Il est
nécessaire de concevoir des protocoles permettant au processus de s’exclurent mutuellement
quant à l’utilisation de la ressource critique.
Processus Pi
Début
Répéter
<Protocole d’entrée>
<S.C>
<Protocole de sortie>
Jusqu’à faux
Fin.
Exemple
Département informatique/faculté des sciences/université de Boumerdes.
4
Systèmes d’exploitation 2 (programme covid19) F.CHEHBOUR
Processus Pi Processus Pj
Répéter Répéter
Tant que (tour ≠ 𝒊) {} Tant que (tour ≠ 𝒋) {}
<S.Ci> <S.Cj>
Tour=j Tour=i
<S.R> <S.R>
Jusqu’à faux Jusqu’à faux
L’exclusion mutuelle est assurée car l’accès à la S.C est conditionné par la valeur de la
variable tour qui doit être identique à l’identité du processus. Cependant, la solution engendre
l’alternance quant à l’accès à la section critique et si l’un des processus s’arrête
définitivement, l’autre processus ne pourra jamais entrer en section critique même si l’autre
processus opère en dehors de la S.C. Cette solution n’assure pas la progression.
En réalité, les solutions logiciels (basées sur les variables d’états) ne sont plus utilisées car
susceptibles de consommer le temps CPU en bouclant inutilement (attente active). De plus
leurs généralisation aux cas de plusieurs processus est complexe.
4.3.Solutions matérielles :
Ce sont des solutions qui utilisent un dispositif matériel particulier pour résoudre le problème
de la section critique. Ces solutions sont celles utilisées dans la pratique dans les systèmes
centralisés monoprocesseur.
On désarme les interruptions pendant toute la durée de la section critique et on les réarme à la
sortie de la section critique. L’unité centrale reste allouée à ce processus jusqu’à la fin de sa
section critique ce qui garantit l’exclusion mutuelle.
Inconvénient
Un processus prioritaire peut être bloqué, d’où la difficulté de mettre cette possibilité dans les
mains des utilisateurs.
Instruction élémentaire fournie par le matériel, qui permet de lire et d’écrire (ou de modifier)
le contenu d’un mot mémoire de façon indivisible.
Processus Pi
Début
Répéter
<S.Ci>
Lock=false ;
<S.R>
Jusqu’à faux
4.4.Les sémaphores
Pour contrôler les accès à un objet partagé, Dijkstra (en 1965) a suggéré l'utilisation d'un
nouveau type de variables appelées les sémaphores.
Définition : Un sémaphore S, est une variable entière associée à une file d’attente f(s), la
variable S peut prendre des valeurs positives, nulles ou négatives. Cependant sa valeurs
initiale est toujours positive ou nulle. La politique de gestion de la file d’attente f(s) est
quelconque, mais elle est en général FIFO. Un sémaphore est manipulé EXCLUSIVEMENT
par les trois primitives suivantes :
INIT (s, n)
Debut
S := n ;
f(s) := Ø
Fin ;
P(S)
Debut
S := S-1;
Si S < 0 alors état (P) := bloqué % p est le processus qui exécute p(s) %
Mettre le processus P dans f(s);
[appel au scheduler pour choisir un autre processus]
Fsi
Fin ;
V(S)
Debut
S := S+1;
Si ( S < = 0) alors faire sortir un processus de f(s) ; %soit q ce processus%
- Etat (q) := prêt;
Fsi
Fin
A. Sémaphore binaire
Un sémaphore binaire est un sémaphore dont la valeur initiale est égale à 1. Il est
utilisé en général dans l’exclusion mutuelle. La forme générale d’un programme est :
Processus Pi
Debut
P(S) ;
<S.Ci> ;
V(S) ;
fin
B. Sémaphore privé.
La valeur initiale d’un sémaphore privé est 0. Ce type de sémaphore est utilisé par un
processus quand il désire se bloquer volontairement.
Département informatique/faculté des sciences/université de Boumerdes.
7
Systèmes d’exploitation 2 (programme covid19) F.CHEHBOUR
Exemple.
Soit deux processus P1 et P2 coopérant entre eux pour réaliser un travail constitué de
deux parties. Le processus P1 doit terminer la première partie avant que le processus
P2 n’entame la deuxième.
Solution :
Sémaphore s init à 0 ;
Processus P1 Processus P2
début début
<Réaliser la première partie> P(S) ;
V(S) ; <Réaliser la deuxième partie>
Fin. Fin.
C. Sémaphore compteur
La valeur initiale d’un sémaphore compteur est > 1. Il est utilisé quand il s’agit d’accéder
à une ressource à ‘n’ points d’accès. Dans ce cas la valeur initiale du sémaphore est n et la
forme générale d’un processus est la suivante :
Sémaphore s init à n ;
Processus Pi
Début
P(S) ;
<Utiliser la ressource> ;
V(S) ;
Fin.
Les n premiers processus franchissent P(S) sans se bloquer. Le (n+1)nième processus, si les
n premiers processus sont en cours de l’utilisation de la ressource, sera bloqué (s vaut -1).
De même que les autres processus qui arrivent après. Quand un processus termine
d’utiliser la ressource (il exécute v(S)) ; il libère le premier processus bloqué. ---> Nous
avons au plus n processus qui accèdent simultanément à la ressource partagée.
Exercice
Synchroniser à l’aide des sémaphores ; l’accès à un parking possédant n places et ayant
une porte d’entrée et une porte de sortie qui ne laissent passer qu’une seule voiture à la
fois.
Exemples
1. Le processus clavier produit des caractères qui sont consommés par le processus
d’affichage à l’écran.
2. Le pilote de l’imprimante produit des lignes de caractères, consommées par
l’imprimante
3. Un compilateur produit des lignes de codes consommés par l’assembleur.
0 1 n-1
. . . . . . .
Le consommateur
Le producteur (prélève de l’info.)
(dépose de
l’info.)
Les objets ou les articles sont consommés dans l’ordre où ils ont été produits (FIFO). Les
processus utilisent deux primitives.
1. Deposer (article)
2. Prelever (article)
Var
Le producteur et le consommateur n’opèrent jamais sur la même case car les objets
sont consommés dans l’ordre où ils ont été produits.
Debut debut
fin ; fin ;
Dans ce cas il est nécessaire de rendre l’accès au tampon en exclusion mutuelle dans
chaque famille de processus. C-à-d. les opération déposer (art) et prélever (art) doivent
être réalisées en exclusion mutuelle.
Var
Dans les deux cas les seules opérations réalisées sont des combinaisons de
consultation et de mise à jour des enregistrements.
Var
Semaphore w :=1 ; % pour assurer l’accès exclusif au fichier entre les lecteurs et les
rédacteurs et entre plusieurs rédacteurs %
Commentaires :
1) Le fichier est considéré comme une ressource critique pour un rédacteur, c’est – à
–dire, si un rédacteur est en cours, aucun lecteur, ni rédacteur ne peut y accéder
(utilisation du sémaphore w).
2) Plusieurs lecteurs peuvent avoir lieu en même temps (utilisation du compteur nl).
3) Seul le premier lecteur qui arrive teste l’occupation de la section de la section
critique par un rédacteur éventuel. Les autres lecteurs accèdent directement si le
premier réussit l’accès, sinon ils se bloquent au niveau de mutex.
Jusqu’à faux
Fin