Faculté des sciences de Gabes 28/10/2015 Cours de
Transcription
Faculté des sciences de Gabes 28/10/2015 Cours de
Faculté des sciences de Gabes 28/10/2015 28/10/2015 Khaled Hassine 1 CHAPITRE I – SYNCHRONISATION DES PROCESSUS Par : Khaled Hassine [email protected] Khaled Hassine 28/10/2015 2 PLAN Introduction Section critique et exclusion mutuelle Solutions classiques Solution avancée : Les sémaphores Problèmes classiques 28/10/2015 Khaled Hassine Cours de Système d’exlpoitation 3 1 Faculté des sciences de Gabes 28/10/2015 PLAN Introduction Section critique et exclusion mutuelle Solutions classiques Solution avancée : Les sémaphores Problèmes classiques 28/10/2015 Khaled Hassine 4 Position du problème Les processus d’un système ne s’exécutent pas tous de manière isolée. Certains processus ont besoin de coopérer, et nécessitent donc des moyens de communication et de synchronisation, et d’autres se trouvent en compétition pour les ressources du système, 28/10/2015 soit à cause de la nature physique de la ressource (non partageabilité), soit parce que les opérations sur cette ressource peuvent provoquer des incohérences ou des interblocages. Khaled Hassine 5 Exemple : sérialisation de travaux d’impression Les tâches à imprimer sont stockées dans une file, tel que chaque tâche reçoive à son arrivée un numéro d’ordre d’exécution strictement croissant. Pour administrer cette file, deux variables globales partagées : Libre: contiennent le prochain numéro de tâche à attribuer, Prochain: le prochain numéro de tâche à imprimer. On a donc toujours Libre Prochain. 28/10/2015 Khaled Hassine Cours de Système d’exlpoitation 6 2 Faculté des sciences de Gabes 28/10/2015 Problème de synchronisation Prochain Libre 4 7 4 Job 4 5 Job 5 6 Job 6 Processus A 7 Processus B 28/10/2015 Khaled Hassine 7 Algorithme des processus Si, au même moment, deux processus A et B souhaitent lancer l’impression d’un fichier, ils doivent chacun exécuter la séquence suivante ; Algorithme Impression () 28/10/2015 Local_Libre ← Libre Placer-Job(Local_Libre) Libre ← Local_Libre+1 Khaled Hassine 8 Séquence problématique Le processus A lit la variable Libre et y trouve la valeur 7, et il est ensuite interrompu. Le processus B prend la main et lit la valeur de Libre qui est toujours à 7 et met son fichier à cet emplacement ensuite il incrémente la variable Libre qui passe à 8. Quand le processus A reprend son exécution, dans ses registres il trouve la valeur de libre à 7, il met son fichier à l'emplacement 7 et écrase celui de B qui ne sera jamais imprimé. 28/10/2015 Khaled Hassine Cours de Système d’exlpoitation 9 3 Faculté des sciences de Gabes 28/10/2015 Problème de synchronisation Prochain Libre 4 8 4 Job 4 5 Job 5 6 Job 6 7 Job -7 Pro B Processus A Processus B 28/10/2015 Khaled Hassine 10 Quand on aura problème ? Si le processus à effectuer cette séquence est interrompu par l’ordonnanceur entre la première et la troisième instruction, les deux processus utiliseront le même numéro pour placer leur tâche, et l’un des deux travaux sera perdu. Cependant, à la fin, le contenu de la file sera cohérent avec l’état des variables, et le processus d’impression ne pourra détecter aucune anomalie. 28/10/2015 Khaled Hassine 11 Que doit fournir un SE efficace ? Il est donc nécessaire que le système fournisse un support sûr et efficace de la communication interprocessus, permettant tant la synchronisation que l’échange de données. En fait, tous les problèmes de synchronisation se ramènent au problème de l’accès concurrent à une variable partagée. La mise au point de programmes contenant de tels accès est difficile, car ces programmes peuvent fonctionner pendant de longues périodes de temps et produire des résultats incohérents de façon imprévisible. 28/10/2015 Khaled Hassine Cours de Système d’exlpoitation 12 4 Faculté des sciences de Gabes 28/10/2015 PLAN Introduction Section critique et exclusion mutuelle Solutions classiques Solution avancée : Les sémaphores Problèmes classiques 28/10/2015 Khaled Hassine 13 Définition La solution conceptuellement naturelle à la résolution des problèmes d’accès concurrents consiste à interdire la modification de données partagées à plus d’un processus à la fois, c'est-à-dire définir un mécanisme d’exclusion mutuelle sur des portions spécifiques du code, appelées sections critiques. 28/10/2015 Khaled Hassine 14 Définition Une section critique (noté SC) est une partie du processus où peut avoir lieu un conflit d'accès. Elle contient des instructions utilisant des variables ou des ressources partagées par d'autres processus. On rentre en section critique, par une section d'entrée (noté SE) qui permet de mettre en œuvre une condition et on la quitte par une section de sortie (noté SS). Si une SC est exécutée en entier, le problème est résolu. Or, un processus peut être interrompu à tout moment notamment au milieu de sa section critique. 28/10/2015 Khaled Hassine Cours de Système d’exlpoitation 15 5 Faculté des sciences de Gabes 28/10/2015 Squelette d’un processus SE : Initialisation et mise en attente éventuellement SC : Section critique exécutée en exclusion mutuelle SS : Mise à la bonne valeur des états des variables partagées (donner la main aux autres processus) 28/10/2015 Khaled Hassine 16 Le problème de la section critique Lorsqu’un processus manipule une donnée (ou ressource) partagée, nous disons qu’il se trouve dans une section critique (SC) (associée à cette donnée) Le problème de la section critique est de trouver un algorithme d`exclusion mutuelle de processus dans l`exécution de leur SCs afin que le résultat de leurs actions ne dépendent pas de l’ordre d’entrelacement de leur exécution (avec un ou plusieurs processeurs) L’exécution des sections critiques doit être mutuellement exclusive: à tout instant, un seul processus peut exécuter une SC pour une var donnée (même lorsqu’il y a plusieurs processeurs) Ceci peut être obtenu en plaçant des instructions spéciales dans les sections d`entrée et sortie Pour simplifier, dorénavant nous faisons l’hypothèse qu’il n’y a qu’une seule SC dans un programme. 17 Structure du programme Chaque processus doit donc demander une permission avant d’entrer dans une section critique (SC) La section de code qui effectue cette requête est la section d’entrée La section critique est normalement suivie d’une section de sortie Le code qui reste est la section restante (SR): non-critique repeat section d’entrée section critique section de sortie section restante forever 18 Cours de Système d’exlpoitation 6 Faculté des sciences de Gabes 28/10/2015 Exclusion mutuelle La solution conceptuellement naturelle à la résolution des problèmes d’accès concurrents consiste à interdire la modification de données partagées à plus d’un processus à la fois, c'està-dire définir un mécanisme d’exclusion mutuelle sur les portions spécifiques (sections critiques) 28/10/2015 Khaled Hassine 19 4 critères d’évaluation du comportement de SC deux processus ne peuvent être simultanément dans la même SC ; (Exclusion mutuelle) aucune hypothèse n’est faite sur la vitesse relatives des processus, ni sur le nombre des processeurs ; (Progression normale) aucun processus suspendu en dehors d’une SC ne peut bloquer les autres ; (Attente bornée) aucun processus ne doit attendre trop longtemps avant d’entrer en SC. (Absence de blocage). 28/10/2015 Khaled Hassine 20 Critères nécessaires pour solutions valides Exclusion Mutuelle Non interférence: À tout instant, au plus un processus peut être dans une section critique (SC) pour une variable donnée Si un processus s’arrête dans sa section restante, ceci ne devrait pas affecter les autres processus Mais on fait l’hypothèse qu’un processus qui entre dans une section critique, en sortira. 21 Cours de Système d’exlpoitation 7 Faculté des sciences de Gabes 28/10/2015 Critères nécessaires pour solutions valides Progrès: absence d`interblocage (Chap 6) si un processus demande d`entrer dans une section critique à un moment où aucun autre processus en fait requête, il devrait être en mesure d’y entrer 22 Aussi nécessaire Absence de famine: aucun processus éternellement empêché d’atteindre sa SC Difficile à obtenir, nous verrons… 23 Remarque La première condition est suffisante à elle seule pour éviter les conflits d’accès. Cependant, elle ne suffit pas à garantir le bon fonctionnement du système d’exploitation, en particulier en ce qui concerne l’égalité d’accès aux sections critiques 28/10/2015 Khaled Hassine Cours de Système d’exlpoitation 24 8 Faculté des sciences de Gabes 28/10/2015 Exclusion mutuelle On parle d'exclusion mutuelle quand un seul processus à la fois a le droit de rentrer en SC (la condition d'entrée ne permet qu'à un seul processus de passer). Le terme utilisé est l'accès en exclusion mutuelle à une ressource ou à une variable. Remarque : Si une ressource a été accédée par un premier processus et qu'il est interrompu, aucun autre processus ne peut y accéder tant qu'elle n'a pas été libérée par le premier processus. Il faut attendre que le processus reprenne son exécution et qu'il libère la ressource. Il existe plusieurs mécanismes pour mettre en œuvre l'exclusion mutuelle dont chacun a ses avantages et ses inconvénients. Khaled Hassine 28/10/2015 25 PLAN Introduction Section critique et exclusion mutuelle Solutions classiques Solution avancée : Les sémaphores Problèmes classiques 28/10/2015 Khaled Hassine 26 Solutions classiques Le masquage des interruptions Variable de verrouillage Variable d'alternance Algorithme demander et attendre Algorithme de Peterson 28/10/2015 Khaled Hassine Cours de Système d’exlpoitation 27 9 Faculté des sciences de Gabes 28/10/2015 Solutions classiques Le masquage des interruptions Variable de verrouillage Variable d'alternance Algorithme demander et attendre Algorithme de Peterson 28/10/2015 Khaled Hassine 28 Principe de base Le moyen le plus simple d’éviter les accès concurrents est de masquer les interruptions avant d’entrer dans une section critique, et de les restaurer à la sortie de celle-ci. Ainsi, le processus en section critique ne pourra pas être suspendu au profit d’un autre processus, puisque l’inhibition (blocage) des interruptions empêche l’ordonnanceur de s’exécuter. Cette approche est couramment utilisée par le système d’exploitation lui-même, pour manipuler de façon sure ses structures internes. 28/10/2015 Khaled Hassine 29 Inconvénients Cette approche, qui autorise un processus utilisateur de masquer les interruptions du système, est inéquitable, car un processus restant longtemps en SC peut monopoliser le processeur. Elle est de plus dangereuse, car le système peut être bloqué si le processus oublie de restaurer les interruptions. Aussi, cette approche n’est pas efficace pour les systèmes multiprocesseurs, puisque les processus s’exécutant sur les autres processeurs peuvent toujours entrer en section critique. 28/10/2015 Khaled Hassine Cours de Système d’exlpoitation 30 10 Faculté des sciences de Gabes 28/10/2015 Quoi pour les 4 conditions ? Critère Respecté (Oui/Non) Exclusion mutuelle Oui Progression normale Non Attente bornée Non Absence de blocage Non 28/10/2015 Khaled Hassine 31 Solutions classiques Le masquage des interruptions Variable de verrouillage Variable d'alternance Algorithme demander et attendre Algorithme de Peterson 28/10/2015 Khaled Hassine 32 Besoins de verrouillage L’inconvénient du masquage des interruptions est son inefficacité : lorsqu’un processus entre en section critique, tous les autres processus sont bloqués, même si la section critique ne concerne qu’un seul processus. Il faut donc pouvoir définir autant de sections critiques indépendantes que nécessaire. 28/10/2015 Khaled Hassine Cours de Système d’exlpoitation 33 11 Faculté des sciences de Gabes 28/10/2015 Principe Pour cela, on déclare une variable par section critique, qui joue le rôle de verrou. La variable est mise à 1 par le processus entrant dans la section critique considérée, et remise à 0 par le processus lorsqu’il quitte la section critique. Khaled Hassine 28/10/2015 34 Algorithme Avant d’entrer en section critique, un processus doit donc tester l’état de la variable, et boucler en dehors de la section critique si elle a déjà été positionnée à 1 par un autre processus, selon l’algorithme suivant : while (verrou==1) ; verrou = 1 ; section_critique () ; verrou =0 ; 28/10/2015 /*Attente*/ /*Verrouillage*/ /*Déverrouillage*/ Khaled Hassine 35 Problème possible Malheureusement, cette solution présente le même défaut que l’algorithme de l’exemple de l’impression : 28/10/2015 un processus peut être interrompu entre sa sortie de la boucle while et le positionnement du verrou, permettant ainsi à un autre processus de rentrer lui aussi en section critique. Khaled Hassine Cours de Système d’exlpoitation 36 12 Faculté des sciences de Gabes 28/10/2015 Quoi pour les 4 conditions ? Critère Respecté (Oui/Non) Exclusion mutuelle Non Progression normale Non Attente bornée Oui Absence de blocage Oui 28/10/2015 Khaled Hassine 37 Solutions classiques Le masquage des interruptions Variable de verrouillage Variable d'alternance Algorithme demander et attendre Algorithme de Peterson 28/10/2015 Khaled Hassine 38 Principe de base Le problème avec l'algorithme précédent est que les 2 processus modifient la même variable en même temps. Pour éviter cette lacune, on peut mettre en œuvre une variable Tour qui définit quel processus a le droit d'entrer en SC. 28/10/2015 Khaled Hassine Cours de Système d’exlpoitation 39 13 Faculté des sciences de Gabes 28/10/2015 Algorithme principal Algorithme Alternance () Début Tour ← 1; /* On donne la main à P1 au début */ P1, P2; /* P1 et P2 évoluent en parallèle */ Fin 28/10/2015 Khaled Hassine 40 Les processus P1 et P2 Procédure P1 () Début Répéter SR Tant que (Tour1) Ne rien faire (attente) Fin Tant que SC Tour ← 2 Jusqu'à Condition 1 Fin 28/10/2015 Procédure P2 () Début Répéter SR Tant que (Tour2) Ne rien faire (attente) Fin Tant que SC Tour ← 1 Jusqu'à Condition 2 Fin Khaled Hassine 41 Inconvénients Cette solution, si elle est valide du point de vue exclusion mutuelle, ne respecte pas la deuxième et la troisième règles du SC. En effet, lorsqu'un processus quitte la SC, il s'interdit d'y revenir avant que l'autre processus soit entré à son tour. Un tel comportement imposant une alternance stricte de SC n'est pas souhaitable puisque l'arrêt définitive de l'un de deux processus permet à l'autre au plus une fois la SC. Il faut imposer la condition de progression. 28/10/2015 Khaled Hassine Cours de Système d’exlpoitation 42 14 Faculté des sciences de Gabes 28/10/2015 Quoi pour les 4 conditions ? Critère Respecté (Oui/Non) Exclusion mutuelle Oui Progression normale Non Attente bornée Non Absence de blocage Non 28/10/2015 Khaled Hassine 43 Solutions classiques Le masquage des interruptions Variable de verrouillage Variable d'alternance Algorithme demander et attendre Algorithme de Peterson 28/10/2015 Khaled Hassine 44 Principe : Rajouter une variable de demande Procédure P1 () Début Répéter SR D1← Vrai Tant que (D2) Ne rien faire (attente) Fin Tant que SC D1← Faux Jusqu'à Condition 1 Fin 28/10/2015 Procédure P2 () Début Répéter SR D2← Vrai Tant que (D1) Ne rien faire (attente) Fin Tant que SC D2← Faux Jusqu'à Condition 2 Fin Khaled Hassine Cours de Système d’exlpoitation 45 15 Faculté des sciences de Gabes 28/10/2015 Remarque L'exclusion mutuelle est assurée. Mais cette solution présente un grave inconvénient qui est la possibilité d'un blocage dans le cas où chacun des processus a affecté la valeur vrai à la variable Di et par la suite aucune action n'est possible. Ceci conduit à imposer une troisième condition: l'absence de blocage. 28/10/2015 Khaled Hassine 46 Quoi pour les 4 conditions ? Critère Respecté (Oui/Non) Exclusion mutuelle Oui Progression normale Oui Attente bornée Non Absence de blocage Non 28/10/2015 Khaled Hassine 47 Solutions classiques Le masquage des interruptions Variable de verrouillage Variable d'alternance Algorithme demander et attendre Algorithme de Peterson 28/10/2015 Khaled Hassine Cours de Système d’exlpoitation 48 16 Faculté des sciences de Gabes 28/10/2015 Principe : Rajouter une variable Tour Procédure P1 () Début Répéter SR D1← Vrai Tour ← 2 Tant que (D2 et Tour 1) Ne rien faire (attente) Fin Tant que SC D1← Faux Jusqu'à Condition 1 Fin 28/10/2015 Procédure P2 () Début Répéter SR D2← Vrai Tour ← 1 Tant que (D1 et Tour 2) Ne rien faire (attente) Fin Tant que SC D2← Faux Jusqu'à Condition 2 Fin Khaled Hassine 49 Interprétation La SC s'interprète de la manière suivante: 28/10/2015 P1 effectue sa demande (D1=vrai) et cède immédiatement son tour à P2 (Tour=2). Le seul cas où P1 ne peut pas entrer dans sa SC se produit lorsque: P2 a demandé d'entrer dans la SC (D2=vrai). Khaled Hassine 50 Vérification de l'exclusion mutuelle Si P1 et P2 sont en SC alors: (D2=faux ou Tour=1) et (D1=faux ou Tour=2) et (D1=vrai et D2=vrai) Ce qui est impossible. 28/10/2015 Khaled Hassine Cours de Système d’exlpoitation 51 17 Faculté des sciences de Gabes 28/10/2015 Vérification de l'absence de blocage Si P1 et P2 sont bloqués alors: (D2=vrai et Tour=2) et (D1=vrai et Tour=1) Ce qui est impossible. 28/10/2015 Khaled Hassine 52 Vérification de la progression La solution étant symétrique: On peut supposer que P2 est en SR, D2=faux, si P1 ne peut pas entrer en SC alors D2=vrai et Tour=2. Ce qui est une contradiction. 28/10/2015 Khaled Hassine 53 Vérification de l'attente bornée Si P1 et P2 ont demandé l'entrée en SC, supposons que P1 a pu y accéder. Si P1 demande une autre fois l'entrée en SC après avoir exécuter sa SS, il affecte à D1 la valeur vrai et à Tour la valeur 2, ce qui lui interdit l'entrée en SC et laisse passer P2. Chaque processus lorsqu'il a demandé à entrer en SC attend au plus un passage de l'autre en SC pour y entrer à son tour. 28/10/2015 (D1=Vrai et D2=Vrai), Tour=1 et P2 est en attente. Khaled Hassine Cours de Système d’exlpoitation 54 18 Faculté des sciences de Gabes 28/10/2015 Quoi pour les 4 conditions ? Critère Respecté (Oui/Non) Exclusion mutuelle Oui Progression normale Oui Attente bornée Oui Absence de blocage Oui 28/10/2015 Khaled Hassine Cours de Système d’exlpoitation 55 19