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

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

Upload: cateline-rousset

Post on 03-Apr-2015

108 views

Category:

Documents


0 download

TRANSCRIPT

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

GEF 435Principes des systèmes d’exploitation

Communication Interprocessus (CIP) II(Tanenbaum 2.3)

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

Revue

• Qu’est-ce que la concurrence critique (race

condition)?• Quel est le nom de la place dans un programme où

la concurrence critique peut arriver?• Quelles sont les quatre requis ou règles que les

algorithmes de sections critiques doivent rencontrer?

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

Synopsis

• Exclusion mutuelle sans attente active: sleep() and wakeup()

• Le problème du producteur/consommateur• Sémaphores• Résolution du problème du

producteur/consommateur avec les sémaphores• Mutex

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

sleep() et wakeup()Peterson

• Recall: Peterson’s Solution

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

sleep() et wakeup()

• La solution de Peterson (et aussi l’instruction TSL que nous avons vue) utilisent l’attente active ce qui gaspille beaucoup de cycles de CPU qui pourraient être utilisés à autres travails

• Autres effets qui sont imprédictibles : Inversion de priorité: Le processus L est dans sa

région critique. Processus H devient prêt à entrer dans sa région critique. Comme processus à plus haute priorité, H exécute une attente active et ne peut jamais entrer!

• L n’exécute jamais plus (Pensez à µC/OS)

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

sleep() et wakeup()

• Au lieu de faire de l’attente active, qu’arrive t’il si un processus peut être suspendu pendant qu’il attend d’entrer dans sa région critique?

• Crée deux appels de système: sleep() et wakeup()sleep() cause le processus à bloquer jusqu’à ce qu’il

soit éveillé par un autre processuswakeup(procID) éveille un autre processus avec un

identification spécifique

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

Le Problème Producteur/Consommateur• Quel problème existe ici?

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

Le Problème Producteur/Consommateur

• Une façon de réparer ce problème existe : ajouter une bit wakeupwaiting quant le processus qui est déjà éveillé se fait dire de s’éveillerUn processus qui essaie de dormir va décrémenter cette

bit au lieu de dormir si la bit est réglé (>0)Répare ce problème particulier. Que ce passe t’il si

nous avons 2 consommateurs, 10, 100…

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

Sémaphores

• Un nouveau type de variable un sémaphore, a été introduit en 1965 par Dijkstra pour entreposer les appels éveille pour utilisation futureLe sémaphore peut avoir la valeur 0, indiquant

qu’aucun éveil n’est sauvé, ou une valeur positive quelconque, indiquant les éveils accumulés

Utilise deux opérations down() et up() pour opérer les sémaphores

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

Sémaphores

• Opération des sémaphores:L’opération down() vérifie pour voir si le sémaphore

est plus grand que 0. Si oui, décrémente la valeur et continue

Si non, le processus qui a appelé down() s’endortLa vérification de la valeur, le changement et l’action

de s’endormir est un action atomique (indivisible)• Cette indivisibilité est essentiel pour résoudre la concurrence

mutuelle!

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

Sémaphores

• L’opération des sémaphores:L’opération up() essaie d’incrémenter le sémaphore. Si il y a

un processus qui dort sur le sémaphore, un est éveillé aléatoirement et permit de continuer

• Notez que la valeur du sémaphore va être encore 0, mais il va y avoir moins de processus qui dorment.

Si aucun processus ne dormais, alors la valeur est incrémenté; aucun processus ne bloque sur un up()

• Comment les sémaphores peuvent aider à résoudre le problème du producteur/consommateur?

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

Résolution du problème P/C

• Notez que nous avons utilisé les sémaphores pour deux différentes intentions:Le sémaphore mutex garantie l’exclusion mutuelle pour l’accès

d’une ressource partagée• Un sémaphore avec seulement deux états (0,1) s’appel sémaphore

binaire

Les sémaphores full/empty sont utilisés pour la synchronisation; ils garantissent l’occurrence ou la non occurrence de certaines séquences d’événements

• ie: Le producteur arrête de produire quand le tampon est plein et le consommateur arrête de consommer quand le tampon est vide

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

Résolution du problème P/C

• Pour que cela marche, les fonctions up() et down() doivent être implémentés comme actions atomiques... Tout le reste est basé sur ce faitTypiquement atteint en les implémentant comme appels

de système où les interruptions sont désactivées par le SE

• Ceci est bon parce que les opérations sont seulement quelques instructions

• Seulement le sémaphore est mis à jour et possiblement un processus éveillé

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

Mutex

• Si la capacité de contage du sémaphore n’est pas requise, une forme plus simple, mutex peut être utiliséeSeulement bon pour gérer l’exclusion mutuelle; ils ne

communiquent pas d’autre information

• Cette simplicité requiert seulement des commandes dans l’espace utilisateur si une commande TSL est disponible

• Un mutex a deux états: barré et débarré• Un thread qui veut entrer dans la région critique appel mutex_lock()

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

Mutex

• Comme le code l’indique, si le mutex n’est pas barré, le thread retourne et entre dans la région critique. Autrement le thread cède et permet à un autre thread d’accéder au CPU

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

Mutex

• Attendez, est-ce la même chose que enter_region()?

• Quels sont les deux avantages majeurs des mutex sur enter_region()?

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

Quiz Time!

Questions?