La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Dr. Mohamed-Wassim YOUSSEF © 2010 [www.wassimyoussef.info] Systèmes dexploitation Evolués M1 - ISI 1 ére année Mastere en Informatique Rappel sur la synchronisation.

Présentations similaires


Présentation au sujet: "Dr. Mohamed-Wassim YOUSSEF © 2010 [www.wassimyoussef.info] Systèmes dexploitation Evolués M1 - ISI 1 ére année Mastere en Informatique Rappel sur la synchronisation."— Transcription de la présentation:

1 Dr. Mohamed-Wassim YOUSSEF © 2010 [www.wassimyoussef.info] Systèmes dexploitation Evolués M1 - ISI 1 ére année Mastere en Informatique Rappel sur la synchronisation des processus Chapitre 02

2 2 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Synchronisation des processus 1. Introduction 2. Sections critiques et exclusion mutuelle 3. Exclusion mutuelle par attente active 1. Le masquage des interruptions 2. Les variables de verrouillage 3. Lalternance stricte 4. La solution de Peterson 4. Exclusion mutuelle sans attente active a. Les primitives sleep et wakeup b. Les sémaphores a.Exercices c. Les moniteurs 2

3 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Introduction Sur une plateforme multiprogrammée les processus ont généralement besoin de communiquer pour compléter leurs tâches. Lexécution dun processus peut être affecter par lexécution des autres processus ou il peut affecter lui-même leurs exécutions. 3 La communication interprocessus est assurée généralement via des données partagées qui peuvent se trouver dans la mémoire principale ou dans un fichier. Les accès concurrents (simultanés) à des données partagées peuvent conduire à des incohérences dans les résultats obtenus.

4 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Introduction: exemple illustratif Exemple : la spoule dimpression 4 Processus A Processus B … f1f2 … f0 Répertoire de spoule Démon dimpression Variable partagée in=3 Schéma dexécution: A : lire in, next_free_slot = 3 Interruption: la CPU bascule vers le processus B B : lire in, next_free_slot = 3, entrée3 = fichierB, in = 4 Problème: le fichierB ne sera jamais imprimé A : entrée3 = fichierA, in = 4

5 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Sections critiques et exclusion mutuelle Le problème précédent est dû aux conflits daccès à la même ressource. La partie du programme à partir de laquelle on accède à la ressource partagée est appelée section (région) critique. 5 Solution: Lexclusion mutuelle est une méthode qui assure quun seul processus est autorisé daccéder à une ressource partagée; les autres processus seront exclus de la même activité. A B t1t2t3t4 A entre dans sa section critique B tente dentrer dans sa section critique A quitte sa section critique B entre dans sa section critique B quitte sa section critique

6 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Sections critiques et exclusion mutuelle Quatre conditions doivent être vérifier pour assurer lexclusion mutuelle: 1. Exclusion Mutuelle: Deux processus ne doivent pas se trouver simultanément dans leurs sections critiques. 2. Progression : Aucun processus à lextérieur de sa section critique ne doit bloquer les autres processus. 3. Attente bornée : Aucun processus ne doit attendre indéfiniment pour entrer dans sa section critique. 4. Aucune hypothèse : Il ne faut pas faire dhypothèse quant à la vitesse ou le nombre de processeurs

7 7 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Synchronisation des processus 1. Introduction 2. Sections critiques et exclusion mutuelle 3. Exclusion mutuelle par attente active 1. Le masquage des interruptions 2. Les variables de verrouillage 3. Lalternance stricte 4. La solution de Peterson 4. Exclusion mutuelle sans attente active a. Les primitives sleep et wakeup b. Les sémaphores a.Exercices c. Les moniteurs 7

8 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Exclusion mutuelle par attente active Un processus désirant entrer dans une section critique doit être mis en attente jusqua ce que la section critique devient libre. Un processus quittant la section critique doit le signaler aux autres processus. 8 Algorithme daccès à une section critique : Entrer_Section_Critique () /* attente si SC non libre */ Section_Critique() /* un seul processus en SC */ Quitter_Section_Critique() Lattente peut être : Active : la procédure Entrer_Section_Critique est une boucle dont la condition est un test qui porte sur des variables indiquant la présence ou non dun processus en Section critique. Non active : le processus passe dans létat endormi et ne sera réveillé que lorsquil sera autorisé à entrer en section critique.

