GEF 435 Principes des syst - PowerPoint PPT Presentation

1 / 18
About This Presentation
Title:

GEF 435 Principes des syst

Description:

Quelles sont les quatre requis ou r gles que les algorithmes de sections critiques ... down() doivent tre impl ment s comme actions atomiques... Tout le reste est bas sur ce ... – PowerPoint PPT presentation

Number of Views:122
Avg rating:3.0/5.0
Slides: 19
Provided by: abe125
Category:

less

Transcript and Presenter's Notes

Title: GEF 435 Principes des syst


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

2
Revue
  • Quest-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?

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

4
sleep() et wakeup()Peterson
  • Recall Petersons Solution

5
sleep() et wakeup()
  • La solution de Peterson (et aussi linstruction
    TSL que nous avons vue) utilisent lattente
    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 nexécute jamais plus (Pensez à µC/OS)

6
sleep() et wakeup()
  • Au lieu de faire de lattente active, quarrive
    til si un processus peut être suspendu pendant
    quil attend dentrer dans sa région critique?
  • Crée deux appels de système sleep() et wakeup()
  • sleep() cause le processus à bloquer jusquà ce
    quil soit éveillé par un autre processus
  • wakeup(procID) éveille un autre processus avec un
    identification spécifique

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

8
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éveiller
  • Un processus qui essaie de dormir va décrémenter
    cette bit au lieu de dormir si la bit est réglé
    (gt0)
  • Répare ce problème particulier. Que ce passe
    til si nous avons 2 consommateurs, 10, 100

9
Sémaphores
  • Un nouveau type de variable un sémaphore, a été
    introduit en 1965 par Dijkstra pour entreposer
    les appels éveille pour utilisation future
  • Le sémaphore peut avoir la valeur 0, indiquant
    quaucun éveil nest sauvé, ou une valeur
    positive quelconque, indiquant les éveils
    accumulés
  • Utilise deux opérations down() et up() pour
    opérer les sémaphores

10
Sémaphores
  • Opération des sémaphores
  • Lopé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() sendort
  • La vérification de la valeur, le changement et
    laction de sendormir est un action atomique
    (indivisible)
  • Cette indivisibilité est essentiel pour résoudre
    la concurrence mutuelle!

11
Sémaphores
  • Lopération des sémaphores
  • Lopération up() essaie dincré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?

12
(No Transcript)
13
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 lexclusion mutuelle
    pour laccès dune ressource partagée
  • Un sémaphore avec seulement deux états (0,1)
    sappel sémaphore binaire
  • Les sémaphores full/empty sont utilisés pour la
    synchronisation ils garantissent loccurrence 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

14
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 fait
  • Typiquement 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é

15
Mutex
  • Si la capacité de contage du sémaphore nest pas
    requise, une forme plus simple, mutex peut être
    utilisée
  • Seulement bon pour gérer lexclusion mutuelle
    ils ne communiquent pas dautre information
  • Cette simplicité requiert seulement des commandes
    dans lespace 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()

16
Mutex
  • Comme le code lindique, si le mutex nest pas
    barré, le thread retourne et entre dans la région
    critique. Autrement le thread cède et permet à
    un autre thread daccéder au CPU

17
Mutex
  • Attendez, est-ce la même chose que
    enter_region()?
  • Quels sont les deux avantages majeurs des mutex
    sur enter_region()?

18
Quiz Time!
  • Questions?
Write a Comment
User Comments (0)
About PowerShow.com