gef 435 principes des systèmes dexploitation communication interprocessus (tanenbaum 2.3)

21
GEF 435 Principes des systèmes d’exploitation Communication Interprocessus (Tanenbaum 2.3)

Upload: gregory-jamet

Post on 03-Apr-2015

112 views

Category:

Documents


5 download

TRANSCRIPT

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

GEF 435Principes des systèmes d’exploitation

Communication Interprocessus(Tanenbaum 2.3)

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

Revue

• Quels sont nos trois choix pour implémenter les threads?

• Donner des avantages d’implémenter les threads dans l’espace utilisateur.

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

Synopsis

• Synopsis de la communication interprocessus• Concurrence critique (Race Conditions)• Régions critiques• Exclusion mutuelle• Méthodes d’exclusion mutuelle

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

Synopsis de la CIP

• Les processus doivent communiquer ensemble souvent pour être capable d’achever certaines tâchesComment est-ce que les processus envoient de

l’information entre eux?Comment est-ce que l’on empêche les processus

d’interférer entre eux?Comment fait-on attendre un processus pour que

d’autres finissent leurs activités? (ie: Processus A produit des données utilisées par le Processus B)

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

Concurrence critique

• S’applique aux processus qui travaillent ensemble mais qui partagent de la mémoire commune pour la lecture et écritureMémoire principale (RAM)Fichiers partagésRegistres d’unité périphérique

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

Concurrence critique

• Exemple: un spouleur d’impressionQuand un processus veut imprimer, il place le nom du

fichier dans une case du répertoire de l’imprimante

•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?

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

Concurrence critique

• Exemple du spouleur d’impression

• Un changement de processus à un moment inopportun cause le processus B à perdre sa job d’impression

Process A Process B

freeSlot = in;

writeName(freeSlot);

in = freeSlot+1;

doMoreStuff();

freeSlot = in;

writeName(freeSlot);

in = freeSlot+1;

doMoreStuff();

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

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 l’ordre dans lequel chaque processus exécute

• Donc la place dans le code où une condition de concurrence critique peut arriver est d’intérêt particulier et s’appelle une Région critique (ou section critique)

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

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 n’est pas toujours possible

• Les programmes doivent être arrangés ou dessinés de tel façon à ce qu’aucun groupe de processus n’opère dans leurs région critique (commune) en même tempsLes régions critiques doivent être mutuellement

exclusive

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

Exclusion mutuelle• C’est évident que les régions critiques doivent opérer en

exclusion mutuelle mais ce n’est 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 n’opè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

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

Exclusion Mutuelle

Une représentation graphique de notre requis pour l’exclusion mutuelle

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

Méthodes pour implémenter l’exclusion mutuelle

• Trois solution potentielles :Désactiver les interruptionsUtiliser des variables verrousAlternance stricte

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

Méthodes pour l’exclusion 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, qu’est ce qui

ce passe si un périphérique a besoin d’attentionSolution viable? Non.

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

Méthodes pour l’exclusion mutuelle

• Variables verrous:Partage d’une 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.

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

Méthodes pour l’exclusion 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 qu’une valeur apparaisse s’appelle de l’attente active (Busy Waiting)

Process A Process B

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

Méthodes pour l’exclusion mutuelle

• Alternance stricte opère d’aprè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 l’entrée dans la région critique. Un verrou qui utilise une attente active (busy waiting) s’appelle 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 c’est proche...

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

Méthodes pour l’exclusion mutuelle• Solution de Peterson

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

Méthodes pour l’exclusion mutuelle

• Solution de PetersonRégion critique est maintenant protégéeSolution viable? Oui!

• Par contre l’attente active est encore requise… une perte de temps du CPU

• Notez aussi que le processus ne peut pas tricher: si les processus n’appelle 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

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

Méthodes pour l’exclusion mutuelle

• De l’aide 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 d’entreposer la valeur non zéro sont indivisibles c’est garantie!

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

Méthodes pour l’exclusion mutuelle

• Comment utiliser l’instruction 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...)

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

Quiz Time!

Questions?