Contrôle de concurrence par sémaphores. C.Coquery NFP137 Cours 11 1

Documents pareils
Cours de Systèmes d Exploitation

Chapitre 4 : Exclusion mutuelle

Problèmes liés à la concurrence

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

On appelle variable condition une var qui peut être testée et

Introduction à la programmation concurrente

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Ordonnancement temps réel

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Cours 2: Exclusion Mutuelle entre processus (lourds, ou légers -- threads)

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

Introduction aux algorithmes répartis

4. Outils pour la synchronisation F. Boyer, Laboratoire Sardes

L exclusion mutuelle distribuée

DAns un système multi-utilisateurs à temps partagé, plusieurs processus

Synchro et Threads Java TM

1 Mesure de la performance d un système temps réel : la gigue

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

Les processus légers : threads. Système L3, /31

Génie Logiciel avec Ada. 4 février 2013

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Cours Bases de données 2ème année IUT

Noyau de concurrence par moniteur pour Java ou C# pour une autre sémantique plus fiable et plus performante

Temps Réel. Jérôme Pouiller Septembre 2011

ORDONNANCEMENT CONJOINT DE TÂCHES ET DE MESSAGES DANS LES RÉSEAUX TEMPS RÉELS 4. QUELQUES EXEMPLES DU DYNAMISME ACTUEL DU TEMPS RÉEL

Thèmes et situations : Personnel et législation sociale dans l entreprise. Fiche pédagogique

Partie 7 : Gestion de la mémoire

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Structure fonctionnelle d un SGBD

Réplication des données

Gestion des processus

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Baladeur Santé VITAL'ACT

Initiation au HPC - Généralités

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Mode d emploi. Appareil de programmation Multi

Bases de données avancées Concurrence d'accès et reprise

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Exécutif temps réel Pierre-Yves Duval (cppm)

Définitions. Numéro à préciser. (Durée : )

Exercices INF5171 : série #3 (Automne 2012)

Différencier, d accord oui mais comment organiser sa classe.

Programmation parallèle et distribuée

Compte sur livret. Mots clés : Sommaire : Compte sur livret. 1. Qui peut bénéficier d un compte sur livret? 2. Le compte sur livret au quotidien

CONCEPTION ET IMPLANTATION DES SI PROJET : GESTION DU FOYER DE L ENIT

Données Réparties. Thibault BERNARD.

gestion des processus La gestion des processus

Analyse du temps de réponse des systèmes temps réel

CHARGES SOCIALES DES TRAVAILLEURS INDÉPENDANTS

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

Fiche pratique n 10 : les droits des clients en matière bancaire (25/01/2010)

TPE Artema IP. Manuel de l'utilisateur

Structurer ses données : les tableaux. Introduction à la programmation

DIRECTION GÉNÉRALE DES FINANCES PUBLIQUES INSTRUCTION DU 4 OCTOBRE B-13-11

AGRÉGATION «ÉCONOMIE ET GESTION»

IFT Systèmes d exploitation - TP n 1-20%

Le langage C. Séance n 4

Programmation linéaire

Exercices sur le chapitre «Probabilités»

Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I

Programmation d Applications Concurrentes et Distribuées (INF431)

Le Plan d Epargne Interentreprises

SECURIT GSM Version 2

Introduction et sommaire

FIP Axe Croissance. FIP Axe Croissance investira dans des PME industrielles, commerciales ou de services présentant les caractéristiques suivantes :

Modèles à Événements Discrets. Réseaux de Petri Stochastiques

ÉPARGNE TEMPS DÉCRET CIRCULAIRE DECRET

Projet de Loi de Finances Les principales réformes

<Insert Picture Here> Solaris pour la base de donnés Oracle

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Système de Gestion de Fichiers

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Février Novanet-IS. Suite progicielle WEB pour l Assurance. Description fonctionnelle

Règlement. Gestion des comptes de collaborateur et des dépôts d actions

Cours A7 : Temps Réel

Chap III : Les tableaux

Examen d informatique première session 2004

L aide pour la constitution d une garantie locative

Approche Contract First

DAns un système d exploitation multiprogrammé en temps partagé, plusieurs

Année Scolaire 2013/ Circulaire n 8 SOMMAIRE

La rémunération de l apprenti :

COMMISSION DES NORMES COMPTABLES

MOTIF DU DEBLOCAGE Acquisition ou construction de la résidence principale

L Assemblée Nationale a délibéré et adopté en sa séance du 14 décembre ;

CIRCULAIRE CDG90. Loi n du 26 janvier 1984 modifiée portant di spositions statutaires relatives à la fonction publique territoriale ;

.id. _la solution de pilotage de votre entreprise ERP / CRM / BPM. informatique & développement

PROFESSIONNELS INDEPENDANTS OPTIMISER LA PROTECTION DU CHEF D ENTREPRISE. Santé Prévoyance & Retraite

Ordonnancement temps réel

UTILISATION DU RESEAU INFORMATIQUE Comment utiliser le réseau

Le prêt participatif : Historique

FORTUNEO FCPI FIP ISF 2011 BP BREST CEDEX 09

Premiers Pas en Programmation Objet : les Classes et les Objets

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Transcription:

Contrôle de concurrence par sémaphores C.Coquery NFP137 Cours 11 1

Rappel du concept de sémaphore Définition (Dijkstra-1965) Un sémaphore S est un objet partagé constitué de - un entier E initialisé à une valeur 0 - une file d attente F des processus bloqués Un sémaphore est accessible uniquement par 3 primitives atomiques : P(S) : Puis-je (Proberen) contrôle d autorisation + blocage éventuel du demandeur V(S) : Vas-y (Verhogen) ajout d une autorisation + déblocage éventuel d un demandeur E0(S,I) : initialisation du sémaphore à I 0 autorisations et file d attente vide C.Coquery NFP137 Cours 11 2

Rappel du concept de sémaphore Définition Primitive P(sémaphore S) : début S.E=S.E-1; //retrait d une autorisation si S.E<0 alors état du processus appelant bloqué; placer son id dans la file F; fin Primitive V(sémaphore S) : début S.E=S.E+1; //ajout d une autorisation si S.E 0 alors //il y a au moins un processus bloqué choix et retrait d un processus de F; réveil du processus;finsi; fin Primitive E0(sémaphore S,entier I) : début S.E=I; S.F=vide; //I 0 fin C.Coquery NFP137 Cours 11 3

Rappel du concept de sémaphore Propriétés - Un processus qui se bloque en exécutant P(S) termine son exécution de P(S) - Un processus ne peut accéder à un sémaphore que par les primitives P(S) et V(S), l initialisation E0(S,I) doit précéder tout accès au sémaphore - Un seul processus peut exécuter P(S) ou V(S) à un instant donné C.Coquery NFP137 Cours 11 4

Rappel du concept de sémaphore Propriétés (suite1) -S.E initialisé à I 0 signifie qu on peut exécuter I fois P(S) sans blocage -S.E 0 représente le nombre d autorisations de franchissements de P(S) sans blocage à un instant donné -S.E<0 S.E représente le nombre de processus bloqués à un instant donné C.Coquery NFP137 Cours 11 5

Rappel du concept de sémaphore Propriétés (suite2) Soient NP(S) le nombre d appels à P(S), NV(S) le nombre d appels à V(S) NF(S) le nombre de franchissements de P(S) NBLOC(S) le nombre de processus bloqués - S.E=I-NP(S)+NV(S) - NBLOC(S)= max(0, -S.E) - NF(S)=Min(NP(S), I+NV(S)) C.Coquery NFP137 Cours 11 6

Exclusion mutuelle Accès exclusif à une ressource critique ou à un ensemble de variables partagées par N processus s exécutant en concurrence Contexte commun : ressource ou variables partagées sémaphore mutex; E0(mutex,1); Processus P i début P(mutex); //entrée en section critique Section_critique; V(mutex); //sortie de section critique Hors section critique; fin; C.Coquery NFP137 Cours 11 7

Exclusion mutuelle Respect des propriétés 1- Accès exclusif L accès est autorisé dans P(mutex) si mutex.e 0, soit NP(mutex) 1+NV(mutex) c est-à-dire NP(mutex)-NV(mutex) 1. Il y a donc au plus un processus au plus en section critique 2-Pas d interblocage actif : si aucun processus n est en section critique alors mutex.e=1 3-pas d interblocage passif C.Coquery NFP137 Cours 11 8

La cohorte N processus au plus coopèrent pour -se répartir une tâche -partager N ressources banalisées Schéma d exécution Processus P i entrée-groupe //contrôle l accès au groupe dans_groupe //participation au groupe sortie-groupe // libère un accès hors groupe; fait C.Coquery NFP137 Cours 11 9

La cohorte Contexte commun : sémaphore S_C; E0(S_C,N); Processus P i P(S_C);//entrée-groupe dans_groupe //participation au groupe V(S_C); //sortie-groupe hors groupe; fait C.Coquery NFP137 Cours 11 10

Cohorte : lot de ressources banalisées Problématique Un ensemble de processus se partagent un stock de N ressources banalisées, par exemple des pages mémoires, allouables dynamiquement une à une. -un sémaphore S_C initialisé à N modélise le nombre d autorisations d accès au stock -une structure de données partagée reflète l état d allocation de chaque ressource, on doit y accéder en exclusion mutuelle un sémaphore mutex initialisé à 1 contrôle la section critique C.Coquery NFP137 Cours 11 11

Cohorte : lot de ressources banalisées Cas de demande d une seule ressource Contexte commun sémaphore S_C, mutex; E0(S_C,N); E0(mutex,1); booleen stock[n]; initialisé à faux; Processus P i entier j; //acquisition d une autorisation; P(S_C); // choix d une ressource P(mutex); j=1; tant que stock[j] faire j=j+1;fait stock[j]=vrai; V(mutex); C.Coquery NFP137 Cours 11 12

Cohorte : lot de ressources banalisées Cas de demande d une seule ressource(suite) Utilisation de la ressource j; //restitution de la ressource P(mutex); stock[j]=faux;v(mutex); V(S_C); //sortie-groupe hors groupe; fait C.Coquery NFP137 Cours 11 13

Cohorte : lot de ressources banalisées Problème : Cas de demande de plusieurs ressources Contexte commun sémaphore S_C, mutex; E0(S_C,N); E0(mutex,1); booleen stock[n] initialisé à faux; Processus P i P(S_C); P(S_C); //acquisition des autorisations; P(mutex); V[mutex]; // choix des ressources Utilisation des ressources P(mutex); ;V(mutex); //restitution des ressources V(S_C);V(S_C); //sortie-groupe hors groupe; fait; Risque d interblocage! C.Coquery NFP137 Cours 11 14

Producteurs-Consommateurs Spécification Contexte commun tampon de N cases producteur produire un message; déposer un message; consommateur retirer un message; consommer le message; fait fait Objectif Asservir la vitesse moyenne de production à la vitesse moyenne de consommation en ralentissant le moins possible le producteur C.Coquery NFP137 Cours 11 15

Producteurs-Consommateurs Hypothèses 1- vitesses relatives quelconques 2- tampon de taille fixe, 1 case=1message, vide initialement 3- tout message est déposé et retiré une fois et une seule 4- le dépôt et le retrait se font en un temps fini C.Coquery NFP137 Cours 11 16

Producteurs-Consommateurs Propriétés de la solution 1- exclusion mutuelle d accès aux messages 2- le producteur attend si le tampon est plein, il est réveillé dès que le tampon n est plus plein 3- le consommateur attend si le tampon est vide, il est réveillé dès que le tampon n est plus vide 4- pas d interblocage C.Coquery NFP137 Cours 11 17

Producteur-Consommateur Schéma d exécution Contexte commun tampon de N cases vide; Processus producteur produire un message; si tampon plein alors se bloquer; déposer un message; si consommateur bloqué alors réveil du consommateur; fait; Processus consommateur si tampon vide alors se bloquer; retirer un message; si producteur bloqué alors réveil du producteur; consommer le message; fait; C.Coquery NFP137 Cours 11 18

Producteur-Consommateur Schéma de synchronisation - un sémaphore Nvide initialisé à N pour le contrôle du nombre de cases vides le producteur exécute P(Nvide) pour réserver une case le consommateur exécute V(Nvide) pour libérer une case - un sémaphore Nplein initialisé à 0 pour le contrôle du nombre de messages (cases pleines) le producteur exécute V(Nplein) pour signaler au consommateur un nouveau message dans le tampon le consommateur exécute P(Nplein) pour attendre un message C.Coquery NFP137 Cours 11 19

Producteur-Consommateur Schéma de synchronisation Contexte commun tampon de N cases vide; Sémaphore Nplein,Nvide; E0(Nplein,0);E0(Nvide,N) Processus producteur message m; produire un message(m); P(Nvide); déposer(m); V(Nplein); fait; Processus consommateur message m; P(Nplein); retirer(m); V(Nvide); consommer(m); fait; C.Coquery NFP137 Cours 11 20

Producteur-Consommateur Respect des propriétés 2- le producteur attend si le tampon est plein : P(Nvide) il est réveillé dès que le tampon n est plus plein : V(Nvide) 3- le consommateur attend si le tampon est vide : P(Nplein) il est réveillé dès que le tampon n est plus vide : V(Nplein) 4- pas d interblocage : le producteur et le consommateur ne peuvent être bloqués simultanément, respectivement sur P(Nvide) et P(Nplein) C.Coquery NFP137 Cours 11 21

Producteur-Consommateur Gestion du tampon -Le tampon est géré circulairement, implanté par un tableau - On définit un indice de production queue et un indice de consommation tête - les messages doivent être consommés dans l ordre de leur production, tête et queue sont initialisées à la même valeur - Un message est consommé une fois et une seule C.Coquery NFP137 Cours 11 22

Producteur-Consommateur Schéma avec gestion du tampon Contexte commun sémaphore Nplein,Nvide; E0(Nplein,0);E0(Nvide,N); message tampon[n]; Processus producteur message m; entier queue=0; produire un message(m); P(Nvide); tampon[queue]=m;//déposer(m); V(Nplein); queue=(queue+1)%n; fait; C.Coquery NFP137 Cours 11 23

Producteur-Consommateur Schéma avec gestion du tampon Processus consommateur message m; entier tête=0; P(Nplein); m=tampon[tête];//retirer(m); V(Nvide); tête=(tête+1)%n; fait C.Coquery NFP137 Cours 11 24

Producteur-Consommateur Propriété 1- exclusion mutuelle d accès aux messages Si le producteur et le consommateur travaillent sur la même case c est que tête=queue tête=queue tampon plein alors le producteur est bloqué tête=queue tampon vide alors le consommateur est bloqué C.Coquery NFP137 Cours 11 25

Producteurs-Consommateurs Producteurs consommateurs multiples Le schéma de synchronisation assure une exclusion mutuelle entre producteurs et consommateurs - plusieurs producteurs ne doivent pas déposer dans la même case, l indice de production queue est partagé =>exclusion mutuelle entre producteurs - plusieurs consommateurs ne doivent pas prélever le même message, l indice de consommation tête est partagé =>exclusion mutuelle entre consommateurs C.Coquery NFP137 Cours 11 26

Producteurs-Consommateurs Producteurs consommateurs multiples Contexte commun sémaphore Nplein,Nvide; E0(Nplein,0);E0(Nvide,N); sémaphore mutexprod,mutexcons; E0(mutexProd,1); E0(mutexCons,1); Entier tête,queue=0; Message tampon[n]; C.Coquery NFP137 Cours 11 27

Producteurs-Consommateurs Producteurs consommateurs multiples Processus unproducteur message m; produire un message(m); P(Nvide); P(mutexProd); tampon[queue]=m;//déposer(m); queue=(queue+1)%n; V(mutexProd) V(Nplein); fait; C.Coquery NFP137 Cours 11 28

Producteurs-Consommateurs Producteurs consommateurs multiples Processus unconsommateur message m; P(Nplein); P(mutexCons); m=tampon[tête];//retirer(m); tête=(tête+1)%n; V(mutexCons); V(Nvide); fait; C.Coquery NFP137 Cours 11 29

Lecteurs-Rédacteurs Compétition d accès à un ensemble de données par un ensemble de processus - lecteurs accès seulement en lecture - rédacteurs accès en lecture et écriture Objectif Garantir la cohérence des données Spécification - plusieurs lectures simultanément - les écritures sont en exclusion mutuelle C.Coquery NFP137 Cours 11 30

Lecteurs-Rédacteurs Hypothèse complémentaire tout processus termine sa lecture ou son écriture au bout d un temps fini Spécification de comportement - Les lectures sont concurrentes et cohérentes, les écritures sont en exclusion mutuelle - Priorité aux lecteurs, équité entre lecteurs et rédacteurs, service à l ancienneté C.Coquery NFP137 Cours 11 31

Lecteurs-Rédacteurs Schéma d exécution Processus unlecteur début-lecture;//contrôle l accès en lecture lecture; fin-lecture;//libère un accès en lecture ou en écriture fait; Processus unrédacteur début-écriture;//contrôle l accès en écriture écriture; fin-écriture;//libère un accès en lecture ou écriture fait; C.Coquery NFP137 Cours 11 32

Lecteurs-Rédacteurs Schéma de solution - Les rédacteurs doivent écrire en exclusion mutuelle avec un groupe de lecteurs et avec les autres rédacteurs soit mutex_a un sémaphore d exclusion mutuelle Un rédacteur exécute P(mutex_A) pour obtenir l accès Le premier lecteur d un groupe exécute P(mutex_A) pour obtenir l accès pour le groupe Une variable partagée NL permet de compter le nombre de lecteurs : s il y a déjà un lecteur alors autoriser un nouveau lecteur Un sémaphore d exclusion mutuelle mutex_nl permet de gérer l accès à NL et de bloquer tout lecteur non autorisé C.Coquery NFP137 Cours 11 33

