Synchronisation entre processus



Documents pareils
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

L exclusion mutuelle distribuée

Chapitre 4 : Exclusion mutuelle

Cours 6 : Tubes anonymes et nommés

Cours de Base de Données Cours n.12

Le Network File System de Sun (NFS)

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

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

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

SYSTÈME DE GESTION DE FICHIERS

Problèmes liés à la concurrence

Gestion des transactions et accès concurrents dans les bases de données relationnelles

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Recommandation n 22 relative à l ouverture d un compte bancaire ou postal séparé (06 novembre 2001).

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

Initiation à la Programmation en Logique avec SISCtus Prolog

Définition du compte courant

Cours Informatique 1. Monsieur SADOUNI Salheddine

Données Réparties. Thibault BERNARD.

Implémentation des SGBD

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

HISTORIQUE DES SYSTEMES D'EXPLOITATION (S.E.)

Hubert & Bruno Lundi 12 octobre 2009 SAINT-QUENTIN (02)

Introduction aux Systèmes et aux Réseaux

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

Le module Supply Chain pour un fonctionnement en réseau

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

Projet gestion d'objets dupliqués

Le système de gestion des fichiers, les entrées/sorties.

LEs processus coopèrent souvent pour traiter un même problème. Ces

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

Gestion des processus

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

Licence Sciences et Technologies Examen janvier 2010

LA GESTION DES SOLUTIONS TECHNIQUES D ACCÈS

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Poudlard But Matériel : Mise en place Prologue d'emplacements différents

îundesdruokerei Berlin

Les réseaux cellulaires vers la 3G

CH.3 SYSTÈMES D'EXPLOITATION

Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

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

Structure d un programme

CH.6 Propriétés des langages non contextuels

Mise en route et support Envision 10 SQL server (Avril 2015) A l'intention de l'administrateur SQL Server et de l administrateur Envision

Guide Google Cloud Print

Structure de base d un ordinateur

Synchro et Threads Java TM

Leçon 1 : Les principaux composants d un ordinateur

Extension d'un outil de trace pour système embarqué temps réel. Encadrants : Laurent Pautet, Jérôme Hugues

Année Universitaire 2009/2010 Session 2 de Printemps

Les diagrammes de modélisation

Introduction à la programmation concurrente

Système de Gestion de Fichiers

Cours Programmation Système

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Ordonnancement temps réel

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

ASR3. Partie 4 Le système de fichier. Arnaud Clérentin, IUT d Amiens, département Informatique

Pourquoi l apprentissage?

Solutions d infrastructure, systèmes et réseaux Solutions logicielles et applications métiers P2 - Fourniture de services

Programmation système en C/C++

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

Retrouver un mot de passe perdu de Windows

Sauvegarde et restauration d'un système d'exploitation Clonezilla

Exécution des instructions machine

1. Systèmes d entrée/sortie 2. Systèmes de fichiers 3. Structure de mémoire de masse (disques)

Installation et Réinstallation de Windows XP

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

Concept de machine virtuelle

Guide de démarrage rapide Centre de copies et d'impression Bureau en Gros en ligne

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

PARAGON SYSTEM BACKUP 2010

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Réplication des données

Messages d'erreurs. Redémarrez votre PC en cliquant sur Démarrer, en sélectionnant ensuite Arrêter puis en cochant Redémarrer

Réparer un disque dur passé en RAW

Chapitre 1 : Introduction aux bases de données

Solutions de gestion de la sécurité Livre blanc

FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

PC Check & Tuning 2010 Optimisez et accélérez rapidement et simplement les performances de votre PC!

Service d'installation et de démarrage de la solution de stockage réseau HP StoreEasy 1000/3000

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

STI 2 Édition 5 / Mars 2004

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

Gestion de clusters de calcul avec Rocks

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

COMITE DU COMMERCE DES AERONEFS CIVILS. Projet. Compte rendu de la réunion du Comité tenue le 14 mars 1988

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

Parallélisme et Répartition

