TD3. Le problème de l'exclusion mutuelle et les mutexes. LP RGI Prog. système



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

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

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

Cours de Systèmes d Exploitation

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

Problèmes liés à la concurrence

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

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

Chapitre 4 : Exclusion mutuelle

Introduction à la programmation concurrente

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

L exclusion mutuelle distribuée

REALISATION d'un. ORDONNANCEUR à ECHEANCES

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Gestion des processus

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

Programmation Objet - Cours II

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

Programmation C++ (débutant)/instructions for, while et do...while

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

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


Cours d Informatique

Cours de Base de Données Cours n.12

Le langage C. Séance n 4

Cours d Algorithmique et de Langage C v 3.0

CORRECTION EXERCICES ALGORITHME 1

LE PROBLEME DU PLUS COURT CHEMIN

Synchro et Threads Java TM

Algorithmique et structures de données I

Algorithmique et Programmation, IMA

Introduction aux systèmes temps réel. Iulian Ober IRIT

Organigramme / Algorigramme Dossier élève 1 SI

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

COMMANDER A DISTANCE LE ROBOT-PONG ETUDE DE LA TELECOMMANDE (2 nde PARTIE)

INITIATION AU LANGAGE JAVA

alg - Classes, instances, objets [oo] Exercices résolus

Un ordonnanceur stupide

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Algorithmique avec Algobox

Ordonnancement temps réel

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Feuille TD n 1 Exercices d algorithmique éléments de correction

Cours Programmation Système

Algorithmique et programmation : les bases (VBA) Corrigé

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

Solutions du chapitre 4

1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

CEG4566/CSI4541 Conception de systèmes temps réel

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Initiation au HPC - Généralités

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Instruction n du 17 Octobre 1999 relative à la tenue de la comptabilité des titres par les intermédiaires en opérations de bourse

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

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

Rappels sur les suites - Algorithme

Correction TD Algorithmique 5.3 Pile Liste 5.3 Pile

Algorithme. Table des matières

Introduction aux Systèmes et aux Réseaux

Projet Active Object

Cours de Génie Logiciel

C++ - Classes, instances, objets [oo] Exercices résolus

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

Métriques de performance pour les algorithmes et programmes parallèles

Cas de synthèse n 1 : Société BIGFLASH SA Bilan d ouverture, journal, grand-livre et balance

Recherche dans un tableau

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Correction TD algorithmique

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

La fonction exponentielle

Les Réseaux sans fils : IEEE F. Nolot

Cours de Programmation Impérative: Zones de mémoires et pointeurs

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

L ALGORITHMIQUE. Algorithme

Cours 1 : Qu est-ce que la programmation?

Premiers Pas en Programmation Objet : les Classes et les Objets

Gestion distribuée (par sockets) de banque en Java

1.6- Génération de nombres aléatoires

Introduction aux algorithmes répartis

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

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

Bases de programmation. Cours 5. Structurer les données

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

TRIGONOMETRIE Algorithme : mesure principale

UE Programmation Impérative Licence 2ème Année

Cours A7 : Temps Réel

C f tracée ci- contre est la représentation graphique d une

Systèmes et algorithmes répartis

Conversion d un entier. Méthode par soustraction

Notions fondamentales du langage C# Version 1.0

Systèmes temps-réel. Plan général. Matthieu Herrb. Mars Introduction - concepts généraux

Introduction : les processus. Introduction : les threads. Plan

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

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Transcription:

LP RGI Prog. système TD3 Le problème de l'exclusion mutuelle et les mutexes I U T d ' A m i e n s, d é p a r t e m e n t I n f o r m a t i q u e a n n é e u n i v e r s i t a i r e 2 0 1 4 / 2 0 1 5 L P R G I

Plan A. L'exclusion mutuelle B. Une solution (trop) simple... C. Une solution logicielle : l'algo de Dekker D. Les sémaphores 05/10/14 LP RGI : TD2 T2

A. L'exclusion mutuelle Unix est multi-taches et multi-utilisateurs : Donc plusieurs processus en compétition peuvent accéder en même temps à une même ressource Ceci peut impliquer des problèmes de cohérence! P. ex. si un processus lit dans un fichier pendant qu un autre écrit 05/10/14 LP RGI : TD2 T3

