Software concurrency
Fils d’exécution tournants concurremment
2
Évolution de la programmation
La programmation au départ était linéaire.
Série d’instructions exécutées séquentiellement.
Rien n’est fait simultanément !
Résultat déterministe.
Maintenant, la programmation implique
l’exécution de tâches concurrentes partageant
des variables, des ressources.
«Fil d’exécution » (en anglais thread);
Interruptions;
Résultat non-déterministe.
3
Évolution de la programmation
Des problèmes risquent de survenir si cette
exécution concurrente n’est pas prise en
compte.
Certains événements montrent que cela peut même
impliquer des pertes de vies.
Exemple: Therac-25
Exemple
Supposons que nous avons deux routines
concurrentes dont le contenu est identique:
La variable i est initialisée à 0.
Quelle sera la valeur de i lorsque ces deux
routines concurrentes se seront exécutées ?
Est-ce que se sera 1 ou 2 ?
4
LDI i,R1
ADDI 1,R1
STI R1,i
LDI i,R2
ADDI 1,R2
STI R2,i
Exemple
Supposons que nous avons deux routines
concurrentes dont le contenu est identique:
Réponse: parfois 1, parfois 2.
Impossible à prévoir.
Cela est inacceptable.
5
LDI i,R1
ADDI 1,R1
STI R1,i
LDI i,R2
ADDI 1,R2
STI R2,i
1 / 73 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !