Module Systèmes d’exploitation

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

Module Systèmes d’exploitation
Module Systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes dexploitation Le matériel des ordinateurs Revue Pt II (Tanenbaum 1.4)
GEF 435 Principes des systèmes dexploitation Structure du logiciel dE/S Partie II (Tanenbaum & 5.3.4)
GEF 435 Principes des systèmes dexploitation Principes et structure du logiciel dE/S (Tanenbaum 5.2 & 5.3)
Synchronisation de Processus
Calculs de complexité d'algorithmes
Synchronisation des processus père - fils
Module Systèmes d’exploitation
Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie III École Normale Supérieure Tétouan Département Informatique
Critère d’ordonnancement en temps réel Partie II
Critère d’ordonnancement en temps réel Partie III
GEF 435 Principes des systèmes d’exploitation
GEF 243B Programmation informatique appliquée Boucles §
GEF 435 Principes des systèmes d’exploitation
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Considération de temps.
GEF 435 Principes des systèmes dexploitation Communication Interprocessus (CIP) II (Tanenbaum 2.3)
GEF 243B Programmation informatique appliquée
GEF 435 Principes des systèmes dexploitation Communication Interprocessus (CIP) III (Tanenbaum 2.3)
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes dexploitation Structure des systèmes dexploitation (Tanenbaum 1.7)
GEF 243B Programmation informatique appliquée Listes chaînées II §15.1 – 15.2.
GEF 243B Programmation informatique appliquée
TP 7.1 synchronized et join Écrire un programme Java qui crée 1000 threads et maintient un compteur nb du nombre de threads créés jusque-là. Le thread.
Synchronisation des Processus
Chapitre 3 Coopération et synchronisation par variables partagées
Chapitre 2 Processus & Threads
Chapitre 3 Interblocages
Exécutif Temps réel. Limitation des système classiques Rappels Mise en œuvre lourde des communications entre processus Problème de prédictibilité avec.
FLSI602 Génie Informatique et Réseaux
8. Les tableaux P. Costamagna – ISEN N1.
Section VI Structures répétitives (suite)
Les bases de l’Algorithmique
Tests Programmation par contrats
Conception et analyse des algorithmes
Récursivité.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Rappel sur la synchronisation des processus
Synchronisation et communication entre processus
II. Chaînage, SDD séquentielles
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
.Net Remoting.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Cours de CPI Philippe Bancquart CPI 2005.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
8.1 URDL22005 Systèmes dexploitation Interblocages Modèle Système Caractérisation dinterblocage Méthodes pour Gérer les Interblocages Prévention des Interblocages.
Module 51 Module 5 - Synchronisation de Processus (ou threads, ou fils ou tâches) Module 5 - Synchronisation de Processus (ou threads, ou fils ou tâches)
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Programmation concurrente
Chapitre 6 (Silberchatz)
Communication interprocessus
Chapitre 3 Interblocages 3.1. Ressources
Chapitre 7 continuation
Chapitre 6 : Synchronisation des processus et des fils
Synchronisation Classique
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
Systèmes d’exploitation
SYSTÈME D’EXPLOITATION I
Gestion de processus Corrigé TD 1 EFREI I
NOTIONS DE BASE DES SYSTÈMES TEMPS-RÉEL Sujets Concepts de processus/thread concurrents –Windows NT et la programmation temps réel Lectures: Chapitres.
Interactions entre Processus
Tutorat en bio-informatique
La programmation.
8PRO107 Éléments de programmation Les adresses et les pointeurs.
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Chapitre 4 La représentation des nombres.
Systèmes d’exploitation Processus conclusion Modèle conceptuel de processus Pour masquer les effets des interruptions, les SE fournissent un modèle conceptuel.
1 UNIX AVANCE Yves PAGNOTTE – Janvier – PROCESSUS ET RESSOURCES.
Transcription de la présentation:

Module Systèmes d’exploitation BTS Génie Informatqiue École Normale Supérieure Tétouan Département Informatique Module Systèmes d’exploitation Chapitre 6 Communication Interprocessus Partie II 2008-2009 Enseigant : AAMMOU Souhaib

Module Systèmes d'exploitation BTS Génie Informatqiue 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? Race Condition is where two or more processes are accessing shared data and the final result depends on the order in which the processes execute The Critical Region Enseigant : AAMMOU Souhaib

Module Systèmes d'exploitation BTS Génie Informatqiue Synopsis Modèle Producteur/Consommateur Exclusion mutuelle sans attente active: sleep() and wakeup() Sémaphores Définition Opérations Résolution du problème du producteur/consommateur avec les sémaphores Enseigant : AAMMOU Souhaib

Modèle Producteur/Consommateur Module Systèmes d'exploitation BTS Génie Informatqiue Modèle Producteur/Consommateur Consommateur Producteur Tampon de taille Les deux processus coopèrent en partageant un même tampon Le producteur produit des objets qu’il dépose dans le tampon Le consommateur retire des objets du tampon pour les consommer Conflits Le producteur veut déposer un objet alors que le tampon est déjà plein; Le consommateur veut retirer un objet du tampon alors que celui-ci est vide; Le producteur et le consommateur ne doivent pas accéder simultanément au tampon. Enseigant : AAMMOU Souhaib

Primitives sleep() et wakeup() Module Systèmes d'exploitation BTS Génie Informatqiue Primitives sleep() et wakeup() Les primitives sleep et wakup sont deux appels système: Sleep() (dormir) qui suspend (held) le processus appelant Wakeup(processus) (réveiller) qui réveille le processus donné en argument Note: sleep() and wakeup() aren’t part of the standard C library, but they would be available for any system that actually had those system calls Enseigant : AAMMOU Souhaib

Primitives sleep() et wakeup() Module Systèmes d'exploitation BTS Génie Informatqiue Primitives sleep() et wakeup() #define N 100 // nbre d’emplacement ds tampon int compteur = 0 ; // nbre d’objets ds tampon void producteur () { while (1) { produire_objet(o) ; if (compteur == N) sleep () ; mettre_objet(o) ; compteur ++ ; If (compteur == 1) wakeup(consommateur) ; } } void consommateur () { if (compteur == 0) sleep() ; retirer_objet(o) compteur -- ; if (compteur == N-1) wakeup (producteur) ; consommer_objet(o) ; } Quel problème existe ici ? Dicté Cette solution est élégante, mais conduit aux conflits d’accès à la variable compteur. Considérant en effet la situation suivante : la file (tampon) est vide, et le consommateur vient de lire la valeur 0 ds la variable compteur; l’ordonnanceur l’interrompt et donne la main au producteur, qui insère un objet ds la file, incrémente le compteur, et appelle wakeup pour réveiller le consommateur; comme celui-ci n’était pas endormi, l’appel wakeup est sans effet (Réveils perdus); l’ordonnanceur donne la main au consommateur, qui appelle la routine sleep. Comme le producteur n’appellera plus la routine wakeup, et que le consommateur est endormi, le producteur remplira la file jusqu’à ce quelle soit pleine, puis s’endormira à son tour, et donc les deux processus seront bloqués (il y a interblocage). Ici encore, les problèmes apparaissent du fait de la non-atomicité du test et de l’action qui lui est associée. Solution voir diapositive suivant Enseigant : AAMMOU Souhaib

Primitives sleep() et wakeup() Module Systèmes d'exploitation BTS Génie Informatqiue Primitives sleep() et wakeup() Une première solution consiste à inhiber les interruptions avant les tests et à ne les restaurer qu’après. Cette solution est techniquement efficace, car le code de la fonction sleep est petit (il n’est en effet pas nécessaire ici de protéger les test de wakeup. Mais cette solution est dangereuse en mode utilisateur. Une deuxième solution consisterait à stocker un bit de réveil en attente (wakeupwaiting) lorsqu’un processus fait l’objet d’un wakeup alors qu’il n’est pas endormi, et à n’endormir un processus que si son bit de réveil est à zéro (sinon, le bit est remis à zéro et le processus ne s’endort pas). Que ce passe t’il si nous avons 2 consommateurs, 10, 100… Pourquoi la première solution est dangereuse? Pour la deuxième solution, on peut exhiber (découvrir = trouver) des situation à producteurs consommateurs multiples, pour les quelles autant de bits que de processus seraient nécessaires. Enseigant : AAMMOU Souhaib

Sémaphores Définition Module Systèmes d'exploitation BTS Génie Informatqiue Sémaphores Définition Les sémaphores sont introduits par DIJKS]RA on 1965 pour pallier des problèmes d’une méthode plus ancienne basée sur des appels de sleep() (basculement en mode bloqué) et wakeup() (basculement en mode prêt) directs, qui pouvaient engendrer des interblocages. ils sont maintenant largement utilisés dans les systèmes d'exploitation modernes. Un sémaphore S est une variable entière non négative à partir de laquelle sont définies deux opérations atomiques : Up() down() Dans la littérature, on trouve parfois d’autres terminologies, respectivement, P() (proberen) et V() (verhogen) ou wait() et signal() ou get() et release(). Définition atomique, non-interruptibilité ; La définition précise d’atomicité, non-déterminisme etc. est un peu compliquée, et il y en a aussi des différentes… (les curieux pourraient faire une recherche Web sur ces mot clé) Ce que nous discutons dans ce cours est une 1ère approximation: une séquence d’ops est atomique si elle est exécutée toujours sans être interrompue par aucune autre séquence sur les mêmes données Ou son résultat ne dépend jamais de l’existence d’autres séquences en parallèle… Enseigant : AAMMOU Souhaib

Sémaphores Opérations Module Systèmes d'exploitation BTS Génie Informatqiue Sémaphores Opérations Un sémaphore possède la valeur 0 si aucun réveil n’à été mémorisé, et une valeur positive s’il y a un ou plusieurs réveils en attente. L’appel système down() décrémente la valeur du sémaphore lorsque celle-ci est supérieure à 0, sinon le processus qui a appelé down() s’endort. L’appel système up() incrémente la valeur du sémaphore si aucun processus n’est endormi du fait d’un appel down, ou réveille l’un des ces processus (choisi au hasard) sinon. Comment les sémaphores peuvent aider à résoudre le problème du producteur/consommateur? Enseigant : AAMMOU Souhaib

Module Systèmes d'exploitation BTS Génie Informatqiue #define N 100 // nombre de places dans la file (taille de la file) typedef int sémaphore; //Les sémaphores partagés par tous les processus sémaphore mutex = 1; // sémaphore d’exclusion mutuelle + un seul processus en SC sémaphore vide = N; // nb. de places libres + la file est toute vide sémaphore plein = 0; // nb. de places occupées + aucun emplacement occupé producteur() { //processus producteur while (1) { // boucle infinie produire_objet (o); //produire un objet down(vide); // on veut une place vide alors décrémenté des places libres down(mutex); // on bloque la file (début section critique) mettre_objet(o); // mettre l’objet en file (utilisation ressource) up(mutex); // libération de la file (fin section critique) up(plein); // incrémente des places occupées (un objet est à prendre) } consommateur(){ //processus producteur while (1) { // boucle infinie down(plein); // attente d’un objet (décrémente des places occupées) retirer_objet(o); // prendre l’objet courant (utilisation ressource) up(vide); // incrémente des places vides (une place est à prendre) consommer_objet(o) //consommer l’objet courant It is essential that down() and up() (the semaphores) be implemented in an indivisible way. We’ll discuss how next slide, for now simply consider how this works Give them all the details...even, make one of them explain... There are actually three semaphores here: One for counting the number of full slots One for counting the number of empty slots A semaphore to restrict access to the same area of memory as it is entirely possible that the consumer and producer could be able to proceed through their down(&empty) and down(&full) calls simultaneously Enseigant : AAMMOU Souhaib

Sémaphores Résolution du problème P/C Module Systèmes d'exploitation BTS Génie Informatqiue Sémaphores 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 Enseigant : AAMMOU Souhaib

Sémaphores Résolution du problème P/C Module Systèmes d'exploitation BTS Génie Informatqiue Sémaphores 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é Note if multiple CPUs used, then the semaphore should be protected by a lock variable and TSL instruction use as described previously Problème: L’utilisation des sémaphores, bien qu’amenant une simplification conceptuelle de la gestion des exclusions mutuelles, est encore fastidieuse et propice aux erreurs. Ainsi, si l’on inverse par mégarde les deux down dans le code du consommateur, et si la file est vide, le consommateur se bloque sur sémaphore plein après avoir positionné le sémaphore mutex, et le producteur se bloque sur son appel à mutex sans pouvoir débloquer le sémaphore plein, réalisant ainsi un interblocage. Enseigant : AAMMOU Souhaib

Sémaphores Résolution du problème P/C Module Systèmes d'exploitation BTS Génie Informatqiue Sémaphores Résolution du problème P/C L’utilisation des sémaphores, bien qu’amenant une simplification conceptuelle de la gestion des exclusions mutuelles, est encore fastidieuse et propice aux erreurs. Ainsi, si l’on inverse par mégarde les deux down dans le code du consommateur, et si la file est vide, le consommateur se bloque sur sémaphore plein après avoir positionné le sémaphore mutex, et le producteur se bloque sur son appel à mutex sans pouvoir débloquer le sémaphore plein, réalisant ainsi un interblocage. Enseigant : AAMMOU Souhaib

Module Systèmes d'exploitation BTS Génie Informatqiue Quiz Time! Questions? What is the name of a semaphore that only has two values? A binary semaphore Can up() and down() be implemented in user space? Almost certainly not as they need to disable interrupts while the value of the semaphore is being adjusted Enseigant : AAMMOU Souhaib