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

Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie I École Normale Supérieure Tétouan Département Informatique 2008-2009.

Présentations similaires


Présentation au sujet: "Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie I École Normale Supérieure Tétouan Département Informatique 2008-2009."— Transcription de la présentation:

1 Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie I École Normale Supérieure Tétouan Département Informatique

2 2 Revue Quand est-ce que lon prend des décision dordonnancement? Quels sont les buts de lordonnancement pour les systèmes interactifs Quels facteurs sont pris en compte quand on veut désigner une grandeur de quantum pour lalgorithme tourniquet?

3 3 Synopsis Introduction Concurrence critique ( Race Conditions ) Sections critiques Exclusion mutuelle Exclusion mutuelle par attente active –1 ère solution: Masquage des interruptions –2 ème solution: Variables de verrouillage –3 ème solution: Alternance –Instruction TSL Synthèse

4 4 Introduction Les processus concurrents sexécutant dans le système dexploitation peuvent être des processus coopératifs ou indépendants. –Un processus est indépendant sil naffecte pas les autres processus ou ne peut pas être affecté par eux. –Un processus qui ne partagent pas de données avec dautres processus est indépendant –Un processus est coopératif sil peut affecter les autres processus en cours dexécution ou être affecté par eux –Un processus qui partage des données avec dautres processus est un processus coopératif. Les données partagées par les processus coopératifs peuvent se trouver en : Mémoire principale (RAM) Fichiers partagés Registres dunité périphérique

5 5 Introduction Les processus dun se ne sexécutent pas de manière isolée (indépendant). Certains processus ont besoin de coopérer, et nécessitent donc des moyens de communication et de synchronisation, et dautres se trouvent en compétition pour les ressources du système, 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.

6 6 Introduction Exemple –Considérons la procédure suivante de mise à jour dun compte bancaire dun client. Pour simplifier, on considère quun compte est implémenté par un simple fichier qui contient le solde courant du client: Procedure crediter_compte( entier numero_client, entier somme) entier solde ; debut solde=lire_dans_fichier(numero_client); /* lecture du solde dans le fichier du client */ solde = solde - somme ; ecrire_dans_fichier(numero_client, solde) ; /* écrire dans le fichier le nouveau solde */ fin;

7 7 Supposons maintenant que cette même procédure est exécutée simultanément par deux processus P0 et P1 dans un système dexploitation à temps partagé. Sans faire aucune hypothèse sur la durée du quantum, on peut faire les exécution suivantes : P0 : P1 : crediter_compte( 1233, 1000) crediter_compte( 1233, 500) solde = lire_dans_fichier(1233) ; // P0 est bloqué ! solde=solde-1000 ;solde=solde-500 Ecrire_dans_fichier(1233,solde) ; Ecrire_dans_fichier(1233,solde) Introduction

8 8 8 Introduction Le problème dans le programme précédent est dû aux conflits daccès au même fichier (précisément le variable solde). Ces accès sont en lecture et en écriture. Évidemment, il ne peut y avoir de conflit si les accès aux données ne sont quen lecture seule. On appelle section critique la partie dun programme où se produit le conflit daccès Comment éviter ces conflits daccès ? –Il faut trouver un moyen dinterdire la lecture ou lécriture des données partagées à plus dun processus à la fois –Il faut une exclusion mutuelle qui empêche les autres processus daccéder à des données partagées si celles-ci sont en train dêtre utilisées par un processus –Dans lexemple précédent, il faut obliger le processus P1 à attendre la terminaison de P0 avant dexécuter à son tour la même procédure

9 9 Concurrence critique Une Concurrence critique est une situation où deux processus ou plus essaient de partager des données et le résultat dépend de lordre dans lequel chaque processus exécute Donc la place dans le code où une condition de concurrence critique peut arriver est dintérêt particulier et sappelle une section critique (ou région critique)

10 10 Sections critiques Idéalement, nous essayons de ne pas avoir des sections dans le code où la concurrence critique peut arriver, mais cela nest pas toujours possible. Les programmes doivent être arrangés ou dessinés de tel façon à ce quaucun groupe de processus nopère dans leurs section critique (commune) en même temps –Les sections critiques doivent être mutuellement exclusive

11 11 Sections critiques Pour que les processus qui partagent des objets (données en mémoire centrale ou dans fichiers) puissent coopérer correctement et efficacement, quatre conditions sont nécessaires : 1.Exclusion mutuelle : deux processus ne peuvent être en même temps en section critique Aucune paire de processus ne doit être dans leurs sections critique en même temps. 2.Famine : aucun processus ne doit attendre trop longtemps avant dentrer en section critique Un processus ne devrait pas avoir à attendre indéfiniment pour entrer dans sa section critique. 3.Interblocage (deadlock) : aucun processus suspendu en dehors dune section critique ne doit bloquer les autres dy entrer Un processus qui nopère pas dans sa section critique ne doit pas bloquer un autre processus 4.Aucun hypothèse ne doit être faite sur les vitesses relatives des processus ou du nombre de CPU.

12 12 Une représentation graphique de notre requis pour lexclusion mutuelle Exclusion Mutuelle

13 13 Exclusion Mutuelle Un processus désirant entrer dans une section critique doit être mis en attente si la section critique nest pas libre Un processus quittant la section critique doit le signaler aux autres processus 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

14 14 Exclusion Mutuelle Protocole daccès à une section critique : //attente si SC non libre //un seul processus en SC // signaler la libération de la SC aux autres processus Que contiennent les procédures entrer_Section_Critique et quitter_Section_Critique?

