Programmation/Programmation concurrente

Un livre de Wikilivres.

Cette page est considérée comme une ébauche à compléter . Si vous possédez quelques connaissances sur le sujet, vous pouvez les partager en éditant dès à présent cette page (en cliquant sur le lien « modifier »).

Ressources suggérées : Aucune (vous pouvez indiquer les ressources que vous suggérez qui pourraient aider d'autres personnes à compléter cette page dans le paramètre « ressources » du modèle? engendrant ce cadre)

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"[modifier | modifier le wikicode]

En 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