Exemple Un compte en banque doit être crédité de 10 000 euros et débité de 30 euros Un processus est chargé d'ajouter 10 000 euros solde=lire(compte) solde = solde + 10000 Ecrire(solde,compte) Un autre est chargé de soustraire 30 euros solde=lire(compte) solde = solde - 30 Ecrire(solde,compte) 05/10/14 LP RGI : TD2 T4

Exemple scénario 1 Le processus créditeur s exécute avant le processus débiteur solde=lire(compte) solde=250 solde=solde+10000 solde=250+10000=10250 Écrire(solde,compte) compte=10250 solde=lire(compte) solde=10250 solde=solde 30 solde=10250 30=10220 Écrire(solde,compte) compte=10220 250 10250 10220 compte 05/10/14 LP RGI : TD2 T5

Exemple scénario 2 Les processus créditeur et débiteur s exécutent «en même temps» solde=lire(compte) solde=250 solde=solde 30 solde=250 30=220 i=lire(compte) i=250 i=i+10000 i=250+10000=10250 Écrire(i,compte) compte=10250 250 10250 220 compte A l'issue du premier scénario, le compte valait 10220 euros!!! Écrire(solde,compte) compte=220 05/10/14 LP RGI : TD2 T6

Conclusion Il aurait fallu que le premier processus interdise au second d accéder au fichier pendant qu il calculait le nouveau solde C'est un problème d'exclusion mutuelle Usage exclusif... au maximum un processus à un instant donné... d'une ressource critique ici, le fichier contenant le compte en banque 05/10/14 LP RGI : TD2 T7

Les propriétés de l'em (Dijkstra) P1 : exclusion mutuelle. A tout instant, un seul processus peut avoir accès à la section critique. P2 : progression. Si aucun processus n'est en section critique, un processus en attente entre en section critique au bout d'un temps fini. 05/10/14 LP RGI : TD2 T8

Les propriétés de l'em P3. Si un processus est bloqué en dehors d'une section critique, ce blocage ne doit pas empêcher l'entrée d'un autre processus en section critique. P4. Aucun processus ne doit être privilégié pas d'hypothèse de priorité ou de vitesse 05/10/14 LP RGI : TD2 T9

Les propriétés de l'em P5. Equité : un processus en attente d'entrer en SC y accédera en un temps fini P6. Tolérance aux défaillances. Si un processus en SC se termine brutalement, le système ne doit pas devenir instable 05/10/14 LP RGI : TD2 T10

Les propriétés de l'em Symétrie : l'algorithme d'em doit être le même pour tous les processus 05/10/14 LP RGI : TD2 T11

Les problèmes liés à l'exclusion mutuelle Interblocage : deux processus concurrents s'attendent mutuellement. Famine. Un processus peut ne jamais accéder à la ressource critique 05/10/14 LP RGI : TD2 T12

Plan A. L'exclusion mutuelle B. Une solution (trop) simple... C. Une solution logicielle : l'algo de Dekker D. Les sémaphores 05/10/14 LP RGI : TD2 T13

B. Une solution (trop) simple... Libre : variable partagée booléenne associée à la ressource critique et initialisée à vrai Cas de deux processus P0 et P1 P0 TantQue Libre = faux faire attendre FinTantQue Libre faux Libre vrai P1 TantQue Libre = faux faire attendre FinTantQue Libre faux Libre vrai 05/10/14 LP RGI : TD2 T14

Un scénario d'exécution TantQue Libre = faux faire attendre FinTantQue TantQue Libre = faux faire attendre FinTantQue Libre faux... Libre faux Libre vaut vrai Libre vaut faux Libre vaut faux Pas d'exclusion mutuelle!!! 05/10/14 LP RGI : TD2 T15

Plan A. L'exclusion mutuelle B. Une solution (trop) simple... C. Une solution logicielle : l'algo de Dekker D. Les sémaphores 05/10/14 LP RGI : TD2 T16