9 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Solutions de lexclusion mutuelle par attente active Solution 1: Masquage des interruptions Lorsquun processus entre en section critique il doit masquer les interruptions. 9 Pas de commutation de processus Lorsqu il quitte sa section critique il doit restaurer les interruptions. Cest une solution matérielle qui permet de résoudre complètement le problème. Mais elle est dangereuse en mode utilisateur sil oublie de restaurer les interruptions.

10 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Solutions de lexclusion mutuelle par attente active 10 Solution 2: Variables de verrouillage Un verrou est variable binaire partagée qui indique la présence dun processus en section critique. si verrou=0 alors section critique libre si verrou=1 alors section critique occupée void entrer_Section_Critique () { while (verrou == 1) ; /* attente active */ verrou=1 ; } Void quitter_Section_Critique () { verrou=0 ; } Cette solution ne garantie pas lexclusion mutuelle car le verrou est une variable partagée qui peut constituer aussi une section critique.

11 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Solutions de lexclusion mutuelle par attente active 11 Solution 3: Alternance stricte Tour est une variable partagée qui indique le numéro de processus autorisé a entrer en section critique. void entrer_Section_Critique (int process) { while (Tour!=process) ; /* attente active */ } Void quitter_Section_Critique () { Tour = (Tour+1) %N ; } Lalternance stricte est une solution simple et facile a implémenter. Mais, un processus qui possède Tour peut ne pas être intéressé immédiatement par la section critique et en même temps il bloque un autre processus qui demandeur. Problème de progression

12 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Solutions de lexclusion mutuelle par attente active 12 Solution 4: Solution de Peterson #define FAUX 0 #define VRAI 1 #define N 2 int tour ; /* à qui le tour */ int interesse[N] ; /* initialisé à FAUX */ void entrer_Section_Critique (int process) { int autre ; (1) autre = 1-process ; (2) interesse[process]=VRAI; /* process est intéressé */ (3) tour = process ; /* demander le tour */ while (tour == process && interesse[autre] == VRAI) ; } (A) (B) Void quitter_Section_Critique () { (4) interesse[process]=FAUX ; } Cette solution assure complètement lexclusion mutuelle. Mais, le processus qui attend sa section critique consomme du temps processeur inutilement (attente active).

13 13 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI Introduction 2. Sections critiques et exclusion mutuelle 3. Exclusion mutuelle par attente active 1. Le masquage des interruptions 2. Les variables de verrouillage 3. Lalternance stricte 4. La solution de Peterson 4. Exclusion mutuelle sans attente active a. Les primitives sleep et wakeup b. Les sémaphores a.Exercices c. Les moniteurs 13 Synchronisation des processus

14 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Exclusion mutuelle sans attente active 14 Lidée est quun processus qui ne peut pas entrer en section critique passe à létat bloqué au lieu de consommer le temps processeur inutilement. Il sera réveillé lorsquil pourra y entrer. Les primitives Sleep et Wakeup: Le système dexploitation offre deux appels système: 1. Sleep (dormir) qui bloque le processus appelant. 2. Wakeup (réveiller) qui réveille le processus donné en argument.

15 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Exclusion mutuelle sans attente active 15 Application des primitives Sleep et Wakeup au modèle Producteur Consommateur: Producteur f1f2 … f0 Tampon Variable partagée compteur=3 Consommateur Deux processus (le producteur et le consommateur) coopèrent en partageant un même tampon: Le producteur produit des objets quil dépose dans le tampon. Le consommateur retire des objets du tampon pour les consommer.

16 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Exclusion mutuelle sans attente active 16 #define N 100 /* taille du tampon */ int compteur = 0 ; /* objets dans tampon */ void producteur () { while (TRUE) { produire_objet() ; if (compteur == N) sleep () ; mettre_objet() ; compteur = compteur + 1 ; if (compteur == 1) wakeup(consommateur) ; } void consommateur () { while (TRUE) { if (compteur == 0) sleep() ; retirer_objet() compteur = compteur – 1 ; if (compteur == N-1) wakeup (producteur) ; consommer_objet(…) ; }

17 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Exclusion mutuelle sans attente active Analyse de cette solution : Laccès à la variable compteur nest pas protégé, ce qui peut entraîner des incohérences dans les valeurs prises par cette Variable. Réveils perdus : cest le principal défaut de ce mécanisme. Un signal wakeup envoyé à un processus qui ne dort pas (encore)est perdu. 17