Lecteurs-Rédacteurs Schéma de solution - Un rédacteur bloqué est réveillé par un autre rédacteur ou par le dernier lecteur qui a fini de lire par V(mutex_A) - Un lecteur bloqué sur P(mutex_A) est réveillé par un rédacteur exécutant V(mutex_A) Un lecteur bloqué par P(mutex_L) est réveillé par le premier lecteur en exécutant V(mutex_NL) C.Coquery NFP137 Cours 11 34

Lecteurs-Rédacteurs Schéma de solution Contexte commun entier NL=0;sémaphore mutex_a, mutex_nl; E0(mutex_A,1); E0(mutex_NL,1); Processus unlecteur; //début lecture P(mutex_NL); NL=NL+1; si NL=1 alors P(mutex_A);finsi; V(mutex_NL); lectures; //fin lecture P(mutex_NL); NL=NL-1; si NL=0 alors V(mutex_A);finsi V(mutex_NL); fait; C.Coquery NFP137 Cours 11 35

Lecteurs-Rédacteurs Schéma de solution (suite) Processus unrédacteur; //début écriture P(mutex_A); écritures; //fin écriture V(mutex_A); fait; C.Coquery NFP137 Cours 11 36

Lecteurs-Rédacteurs Schéma de solution Remarque - la solution donne une priorité aux lecteurs à partir du moment où une lecture est déjà en cours famine possible des rédacteurs Égalité entre les classes de lecteurs et de rédacteurs - les requêtes d accès de tous les processus sont mises dans une seule file d attente sous le contrôle d un sémaphore d exclusion mutuelle FIFO C.Coquery NFP137 Cours 11 37

Lecteurs-Rédacteurs Schéma de solution égalité de priorité Contexte commun entier NL=0;sémaphore mutex_a,mutex_nl; E0(mutex_A,1); E0(mutex_NL,1); sémaphore FIFO; E0(FIFO,1); Processus unlecteur; //début lecture P(FIFO); P(mutex_NL); NL=NL+1; si NL=1 alors P(mutex_A); finsi; V(mutex_NL); V(FIFO); lectures; //fin lecture P(mutex_NL); NL=NL-1; si NL=0 alors V(mutex_A); V(mutex_NL; fait; C.Coquery NFP137 Cours 11 38

Lecteurs-Rédacteurs Schéma de solution égalité de priorités Processus unrédacteur; //début écriture P(FIFO); P(mutex_A); V(FIFO); écritures; //fin écriture V(mutex_A); fait; Ou Processus unrédacteur; //début écriture P(FIFO); P(mutex_A); écritures; //fin écriture V(mutex_A); V(FIFO); fait; Égalité de priorités si la file d attente du sémaphore FIFO est gérée à l ancienneté. C.Coquery NFP137 Cours 11 39

Le repas des philosophes Hypothèses chaque assiette (philosophe) a une place fixe chaque baguette a une place fixe accès à chaque baguette en exclusion mutuelle Propriétés souhaitées pas d interblocage pas de famine P4 B0 P0 B1 B4 P1 P3 P2 B2 B3 C.Coquery NFP137 Cours 11 40

Le repas des philosophes Une première solution prendre les baguettes une par une, la sienne, puis celle de droite Contexte commun sémaphore baguette[n]; tout i, E0(baguette[i],1); Processus Philosophe i // i identifiant 0..n-1 penser; P(baguette[i]);//prendre la baguette i; P(baguette[(i+1)%n])//prendre la baguette de droite; manger; V(baguette[i]); // rendre la baguette i; V(baguette[(i+1)%n])//rendre la baguette de droite; fait; Interblocage possible! C.Coquery NFP137 Cours 11 41

Le repas des philosophes Une solution sans interblocage : autoriser seulement n-1 philosophes à demander à manger, il n y a que n-1 chaises! Contexte commun sémaphore baguette[n]; tout i, E0(baguette[i],1); sémaphore chaise; E0(chaise,n-1)) Processus Philosophe i // i identifiant 0..n-1 penser; P(chaise); P(baguette[i]);//prendre la baguette i; P(baguette[(i+1)%n])//prendre la baguette de droite; manger; V(baguette[i]);// rendre la baguette i; V(baguette[(i+1)%n]);//rendre la baguette de droite; V(chaise); fait; Pas de famine si la file de chaise est gérée à l ancienneté C.Coquery NFP137 Cours 11 42