15 15 Trois solution potentielles : 1.Masquer (ou désactiver) les interruptions 2.Utiliser des variables verrous 3.Alternance Exclusion mutuelle par attente active

16 16 Exclusion mutuelle par attente active 1 ère solution : Masquage des interruptions –Chaque processus désactive les interruptions quand ils entre dans leur section critique. Aucun changement de contexte ne peut arriver. –Lexclusion mutuelle est réalisée à travers la mise en œuvre de primitives (appels) du SE : DisableInterrupt() section_critique() EnableInterrupt()

17 17 Exclusion mutuelle par attente active 1 ère solution : Masquage des interruptions Problème: Si le processus utilisateur entre dans une boucle infinis le SE sera planter Problème: Que ce passe-t-il avec des CPU multiples? Problème: Si la section critique est large, quest ce qui ce passe si un périphérique a besoin dattention Solution viable? Non.

18 18 while (verrou == 1) ; //Attente verrou=1 ; //Verrouillage section_critique() verrou=0 ; //Déverrouillage Exclusion mutuelle par attente active 2 ème solution : Variables de verrouillage Un verrou (Lock) est une variable binaire partagée qui indique la présence dun processus en SC: –si verrou = 0 alors la section critique est libre. –si verrou = 1 alors la section critique est occupée. Quand un processus veut entrer dans sa section critique il examine le verrou. Lexclusion mutuelle est réalisée dans ce cas :

19 19 Exclusion mutuelle par attente active 2 ème solution : Variables de verrouillage –Problème: Lexclusion mutuelle nest assurée que si le test et le positionnement du verrou est ininterruptible (sinon le verrou constitue une section critique). Pour cela il faut disposer dune instruction (Test and Set) qui teste et modifie le contenu dun mot en mémoire centrale de façon indivisible. –Solution viable? Non.

20 20 Exclusion mutuelle par attente active 3 ème solution : Alternance Le problème dans lalgorithme précédent est que les deux processus modifient la même variable en même temps. Pour éviter cela, on peut mettre en œuvre une variable partagée tour (turn) qui mémorise le numéro du processus autorisé à entrer en section critique. Exemple dutilisation pour N processus : while (tour != pid) ; // attente active (son tour) section_critique() tour=(pid +1) % N ; // au suivant! section_non_critique

21 21 Exclusion mutuelle par attente active 3 ème solution : Alternance Problème: la 2 ème règle est violée (famine), un processus possédant tour, peut ne pas être intéressé immédiatement par la section critique. Problème: la 3ème règle est violée – si A exécute plus vite que B, A attend pour entrer dans sa région critique pendant que B exécute du code non critique. Solution viable? Non. Mais cest proche...

22 22 Exclusion mutuelle par attente active 3 ème solution : Alternance Solution de Peterson (1981) //Cas de deux processus P0 et P1 : #define N 2 int tour ; // variable tour int interesse[N] ; // initialisé à False void entrer_Section_Critique (pid) //n° de processus : 0 ou 1 { interesse[pid]=True ; // indiquer quon est intéressé tour = pid ; //lever le drapeau while (tour == pid && interesse[1-pid] == True) ; } void quitter_Section_Critique(pid) { interesse[pid]=False ; }

23 23 Exclusion mutuelle par attente active 3 ème solution : Alternance Solution de Peterson –Section critique est maintenant protégée –Considérons la situation où les deux processus appellent entrer_Section_Critique simultanément. Les deux processus sauvegarderont leur numéro dans la variable tour. La valeur sauvegardée en dernier efface la première. Le processus qui entrera en SC est celui qui a positionné la valeur tour en premier –Solution viable? Oui! Par contre lattente active est encore requise… une perte de temps du CPU Notez aussi que le processus ne peut pas tricher: si les processus nappelle pas entrer_Section_Critique et qu itter_Section_Critiqu e, la solution ne marchera pas

24 24 Exclusion mutuelle par attente active Instruction TSL Cette solution au problème de lexclusion mutuelle est basée sur un support matériel, à savoir une instruction spécifique du langage machine. TSL veut dire instruction Test and Set Lock –Plusieurs ordinateurs supportent cette instruction ou une instruction semblable –Comment est-ce utilisé? TSL AX,verrou Charge (TEST) le contenu dun mot mémoire dans un registre, puis met une valeur non-nulle (SET) à cet emplacement mémoire, ces deux opérations étant garanties comme indivisible.

25 25 Exclusion mutuelle par attente active Instruction TSL Comment utiliser linstruction TSL? Solution viable? Oui! (Avec attente active...) entrer_Section_Critique : TSL AX, $verrou//Lecture et positionnement du verrou CMP AX, 0//Test si verrou non déjà positionné JNZ entrer_Section_Critique//Boucle si verrou déjà positionné RET quitter_Section_Critique: MOV $verrou, 0 RET

26 26 Synthèse Le problème de toutes les approches que nous avons vues est quelles mettent en œuvre des mécanismes dattente active (spin lock): les processus désirant entrer en SC consomment énormément de ressource processeur, et font un usage abusif du bus mémoire. De plus, dans le cas dun système orienté temps-réel où les priorités relatives des processus sont strictement respectées, si un processus H de haute priorité désire entrer en SC alors qun processus B de basse priorité sy trouve déjà, H aura toute la ressource processeur pour boucler et B ne pourra jamais quitter la section critique, doù blocage des deux processus. Y a t-il des mécanismes dexclusion mutuelle qui évitent lattente active ?

27 27 Quiz Time! Questions?


Télécharger ppt "Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie I École Normale Supérieure Tétouan Département Informatique 2008-2009."

Présentations similaires


Annonces Google