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 nud 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).