Vous êtes sur la page 1sur 9

L3-Informatique 2014

CHAPITRE 2 : Notion de Parallélisme, de Coopération et


Compétition
I) Les processus
I.1) Définition
 Un processus (séquentiel) est l’entité dynamique représentant l’exécution d’un programme
sur un processeur.
Différence entre processus et programme : le programme est une description statique";
le processus est une activité dynamique (il a un début, un déroulement et une fin, il a
un état qui évolue au cours du temps)

 Intérêt de la notion de processus


Abstraction de la notion d’exécution séquentielle, qui la rend indépendante de la
disponibilité effective d’un processeur physique
Représentation des activités parallèles et de leurs interactions
 Exemple de processus
L’exécution d’un programme
La copie d’un fichier sur disque
La transmission d’une séquence de données sur un réseau

I.2) Parallélisme et pseudo-parallélisme


- Si deux processus p1 et p2 (exécutent deux programmes Q1 et Q2)

- Mise en œuvre concrète de l’exécution de p1 et p2

SE-2-CH2 Page 1
L3-Informatique 2014

I.3) Relation entre processus


 Compétition
- Situation dans laquelle plusieurs processus doivent utiliser simultanément une ressource à
accès exclusif (ressource ne pouvant être utilisée que par un seul processus à la fois).
-Exemples
 processeur (cas du pseudo-parallélisme)
 Imprimante
- Une solution possible (mais non la seule) : faire attendre les processus demandeurs jusqu'à
ce que l’occupant actuel ait fini (premier arrivé, premier servi)
 Coopération
- Situation dans laquelle plusieurs processus collaborent à une tâche commune et doivent se
synchroniser pour réaliser cette tâche.
- Exemples
 p1 produit un fichier, p2 imprime le fichier
 p1 met à jour un fichier, p2 consulte le fichier
- La synchronisation se ramène au cas suivant : un processus doit attendre qu’un autre
processus ait franchi un certain point de son exécution

I.4) Faire attendre un processus


 Dans les deux types de relations (compétition ou coopération), on doit faire attendre un
processus. Comment réaliser cette attente ?

 Solution 1 : attente active

SE-2-CH2 Page 2
L3-Informatique 2014

 très peu économique si pseudo-parallélisme


 difficulté d’une solution correcte (à voir plus tard)

 Solution 2 : blocage du processus


 On définit un nouvel état pour les processus, l’état bloqué. L’exécution d’un
processus bloqué est arrêtée, jusqu’à son réveil explicite par un autre processus ou
par le système.

II. Modèles de Représentation des Processus

II.1) Définition
On appelle tâche une unité élémentaire de traitement ayant une cohérence logique. Si
l'exécution du processus P est constituée de l'exécution séquentielle des tâches T1, T2,..., Tn, on
écrit : P = T1 T2...Tn

A chaque tâche Ti, on associe sa date de début ou d'initialisation di (lecture des paramètres
d’entrée, acquisition de ressources nécessaires, chargement d’information) et sa date de
terminaison ou de fin fi (écriture des résultats, libération des ressources, sauvegarde
d’information).

II.2) Système de taches (Décomposition en tâches)


Un système de taches S (T1, …,Tn) est un ensemble de taches muni d’une relation d’ordre
partiel notée « < ».

Une relation de précédence, notée "<", sur un ensemble E est une relation vérifiant :

1) T ∈ E, on n’a pas T < T,


2) (T, T’) ∈ E, on n’a pas simultanément T < T’ et T’ < T,
3) la relation "<" est transitive, i.e. C.à.d. si T, T’ et T’’ ∈ E / < T’ et T’ < T’’, alors T < T’’.

La relation Ti < Tj entre tâches signifie que fi inférieur à dj entre dates. Si on n'a ni Ti < Tj
ni Tj < Ti, alors on dit que Ti et Tj sont exécutables en parallèle.

Une relation de précédence peut être représentée par un graphe orienté. Par exemple, la
chaîne de tâches S = ((T1, T2, T3), (Ti < Tj , pour i inférieur à j)) a pour graphe :

SE-2-CH2 Page 3
L3-Informatique 2014
1 2 3

Qu’on peut simplifier, en représentant le graphe de la plus petite relation qui a même
fermeture transitive que la relation de précédence : c'est le graphe de précédence:

1 2 3

Le graphe de précédence est une représentation graphique de la relation " → " qui est
trouvée à partir de "<" en retirant les transitivités. "<" et " → " ont même fermeture transitive.

II.3) Graphe de précédence


C’est un graphe dirigé acyclique dont les nœuds représentent les instructions et les arcs
représentent les dépendances entre les nœuds incidents : un arc d’un nœud Si vers un nœud Sj
signifie que le nœud Sj ne peut s’exécuter avant la fin du nœud Si

