Synchronisation entre processus



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

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

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

Cours de Systèmes d Exploitation

Problèmes liés à la concurrence

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

Ordonnancement temps réel

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

Introduction à la programmation concurrente

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

Synchro et Threads Java TM

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

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

Chapitre 4 : Exclusion mutuelle

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

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

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

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

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

Introduction aux Systèmes et aux Réseaux

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

Cours A7 : Temps Réel

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

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

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

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

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

Conditions d utilisation

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Systèmes et exécutifs temps-réel

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Ordonnancement temps réel

Apps Sage : les 10 étapes pour publier vos données dans le Cloud.

TD2/TME2 : Ordonnanceur et Threads (POSIX et fair)

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

A lire en premier lieu

Réplication des données

Introduction à la Programmation Parallèle: MPI

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

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

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

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

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

Règlement public et conditions générales d utilisation du service de Vélo en Libre Service, V Lille, implanté sur le territoire de Lille Métropole

Genie Logiciel Avancé Projet :Gestion d une chaîne hotelier low cost

CH.3 SYSTÈMES D'EXPLOITATION

Systèmes Répartis. Mr. Mehrez Boulares, Mr. Nour Ben Yahia

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

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

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

Eléments constitutifs et synthèse des convertisseurs statiques. Convertisseur statique CVS. K à séquences convenables. Source d'entrée S1

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

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

Introduction : les processus. Introduction : les threads. Plan

Guide pratique pour la Sodexo Card

Conception des systèmes répartis

Projet gestion d'objets dupliqués

Chapitre 2. Les processus. 2.1 Introduction. 2.2 les différents états d un processus

Cours 6 : Tubes anonymes et nommés

Programmation parallèle et distribuée

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

Gestion des processus

APM : Comment aborder la performance applicative? 28 mai 2015

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

Le langage C. Séance n 4

Module BDR Master d Informatique (SAR)

Threads. Threads. USTL routier 1

Guide utilisateur Application Gestion de club. Accès à l application GESTION DE CLUB. Les étapes :

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

Un ordonnanceur stupide

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

gestion des processus La gestion des processus

Vers l'orchestration de grilles de PC par les mécanismes de publicationsouscription

Réparer un disque dur passé en RAW

Solutions du chapitre 4

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

Programmation d Applications Concurrentes et Distribuées (INF431)

Initiation au HPC - Généralités

La solution Mobile Banking d ING Version 3.0

Partie 7 : Gestion de la mémoire

Sodexo Card. Guide pratique pour la Sodexo Card. Mode d emploi et conseils pour une utilisation en toute sécurité

ipra*cool v 1.08 guide de l utilisateur ipra*cool v.1-08 Guide de l'utilisateur ipra*cool v

LOG4430 : Architecture et conception avancée

GESTION CLIENTELE GESTION CLIENTELE V /05/2014 DOC HEITZ INDICE 1 Page 1/46

Gestion répartie de données - 1

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

Chapitre 3 - VODEL, un langage de description d architectures logicielles statiques et dynamiques

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

GUIDE UTILISATEUR SOGE-NET

Manuel programmation QUESTOR

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

UML Diagramme de communication (communication diagram) Emmanuel Pichon 2013

Données Réparties. Thibault BERNARD.

SYSTÈME DE GESTION DE FICHIERS

Architecture d un service de partage de données modifiables sur une infrastructure pair-à-pair

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

Hotspot Mobile 4G HUAWEI E5776. Guide de démarrage rapide

JULIE SMS V2.0.1 NOTICE D INSTALLATION ET D UTILISATION

Transcription:

Synchronisation entre processus Dominique Bouillet et Michel Simatic module CSC4508/M2 Avril 2012

Synchronisation entre processus Plan du document 1 Introduction.................................................................... 3 2 Sémaphore = Outil de base......................................................5 3 Résolution de problèmes de synchronisation typiques.............................. 9 4 Interblocage................................................................... 30 5 Mise en oeuvre dans un système d exploitation.................................. 33 TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 2/33