C. Les solutions logicielles : algo de Dekker Hypothèse : l'accès aux variables est atomique... C'est à dire non interruptible, indivisible 05/10/14 LP RGI : TD2 T17

Première version Tour : désigne le processus autorisé à accéder en ressource critique P0 TantQue Tour = 1 faire attendre FinTantQue Tour 1 P1 TantQue Tour = 0 faire attendre FinTantQue Tour 0 P3 non vérifiée : comme l'accès à la RC a lieu en alternance, si PO est bloqué hors de la SC alors que c'est à son tour d'accéder à la RC, P1 est bloqué en attente d'accéder à la RC 05/10/14 LP RGI : TD2 T18

Deuxième version Deux variables booléennes C0 et C1 : Ci est vrai si Pi est en SC Ci est faux si Pi est hors de sa SC P0 TantQue C1 = vrai faire attendre FinTantQue C0 vrai C0 faux P1 TantQue C0 = vrai faire attendre FinTantQue C1 vrai C1 faux 05/10/14 LP RGI : TD2 T19

Deuxième version TantQue C1 = vrai faire attendre FinTantQue C0 vrai TantQue C0 = vrai faire attendre FinTantQue C1 vrai... C0 faux faux faux vrai vrai vrai vrai C1 faux faux faux faux vrai vrai vrai Pas d'exclusion mutuelle!!! 05/10/14 LP RGI : TD2 T20

Troisième version Deux variables booléennes C0 et C1 : Ci est vrai si Pi est en SC ou demande à y entrer Ci est faux si Pi est hors de sa SC P0 C0 vrai TantQue C1 = vrai faire attendre FinTantQue C0 faux P1 C1 vrai TantQue C0 = vrai faire attendre FinTantQue C1 faux 05/10/14 LP RGI : TD2 T21

Troisième version C0 vrai C1 vrai TantQue C1 = vrai faire attendre FinTantQue TantQue C0 = vrai faire attendre FinTantQue C0 faux vrai vrai C1 faux faux vrai interblocage!!! 05/10/14 LP RGI : TD2 T22

Quatrième version : algo de Dekker (1965) Deux variables booléennes C0 et C1 Tour valant 0 ou 1 P0 C0 vrai TantQue C1 = vrai faire Si Tour = 1 alors C0 faux FinSi TantQue Tour = 1 faire attendre FinTantQue C0 vrai FinTantQue Tour 1 C0 faux P0 veut rentrer en SC P1 veut aussi rentrer en SC Si c est le tour de P1 Alors P0 laisse la place P0 attend P0 redemande à rentrer en SC P0 passe le tour à P1 05/10/14 LP RGI : TD2 T23

Quatrième version : algo de Dekker (1965) Théorème : L algo. de Dekker résout le problème de l exclusion mutuelle, sans interblocage, sans famine et de manière équitable. Cet algo a été amélioré en 1981 par Peterson 05/10/14 LP RGI : TD2 T24

5. Les problèmes des algo de Dekker et Peterson Problème 1 : attente active coûteuse en ressource machine C0 vrai TantQue C1 = vrai faire Si Tour = 1 alors C0 faux FinSi TantQue Tour = 1 faire attendre FinTantQue C0 vrai FinTantQue Tour 1 C0 faux Généralement : sleep(1)... Artisanal et coûteux!!! 05/10/14 LP RGI : TD2 T25

Les problèmes des algo de Dekker et Peterson Problème 2 : contrairement à l'hypothèse de départ, les opérations de manipulation de variables ne sont pas atomiques Exemple 1 : N N+1 LDA N ADA #1 STA N Exemple 2 : N=M LDA N LDB M EQ A B Conclusion : Les algorithmes basés sur des solutions logicielles sont rarement utilisés. On se tourne vers des solutions avec blocage passif. 05/10/14 LP RGI : TD2 T26

Plan A. L'exclusion mutuelle B. Une solution (trop) simple... C. Une solution logicielle : l'algo de Dekker D. Les sémaphores 05/10/14 LP RGI : TD2 T27

C. Les sémaphores de Dijkstra Une solution pour résoudre les problèmes d'exclusion mutuelle A une ressource critique est associé un sémaphore Dr. Edsger Wybe Dijkstra (1930 2002) 05/10/14 LP RGI : TD2 T28

