Programmation/Programmation concurrente
Tous les systèmes d'exploitation actuels sont multi-tâches : Ils permettent l'exécution "en parallèle" de plusieurs applications : lancer un traitement de texte tout en écoutant sa musique préférée.
Au sein de la même application (ou programme), plusieurs tâches peuvent également s'effectuer "en parallèle" :
- Dans un traitement de texte, une tâche récupère ce que l'utilisateur tape tout en vérifiant l'orthographe de ce qui a été tapé précédemment,
- Le logiciel d'écoute de musique a une tâche de lecture du fichier pour le jouer, une autre pour afficher le temps écoulé, ...
"En parallèle"
modifierEn fait, les tâches ne sont pas exécutées en parallèle, à moins que la machine possède plusieurs processeurs. Le système d'exploitation accorde à chaque tâche lancée un peu de temps de processeur pour s'exécuter. Une fois ce temps écoulé, il donne du temps à une autre tâche, etc. La durée et l'attribution du temps dépend du système d'exploitation et de la priorité attribuée à chaque tâche (priorité pouvant évoluer dans le temps). Si le système dispose de plusieurs processeurs, ceux-ci travaillent en parallèle pour exécuter plus d'une tâche à la fois.
Exemple de tâches :
Tâche 1: Tâche 2: A ← B + 1 C ← "Exemple"
Et un exemple d'ordre d'exécution :
Temps Tâche 1: Tâche 2: t tmp ← B + 1 t+1 C ← "Exemple" t+2 A ← tmp