Synchronisation entre processus 1 Introduction Les problèmes de synchronisation sont légions dans la vie courante: Quand on crédite son compte en banque, ce crédit ne doit pas être perdu parce qu en parallèle la banque débite un chèque Un parking de capacité N places ne doit pas laisser entrer N + 1 véhicules Roméo et Juliette ne peuvent se prendre par la main que s ils se retrouvent à leur rendez-vous Robert et Raymonde font la vaisselle. Raymonde lave. Robert essuie. L égouttoir les synchronise. Certaines lignes de train possèdent des sections de voie unique. Sur ces sections, on ne peut avoir que des trains circulant dans un même sens à un instant donné On rencontre des problèmes similaires lorsqu on utilise un système d exploitation TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 3/33

Synchronisation entre processus 1 Introduction 1.1 Correspondance problèmes vie courante/informatique Banque Problème d exclusion mutuelle : une ressource ne doit être accessible que par une entité à un instant donné. Cas, par exemple, d une zone mémoire contenant le solde d un compte. Parking Problème de cohorte : un groupe de taille bornée est autorisé à offrir/utiliser un service. Cas, par exemple, d un serveur de connexions Internet qui ne doit pas autoriser plus de N connexions en parallèle. Roméo et Juliette Problème de passage de témoin : on divise le travail entre des processus. Cas, par exemple, de 2 processus qui doivent s échanger des informations à un moment donné de leur exécution avant de continuer. Robert et Raymonde Problème de producteurs/consommateurs : un consommateur ne peut consommer que si tous les producteurs ont fait leur travail. Cas, par exemple, d un processus chargé d envoyer des tampons qui ont été remplis par d autres processus. Train Problème de lecteurs/rédacteurs où l on doit gérer, de manière cohérente, une compétition entre différentes catégories d entités. Cas, par exemple, d une tâche de fond périodique de «nettoyage» qui ne peut se déclencher que quand les tâches principales sont inactives. TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 4/33

Synchronisation entre processus 2 Sémaphore = Outil de base 2.1 Généralités.................................................................... 6 2.2 Analogie...................................................................... 7 2.3 Algorithmes P ET V........................................................... 8 TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 5/33

Synchronisation entre processus 2.1 Généralités 2 Sémaphore = Outil de base Sémaphore = objet composé : D une variable (sa valeur) D une file d attente (les processus bloqués) Primitives associées : Initialisation (avec une valeur positive ou nulle) Manipulation : Prise (P ou Wait) = demande d autorisation Validation (V ou Signal) = fin d utilisation Principe : sémaphore associé à une ressource Prise = demande d autorisation (Puis-je?) si valeur > 0 accord, sinon blocage Validation = restitution d autorisation (Vas-y) si valeur < 0 déblocage d un processus TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 6/33

Synchronisation entre processus 2.2 Analogie 2 Sémaphore = Outil de base Parking de N places contrôlé par un feu P 00000 11111 00000 11111 00000 11111 V 0000 1111 0000 1111 0000 1111 1 +1 Valeur du sémaphore TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 7/33

Synchronisation entre processus 2 Sémaphore = Outil de base 2.3 Algorithmes P ET V Initialisation(sémaphore,n) valeur[sémaphore] = n P(sémaphore) valeur[sémaphore] = valeur[sémaphore] - 1 si (valeur[sémaphore] < 0) alors étatprocessus = Bloqué mettre processus en file d attente finsi invoquer l ordonnanceur V(sémaphore) valeur[sémaphore] = valeur[sémaphore] + 1 si (valeur[sémaphore] <= 0) alors extraire processus de file d attente étatprocessus = Prêt finsi invoquer l ordonnanceur TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 8/33

Synchronisation entre processus 3 Résolution de problèmes de synchronisation typiques 3.1 Exclusion mutuelle........................................................... 10 3.2 Cohorte......................................................................11 3.3 Passage de témoin........................................................... 12 3.4 Producteurs/Consommateurs................................................. 16 3.5 Lecteurs/rédacteurs.......................................................... 25 TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 9/33

