0% ont trouvé ce document utile (0 vote)
56 vues23 pages

Programmation Concurrente : Définitions et Enjeux

Transféré par

amelgleyallaoui
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
56 vues23 pages

Programmation Concurrente : Définitions et Enjeux

Transféré par

amelgleyallaoui
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Plan

Plan

n Définitions

n Intérêts de la programmation concurrente

n Problèmes possibles

n Généralités sur la manipulation de processus et de tâches

n Ecriture et lancement de processus et de tâches

n Conclusion
Quelques
Quelques définitions
définitions
Programmation
Programmation concurrente
concurrente ::
définition
définition

On appelle programmation concurrente les techniques et


notations permettant :

– l'expression et la manipulation (construction, destruction,


lancement, arrêt, ...) d'entité concurrentes que l'on appelle
tâches ou processus

– la mise en place de moyens de communication et de


synchronisation entre ces entités

– l'abstraction de l'exécution réelle des processus ou tâches


sur une architecture parallèle ou non
Programmation
Programmation temps
temps réel
réel ::
définition
définition

La programmation temps réel est assimilable à la


programmation concurrente avec comme particularité :

– Des mécanismes ou notations permettant d'accéder au temps réel


(généralement une horloge temps réel)

– Des mécanismes permettant de définir ou de modifier la priorité des


processus et/ou de définir et de modifier des échéances temporelles

– La suppression ou l’adaptation de certains traits du langage utilisé afin


d'alléger l'applicatif et/ou de le rendre plus déterministe
Intérêts
Intérêts de
de la
la programmation
programmation
concurrente
concurrente
Optimisation
Optimisation de
de l'utilisation
l'utilisation des
des
ressources
ressources
Parallélisation d’une recherche
Optimisation
Optimisation de
de l'utilisation
l'utilisation des
des
ressources
ressources (suite)
(suite)

Optimise l'utilisation du CPU sur une architecture mono-processeur par la


prise en compte du parallélisme entre calcul et entrées / sorties
Calquer
Calquer le
le monde
monde réel
réel

Le monde réel est fait d'entité concurrentes qui interagissent

– Un système de réservation de billets doit nécessairement


prendre en compte le fait que les agences effectuent les
réservations en parallèle.

– Un système de guidage doit utiliser les informations fournis


par plusieurs capteurs simultanément et donner des ordres à
plusieurs actionneurs
Calquer
Calquer le
le monde
monde réel
réel (suite)
(suite)

La traduction d‘un monde à base d'entité concurrentes à l'aide


de techniques de programmation séquentielle conduit à

– inclure dans le code la répartition de l'appel des différents


composants du système

– modifier le programme dès que l'on change d'architecture


(nombre de processeur, répartition de l'application)

– modifier profondément le programme dès que l'on inclu une


nouvelle activité
Problèmes
Problèmes inhérents
inhérents àà la
la
programmation
programmation concurrente
concurrente
Problèmes
Problèmes de
de sûreté
sûreté

n La synchronisation des processus ou tâches peut entraîner des


problèmes tels que l'interblocage ou la famine

– Par exemple, le processus A attend le processus B, qui lui même attend


le processus C qui lui même attend le processus A : il y a un interblocage
(ou étreinte fatale ou encore deadlock)

– Autre exemple, le processus A et B forment une coalition pour empêcher


C d'accéder à une ressource (A et B se la passent) : il y a famine du
processus C

n Ces problèmes sont inhérents à la concurrence


Problèmes
Problèmes de
de vivacité
vivacité

n Suite à une mauvaise entente, il est possible que deux processus


n'arrivent jamais à se synchroniser; ceci peut conduire à l'absence de
respect d'un objectif fixé sans pour autant qu'il y ait interblocage

Par exemple, pour réparer un chauffe-eau électrique, le plombier peut


exiger que l'électricité soit au norme : il faut donc l'intervention préalable
de l'électricien; l'électricien peut lui exiger de ne faire les travaux que
lorsque les problèmes de fuites d'eau seront résolus : il faut au préalable
l'intervention du plombier

n Les deux processus sont actifs (ils viennent régulièrement) mais ils ne
font pas progresser les choses : on est face à une activité non
constructive et donc un problème de vivacité
Difficile
Difficile reproductibilité
reproductibilité des
des erreurs
erreurs

n L'entrelacement des différents processus (chacun peut avancer à son


rythme) va définir un nombre de comportements possibles très
important