2. Le principe Sémaphore : entier valant 0 ou 1et muni de deux opérations atomiques Opération P : abaisser le sémaphore Si le sémaphore vaut 1, il est décrémenté. S il vaut 0, le processus est mis en sommeil. Opération V : lever le sémaphore Le sémaphore est mis à 1. S il valait 0, les processus endormis en attente de son incrémentation sont réveillés. 05/10/14 LP RGI : TD2 T29

3. L'algorithme Algorithme d accès exclusif à une ressource critique On associe un sémaphore à la ressource critique Initialisé à 1 Puis chaque processus adopte l'algorithme suivant : Opération P Accès exclusif Opération V Démonstration : les deux bricoleurs et le marteau 05/10/14 LP RGI : TD2 T30

Exemple S : 1 P(S) V(S) P(S) V(S) 05/10/14 LP RGI : TD2 T31

Exemple S : 0 P(S) V(S) P(S) V(S) 05/10/14 LP RGI : TD2 T32

Exemple S : 0 P(S) SOMMEIL V(S) P(S) V(S) 05/10/14 LP RGI : TD2 T33

Exemple S : 0 P(S) SOMMEIL V(S) P(S) V(S) 05/10/14 LP RGI : TD2 T34

Exemple S : 1 P(S) SOMMEIL V(S) P(S) V(S) 05/10/14 LP RGI : TD2 T35

Exemple S : 0 P(S) V(S) P(S) V(S) 05/10/14 LP RGI : TD2 T36

Exemple S : 0 P(S) V(S) P(S) V(S) 05/10/14 LP RGI : TD2 T37

Exemple S : 1 P(S) V(S) P(S) V(S) 05/10/14 LP RGI : TD2 T38

4. Exercices Exercice 1. Soient deux RC R1 et R2 protégées par S1 et S2 Processus P1 P(S1) /* Action sur la ressource R1 */ P(S2) V(S1) /* Action sur la ressource R2 */ V(S2) Processus P2 P(S2) /* Action sur la ressource R2 */ P(S1) V(S2) /* Action sur la ressource R1 */ V(S1) Ceci conduit à un interblocage!!! Pour éviter cela, ne pas imbriquer les opérations P et V 05/10/14 LP RGI : TD2 T39

4. Exercices Exercice 2. Soient trois processus parallèles P1, P2 et P3. Compléter pour que la séquence d exécution soit toujours : A1-A2-A3-A1-A2-A3-A1 05/10/14 LP RGI : TD2 T40

5. L'implémentation thread : les mutexes Sous Unix. Création d'un mutex Adresse où récupérer l identifiant du mutex #include <pthread.h> int pthread_mutex_init (pthread_mutex_t *mutex_pt, pthread_mutexattr_t *attr) ; NULL 05/10/14 LP RGI : TD2 T41

5. L'implémentation Pthread : les mutexes Opération P sur un mutex Identifiant du mutex renvoyé par pthread_mutex_init #include <pthread.h> int pthread_mutex_lock(pthread_mutex_t *mutex_pt); Baisser le mutex S il est déjà baissé : mise en sommeil de l'activité appelante 05/10/14 LP RGI : TD2 T42

5. L'implémentation Pthread : les mutexes Création d un mutex Opération V pour un mutex Identifiant du mutex renvoyé par pthread_mutex_init #include <pthread.h> int pthread_mutex_unlock(pthread_mutex_t *mutex_pt); Lever le mutex S il était baissé : réveil des activités endormies 05/10/14 LP RGI : TD2 T43

5. L'implémentation Pthread : les mutexes Destruction d'un mutex Identifiant du mutex renvoyé par pthread_mutex_init #include <pthread.h> int pthread_mutex_destroy(pthread_mutex_t *mutex_pt) ; 05/10/14 LP RGI : TD2 T44

5. L'implémentation Pthread : les mutexes Sous Microsoft Windows Les mutexes sont des objets de la classe mutex Voir TP3! 05/10/14 LP RGI : TD2 T45