Synchronisation entre processus 3.1 Exclusion mutuelle 3 Résolution de problèmes de synchronisation typiques Permet la gestion d accès concurrent à des ressources partagées Principe : Sémaphore mutex initialisé à 1 Primitive P en début de section critique Primitive V en fin de section critique Exemple : Sémaphore mutex initialisé à 1 Prog1 Prog2 P(mutex) P(mutex) x=lire (cpte) x=lire (cpte) x = x + 10 x = x - 100 écrire (cpte=x) écrire (cpte=x) V(mutex) V(mutex) TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 10/33

Synchronisation entre processus 3.2 Cohorte 3 Résolution de problèmes de synchronisation typiques Permet la coopération d un groupe de taille maximum donnée Principe : Sémaphore parking initialisé à N Primitive P en début de besoin Primitive V en fin de besoin Exemple : Sémaphore parking initialisé à N Prog vehicule... P(parking)... V(parking)... TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 11/33

Synchronisation entre processus 3.3 Passage de témoin 3 Résolution de problèmes de synchronisation typiques Permet la coopération par division du travail entre processus 3 types : Envoi de signal Rendez-vous entre 2 processus Appel procédural entre processus TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 12/33

3 Résolution de problèmes de synchronisation typiques 3.3 Passage de témoin 3.3.1 Envoi de signal Permet à un processus d envoyer un «top» à un autre pour signaler la présence/disponibilité d une information Principe : Sémaphore top initialisé à 0 Primitive P pour attente «top» Primitive V pour signal «top» Exemple : Sémaphore top initialisé à 0 Prog1 Prog2...... calcul(info) P(top) V(top) utilisation(info)...... TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 13/33

3 Résolution de problèmes de synchronisation typiques 3.3 Passage de témoin 3.3.2 Rendez-vous entre deux processus Permet à deux processus d établir un point de synchronisation Principe : Sémaphore romeo initialisé à 0 Sémaphore juliette initialisé à 0 Prog1 Prog2...... V(juliette) V(romeo) P(romeo) P(juliette)...... TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 14/33

3 Résolution de problèmes de synchronisation typiques 3.3 Passage de témoin 3.3.3 Appel procédural entre processus Permet à un processus de faire un «appel de procédure», alors que le code de cette procédure est localisé dans un autre processus Principe : Sémaphore appel initialisé à 0 Sémaphore retour initialisé à 0 Serveur Client répéter... P(appel) preparationparamappel() analyseparamappel() V(appel)... P(retour) préparationparamretour() analyseparamretour() V(retour)... finrépéter TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 15/33

Synchronisation entre processus 3 Résolution de problèmes de synchronisation typiques 3.4 Producteurs/Consommateurs 3.4.1 Objectif....................................................................17 3.4.2 Principe................................................................... 18 3.4.3 Déposer et extraire......................................................... 19 3.4.4 Exemple................................................................... 20 3.4.5 K producteurs............................................................. 21 3.4.6 Exemple de problème avec 2 producteurs.................................... 22 3.4.7 Solution complète.......................................................... 24 TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 16/33

3 Résolution de problèmes de synchronisation typiques 3.4 Producteurs/Consommateurs 3.4.1 Objectif Permettre le contrôle de flux entre un (ou des) producteur(s) et un (ou des) consommateur(s) dans le cas où ils communiquent via un tampon mémoire de N cases 1. Exécution Produc : il produit info0 info0 2. Exécution Produc : il produit info1 info0 info1 3. Exécution Conso : il consomme info0 info1 4. Exécution Produc : il produit info2 info1 info2 TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 17/33

3 Résolution de problèmes de synchronisation typiques 3.4 Producteurs/Consommateurs 3.4.2 Principe Sémaphore infoprete initialisé à 0 Sémaphore placedispo initialisé à N Produc Conso répéter répéter... P(infoPrete) calcul(info) extraire(info) P(placeDispo) V(placeDispo) déposer(info) utiliser(info) V(infoPrete) finrépéter... finrépéter TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 18/33

3 Résolution de problèmes de synchronisation typiques 3.4 Producteurs/Consommateurs 3.4.3 Déposer et extraire Le tampon ne peut s étendre à l infini Tampon géré de façon circulaire, c est-à-dire que quand dernière case utilisée, retour à la première Il faut : un indice de dépot idépot un indice d extraction iextrait ajouter à l initialisation idépot = 0 et iextrait = 0 déposer(info) tampon[idépot] = info idépot = (idépot + 1) modulo N extraire(info) info = tampon[iextrait] iextrait = (iextrait + 1) modulo N TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 19/33

