Synchronisation (multitaches)

Synchronisation (multitaches)

Synchronisation (multitâches)

Page d'aide sur l'homonymie Pour les articles homonymes, voir Synchronisation.
Problèmes classiques des
méthodes de synchronisation

Couplage fort - Famine

Interblocage - Inversion de priorité

Les méthodes de synchronisation

Barrière de synchronisation - Futex - Moniteur

Mutex - Sémaphore - Spinlock


Objet: Décrire les standards de la synchronisation de processus légers.

  • Les mutex
  • Les sémaphores
  • Les variables conditionnelles (condition variable en anglais)

À noter : les problèmes de synchronisation s'appliquent également au cas de deux processus distincts. On parle alors de Communication inter-processus ou IPC.

Sommaire

Pourquoi faut-il synchroniser?

À un instant t, deux processus légers peuvent lire ou écrire dans une même zone mémoire. Cette zone mémoire peut représenter une variable globale (en procédural), statique (en orienté-objet), ou tout simplement parce que deux variables pointent la même zone mémoire dans le tas.

Dans ce cas, si les opérations de lecture et d'écriture ne sont pas atomiques, ou si tout simplement les deux processus légers s'exécutent chacun sur un processeur différent, simultanément, le résultat sera imprédictible. Autrement dit, il pourra y avoir perte ou corruption de données.

Les mutex

Un mutex est une donnée permettant de verrouiller l'accès à une ressource partagée, de telle sorte qu'elle ne soit accessible que par un processus léger à un instant donné.

Voici un exemple fictif d'implémentation d'un mutex sous la forme d'un entier:

 -- initialisation
 mutex := 0
 -- ici, on effectue un appel bloquant, jusqu'à ce que la ressource soit disponible.
 -- certaines implémentations permettent de spécifier un délai à ne pas dépasser (timeout)
 -- CODE A VERIFIER
 définir verrouiller(mutex a):
     attendre jusqu'à ce que (mutex = 0)
     mutex := mutex + 1
 fin définir
 -- déverrouiller : rendre disponible la ressource pour les autres tâches
 définir déverrouiller(mutex a):
     si mutex < 1 :
         erreur
     fin si
     mutex := mutex - 1
 fin définir

Typiquement, si on souhaite consulter en lecture ou en écriture une variable globale (qui donc, est partagée par tous les processus légers) on place cette opération dans une section critique :

  • on verrouille le mutex
  • on lit ou met à jour la donnée
  • on déverrouille le mutex

Lorsque l'on ne verrouille pas une ressource pour les opérations de lecture, il existe un risque de corruption de données lors d'une opération d'écriture.

Le besoin d'atomicité n'existe cependant pas lorsqu'une variable statique est initialisée au démarrage du processus, puis jamais modifiée.

Implémentation

Voici, un tableau récapitulatif de l'implémentation de la synchronisation pour les processus lourds et les processus légers.

Type processus lourd, fork wait processus lourd, sémaphore IPC processus lourd, tube processus lourd, message IPC processus lourd, segment partagé Java Thread
système de nommage PID / getPId cle IPC interne cle IPC cle IPC les objets
nombre d'activités 2 N 2 N N N
appel bloquant wait() p() read() receive() non syncronized/wait()
communication exit(p) non stream message taille du segment les objets
volume de la communication 2 octets non non limité taille de la boite aux lettres non limité machine virtuelle

Problèmes et applications

  • Portail de l’informatique Portail de l’informatique
Ce document provient de « Synchronisation (multit%C3%A2ches) ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Synchronisation (multitaches) de Wikipédia en français (auteurs)

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • Synchronisation (multitâches) — Pour les articles homonymes, voir Synchronisation. Dans le contexte de la programmation concurrente, le terme de synchronisation se réfère à deux concepts distincts mais liés : la synchronisation de processus et la synchronisation de données …   Wikipédia en Français

  • Multitâches — Multitâche En informatique, un système d’exploitation est dit multitâche (en anglais multi task) s’il permet d’exécuter, de façon apparemment simultanée, plusieurs programmes sur un ordinateur. On parle également de multiprogrammation. Le terme… …   Wikipédia en Français

  • Synchronisation — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Sur les autres projets Wikimedia : « Synchronisation », sur le Wiktionnaire (dictionnaire universel) La synchronisation (du grec συν / sun …   Wikipédia en Français

  • Multitâche — Pour les articles homonymes, voir Multitâche (homonymie). Un système d exploitation est multitâche en anglais : multi task s’il permet d’exécuter, de façon apparemment simultanée, plusieurs programmes informatiques. On parle également de… …   Wikipédia en Français

  • Communication Inter-processus — En informatique, les communications inter processus (Inter Process Communication ou IPC) regroupent un ensemble de mécanismes permettant à des processus concurrents (ou distants) de communiquer. Ces mécanismes peuvent être classés en trois… …   Wikipédia en Français

  • Communication inter-processus — En informatique, les communications inter processus (Inter Process Communication ou IPC) regroupent un ensemble de mécanismes permettant à des processus concurrents (ou distants) de communiquer. Ces mécanismes peuvent être classés en trois… …   Wikipédia en Français

  • Communication interprocessus — Communication inter processus En informatique, les communications inter processus (Inter Process Communication ou IPC) regroupent un ensemble de mécanismes permettant à des processus concurrents (ou distants) de communiquer. Ces mécanismes… …   Wikipédia en Français

  • Inter-Process Communication — Communication inter processus En informatique, les communications inter processus (Inter Process Communication ou IPC) regroupent un ensemble de mécanismes permettant à des processus concurrents (ou distants) de communiquer. Ces mécanismes… …   Wikipédia en Français

  • LACATRE — est l abréviation de Langage d Aide à la Conception d Applications Temps REel. C est un langage graphique utilisé pour la conception de programmes informatiques multitâches et temps réels. Ce langage est très utile pour représenter les… …   Wikipédia en Français

  • Multi-tâche — Multitâche En informatique, un système d’exploitation est dit multitâche (en anglais multi task) s’il permet d’exécuter, de façon apparemment simultanée, plusieurs programmes sur un ordinateur. On parle également de multiprogrammation. Le terme… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”