1 / 21

GEF 435 Principes des systèmes d’exploitation

GEF 435 Principes des systèmes d’exploitation. 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. Synopsis. Synopsis de la communication interprocessus

ouida
Download Presentation

GEF 435 Principes des systèmes d’exploitation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Revue • Quels sont nos trois choix pour implémenter les threads? • Donner des avantages d’implémenter les threads dans l’espace utilisateur.

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

  4. Synopsis de la CIP • Les processus doivent communiquer ensemble souvent pour être capable d’achever certaines tâches • Comment 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)

  5. Concurrence critique • S’applique 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 d’unité périphérique

  6. Concurrence critique • Exemple: un spouleur d’impression • Quand 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?

  7. Concurrence critique • Exemple du spouleur d’impression • Un changement de processus à un moment inopportun cause le processus B à perdre sa job d’impression

  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 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)

  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 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 temps • Les régions critiques doivent être mutuellement exclusive

  10. 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

  11. Exclusion Mutuelle Une représentation graphique de notre requis pour l’exclusion mutuelle

  12. Méthodes pour implémenter l’exclusion mutuelle • Trois solution potentielles : • Désactiver les interruptions • Utiliser des variables verrous • Alternance stricte

  13. 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’attention • Solution viable? Non.

  14. 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.

  15. 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

  16. 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...

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

  18. Méthodes pour l’exclusion mutuelle • Solution de Peterson • Région critique est maintenant protégée • Solution 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

  19. 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!

  20. 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...)

  21. Quiz Time! Questions?

More Related