SE2 - Chapitre 1
SE2 - Chapitre 1
SE2 - Chapitre 1
1) Introduction
Plusieurs facteurs conduisent à exprimer une application comme un ensemble de
processus relativement indépendants les uns des autres et non plus comme un
programme dont l’exécution est séquentielle.
Selon l’application traitée, les processus, au sens informatique, peuvent décrire des
processus physiques réels, ou représenter des machines réelles ou virtuelles. Enfin, ils
peuvent contrôler et diriger des processus réels.
Les processus qui concourent à la réalisation d’une application ont nécessairement des
relations de coopération entre eux. De plus, la mise en œuvre de plusieurs processus
à l’aide d’un nombre limité de ressources (mémoire, périphériques, CPU, …), pose
des problèmes de compétition.
La mise en œuvre des problèmes typiques de coopération et de compétition se fait par
différents moyens de synchronisation et de communication.
La concurrence est un aspect de l’informatique et de la programmation, indissociable
des systèmes actuels. Le parallélisme est un domaine issu de la concurrence.
Lorsque, dans un système informatique, plusieurs processus sont exécutés
simultanément, on dit que ces processus sont exécutés en concurrence, ou aussi que
ces processus sont concurrents.
On parle de parallélisme, lorsque l’on a affaire à des processus concurrents dont le but
est de résoudre un problème –lorsque l’on recherche la meilleure performance- en
utilisant plusieurs processeurs en parallèle.
Etat d’un processus : Permet d’exprimer si celui-ci est réellement exécuté, s’il est prêt
à être exécuté (il lui manque le processeur) ou encore s’il est en attente de ressources
autres que le processeur (mémoire, imprimante, …) ou d’un événement extérieur.
Opération sur les processus :
1
Créer : un processus peut en créer un autre. On a alors un processus père et un
processus fils (Commande fork d'UNIX) ;
Détruire : s'auto-détruit (exit pour UNIX) ou est détruit par un autre (kill pour
UNIX) ;
Mettre en attente et réveiller ;
Suspendre et reprendre ;
Changer la priorité.
Relations entre processus :
Coopération ;
Compétition.
3) Concurrence
2
b) - Par le paradigme producteurs-consommateurs, on exprime une coopération fiable
car on réalise un contrôle de flux et on garantit que tout message émis est bien reçu une
fois et une seule, après avoir été émis.
- La coopération comprend des producteurs et des consommateurs qui se partagent un
tampon, avec un nombre maximal, taille du tampon. Le contrôle de flux freine les
producteurs s’ils vont trop vite pour les consommateurs.
Tampon de N cases
Producteur Consommateur
Produire un msg ; Retirer un msg ;
Déposer le msg ; Consommer le msg ;
3
* - Nous appelons contrôleur une entité abstraite à laquelle sont reliés les processus à
synchroniser. L’ensemble forme le système de processus.
Processus N
Processus 1
Processus i Contrôleur
4
- Représentation d’1 processus :
1 processus représente l’évolution du nageur dans le système considéré, soit :
début
se déshabiller ;
se baigner ;
s’habiller
fin
qui sont seuls significatifs par rapport au problème posé C’est lors de ces
événements que l’état des ressources est modifié.
- Expression de synchronisation :
De façon générale, quelle que soit l’action X, le nombre d’actions X en cours, est
donné par la relation :
Quant au nombre de paniers occupés, il est égal au nombre de gens dans la piscine
(en cabine, dans le bain), soit :
5
Le système considéré doit obéir aux contraintes suivantes (l’invariant du
problème) :
Cet invariant peut être mis en défaut à chaque nouvel événement autorisation. Ce
sont ces événements là que l’observateur (= le synchroniseur = contrôleur) doit
contrôler, se contentant par contre d’enregistrer les autres :
- Mise en œuvre :
C’est construire un mécanisme opératoire qu’on essaie de prouver conforme à la
spécification.
MEO centralisée =
(Schéma)
Le contrôleur est un observateur unique qui perçoit tous les évènements significatifs.
On peut utiliser soit 4 compteurs correspondants aux comptes d’événements répertoriés
(autorisation de déshabillage, fin de déshabillage, aut. d’hab., fin d’hab.) soit 2
compteurs nbre de cabines occupées et nbre de paniers occupes.
Le contrôleur peut être explicité comme un processus unique, comme un moniteur ou bien
être implicite. Dans ce cas, les compteurs sont des variables partagées que chaque
processus contrôle et MAJ en exclusion mutuelle (en utilisant les sémaphores, …).
Quelle que soit la solution retenue, son utilisation nécessite l’existence d’un
mécanisme d’exclusion mutuelle si l’on doit pouvoir exprimer n’importe quel
problème de synchronisation.
6
4) Systèmes de tâches, outils d’expressions
4.1) Modèles de représentation des processus
a) Processus séquentiels
Tâche : unité élémentaire de traitement ayant une cohérence logique.
Processus P : on écrit P=T1....Tn.
di
Ti
Fi
(d : début, f : fin)
Suite de tâches T1, T2, ..., Tn est associé à une suite d1f1d2f2....dnfn d1f1d2f2....dnfn est
appelé mot de l'alphabet A={d1,f1,...,dn,fn}.
7
Soit un système de tâches S=(E, <), on interprète la relation < comme suit : T<T'
<=> terminaison de T nécessairement avant début de T'. Ainsi, si on a ni T<T' ni
T'<T on dira que les tâches sont exécutables en parallèle.
Le graphe de précédence est une représentation graphique de la relation ->.
Le langage d'un système de tâche est défini comme l'ensemble des mots qui satisfont
les contraintes du graphe de précédence.
8
Exemple :
début début
lire(a) ; PARBEGIN
lire(b) ; lire(a) ;
ca+b; lire(b) ;
écrire(c) ; PAREND
fin ca+b;
écrire(c) ;
fin
9
Exemple : (du 6.1)
début début
lire(a) ; n=2;
lire(b) ; Fork I1 ;
ca+b; lire(a) ;
écrire(c) ; Goto I2 ;
fin I1 : lire(b) ;
I2 : Join n ;
Ca+b;
Ecrire(c) ;
fin
10