18 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Les sémaphores 18 Pour remédier au problème es réveils en attente (les wakeup perdus), lidée est demployé une variable entière appelée: Sémaphore à laquelle est associée une file dattente des processus bloqués. sémaphore=0 aucun réveil nest mémorisé sémaphore>0 un ou plusieurs réveils sont en attente Un sémaphore s est manipulé par les opérations : 1. down(s) : - décrémente la valeur de s si s>0, - si s=0, alors le processus est mis en attente. 2. up(s) : - incrémente la valeur de s, - si un ou plusieurs processus sont en attente sur ce sémaphore, l'un d'entre eux est réveillé,

19 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Les sémaphores Pour assurer lexclusion mutuelle un sémaphore peut être programmé de la manière suivante : 19 initialisation mutex = 1 /* nombre de processus autorisés à entrer simultanément dans la section critique */ down (mutex) up (mutex) Nom du sémaphore

20 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Les sémaphores Application au modèle Producteur / Consommateur : Trois sémaphores sont nécessaires: plein: compte le nombre de places occupées vide : compte le nombre de places libres Mutex : assure que le producteur et le consommateur n'accèdent jamais en même moment à la mémoire tampon. 20

21 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Rappel Producteur/Consommateur avec sémaphores #define N 100 // taille du tampon semaphore mutex 1 ; // contrôle daccès section critique semaphore vide N; // contrôle les emplacements vide Semaphore plein 0; // contrôle les emplacements plein 21 void producteur () { while (TRUE){ produire_objet() ; down(vide); down(mutex); mettre_objet() ; //SC up(mutex); up(plein) } void consommateur () { while (TRUE){ down(plein); down(mutex); retirer_objet() //SC up(mutex); up(vide); consommer_objet(…) ; }

22 22 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Synchronisation des processus - Exercices 1. Ordonnancement & Synchronisation 2. Pb des Lecteurs/rédacteur 3. Pb du coiffeur endormi 4. Autres utilisations des sémaphores & problèmes classiques

23 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Exercice 1 23 Q1 : Round robin ( tourniquet) avec q=5ms Q2 : Round robin ( tourniquet) avec q=5ms + Synchronisation Peterson Prêt à linstant t= Durée dexécution P00 ms23 ms P11 ms17 ms P22 ms15 ms Durée dexécution SR+SC Date dentrée en section critique t= P023 ms3 ms P117 ms7 ms P215 msX Prêt à linstant t= Durée dexécution en section critique P00 ms12 ms P11 ms10 ms P22 msX

24 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Prêt à linstant t= Durée dexécution P00 ms23 ms P11 ms17 ms P22 ms15 ms 05 P0 P1 P Round robin ( tourniquet) avec q=5ms Q1

25 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI P0 P1 P Prêt à linstant t= Durée dexécution Date dentrée en section critique t= Durée dexécution en section critique P00 ms23 ms3 ms12 ms P11 ms17 ms7 ms10 ms P22 ms15 msXX SCAA Round robin ( tourniquet) avec q=5ms Peterson Attente active Q2

26 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Round robin ( tourniquet) avec q=5ms Sommeil et activation 05 P0 P1 P Prêt à linstant t= Durée dexécution Date dentrée en section critique t= Durée dexécution en section critique P00 ms23 ms3 ms12 ms P11 ms17 ms7 ms10 ms P22 ms15 msXX SC 40 Q3

27 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Lecteurs/Rédacteur Une base de données peut être accessible par un seul rédacteur ou N lecteurs en même temps Exclusion mutuelle entre le rédacteur et les N lecteurs Donner le pseudo code dun processus lecteur et celui du processus rédacteur 27 Base de données

28 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Lecteurs/Rédacteur Semaphore mutex 1 // contrôle laccés à nb_lect Semaphore db 1 // contrôle laccés à la base de données int nb_lect = 0 ; // var partagées entre lecteurs pour // compter le nombre de lecteurs accédant // actuellement à la BD //lecteur void lecture(){ while (true) { //boucle sans fin lire_la_BD(); //accés à la BD utiliser_données (); //Section restante } 28 //redacteur void ecriture(){ while (true) { créer_données (); ecrire_dans_la_BD }