Logiciel d aide à l évaluation des risques professionnels

TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES

Transcription:

Synchronisation entre processus Processus utilisateur (espace protégé) Synchronisation Communication pilote Système d exploitation Outils : verrou, file de messages, etc 1

INTRODUCTION Nous nous intéressons au développement d applications multiprocessus concurrents c est à dire d applications composées de plusieurs processus indépendants et en concurrence pour l accès aux ressources du système. Les processus sont ordonnancés indépendamment les uns des autres. Une ressource désigne toute entité dont a besoin un processus pour s'exécuter. Ressource matérielle (processeur, périphérique) Ressource logicielle (fichier) 2

Notion de ressources Définitions Une ressource désigne toute entité dont a besoin un processus pour s'exécuter. Ressource matérielle (processeur, périphérique) Ressource logicielle (fichier, variable). Une ressource est caractérisée par un état : libre / occupée par son nombre de points d'accès (nombre de processus pouvant l'utiliser en même temps) 3

Notion de ressources Utilisation d'une ressource par un processus Trois étapes : Allocation Utilisation Restitution Les phases d'allocation et de restitution doivent assurer que le ressource est utilisée conformément à son nombre de points d'accès ressource critique à un seul point d'accès 4

Notion de ressources Exemple Ressource matérielle : imprimante P1 P2 élu prêt E/S imp élu attente E/S imp Processus P1 Print (texte) SE Gestion des entrées/sorties PRINT LIBRE 1 point d accès Print (texte) Allouée P1 OCCUPEE 1 point d accès Processus P2 P2 en attente jusqu à libération par P1 5

Outil de synchronisation : le verrou Un mécanisme proposé pour permettre de résoudre les concurrences d'accès à une ressource est le mécanisme de verrou. Un verrou est un objet système à deux états (libre/occupé) sur lequel deux opérations sont définies. verrouiller (v) permet au processus d'acquérir le verrou v s'il est libre. S'il n'est pas disponible, le processus est bloqué en attente de la ressource. déverrouiller (v) permet au processus de libérer le verrou v qu'il possédait. Si un ou plusieurs processus étaient en attente de ce verrou, un seul de ces processus est réactivé et reçoit le verrou. En tant qu'opérations systèmes, ces opérations sont indivisibles, c'est-à-dire que le système qu elles s exécutent interruptions maquées. 6

Outil de synchronisation : le verrou V_IMP : verrou; -- verrou libre Processus 1 PRINT() Verrouiller (V_IMP) V_IMP libre V_IMP occupé par processus1 IMPRESSION Processus 2 PRINT() Verrouiller (V_IMP) V_IMP Occupé par processus1 Processus 2 bloqué Deverrouiller (V_IMP) Réveil de processus 2 Verrouiller (V_IMP) IMPRESSION 7

Les sémaphores Le système d exploitation offre un outil appelé sémaphore, constitué d un compteur K et d une file L Trois opérations atomiques sont appliqués au semaphore Sem: P (Sem) File L V (Sem) Val Compteur K (niveau du sémaphore) Sem INIT (Sem, Val) 8

Les sémaphores Un sémaphore Sem peut être vu comme un distributeur de jetons; le jeton étant un droit à poursuivre son exécution l'opération INIT (Sem, Val) fixe le nombre de jetons initial l'opération P(Sem) attribue un jeton au processus appelant si il en reste sinon bloque le processus dans Sem.L l'opération V(Sem) restitue un jeton et débloque un processus de Sem.L si il en existe un. 9

Opération Init (Sem, Val) Les sémaphores Init (Sem, Val) début masquer_it Sem. K := Val (jetons); Sem. L := demasquer_it fin Val jetons 10

Les sémaphores Opération P (Sem) P (Sem) début masquer_it Si (Sem.K > 0) alors Sem.K = Sem.K 1; (donner jeton) sinon ajouter ce processus à Sem.L bloquer ce processus fsi demasquer_it fin Endormissement 0 jetons 11

Les sémaphores Opération P (Sem) : 1er cas CPU élu P(Sem) prêt jetons bloqué jeton - 1 12

Les sémaphores Opération P (Sem) : 2 ème cas Endormissement CPU élu prêt 0 jetons P(Sem) bloqué Sem 13

Les sémaphores Opération V (Sem) V (Sem) Réveil début masquer_it Sem.K = Sem.K + 1; (rendre jeton) Si il y a un processus en attente de jeton dans Sem.L alors sortir un processus de Sem.L Sem.K = Sem.K 1; (donner jeton) réveiller ce processus fsi demasquer_it fin jetons 14

Les sémaphores Opération V (Sem) : 1er cas CPU élu V(Sem) prêt jetons bloqué jeton + 1 Sem 15

Les sémaphores Opération V (Sem) : 2ème cas Réveil CPU élu V(Sem) prêt jetons jeton - 1 bloqué jeton + 1 Sem 16

Notion de ressources Exemple ressource critique à un seul point d'accès Ressource matérielle : imprimante Processus P1 Print (texte) SE Gestion des entrées/sorties PRINT LIBRE 1 point d accès Print (texte) Allouée P1 OCCUPEE 1 point d accès Processus P2 P2 en attente jusqu à libération par P1 17

Section critique et exclusion mutuelle Processus Début Entrée Section Critique Ressource utilisable par un seul processus à la fois Fin Ressource Critique IMPRIMANTE Sortie Section Critique SECTION CRITIQUE (code d'utilisation de la ressource critique) L'entrée et la sortie de SC doivent assurer qu'à tout moment, un seul processus s'exécute en SC (exclusion mutuelle) 18

Section critique avec sémaphore 1 seul processus en section critique => 1 seul jeton Sémaphore Mutex initialisé à 1 P (Mutex) Entrée section_critique Section Critique V (Mutex) Sortie section_critique 19

Mutex processus 1 PRINT() P(Mutex) (Mutex.K = 1) IMPRESSION PROCESSUS 2 PRINT() P(Mutex) (Mutex.K = 0) IMP non accessible V(Mutex) (Mutex.K = 1, Mutex.K = 0) IMPRESSION V(Mutex) (Mutex.K = 1) 20

Synchronisation et communication entre processus Synchronisation au sein du noyau Linux 21

Synchronisation au sein du noyau Linux Les chemins de contrôle du noyau peuvent s imbriquer et créer des situations de concurrence d accès sur les structures de données du noyau. Proc 1 Proc 2 noyau Inode rep Proc 1 noyau gestionnaire d IT IRQ fin d e/s proc 2 ls (rep) cd (rep) rm(fic) Bloqué ordonnancement Appel système Bloqué Nr_ready -- Wake-up proc 2 Nr_ready ++ 22

Synchronisation au sein du noyau Linux Les chemins de contrôle du noyau peuvent s imbriquer et créer des situations de concurrence d accès sur les structures de données du noyau. Mise en œuvre de techniques de synchronisation au sein du noyau : Opérations atomiques en assembleur Nr_ready ++ compilateur load D R1 Nr_ready add Im R1 1 store D R1 Nr_ready définition de macros utilisant des instructions atomiques assembleur Atomic_int (Nr_ready) {inc (Nr_ready)} Masquage des interruptions (_cli, _sti) Notamment lors de la manipulation des files de l ordonnanceur Sémaphores du noyau Structure composée d un compteur et d une file; opération down (P) et up (V), utilisée notamment pour protéger les descripteurs de régions et les inodes 23

Synchronisation et communication entre processus Interblocage et coalition 24

Interblocage Interblocage, Famine et Coalition Ensemble de n processus attendant chacun une ressource déjà possédée que par un autre processus de l'ensemble R1 et R2 à un seul point d'accès R1 Prendre R1 Prendre R2 Traitement P1 R2 Prendre R2 Prendre R1 Traitement P2 Aucun processus ne peut poursuivre son exécution Attente Infinie 25

Interblocage, Famine et Coalition Coalition Ensemble de n processus monopolisant les ressources au détriment de p autres processus R1 Prendre R1 Prendre R2 Traitement P1 Prendre R1 Prendre R2 Traitement R2 P2 Famine Attente finie mais indéfinie 26

Un exemple d'interblocage CLIENT /* ouverture du tube tube1 en écriture */ tub1 = open ("tube1", O_WRONLY); -- en attente de l'ouverture en lecture de tube1 /* ouverture du tube tube2 en lecture */ tub2 = open ("tube2", O_RDONLY); SERVEUR /*ouverture du tube 2 en écriture */ tub2 = open ("tube2", O_WRONLY); -- en attente de l'ouverture en lecture de tube2 /* ouverture du tube 1 en lecture */ tub1 = open ("tube1", O_RDONLY); 27

Conditions nécessaires à l'obtention d'un interblocage Exclusion mutuelle Une ressource au moins doit se trouver dans un mode non partageable Occupation et attente Un processus au moins occupant une ressource attend d'acquérir des ressources supplémentaires détenues par d'autres processus Pas de réquisition Les ressources sont libérées sur seule volonté des processus les détenant Attente circulaire 28

P1 { P(bande) P(disque).. V(bande) V(disque) P(imprimante). V(imprimante)} P2 { P(disque) P(bande).. V(bande) V(disque) P(imprimante) V(imprimante)} Attente circulaire P2 P1 P1 : bande P2 : disque P2 : attente bande P1 : attente disque 29

Méthodes de traitement des interblocages Permettre l'interblocage et le corriger Politique de guérison Ne pas permettre l'interblocage Politique de prévention ou d'évitement Ignorer le problème Politique de l'autruche (cf Unix) 30

Politiques de guérison Le système maintient un graphe représentant l'allocation des ressources et les attentes des processus Régulièrement, le système parcourt le graphe à la recherche de cycles Si un cycle est découvert, celui-ci est cassé en avortant les processus en interblocage appartenant au cycle coûteux R1 R3 R1 R3 P1 P2 P3 P1 P3 R2 R2 31

Politiques de prévention Assurer qu'au moins une des conditions nécessaires ne peut avoir lieu Exclusion mutuelle : difficile Occupation et attente : demander les ressources en une seule fois Pas de réquisition : difficile Attente circulaire : ordre total sur l'ordre de demandes de ressources 32

Politiques de prévention Occupation et attente : demander les ressources en une seule fois P1 { P(bande) P(disque).. V(bande) V(disque) P(imprimante). V(imprimante)} P2 { P(disque) P(bande).. V(bande) V(disque) P(imprimante). V(imprimante)} P1 { P(bande, imprimante, disque). V(bande) Mauvaise utilisation des ressources P2 { P(disque, bande, imprimante).. V(bande) V(disque) V(imprimante)} V(disque) V(imprimante)} 33

Politiques de prévention Attente circulaire : ordre total sur l'ordre de demandes de ressources Unité de bandes avant le disque et avant l'imprimante P1 { P(bande) P(disque).. V(bande) V(disque) P(imprimante). V(imprimante)} P2 { P(disque) P(bande).. V(bande) V(disque) P(imprimante). V(imprimante)} P1 { P(bande) P(disque).. V(disque) V(bande) P(imprimante). V(imprimante)} P2 { P(bande) P(disque).. V(disque) V(bande) P(imprimante). V(imprimante)} 34

Politiques d'évitement Examen dynamique de l'état d'allocation des ressources afin d'éviter l'attente circulaire A chaque demande d'allocation de ressource, le système détermine si accepter cette allocation peut on non mener le système à l'interblocage, ie l'état du système reste-t-il sain. si oui, l'allocation est refusée. Vision pessimiste 35

Besoins maximaux Politiques d'évitement Ressources allouées P1 10 5 5 P2 4 2 2 P3 9 2 7 Demandes restantes 12 exemplaires de ressources au total Le nombre de ressources disponibles est égal à 3. La séquence d exécution < P2, P1, P3 > est saine: satisfaction de P2, ressources disponibles = 1; restitution des ressources par P2, ressources disponibles = 5; satisfaction de P1, ressources disponibles = 0; restitution des ressources par P1, ressources disponibles = 10; satisfaction de P3, ressources disponibles = 3; restitution des ressources par P3, ressources disponibles = 12. 36

Besoins maximaux Politiques d'évitement Ressources allouées P1 10 5 5 P2 4 2 2 P3 9 3 6 Demandes restantes 12 exemplaires de ressources au total Le nombre de ressources disponibles est égal à 2 L état devient malsain et aucune séquence d exécution incluant les trois processus ne peut être construite. Ici, seul P2 peut être satisfait: satisfaction de P2, ressources disponibles = 0; restitution des ressources par P2, ressources disponibles = 4. Maintenant, ni P3, ni P2 ne peuvent être satisfaits. 37

Politique de l'autruche Prétendre que les interblocages ne se produisent jamais et ne rien prévoir Un interblocage peut se produire et n'est pas détecté Détérioration des performances jusqu'à arrêt complet de l application Rédémarrage manuel de l application 38

Politique de l'autruche Justification de ce choix Fréquence de l'interblocage Prévention Evitement Détection Guérison Perte de performance Démarrage manuel 39

Les sémaphores Lecteurs / Rédacteurs ECRITURE FICHIER LECTURES Ecriture seule ou Lectures simultanées Un rédacteur exclut - les rédacteurs - les lecteurs Un lecteur exclut - les rédacteurs 40

ECRITURE Les sémaphores Lecteurs / Rédacteurs Un rédacteur exclut les rédacteurs et les lecteurs Un rédacteur effectue des accès en exclusion mutuelle des autres rédacteurs et des lecteurs Sémaphore d'exclusion mutuelle Accès initialisé à 1 41

Rédacteur Les sémaphores Lecteurs / Rédacteurs M'assurer que l'accès au fichier est libre (pas de lecteurs, pas de rédacteur) P(Accès) entrer en écriture Libérer l'accès au fichier (pour un rédacteur ou un lecteur) V(Accès) 42

LECTURES Les sémaphores Lecteurs / Rédacteurs Un lecteur exclut les rédacteurs Un premier lecteur doit s'assurer qu'il n'y a pas d'accès en écriture en cours Le dernier lecteur doit réveiller un éventuel rédacteur NL, nombre de lecteurs courants, initialisé à 0 43

Lecteur Les sémaphores Lecteurs / Rédacteurs Compter un lecteur de plus Si je suis le premier lecteur alors Y-a-t-il un rédacteur? si oui, attendre fsi NL : = NL + 1 Si NL = 1 alors P(Accès) fsi entrer en lecture Compter un lecteur de moins Si je suis le dernier, réveiller un rédacteur NL : = NL - 1 Si NL = 0 alors V(Accès) fsi 44

Lecteur Les sémaphores Lecteurs / Rédacteurs NL est accédé en concurrence par tous les lecteurs Il y a besoin d une exclusion mutuelle sur son accès INIT (Accès, 1); INIT (Mutex, 1); P(Mutex) NL : = NL + 1 Si (NL = 1) alors P(Accès) fsi V(Mutex) Accès lecture P(Mutex) NL := NL - 1; Si (NL = 0) alors V(Accès) fsi V(Mutex) 45

P(Mutex) NL : = NL + 1 Si (NL = 1) alors P(Accès) fsi V(Mutex) L E C T U R E P(Mutex) NL := NL - 1; Si (NL = 0) alors V(Accès) fsi V(Mutex) --> Ecrivain 1 P(Accès) E C R I T U R E V(Accès) LIBRE, NL = 0 LECTURE (1) LECTURE (2) ABCDEFGHIJKLMN ABCDEFGHIJKLMN ABCDEFGHIJKLMN Lecteur 1 Read (fd ) Si il n y a pas d accès en écriture en cours Accéder au fichier Ecrivain 1 Write (fd ) Si il n y a pas d accès en écriture en cours ni en lecture Accéder au fichier Lecteur 2 Read (fd )) Si il n y a pas d accès en écriture en cours Accéder au fichier P(Mutex) NL = NL + 1 = 1 P(Accès) V(Mutex) LIBRE Accès lecture P(Accès) Bloqué P(Mutex) NL = NL + 1 = 2 V(Mutex) Accès lecture 46

P(Mutex) NL : = NL + 1 Si (NL = 1) alors P(Accès) fsi V(Mutex) L E C T U R E P(Mutex) NL := NL - 1; Si (NL = 0) alors V(Accès) fsi V(Mutex) P(Accès) E C R I T U R E V(Accès) LECTURE (2) LECTURE (1) ECRITURE(1) ABCDEFGHIJKLMN ABCDEFGHIJKLMN ABCDEFGHIJKLMN Lecteur 1 Read (fd ) Lecteur 2 Read (fd )) Ecrivain 1 Write (fd ) ACCES LECTURE Si il n y a plus d accès en lecture en cours Réveiller un écrivain P(Mutex) NL = NL 1 = 1 V(Mutex) Pas de réveil d écrivain ACCES LECTURE Si il n y a plus d accès en lecture en cours Réveiller un écrivain P(Mutex) NL = NL 1 = 0; V(Accès) V(Mutex) Réveil de écrivain 1 Bloqué Accès écriture 47

