Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Les Processus :
L’Exclusion Mutuelle
-2-
1. RELATIONS ENTRE PROCESSUS
1.1 Définitions
1.2 Classes de processus parallèles
1.2.1 Les processus indépendants;
1.2.2 Les processus coopérants ou concurrents.
2. L’EXCLUSION MUTUELLE
2.1 Définitions
2.1.1 Ressources d’un processus
2.1.2 Ressources critique
2.1.3 Ressource virtuelle
2.1.4 Section critique
2.1.5 Schéma général de l’utilisation d’une ressource critique
2.2 Réalisation de l’exclusion mutuelle
2.2.1 Hypothèses de travail (Dijkstra)
-3-
2.2.2 Solutions matérielles
2.2.2.1 Machine monoprocesseur
2.2.2.1.1 Les interruptions
2.2.2.1.2 Les instructions spéciales
2.2.2.2 Machine multiprocesseur
2.2.3 Les sémaphores de Dijkstra(1965)
2.2.3.1 Définition
2.2.3.2 Propriétés des sémaphores
2.2.3.3 Définition et initialisation
2.2.3.4 Réalisation de l’exclusion mutuelle avec les sémaphores
2.2.3.5 Implantation des primitives P et V
2.2.3.6 Insuffisances du mécanisme de synchronisation par
sémaphores
-4-
1. RELATIONS ENTRE PROCESSUS
1.1 Définitions
• Processus parallèles :
Des processus séquentiels dont les exécutions chevauchent dans le
temps.
• Exemple : Soient deux processus P1 et P2 dont les exécutions de leur
programme sont représentées par les schémas suivants:
Schéma1
P1 P2
Schéma3
P1
P2
P1 P2
Schéma3
P1
P2
-9-
1.2.1 Les processus indépendants
• Aucune interaction entre ces processus,
• Leur contexte sont disjoints : C1 C2 =
• Ces processus ne se connaissent pas,
• Ils ont des relations de compétition pour l’usage de ressources
physiques communes.
- 11 -
• Si deux processus p1 et p2 sont indépendants les exécutions suivantes
donnent les mêmes résultats :
✓ p1 // p2, "//" Exécution parallèle,
✓ p2; p1.
- 12 -
1.2.2 Les processus concurrents (coopérants)
• Ce sont des processus qui coopèrent pour la réalisation d’un travail
commun (tâche commune).
• Ces processus se partagent et/ou s'échangent des informations.
• Ils se connaissent de manière directe ou indirecte.
• La coopération entre ces processus nécessite une synchronisation de
leurs actions (opérations).
• Les processus concurrents ont 2 types de relations :
✓ Relation de compétition pour l’usage de ressources communes:
Ressources physiques : compétition entre processus
concurrents et/ou indépendants;
Ressources logiques : compétition seulement entre des
processus coopérants.
- 13 -
✓ Relation de coopération:
a) Coopération par partage :
Les processus se connaissent de manière indirecte.
Exemples : Des processus se partageant une base de données de
comptes bancaires (processus versement, processus retrait,
processus consultation,…).
- 14 -
2. L’EXCLUSION MUTUELLE
• Mécanisme permettant l'accès exclusif à une ressource commune (ou
ressource partagée).
La ressource peut être : physique ou logique.
2.1 Définitions
2.1.1 Ressources d’un processus
Pour qu'un processus puisse évoluer, il a besoin :
✓ de programmes et de données;
✓ de mémoire destinée à les contenir;
✓ du processeur pour s’exécuter; Ressources
✓ de fichiers et de périphériques.
- 15 -
❖ On distingue deux classes de ressources :
✓ Les ressources physiques :
processeur; mémoire centrale; périphériques; …
✓ Les ressources logiques :
programmes; fichiers; …
❖ Une ressource peut être à un seul point d’accès (à accès exclusif) :
Processeur; imprimante; fichier en écriture; programme non
réentrant; …
Un seul processus, à la fois, peut utiliser la ressource.
❖ Une ressource à plusieurs points d‘accès :
Disque; fichier en lecture; programme réentrant; …
Ce dernier type de ressource peut être utilisé par plusieurs
processus en même temps (simultanément).
- 16 -
❖ Ressource banalisée :
Ressources qui existent en plusieurs exemplaires et le choix de
l’unité allouée n’est pas important pour le processus demandeur :
Imprimantes; pages mémoires; blocs de disques; dérouleurs de
bandes magnétiques; …
❖ Etats d’une ressource
Une ressource est caractérisée par son état :
✓ Libre;
✓ Occupée(la ressource est allouée à un processus).
- 17 -
2.1.2 Ressource critique
C’est une ressource qui ne peut être utilisée que par un seul processus
à la fois :
✓ Ressource à un seul point d'accès;
✓ Ressource à accès exclusif ou
✓ Ressource non partageable.
• Exemples: processeur; imprimante; …
- 18 -
2.1.3 Ressource virtuelle
Exemple : machine monoprocesseur :
➢ Un seul processeur pour l’ensemble des processus
➢ Le processeur est une ressource non partageable ➔
un seul processus peut l’utiliser à la fois.
❖ Les processus entrent en compétition pour utiliser le processeur.
❖ Ce problème de compétition, peut être évité s’il y avait autant de
processeurs réels que de processus or :
1. On ignore le nombre de processus dans le système (création
dynamique),
2. Pour des raisons économiques, on ne peut pas avoir autant de
processeurs que de processus. ➔
On introduit la notion de ressources virtuelles :
- 19 -
❖ On va supposer qu’il y a autant de « copies imaginaires » du
processeur réel que de processus.
❖ Ces « copies imaginaires » du processeur sont appelées processeurs
virtuels ou ressources virtuelles.
❖ Pour toute ressource physique on associe autant de ressources
virtuelles qu’il y a de processus demandeurs de cette ressource réelle.
❖ Le problème de compétition pour l'accès aux ressources
physiques est réglé par le système à l’aide de programmes
appelés : l’allocateurs de ressources.
❖ Exemple : le Processeur
✓ C’est l’ordonnanceur qui choisit un processus de la « file prêt »
et lui affecte le processeur(ou le fait passer à l’état actif) ➔
Les processus à l’état prêt sont virtuellement en exécution.
✓ L’utilisateur ne se préoccupe pas de l’allocation du processeur.
- 20 -
❖ La notion de ressource virtuelle permet de séparer :
✓ Le problème de compétition pour l’utilisation de ressources
physiques qui concerne les deux classes de processus :
il y a compétition entre processus indépendants et processus
concurrents;
✓ Du problème de coopération qui est à la charge de l’utilisateur:
la coopération entre processus concurrents dépend de la logique
des programmes des différents processus.
- 21 -
2.1.4 Section critique
La coopération entre processus concurrents nécessite l'usage d'objets
communs ou ressources communes.
Exemple: Considérons 2 processus P1 et P2 s'exécutant sur une
machine monoprocesseur et pouvant consulter et modifier une base
de données des comptes C.C.P.
P1 : versement P2 : Retrait
a1: lire (compte1, n° 999999) a2: lire (compte2, n° 999999)
b1: compte1 = compte1 + 10000 b2: compte2 = compte2 - 5000
c1: réécrire (compte1, n° 999999) c2: réécrire (compte2, n°999999)
P1 : Versement P2 : Retrait
a1: compte1=20000
a2: compte2=20000
b1: compte1 = 20000 + 10000
= 30000
b2: compte2 = 20000 – 5000
= 15000
c1: Compte N° 999999 = 30000
c2: compte N° 999999 = 15000
Résultat final: Compte N° 999999 = 15000 ➔
Ce résultat n'est pas correct.
- 23 -
2) On suppose que les instructions des 2 processus s'exécutent dans
l'ordre suivant:
a1: compte1=20000
P1 b1: compte1 = 20000 + 10000 = 30000
c1: Compte N° 999999 = 30000
a2: compte2=20000
- 26 -
❖ Les programmes des processus P1 et P2, ont été exécutés en
exclusion mutuelle car ils modifient un une ressource commune : le
compte C.C.P.
❖ Les programmes des processus P1 et P2 constituent des sections
critiques.
❖ On appelle section critique d'un processus, la phase pendant laquelle
le processus utilise la ressource critique.
❖ Une section critique est une action indivisible ou atomique qui
dépend du type de la ressource utilisée.
❖ Exemple:
L’action « imprimer fichier » doit être indivisible pour la ressource
imprimante.
❖ Tout processus qui tente d’exécuter une section critique doit parfois être
retardé(bloqué) le temps qu’un autre processus exécutant sa propre
section critique soit sorti.
- 27 -
❖ Remarques:
➢ Les notions d'exclusion mutuelle et de section critique ne s'appliquent
qu'aux processus utilisant une même ressource critique.
➢ Action indivisible : Cela signifie que si un processus utilise une
ressource critique dans sa section critique, aucun autre processus
concerné par le partage de cette ressource ne peut interrompre
l’utilisation de la ressource critique, jusqu’à ce que le processus qui
détient la ressource la libère volontairement à la fin de sa section
critique.
➢ Indivisible n'implique pas « ininterruptible » (ou non interruptible) :
Un processus peut être interrompu au niveau de sa section critique par
un processus plus prioritaire que lui ou par une interruption horloge (en
fin de quantum). Cependant, la ressource critique ne peut pas être
retirée au processus interrompu et affectée à un autre processus.
Les processus se partageant cette ressource doivent attendre jusqu’à la
libération de la ressource critique. - 28 -
2.1.5 Schéma général de l'utilisation d'une ressource
critique
- 29 -
2.2 Réalisation de l’exclusion mutuelle
2.2.1 Hypothèses de travail (Dijkstra)
❖ Les vitesses relatives des processus sont quelconques et inconnues.
❖ On suppose que tout processus sort de sa section au bout d’un temps
fini.
❖ L’ordre d’accès à la ressource est quelconque (ordre d’exécution de la
section critique).
❖ La solution doit avoir les propriétés suivantes:
a) A tout instant un processus au plus peut se trouver en section
critique (exclusion mutuelle).
b) Si plusieurs processus sont bloqués en attente de la ressource
critique alors qu’aucun processus ne se trouve en section critique
l’un d’eux doit pouvoir y entrer au bout d’un temps fini (éviter les
blocages indéfinis).
c) Si un processus est bloqué en dehors d’une section critique, ce
blocage ne doit pas empêcher l’entrée d’un autre processus en
section critique(permettre la progression).
d) La solution doit être la même pour tous les processus
(pas de priorité : équité ➔ éviter la privation ).
- 30 -
2.2.2 Solutions matérielles
2.2.2.1 Machine monoprocesseur
2.2.2.1.1 Les interruptions
❖ Sur une machine monoprocesseur l'exclusion mutuelle peut être
assurée en masquant les interruptions; ➔
Evite au processus actif de perdre le processeur, pendant l'exécution
de sa section critique.
❖ Exemple :
✓ Interruption horloge en fin de quantum ou
✓ Arrivée ou Réveil d'un processus plus prioritaire.
- 32 -
2.2.2.1.2 Les instructions spéciales
➢ Certains processeurs offrent des instructions spéciales permettant de
lire et modifier un mot ou cellule mémoire de manière indivisible (ou
atomique).
➢ L'instruction la plus connue est TAS(m).
➢ Cette instruction (ou d’autres instructions équivalentes) permet de
résoudre le problème de l’exclusion mutuelle par attente active.
a) Test And Set ou TAS(m)
• La consultation et la modification de m sont réalisées par une seule
instruction indivisible.
• Cette instruction existe sur certaines machines (Motorola 68000).
- 33 -
a.1) Fonctionnement de TAS
TAS(m):
bloquer l’accès à la cellule mémoire m;
lire le contenu de m;
si m = 0 alors
m := 1;
compteur_ordinal := compteur_ordinal + 2;
sinon
compteur_ordinal := compteur_ordinal + 1;
finsi;
Libérer l’accès à la cellule mémoire m;
fin_de_TAS.
- 34 -
a.2) Emploi de TAS:
Soit v la variable commune protégeant la ressource critique.
Initialisation v:=0; (v=0➔Ressource libre; v=1➔Ressource occupée)
Etiq : TAS(v); Co
1- Entrée en section critique
Aller à Etiq; Co+1
- 35 -
Forme algorithmique de TAS :
Fonction TAS(booléen m) booléen;/* exécutée de manière atomique*/
booléen sm;
Début
sm := m; /* sauvegarder m dans sm */
m := vrai; /* positionner m à vrai */
retourner sm; /* retourner l’ancienne valeur de m : sm */
fin_de_TAS.
Utilisation de TAS:
Soit v la variable booléenne commune protégeant la ressource critique;
v initialisée à faux.
v=faux ➔Ressource libre; v=vrai ➔Ressource occupée.
Utilisation de Swap:
Soit v la variable commune protégeant la ressource critique et
r (registre) une variable locale.
- 39 -
✓ Masquer les interruptions pour ne permettre qu’à un seul processus de
s'exécuter sur un processeur donné,
✓ Utiliser une instruction spéciale telle que TAS pour résoudre les conflits
entre processeurs ➔ autoriser un seul processeur à exécuter la
section critique d’un processus.
Remarque:
On doit d'abord masquer les interruptions et ensuite demander
l'entrée en section critique à l'aide de l'instruction TAS. ➔
Eviter les attentes actives inutiles (mauvaise utilisation du processeur).
- 40 -
Début
Le reste du programme
Fin;
Remarque: Il y a attente active pendant la durée de l'exécution de la
section critique.
- 41 -
Solution utilisant TAS et ensuite les interruptions
Début
boucle : TAS(m);
Aller à boucle;
Point interruptible; ex: it horloge (fin de quantum)
Section Critique;
m:=0;
- 43 -
❖Inconvénients :
➢ Les instructions spéciales utilisent l’attente active. ➔ mauvaise
utilisation du temps processeur .
➢ Il ya risque de privation : Si plusieurs processus demandent à entrer
en section critique, le choix du processus à accèder en section
critique est arbritaire ➔ Un processus peut passer plusieurs fois
alors qu’il ya des processus qui attendent l’entrée en section critique
(propriété (d) n’est pas respectée).
➢ Il y a un risque d’interblocage :
Considérons une machine monoprocesseur avec un ordonnancement
avec priorité. Deux processus p1 et p2 avec p2 plus prioritaire que
p1.
Les 2 processus se partagent une ressource critique et accèdent à
cette ressource à l’aide d’une intruction spéciale (ex: TAS).
Situation d’interblocage.
- 48 -
❖ A tout instant la valeur e(s) d'un sémaphore s est donnée par la
relation suivante :
e(s) = e0(s) - nP + nV;
✓ e0(s) : valeur initiale du sémaphore s,
✓ nP: nombre d'exécutions de P sur le sémaphore s;
✓ nV: nombre d'exécutions de V sur le sémaphore s;
- 49 -
2.2.3.3 Définition et initialisation
On utilise la forme algorithmique suivante :
sémaphore nom_du sémaphore init valeur;
- 50 -
2.2.3.5 Implantation des primitives P et V
❖ Les primitives P et V doivent être indivisibles :
Un seul processus peut exécuter une primitive p ou v sur un
sémaphore s donné (p et v exécutées en exclusion mutuelle).
a) Sur une machine monoprocesseur : masquer les interruptions.
b) Sur une machine multiprocesseur deux étapes sont nécessaires :
1. Garantir qu'un seul processeur peut exécuter une primitive :
Utilisation de l'instruction TAS ou d'une instruction équivalente.
2. Masquer les interruptions avant de demander l'entrée dans la
section critique protégée par l'instruction TAS (c’est à dire
masquer les interruptions avant d'exécuter l'instruction TAS).
❖ Remarque: Il y a attente active pendant la durée de l'exécution de la
primitive P ou V.
❖ Les primitives, les variables d'état et les files d'attente doivent être
protégées (utilisation des primitives par appel au superviseur).
- 51 -
Initialisation de la variable commune m à 0 : m=0;
Début Début
1) Masquer les interruptions; 1) Masquer les interruptions;
- 52 -
2.2.3.6 Insuffisances du mécanisme de synchronisation par
sémaphores
✓ Mécanisme de bas niveau ➔ Programmation difficile et risque d’erreur
important(oubli d’un P ou un V difficilement détectable).
✓ La primitive V ne permet de réveiller (activer) qu'un seul processus de la
file d'attente du sémaphore.
✓ Le processus qui a exécuté V ne choisit pas le processus à réveiller ➔
Il ne connait pas le processus réveillé.
✓ Le processus (réveillé) ou activé ne connaît pas le processus qui l'a
réveillé ➔ Ce mécanisme permet une action indirecte sur les processus.
Remarques :
➢ La primitive v mémorise l'événement : la variable du sémaphore est
incrémentée même si aucun processus n'attend cet événement.
➢ Un événement non mémorisé est perdu si aucun processus n’est en
attente de cet événement. Exemple: Message de la radio.
- 53 -