Qu'est-ce que la synchronisation des processus?
La synchronisation des processus consiste à coordonner l'exécution des processus de manière à ce qu'aucun processus ne puisse avoir accès aux mêmes données et ressources partagées.
Il est particulièrement nécessaire dans un système multi-processus lorsque plusieurs processus s'exécutent ensemble et que plusieurs processus tentent d'accéder à la même ressource ou aux mêmes données partagées en même temps.
Cela peut conduire à l'incohérence des données partagées. Ainsi, le changement apporté par un processus ne se reflétait pas nécessairement lorsque d'autres processus accédaient aux mêmes données partagées. Pour éviter ce type d'incohérence des données, les processus doivent être synchronisés les uns avec les autres.
Dans ce didacticiel sur le système d'exploitation, vous apprendrez:
- Qu'est-ce que la synchronisation des processus?
- Comment fonctionne la synchronisation des processus?
- Sections d'un programme
- Qu'est-ce qu'un problème de section critique?
- Règles pour la section critique
- Solutions à la section critique
Comment fonctionne la synchronisation des processus?
Par exemple, le processus A modifie les données dans un emplacement de mémoire pendant qu'un autre processus B tente de lire les données à partir du même emplacement de mémoire. Il y a une forte probabilité que les données lues par le deuxième processus soient erronées.
Sections d'un programme
Voici quatre éléments essentiels de la section critique:
- Section d'entrée: elle fait partie du processus qui décide de l'entrée d'un processus particulier.
- Section critique: Cette partie permet à un processus d'entrer et de modifier la variable partagée.
- Section de sortie: La section de sortie permet à l'autre processus qui attend dans la section d'entrée, d'entrer dans les sections critiques. Il vérifie également qu'un processus qui a terminé son exécution doit être supprimé via cette section.
- Section Reste: Toutes les autres parties du Code, qui ne sont pas dans la Section Critique, Entrée et Sortie, sont appelées section Reste.
Qu'est-ce qu'un problème de section critique?
Une section critique est un segment de code auquel un processus de signal peut accéder à un moment donné. La section se compose de ressources de données partagées auxquelles d'autres processus doivent accéder.
- L'entrée de la section critique est gérée par la fonction wait (), et elle est représentée par P ().
- La sortie d'une section critique est contrôlée par la fonction signal (), représentée par V ().
Dans la section critique, un seul processus peut être exécuté. D'autres processus, en attente d'exécuter leur section critique, doivent attendre que le processus en cours termine son exécution.
Règles pour la section critique
La section critique doit appliquer les trois règles:
- Exclusion mutuelle: L'exclusion mutuelle est un type spécial de sémaphore binaire utilisé pour contrôler l'accès à la ressource partagée. Il comprend un mécanisme d'héritage de priorité pour éviter les problèmes d'inversion de priorité étendue. Pas plus d'un processus peut s'exécuter dans sa section critique à la fois.
- Progression: Cette solution est utilisée lorsque personne ne se trouve dans la section critique et que quelqu'un veut entrer. Ensuite, les processus qui ne sont pas dans leur section de rappel devraient décider qui doit entrer, dans un temps limité.
- Attente liée: Lorsqu'un processus demande d'entrer dans la section critique, il existe une limite spécifique quant au nombre de processus pouvant entrer dans leur section critique. Ainsi, lorsque la limite est atteinte, le système doit autoriser la demande adressée au processus pour entrer dans sa section critique.
Solutions à la section critique
Dans la synchronisation des processus, la section critique joue le rôle principal pour que le problème soit résolu.
Voici quelques méthodes largement utilisées pour résoudre le problème de la section critique.
Solution Peterson
La solution de Peterson est une solution largement utilisée aux problèmes de sections critiques. Cet algorithme a été développé par un informaticien Peterson, c'est pourquoi il est nommé comme solution de Peterson.
Dans cette solution, lorsqu'un processus s'exécute dans un état critique, l'autre processus n'exécute que le reste du code, et l'inverse peut se produire. Cette méthode permet également de s'assurer qu'un seul processus s'exécute dans la section critique à un moment donné.
Exemple
PROCESS PiFLAG[i] = truewhile( (turn != i) AND (CS is !free) ){ wait;}CRITICAL SECTION FLAG[i] = falseturn = j; //choose another process to go to CS
- Supposons qu'il existe N processus (P1, P2,… PN) et que chaque processus à un moment donné nécessite d'entrer dans la section critique
- Un tableau FLAG [] de taille N est conservé, ce qui est faux par défaut. Ainsi, chaque fois qu'un processus a besoin d'entrer dans la section critique, il doit définir son indicateur sur true. Par exemple, si Pi veut entrer, il définira FLAG [i] = TRUE.
- Une autre variable appelée TURN indique le numéro de processus qui souhaite actuellement entrer dans le CS.
- Le processus qui entre dans la section critique en sortant changerait le TURN en un autre numéro de la liste des processus prêts.
- Exemple: le virage est 2 puis P2 entre dans la section critique et en sortant du virage = 3 et donc P3 sort de la boucle d'attente.
Matériel de synchronisation
Parfois, les problèmes de la section critique sont également résolus par le matériel. Certains systèmes d'exploitation offrent une fonctionnalité de verrouillage dans laquelle un processus acquiert un verrou en entrant dans la section Critique et libère le verrou après l'avoir quitté.
Ainsi, lorsqu'un autre processus tente d'entrer dans la section critique, il ne pourra pas y entrer car il est verrouillé. Il ne peut le faire que s'il est libre en acquérant le verrou lui-même.
Serrures Mutex
Le matériel de synchronisation n'est pas une méthode simple à mettre en œuvre pour tout le monde, une méthode logicielle stricte connue sous le nom de Mutex Locks a également été introduite.
Dans cette approche, dans la section d'entrée du code, un VERROUILLAGE est obtenu sur les ressources critiques utilisées à l'intérieur de la section critique. Dans la section de sortie, ce verrou est libéré.
Solution de sémaphore
Le sémaphore est simplement une variable non négative et partagée entre les threads. C'est un autre algorithme ou une solution au problème de la section critique. C'est un mécanisme de signalisation et un thread qui attend sur un sémaphore, qui peut être signalé par un autre thread.
Il utilise deux opérations atomiques, 1) attente et 2) signal pour la synchronisation du processus.
Exemple
WAIT ( S ):while ( S <= 0 );S = S - 1;SIGNAL ( S ):S = S + 1;
Résumé:
- La synchronisation des processus consiste à coordonner l'exécution des processus de manière à ce qu'aucun processus ne puisse avoir accès aux mêmes données et ressources partagées.
- Les quatre éléments de la section critique sont 1) Section d'entrée 2) Section critique 3) Section de sortie 4) Section de rappel
- Une section critique est un segment de code auquel un processus de signal peut accéder à un moment donné.
- Les trois règles obligatoires qui doivent être appliquées par section critique sont: 1) Exclusion mutuelle 2) Solution de processus 3) Attente liée
- L'exclusion mutuelle est un type spécial de sémaphore binaire utilisé pour contrôler l'accès à la ressource partagée.
- La solution de processus est utilisée lorsque personne ne se trouve dans la section critique et que quelqu'un le souhaite.
- Dans la solution d'attente liée, après qu'un processus a fait une demande pour entrer dans sa section critique, il y a une limite pour le nombre d'autres processus pouvant entrer dans leur section critique.
- La solution de Peterson est une solution largement utilisée aux problèmes de sections critiques.
- Les problèmes de la section critique sont également résolus par la synchronisation du matériel
- Le matériel de synchronisation n'est pas une méthode simple à mettre en œuvre pour tout le monde, c'est pourquoi la méthode logicielle stricte connue sous le nom de Mutex Locks a également été introduite.
- Le sémaphore est un autre algorithme ou une solution au problème de la section critique.