On munit l'ensemble des graphes de précédence de deux opérations :


- La composition parallèle : G1 et G2 étant deux graphes de précédence correspondant à des
ensembles de tâches disjoints, G1 // G2 est l'union de G1 et de G2

- Le produit : G1 * G2 reprend les contraintes de G1 et de G2 avec en plus la contrainte


qu'aucune tâche de G2 ne peut être initialisée avant que toutes les tâches de G1 ne soient
achevées.
T5 T1
T4
T5
T1 T4 T1
G1 T6 T2 T3
G2 T6 T3
T2 T3 T2
T5
G1//G2 T4

G2*G2 T6
II.4) Construction du graphe de taches
Considérons un algorithme composé de 8 taches T1, …, T8 ; dont le système de précédence associé est le
suivant :
T1<T3 T1<T4 T1<T5 T1<T6 T1<T7 T1<T8
T2<T3 T2<T4 T2<T5 T2<T6 T2<T7 T2<T8
T3<T7 T3<T8
T4<T6 T4<T7 T4<T8
T5<T7
T6<T8

SE-2-CH2 Page 4
L3-Informatique 2014
En éliminant les contraintes redondantes, on obtient l’ensemble de relations suivantes :

T1<T3 T1<T4 T1<T5


T2<T3 T2<T4 T2<T5 T1 T2
T3<T7 T3<T8
T4<T6 T4<T7 T3 T4 T5
T5<T7
T6<T8

T6 T7

T8

II.5) Parallèlisation de tâches dans un système de tâches

(S0)
Soit le système de tache (S0) suivant :
T1 lire X
T2 lire Z
T3 X<-X + Z
T4 Y<- X + Z
T5 afficher Y

(S1)
Le système S1 répartit les 5 tâches en 2 processus P1 P2
parallèles organisés chacun séquentiellement : T1 T2
T3 T4
T5

S1 n'est pas équivalent à S0 (affichage pas forcément identique). S1 est indéterminé.

(S2)
T1 T2
T3
T4
Et S2 ? T5

La mise en parallèle s'effectue par la structure algorithmique :


Parbegin
............
Parend

SE-2-CH2 Page 5
L3-Informatique 2014
Soit : début
parbegin
Exemple 1: Lire a Lire b
lire a ;
lire b ;
parend
parbegin
c a*b d a*b c  a*a ;
d  b*b ;
parend
e c+d e c+d ;
fin

1 2
Exemple 2 : peut-on représenter le graphe ci-contre
de tâches par un programme parallèle utilisant
parbegin et parend ? 3 4

Pour augmenter le degré de multiprogrammation, donc le taux d'utilisation de l'UC, on peut


exécuter en parallèle certaines tâches d'un processus séquentiel.

Exemple 3: (Parallélisme = non déterminisme)


Soient 4 tâches caractérisées par le graphe de précédence ci-contre.
T1 : N:=0;
T2 : N:=N+1;
T3 : N:=N+1;
T4 : afficher N;

On découpe : d3, d2 : lit la valeur de N


f2 f3 : écrit la nouvelle valeur
w=d1f1d3d2f2f3d4f4 donne comme résultat 1
w=d1f1d2f2d3f3d4f4 donne 2

Il y a donc non déterminisme, La raison exacte du non déterminisme est que T3 et T2 lisent et
écrivent dans N (partage d'une case mémoire en lecture et écriture). Il suffit en fait qu'une écrive
et que l'autre lise pour que le résultat dépende de l'ordre d'exécution.

II.2.2) Méthode d'étude :


Notion d'état :
La mémoire centrale peut être vue comme une suite de cellules Ci : M = (C1, C2,..., Cm).
L'état du système Sk (k ∈ [1, l]) après l'événement ak du comportement w = a1 a2 ....al est :
Sk = [C1(k), ...., Cm(k)]. k=0 étant l'état initial.

SE-2-CH2 Page 6
L3-Informatique 2014

Par exemple, considérons le problème précédent et w = d1 f1 d2 f2 d3 f3 d4 f4 d5 f5


Avec M = (X, Y, Z) et S0 = (0, 0, 0)

d1 f1 d2 f2 d3 f3 d4 f4 d5 f5
x 0 0 α α α α α +γ α +γ α +γ α +γ α +γ
y 0 0 0 0 0 0 0 0 α +2γ α +2γ α +2γ
z 0 0 0 0 γ γ γ γ γ γ γ
0 1 2 3 4 5 6 7 8 9 10

