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

GEF 435 Principes des systèmes dexploitation Communication Interprocessus (Tanenbaum 2.3)

Présentations similaires


Présentation au sujet: "GEF 435 Principes des systèmes dexploitation Communication Interprocessus (Tanenbaum 2.3)"— Transcription de la présentation:

1 GEF 435 Principes des systèmes dexploitation Communication Interprocessus (Tanenbaum 2.3)

2 Revue Quels sont nos trois choix pour implémenter les threads? Donner des avantages dimplémenter les threads dans lespace utilisateur.

3 Synopsis Synopsis de la communication interprocessus Concurrence critique ( Race Conditions ) Régions critiques Exclusion mutuelle Méthodes dexclusion mutuelle

4 Synopsis de la CIP Les processus doivent communiquer ensemble souvent pour être capable dachever certaines tâches Comment est-ce que les processus envoient de linformation entre eux? Comment est-ce que lon empêche les processus dinterférer entre eux? Comment fait-on attendre un processus pour que dautres finissent leurs activités? (ie: Processus A produit des données utilisées par le Processus B)

5 Concurrence critique Sapplique aux processus qui travaillent ensemble mais qui partagent de la mémoire commune pour la lecture et écriture Mémoire principale (RAM) Fichiers partagés Registres dunité périphérique

6 Concurrence critique Exemple: un spouleur dimpression Quand un processus veut imprimer, il place le nom du fichier dans une case du répertoire de limprimante Chaque case contient un nom de fichier Deux variables partagées: out pointe au prochain fichier à être imprimé in pointe à la prochaine case Un démon vérifie périodiquement si il y a un fichier à imprimer Y a t-il un problème avec ça?

7 Concurrence critique Exemple du spouleur dimpression Un changement de processus à un moment inopportun cause le processus B à perdre sa job dimpression Process AProcess B freeSlot = in; writeName(freeSlot); in = freeSlot+1; doMoreStuff(); freeSlot = in; writeName(freeSlot); in = freeSlot+1; doMoreStuff();

8 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 Région critique (ou section critique)

9 Régions critiques Idéalement, nous essayons de ne pas avoir des régions 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 région critique (commune) en même temps Les régions critiques doivent être mutuellement exclusive

10 Exclusion mutuelle Cest évident que les régions critiques doivent opérer en exclusion mutuelle mais ce nest pas une définition suffisante pour nos besoins. La solution pour prévenir la concurrence critique doit rencontrer ces requis: 1)Aucune paire de processus ne doit être dans leurs régions critique en même temps 2)Aucune supposition ne peut être fait à propos de la vitesse ou du nombre de CPU 3)Un processus qui nopère pas dans sa région critique ne doit pas bloquer un autre processus 4)Un processus ne devrait pas avoir à attendre indéfiniment pour entrer dans sa région critique

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

12 Méthodes pour implémenter lexclusion mutuelle Trois solution potentielles : Désactiver les interruptions Utiliser des variables verrous Alternance stricte

13 Méthodes pour lexclusion mutuelle Désactiver les interruptions: Chaque processus désactive les interruptions quand ils entre dans leur région critique. Aucun changement de contexte ne peut arriver Problème: Si le thread utilisateur barre ou entre dans une boucle infinis le SE barre ou plante Problème: Que ce passe-t-il avec des CPU multiples? Problème: Si la région critique est large, quest ce qui ce passe si un périphérique a besoin dattention Solution viable? Non.

14 Méthodes pour lexclusion mutuelle Variables verrous: Partage dune variable verrou ( lock ) Quand un processus veut entrer dans sa région critique il examine le verrou, si la valeur est 0 il le met à 1 et entre dans la région critique Problème: Cette solution déplace la concurrence critique de place. Un changement de processus à un moment inopportun peut résulter dans les deux processus dans la région critique en même temps Solution viable? Non.

15 Méthodes pour lexclusion mutuelle Alternance stricte Notez que le point-virgule après les instructions while() – crée une mini boucle Vérifier une variable continuellement jusquà ce quune valeur apparaisse sappelle de lattente active (Busy Waiting) Process AProcess B

16 Méthodes pour lexclusion mutuelle Alternance stricte opère daprès son nom: Chaque processus prend son tour pour entrer dans sa région critique La mini boucle while est utilisée comme verrou pour empêcher lentrée dans la région critique. Un verrou qui utilise une attente active ( busy waiting ) sappelle un spin lock 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...

17 Méthodes pour lexclusion mutuelle Solution de Peterson

18 Méthodes pour lexclusion mutuelle Solution de Peterson Région critique est maintenant protégée 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 enter_region et leave_region, la solution ne marchera pas Aussi fonctionne seulement pour deux processus. Algorithme du boulanger est utilisé dans ce cas

19 Méthodes pour lexclusion mutuelle De laide du matériel: TSL TSL veut dire instruction Test and Set Lock Plusieurs ordinateurs supportent cette instruction ou une instruction semblable Comment est-ce utilisé? TSL RX,LOCK Lis le contenue de la variable en mémoire, LOCK dans le registre RX et entrepose une valeur non zéro dans la variable LOCK Les actions de lire le mot LOCK et dentreposer la valeur non zéro sont indivisibles cest garantie!

20 Méthodes pour lexclusion mutuelle Comment utiliser linstruction TSL? Comme la solution de Peterson, on entoure la région critique avec les appels enter_region et leave_region Solution viable? Oui! (Avec attente active...)

21 Quiz Time! Questions?


Télécharger ppt "GEF 435 Principes des systèmes dexploitation Communication Interprocessus (Tanenbaum 2.3)"

Présentations similaires


Annonces Google