– Si l'on a quatre processus indépendant, chacun ayant dix états différents,


on obtient un système complet ayant 10^4 = 10 000 états différents

– Chaque exécution ne va pas nécessairement faire évoluer exactement de


la même façon les processus (leur évolution dépend généralement du
monde extérieur qui est en perpétuel changement)

n Ainsi, si une erreur survient il est très difficile de reproduire cette erreur
afin de comprendre son origine
Utilisation
Utilisation de
de la
la concurrence
concurrence :: bilan
bilan positif
positif

n La concurrence introduit des problèmes spécifiques qui


peuvent être difficile à analyser

n Cependant, elle simplifie énormément le travail du


concepteur et du programmeur qui peut à la fois calquer la
réalité dans son programme tout en tirant partie de
l'optimisation possible des ressources

n Il existe de plus des méthodes de test formel adaptés à


l'analyse de systèmes concurrents
Généralités
Généralités sur
sur la
la manipulation
manipulation de
de
processus
processus etet de
de tâches
tâches
Terminologie
Terminologie

On dit qu’un système est :

n Multi-tâches lorsque plusieurs entités concurrentes s'exécutent sur une


machine mono processeur

n Parallèle lorsque plusieurs entités concurrentes s'exécutent sur plusieurs


processeurs avec une mémoire commune

n Réparti lorsque plusieurs entités concurrentes s'exécutent sur des machines


distinctes reliées en réseau et ne partageant pas de mémoire commune
Terminologie
Terminologie (suite)
(suite)

n On dit que deux processus ou tâches sont

– indépendants si l'évolution de l'un n'influe pas et ne dépend pas de l'autre

– en coopération si chacun mène un travail distinct de l'autre mais avec un


objectif commun et la mise en place de synchronisation et de
communication et qu'il n'y a pas compétition sur l'accès à certaine
ressources

– en compétition lorsqu'ils sont en coopération mais lorsque, de plus, ils


sont en compétition sur l'accès de certaines ressources

n Selon le niveau d'observation, deux processus peuvent être vus en


coopération ou en compétition
Processus vs
Processus vs tâches
tâches

n Un processus possède son propre espace d'adressage : il


s'exécute sur sa propre machine virtuelle;

n Le système d'exploitation (ou le "run-time" dans le cas d'un


exécutif) met en place des mécanismes de protection
contre l'interférence inter-processus

n Le partage de mémoire est alors soit impossible soit doit se


faire de manière explicite (i.e. appel système)
Processus vs
Processus vs tâches
tâches (suite)
(suite)

n Une tâche partage son espace d'adressage (sa machine


virtuelle) avec d'autres tâches (dépend du système et de la
création des tâches)

n Les mécanismes de protection limitant l'interférence inter-


processus n'existent pas pour les tâches : une tâche
accède sans limite à sa machine virtuelle

n Le programmeur (et/ou le langage utilisé) doit mettre en


place manuellement ces mécanismes de contrôle
Etats
Etats de
de base
base d'un
d'un processus
processus
Etat
Etat d'initialisation
d'initialisation

n L'initialisation d'un processus (ou d'une tâche) consiste à


construire un environnement d'exécution

n Selon les constructions offertes par le langage ou le


système il est ou non possible de passer en paramètre du
processus ou de la tâche des valeurs lui permettant de
s'initialiser
Etat
Etat d'exécution
d'exécution

L'état "exécution" peut être décomposé en sous états:


prêt/bloqué/exécution réelle
Etat
Etat de
de terminaison
terminaison

n Un processus ou une tâche peut terminer sous différentes conditions

– fin normale des instructions

– suicide par l'exécution d'une instruction de terminaison

– avorté par l'action d'un autre processus/tâche

– fin sur erreur (exception ou signal non récupéré)

– lorsque son rôle n'est plus utile

– jamais

Vous aimerez peut-être aussi