3 Résolution de problèmes de synchronisation typiques 3.4 Producteurs/Consommateurs 3.4.4 Exemple 1. On suppose qu à un instant donné, le tampon est dans l état suivant : Tampon : info8 valeursem[placedispo] = 4 et valeursem[inf op rete] = 1 idépot = 4 et iextrait = 3 2. Exécution Produc : il produit info9 Tampon : info8 info9 valeursem[placedispo] = 3 et valeursem[inf op rete] = 2 idépot = 0 et iextrait = 3 3. Exécution Produc : il produit infoa Tampon : infoa info8 info9 valeursem[placedispo] = 2 et valeursem[inf op rete] = 3 idépot = 1 et iextrait = 3 4. Exécution Conso : il consomme info8 Tampon : infoa info9 valeursem[placedispo] = 3 et valeursem[inf op rete] = 2 idépot = 1 et iextrait = 4 TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 20/33

3 Résolution de problèmes de synchronisation typiques 3.4 Producteurs/Consommateurs 3.4.5 K producteurs Ce modèle semble rester valable pour plusieurs producteurs (ou plusieurs consommateurs) en termes de synchronisation...... mais en fait risque d information perdue à cause des indices idépot (pour K producteurs) ou iextrait (pour P consommateurs) qui sont des variables globales (cf. exemple) TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 21/33

3 Résolution de problèmes de synchronisation typiques 3.4 Producteurs/Consommateurs 3.4.6 Exemple de problème avec 2 producteurs soit un tampon avec N = 5 et deux dépots effectués sans extraction L état courant est alors : Tampon : info0 info1 valeursem[placedispo] = 3 et valeursem[inf op rete] = 2 idépot = 2 et iextrait = 0 TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 22/33

3 Résolution de problèmes de synchronisation typiques 3.4 Producteurs/Consommateurs Exemple de problème avec 2 producteurs (suite) 1. Début d exécution de Produc1 : P(placeDispo);tampon[iDépot] = infop1;... Tampon : info0 info1 infop1 valeursem[placedispo] = 2 et valeursem[inf op rete] = 2 idépot = 2 et iextrait = 0 2. Exécution complète de Produc2 : P(placeDispo);tampon[iDépot] = infop2;idépot=(idépot+1) modulo N;V(infoPrete) Tampon : info0 info1 infop2 valeursem[placedispo] = 1 et valeursem[inf op rete] = 3 idépot = 3 et iextrait = 0 3. Fin d exécution de Produc1 :...;idépot=(idépot+1) modulo N;V(infoPrete) Tampon : info0 info1 infop2 i!*?# valeursem[placedispo] = 1 et valeursem[inf op rete] = 4 idépot = 4 et iextrait = 0 TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 23/33

3 Résolution de problèmes de synchronisation typiques 3.4 Producteurs/Consommateurs 3.4.7 Solution complète Il faut une exclusion mutuelle sur déposer() et extraire() autour de idépot et iextrait Pour K producteurs : Sémaphore mutex initialisé à 1 déposer(info) P(mutex) tampon[idépot] = info idépot = (idépot + 1) modulo N V(mutex) Pour P consommateurs, idem pour extraire Pour K producteurs et P consommateurs, utiliser deux sémaphores mutexp et mutexc TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 24/33

Synchronisation entre processus 3 Résolution de problèmes de synchronisation typiques 3.5 Lecteurs/rédacteurs 3.5.1 Objectif....................................................................26 3.5.2 Solution de base............................................................27 3.5.3 Analyse.................................................................... 28 3.5.4 Solution avec priorités égales................................................ 29 TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 25/33

3 Résolution de problèmes de synchronisation typiques 3.5 Lecteurs/rédacteurs 3.5.1 Objectif Permettre une compétition cohérente entre deux types de processus (les «lecteurs» et les «rédacteurs») : Plusieurs lecteurs peuvent accéder simultanément à la ressource Les rédacteurs sont exclusifs entre eux pour leur exploitation de la ressource Un rédacteur est exclusif avec les lecteurs TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 26/33