29 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Lecteurs/Rédacteur Semaphore mutex 1 // contrôle laccés à nb_lect Semaphore db 1 // contrôle laccés à la base de données int nb_lect = 0 ; // var partagées entre lecteurs pour // compter le nombre de lecteurs accédant // actuellement à la BD //lecteur void lecture(){ while (true) { //boucle sans fin down (mutex); // la modif de la var. partagée nb_lect est une nb_lect ++; // section critique entre lecteurs if (nb_lect == 1) down (db); //si le premier lecteur up(mutex); // libère laccés exclusif à nb_lect lire_la_BD(); //accés à la BD down(mutex); nb_lect --; if (nb_lect == 0) up (db); //si le dernier lecteur up (mutex) utiliser_données (); //Section restante } 29

30 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Lecteurs/Rédacteur Semaphore mutex 1 // contrôle laccés à nb_lect Semaphore db 1 // contrôle laccés à la base de données int nb_lect = 0 ; // var partagées entre lecteurs pour // compter le nombre de lecteurs accédant // actuellement à la BD //redacteur void ecriture(){ while (true) { //boucle sans fin créer_données (); //Section restante down (db); ecrire_dans_la_BD(); //accés à la BD up (db); } 30

31 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Coiffeur endormi Un coiffeur possède un salon avec un siège de coiffeur et une salle dattente comportant un nombre fixe F de fauteuils. Sil ny a pas de client, le coiffeur se repose sur son siège de coiffeur. Si un client arrive et trouve le coiffeur endormi, il le réveille, sassoit sur le siège de coiffeur et attend la fin de sa coupe de cheveux. Si le coiffeur est occupé lorsquun client arrive, le client sassoit et sendort sur une des chaises de la salle dattente ; si la salle dattente est pleine, le client repasse plus tard. Lorsque le coiffeur a terminé une coupe de cheveux, il fait sortir son client courant et va réveiller un des clients de la salle dattente. Si la salle dattente est vide, il se rendort sur son siège jusquà ce quun nouveau client arrive. 31

32 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Coiffeur endormi Résoudre le pb en évitant les conditions de concurrence Utilisation de 3 sémaphores et un compteur Semaphore Clients 0; //bloque le coiffeur sil ny a pas de clients Semaphore Mutex 1; //accés exclusif à la zone critique Semaphore Coiffeurs 0; //bloque le client si le coiffeur est occupé avec un //autre client Int Attente = 0 ; //Le nombre de clients en attente 32

33 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Coiffeur endormi Semaphore Clients 0; Semaphore Mutex 1; Semaphore Coiffeurs 0; Int Attente = 0 ; //Coiffeur void coiffeur() { while(1){ Attente = attente – 1; Couper_cheveux(); } 33 //Client void client() { if ( ) { Attente = attente + 1 Obtenir_coupe } else { }

34 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Coiffeur endormi Semaphore Clients 0; Semaphore Mutex 1; Semaphore Coiffeurs 0; Int Attente = 0 ; //Coiffeur void coiffeur() { while(1){ down(Clients); down(Mutex); Attente = attente – 1; up(Coiffeurs); up(Mutex); Couper_cheveux(); } 34 //Client void client() { down(Mutex) if (Attente < Chaises) { Attente = attente + 1 up(Clients) up(Mutex) down(Coiffeurs) Obtenir_coupe } else { up(Mutex) }

35 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Réfléchissons ! Soient les deux processus P1 et P2 suivants. Ils se partagent deux sémaphores S1 et S2 initialisés à 0. Quelle synchronisation a-t-on imposée sur les exécutions des procédures A1, A2, B1 et B2 (càd, quel ordre dexécution) ? 35 P2 { procedure A2 ; Up(S1) ; Down(S2) ; procedure B2 ; } Semaphore S1 0 Semaphore S2 0 P1 { procedure A1 ; Up(S2) ; Down(S1) ; procedure B1 ; }

36 Dr. Mohamed Wassim Youssef – Systèmes dexploitation évoluésM1- ISI 2010 Barrière de synchronisation Les Ai sexécutent toujours avant les Bi, quelque soit lordre de lexécution des processus P1 et P2 Ex: Ecrire le code à fin dimposer la même synchronisation pour N processus en utilisant : N sémaphores 2sémaphores et un compteur 36 P2 { procedure A2 ; Up(S1) ; Down(S2) ; procedure B2 ; } Semaphore S1 0 Semaphore S2 0 P1 { procedure A1 ; Up(S2) ; Down(S1) ; procedure B1 ; }


Télécharger ppt "Dr. Mohamed-Wassim YOUSSEF © 2010 [www.wassimyoussef.info] Systèmes dexploitation Evolués M1 - ISI 1 ére année Mastere en Informatique Rappel sur la synchronisation."

Présentations similaires


Annonces Google