Les processus partagent généralement le processeur et une zone mémoire.
Nous faisons l'hypothèse qu'il est impossible que les deux processus accèdent au même instant (même cycle du processeur) à la même variable.
Exemple : Soient les deux processus de mise à jour d'un compte bancaire et la variable globale compte initialisée à 10.
Processus A var aux : integer begin aux := compte; aux := aux + 10; compte := aux; end. |
Processus B var aux : integer begin aux := compte; aux := aux - 5; compte := aux; end. |
La figure représente le graphe des comportements du
``programme'' constitué des deux processus. Chaque n
ud contient les
valeurs des trois variables, et les arcs représentent les instructions.
Le résultat dépend de l'entrelacement des actions, donc de l'ordonnancement des processus. Il y a donc un besoin de contrôler le déroulement d'un processus, c'est à dire l'entrelacement des actions afin de pouvoir garantir le résultat (15 ici).