3 Résolution de problèmes de synchronisation typiques 3.5 Lecteurs/rédacteurs 3.5.2 Solution de base Sémaphore mutexg initialisé à 1 Sémaphore mutexl initialisé à 1 Entier NL initialisé à 0 Lecteur Rédacteur P(mutexL) P(mutexG) NL = NL + 1 ecrituresetlectures() si NL == 1 alors V(mutexG) P(mutexG) finsi V(mutexL) lectures() P(mutexL) NL = NL - 1 si NL == 0 alors V(mutexG) finsi V(mutexL) TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 27/33

3 Résolution de problèmes de synchronisation typiques 3.5 Lecteurs/rédacteurs 3.5.3 Analyse La solution de base fonctionne, mais on constate qu il y a une possibilité de famine pour les rédacteurs. Pour éviter cette famine, on ajoute les contraintes suivantes : Si la ressource est utilisée par un lecteur : Tout écrivain est mis en attente. Tout lecteur est accepté s il n y a pas d écrivain en attente. Tout lecteur est mis en attente s il y a un écrivain en attente. TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 28/33

3 Résolution de problèmes de synchronisation typiques 3.5 Lecteurs/rédacteurs 3.5.4 Solution avec priorités égales Sémaphore mutexg initialisé à 1 Sémaphore mutexl initialisé à 1 Sémaphore fifo initialisé à 1 Entier NL initialisé à 0 Lecteur Rédacteur P(fifo) P(fifo) P(mutexL) P(mutexG) NL = NL + 1 V(fifo) si NL == 1 alors ecrituresetlectures() P(mutexG) V(mutexG) finsi V(mutexL) V(fifo) lectures() P(mutexL) NL = NL - 1 si NL == 0 alors V(mutexG) finsi V(mutexL) TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 29/33

Synchronisation entre processus 4 Interblocage 4.1 Introduction................................................................. 31 4.2 Généralités...................................................................32 TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 30/33

Synchronisation entre processus 4.1 Introduction 4 Interblocage Interblocage (Deadlock) = toute situation telle que deux processus au moins sont chacun en attente d une ressource non partageable déjà allouée à l autre Exemple : exclusion mutuelle sur deux ressources différentes Sémaphore mutex1 initialisé à 1 Sémaphore mutex2 initialisé à 1 Prog1 Prog2...... P(mutex1) P(mutex2) accès à ressource 1 accès à ressource 2 P(mutex2) P(mutex1) accès à ressource 2 accès à ressource 1 V(mutex2) V(mutex1) V(mutex1) V(mutex2)...... Les deux programmes se bloqueront mutuellement si Prog1 fait P(mutex1) alors que simultanément Prog2 fait P(mutex2) TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 31/33

Synchronisation entre processus 4.2 Généralités 4 Interblocage Synonymes d interblocage : verrou mortel ou étreinte fatale Conditions nécessaires et suffisantes (Coffman, 1971) 4 CNS simultanées : 1. Ressources en exclusion mutuelle (ressources concernées non partageables) 2. Processus en attente (processus conserve les ressources allouées) 3. Non préemption des ressources (ressources concernées non préemptibles) 4. Chaîne circulaire de processus bloqués (généralisation des demandes réciproques) 3 stratégies de lutte contre les blocages : Prévention (statique) Détection avec guérison Évitement (prévention dynamique) TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 32/33

Synchronisation entre processus 5 Mise en oeuvre dans un système d exploitation Sémaphores Sémaphores IPC : cf. chapitre «Communications inter-processus» Sémaphores Posix : cf. chapitre «Threads» Moniteurs (ou conditions ou variables-condition) Le moniteur ajoute le type condition et une file d attente associée à chaque variable de type condition ainsi que des primitives wait x, signal x (x étant une condition). Si besoin, un processus se bloque par wait et libère le moniteur Un processus réveille un des processus en attente par signal Il peut également réveiller tous les processus en attente par broadcast TELECOM SudParis Dominique Bouillet et Michel Simatic Avril 2012 module CSC4508/M2 33/33

Bibliographie du chapitre