P(Mutex) NL : = NL + 1 Si (NL = 1) alors (lecteur 1) P(Accès) fsi V(Mutex) L E C T U R E P(Mutex) NL := NL - 1; Si (NL = 0) alors V(Accès) fsi V(Mutex) Ecrivain 2 P(Accès) E C R I T U R E V(Accès) ECRITURE(1) ECRITURE(1) ECRITURE(1) ABCDEFGHIJKLMN ABCDEFGHIJKLMN ABCDEFGHIJKLMN Ecrivain 1 Write (fd ) Ecrivain 2 Write (fd ) Lecteur 2 Read (fd )) ACCES ECRITURE Si il n y a pas d accès en écriture en cours ni en lecture Accéder au fichier Si il n y a pas d accès en écriture en cours Accéder au fichier P(Accès); Bloqué P(Mutex) NL = NL + 1 = 1 P(Accès) Bloqué 48

(lecteur 2) P(Mutex) NL : = NL + 1 Si (NL = 1) alors (lecteur 1) P(Accès) fsi V(Mutex) ECRITURE(1) L E C T U R E P(Mutex) NL := NL - 1; Si (NL = 0) alors V(Accès) fsi V(Mutex) Ecrivain 2 P(Accès) E C R I T U R E V(Accès) ECRITURE(1) ECRITURE(1) ECRITURE() OU LECTURE ABCDEFGHIJKLMN ABCDEFGHIJKLMN ABCDEFGHIJKLMN Si il n y a pas d accès en écriture en cours Accéder au fichier P(Mutex); Bloqué Lecteur 2 Read (fd )) ACCES ECRITURE Libérer accès fichier Réveiller processus en attente V(Accès); Ecrivain 1 Write (fd ) L accès suivant est donné au premier processus élu Ecrivain 2 Write (fd ) Lecteur 1 Read (fd )) Lecteur 2 Read (fd )) V(Mutex) 49

Les sémaphores Lecteurs / Rédacteurs Coalition des lecteurs contre les rédacteurs Fichier libre Fichier en lecture Lecteur 2...i Lecteur 1 accès direct P(Accès) et accès Lecteur j.. accès direct Rédacteur P(Accès) bloquant 50

Les sémaphores Lecteurs / Rédacteurs Solution à la coalition Fichier libre Fichier en lecture Interdire l'accès Lecteur 2...i Lecteur 1 accès direct P(Accès) et accès Lecteur j.. Ecrivain P(Accès) bloquant 51