Chaque tâche utilise certaines cellules soit pour les consulter soit pour les modifier.
A une tâche T, on associe :
- son domaine de lecture : L = {C'1, …, C'p} ou ensemble des cellules lues (consultées) par T.
- son domaine d'écriture : E = {C"1,…, C"p} ou ensemble des cellules écrites (modifiées) par T.

Ecrire signifie plus généralement modifier l'état d'une ressource.

Tâche Domaine de lecture Domaine d'écriture


Ti Li= {C'1, ..., C'p} Ei= {C", ...C"p}

Dans l'exemple que nous développons, nous obtenons :

Tâche Domaine de lecture Domaine d'écriture


T1 L1 = Ø E1 = { X }
T2 L2 = Ø E2 = { Z }
T3 L3 = { X , Z } E3 = { X }
T4 L4 = { X, Z } E4 = { Y }
T5 L5= {Y } E5 = Ø

A une tâche T, on associe une fonction FT de L dans E

Dans l'exemple que nous développons, FT4 (x, z) = x + z, x et z ∈ N

Sous-suite des valeurs écrites dans une cellule par un comportement w:


V (X, w) = (0, α, α + γ)
V (Y, w) = (0, α + 2 γ)
V (Z, w) = ( 0, γ )

SE-2-CH2 Page 7
L3-Informatique 2014

II.6) Caractère Déterminé d'un Système de Tâches. Conditions de Bernstein

Définition 1: un système de tâches S est déterminé si pour tous comportements w et w' et pour
toute cellule C de M, on a : V (C, w) = V (C, w')

Avec l'exemple que nous traitons, soient w = d1 f1 d2 f2 d3 f3 d4 f4 d5 f5 et


w'= d1 f1 d2 f2 d4 f4 d3 f3 d5 f5
V (Y, w) = (0, α + 2 γ) et V (Y, w') = (0, α + γ). Donc le système de tâches est non déterminé.

- Tout système séquentiel est déterminé.


- Il existe une relation entre le caractère déterminé d'un système et une propriété de non-
interférence de tâches.

Définition 2 : deux tâches T et T', sont non-interférentes vis à vis du système de tâches S si :
1) T est un prédécesseur ou un successeur de T', ou
2) LT ∩ E T' = L T' ∩ ET = ET ∩ ET' = Ø.

Ces conditions sont appelées conditions de Bernstein.

Avec l'exemple que nous développons, dans le système S1, T3 et T4 sont interférentes car T3
n'est ni prédécesseur, ni successeur de T4 et d'autre part L4 ∩ E3 ≠ Ø (vaut {X})

Lorsque l’on sait résoudre ce problème (d’interférence), on peut envisager de transformer un


processus séquentiel (une chaîne de tâches) en un système équivalent, où certaines tâches sont
exécutées en parallèle (parallélisme maximal).

III) Outils d’expression de la concurrence


III.1) Les instructions FORK et JOIN

L’instruction fork L produit deux exécutions parallèles dans le programme, dont l’une
commence à l’instruction étiquetée à L et l’autre est la continuation de l’exécution après
l’instruction fork.

L’instruction join n permet de joindre n exécutions parallèles en une seule exécution. Les (n-
1) premières exécutions se terminent tant disque la neme exécution continuera en séquence.

Join n est équivalent à n = n-1


Si n <> 0 alors terminer.

Où n est une variable entière non négative.


SE-2-CH2 Page 8
L3-Informatique 2014

Exemple 1 : n=2 ; ParBegin


fork L1 ; Lire (a) ;
Lire (b) ;
lire(a) ;
parEnd
goto L2 ; C=a+b ;
L1 : lire(b) ; Écrire (c) ;
L2 : join n ;
c=a+b ;
ecrire(c) ;

III.2) Les bloques d’instructions parallèles : PARBEGIN et PAREND

Les deux instructions ParBeginet, ParEnd permettent de délimiter les blocs d’instructions
parallèles. La syntaxe de l’utilisation est la suivante : ParBegin I1, I2,…... In ParEnd.

Exemple1:(voir ci-dessus)

Remarque : fork et join sont des outils de spécification plus puissants que ParBegin et ParEnd.

Exemple 2 : Soit le graphe de précédence suivant :

Ecrire le programme parallèle coresponsable en utilisant l’outil fork et join.

P1
P1 ; P5;
P2
P3
N1=2 ; Goto L3;
Fork L1 ; L1: p3;
P2 ; L2: join N1;
P4
P4 ; P6;
P6 N2=2 L3: join N2;
P5 Fork L2; P7;
P7

IV) Quelques primitives de manipulation des processus sous linux :(voir les transparent)

SE-2-CH2 Page 9

Vous aimerez peut-être aussi