Samia Bouzefrane. Maître de Conférences CEDRIC CNAM. samia.bouzefrane@cnam.fr http://cedric.cnam.fr/~bouzefra



Documents pareils
Introduction à la programmation concurrente

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

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

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

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

Cours de Systèmes d Exploitation

REALISATION d'un. ORDONNANCEUR à ECHEANCES

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

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

Problèmes liés à la concurrence

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

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

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

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

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

CH.3 SYSTÈMES D'EXPLOITATION

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

LOG4430 : Architecture et conception avancée

SQL Server 2014 Administration d'une base de données transactionnelle avec SQL Server Management Studio

SQL Server Administration d'une base de données transactionnelle avec SQL Server Management Studio (édition enrichie de vidéos)

Synchro et Threads Java TM

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

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

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

Le modèle client-serveur

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

Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction

NFP111 Systèmes et Applications Réparties

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours d Informatique

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

Software Engineering and Middleware A Roadmap

Gestion des processus

Chapitre 4 : Exclusion mutuelle

Cours 1 : Qu est-ce que la programmation?


MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

EXCEL PERFECTIONNEMENT CALCULS AVANCES

Cours de Génie Logiciel

Introduction aux Systèmes et aux Réseaux

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

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Cours A7 : Temps Réel

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

Services OSI. if G.Beuchot. Services Application Services Présentation - Session Services Transport - Réseaux - Liaison de Données - Physique

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

Introduction : les processus. Introduction : les threads. Plan

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

Algorithmique avec Algobox

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

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

Algorithme. Table des matières

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

SYSTÈME DE GESTION DE FICHIERS

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

Conception des systèmes répartis

L exclusion mutuelle distribuée

Description de la formation

Architectures n-tiers Intergiciels à objets et services web

INITIATION AU LANGAGE JAVA

Cours Programmation Système

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Remote Method Invocation en Java (RMI)

Mise en œuvre des serveurs d application

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

Commandes Linux. Gestion des fichiers et des répertoires. Gestion des droits. Gestion des imprimantes. Formation Use-IT

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et

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

Les systèmes de gestion de version

Cours d Algorithmique et de Langage C v 3.0

Réalisation d'un seeder BitTorrent en CPC Stage de TRE sous la direction de J. Chroboczek et G. Kerneis

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Algorithmique avec Algobox

Initiation au HPC - Généralités

PROJET : ETNIC ESB JANUS. Guide technique : WS-Notification - Clustering. BULL Services et Solutions

Intégration de systèmes client - serveur Des approches client-serveur à l urbanisation Quelques transparents introductifs

Partie 7 : Gestion de la mémoire

Guide d utilisation de l utilitaire Intel One Boot Flash Update

Cours 6 : Tubes anonymes et nommés

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

FileMaker 13. Guide ODBC et JDBC

NSY102. Conception de logiciels Intranet Introduction

Service Informatique et Télématique (SITEL), Emile-Argand 11, 2009 Neuchâtel, Tél ,

IV- Comment fonctionne un ordinateur?

Programmation C. Apprendre à développer des programmes simples dans le langage C

Plan du cours. Historique du langage Nouveautés de Java 7

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

GEI 465 : Systèmes répartis

Programmation parallèle et distribuée

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

Chapitre I Notions de base et outils de travail

Introduction à la Programmation Parallèle: MPI

Cédric Moro Directeur de Visiorisk

ANALYSTE PROGRAMMEUR DIPLÔME D ÉTABLISSEMENT

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

//////////////////////////////////////////////////////////////////// Administration bases de données

SQL Server 2012 Administrez une base de données : Exercices et corrigés

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

SafeKit. Sommaire. Un livre blanc de Bull Evidian

Transcription:

La La communication et et la la synchronisation inter-tâches Samia Bouzefrane Maître de Conférences CEDRIC CNAM samia.bouzefrane@cnam.fr http://cedric.cnam.fr/~bouzefra 1

Sommaire Introduction aux problèmes de synchronisation Sémaphores : principe et utilisation Moniteurs : principe et utilisation 2

Introduction Programme multi-tâches : coopération inter-tâches Échange ou partage d'informations Synchronisation pour la protection des données Deux modèles Système centralisé: privilégie la communication et la synchronisation par mémoire commune Système distribué: privilégie la communication et la synchronisation par messages 3

Caractéristiques des systèmes distribués Ensemble de machines reliées en réseau (pouvant être temps réel) Pas de mémoire commune Coopération et synchronisation basées sur l échange de messages 4

Mécanismes de de communication dans les les systèmes distribués Appel de procédures distantes envoi d une demande àun serveur plusieurs sémantiques (appel bloquant (synchrone) ou non bloquant (asynchrone)) mécanisme système exemple : RPC Invocation de méthodes distantes appel d une méthode d un objet situésur un site distant mécanisme langage exemple : Java RMI (Remote Method Invocation) 5

Caractéristiques des systèmes centralisés Une seule machine pour plusieurs tâches : partage obligatoire Mémoire commune Communication et synchronisation par partage de données en mémoire simple àmettre en œuvre pose le problème de la protection des données par rapport àdes accès multiples (problème de cohérence) lorsque les opérations ne sont pas atomiques 6

Mécanismes présents dans les les systèmes centralisés Masquage des interruptions dangereux, à réserver à des zones très ciblées (noyau système) Test andset bas niveau, plutôt matériel (au niveau du processeur) Sémaphore (Dijkstra- 1965) assez bas niveau mais très commun et simple dans le cas général Moniteur haut-niveau, le plus commode et le plus sûr (au niveau langage) 7

Synchronisation dans les les systèmes centralisés 8

Mécanismes de de synchronisation Deux mécanismes classiques peuvent être utilisés pour protéger des données accédées par plusieurs tâches : Les sémaphoresqui autorisent l accès àune ressource critique pour un nombre déterminéde fois Les moniteurs qui permettent «d encapsuler» des données en définissant des règles d accès exclusif à ces données 9

Les Sémaphores 10

Les sémaphores Un sémaphore (Dijkstra 1965) S est un élément de synchronisation caractérisé par trois informations : un compteur interne entier ( 0) une file d'attente deux opérations atomiques (exécution indivisible) nommées P et V La création et l initialisation sont faites à l aide d une opération atomique. Si S est un sémaphore, on notera P(S) ou V(S) l'appel d'une opération sur le sémaphore S On dit qu'un sémaphore est binaire si son compteur ne peut prendre que les valeurs 0 ou 1 11

Les sémaphores :: sémantique/1 Primitive P(S) : prend le sémaphore; appel bloquant Val(S) = Val(S)-1; Si (Val(S) < 0) Alors Bloquer l'appelant et le mettre dans la file d'attente associée à S; Finsi Primitive V(S) : rend le sémaphore; jamais bloquant Val(S) = Val(S)+1; Si (Val(S) <= 0) Alors Choisir un processus dans la file d'attente, le retirer de celle-ci et le réveiller (le débloquer); Finsi Phase Initiale : Val(S):= V; 12

Les sémaphores :: sémantique/2 On a l'invariant suivant : Si Val(S) < 0 Alors (Val(S) = Longueur (File d attente de S) Dans le cas d'un sémaphore binaire, l'opération V(S) n'aura aucun effet si le compteur du sémaphore est déjààun 1 Le concept de sémaphore ne précise pas quelle tâche est réveillée dans le cas oùil y en a plusieurs en attente gestion FIFO (on réveille la plus ancienne dans la file) gestion par priorité(on réveille la plus prioritaire) 13

Les sémaphores :: Exemple d utilisation Les primitives P et V encadrent les opérations àexécuter de manière atomique : P(S) suite d opérations (section critique) V(S) Si Val(S) est initialisé à 1 alors la section critique est exécutée en exclusion mutuelle. Si Val(S) est initialisé à n>1 alors n tâches peuvent exécuter simultanément la section critique(exemple du modèle Lecteurs/Rédacteurs) Si Val(S) est initialiséà0 alors la première tâche qui veut accéder àla section critique sera bloquée jusqu à ce qu une autre tâche l autorise en exécutant un V(S), (c est le modèle du Client/Serveur) 14

Les sémaphores :: Guide d utilisation Assurer une bonne protection N'utiliser les sémaphores que sur de petites sections critiques Faire en sorte que celui qui rend le sémaphore (V) soit celui qui l'a pris (P) Isoler les actions en section critique du reste du code Éviter l interblocage en ordonnant la prise des sémaphores ou utiliser des tableaux de sémaphores à la Unix Exemple d interblocage: la tâche A prend S1, la tâche B prend S2 (S1 et S2 sont deux sémaphores binaires) la tâche A tente de prendre S2 : elle se bloque la tâche B tente de prendre S1 : elle se bloque on est dans une situation d interblocage 15

L exclusion mutuelle à l aide des sémaphores Soient N processus se partageant une ressource critique. Un processus Pi s'écrira : Contexte commun : mutex : sémaphore initialisé à 1 ; Processus Pi Début Première partie du programme ; P(mutex) Appel de la procédure A {section critique } V(mutex) Reste du programme ; Fin 16

Modèle du du Prod/Cons à l aide des sémaphores/1 Solution pour un producteur : Contexte commun : SNbVides : sémaphore initialisé à N ; SNbPleins : sémaphore initialisé à 0; Tampon: Tableau de N messages ; Processus ProducteurVar Queue : entier initialisé à 0; MessProd : message; Debut Répéter Fabriquer(MessProd); P(SNbVides); Déposer(MessProd,Tampon(Queue)); V(SNbPleins); Jusqua Faux; FinProcessus 17

Modèle du du Prod/Cons à l aide des sémaphores/2 Solution pour un consommateur : Consommateur Var Tete : entier initialisé à 0; MessCons : message; Debut Répéter P(SNbPleins); Prélever(MessCons,Tampon(Tete)); V(SNbVides); Traiter(MessCons); Jusqua Faux; Fin 18

Modèle Client/Serveur à l aide des sémaphores Contexte commun: spriv: sémaphore initialisé à 0; Processus Serveur Processus Client1 Tantque vrai faire P(spriv)... {Réalisation du service } V(spriv)...... Fintantque Processus Client2... V(spriv)... 19

Les moniteurs 20

Les moniteurs Les moniteurs proposent une solution de "haut-niveau" pour la protection de données partagées (Hoare 1974) Ils simplifient la mise en place de sections critiques Ils sont définis par des données internes (appelées aussi variables d'état) des primitives d'accès aux moniteurs (points d'entrée) des primitives internes (uniquement accessibles depuis l'intérieur du moniteur) une ou plusieurs files d'attentes 21

Structure d un moniteur Type m = moniteur Début Déclaration des variables locales (ressources partagées); Déclaration et corps des procédures du moniteur (points d entrée); Initialisation des variables locales; Fin 22

Les moniteurs: sémantique/1 Seul un processus (ou tâche ou thread) peut être actif àun moment donnéà l'intérieur du moniteur La demande d'entrée dans un moniteur (ou d'exécution d'une primitive du moniteur) sera bloquante tant qu'il y aura un processus actifà l'intérieur du moniteur L'accès à un moniteur construit donc implicitement une exclusion mutuelle 23

Les moniteurs: sémantique/2 Lorsqu'un processus actif au sein d'un moniteur ne peut progresser dans son travail (une certaine condition est fausse), il libère l'accès au moniteur avant de se bloquer. Lorsque des variables internes du moniteur ont changé, le moniteur doit pouvoir «réveiller» un processus bloqué. Pour cela, il existe deux types de primitives : wait: qui libère l'accès au moniteur et bloque le processus appelant sur une condition signal: qui réveille sur une condition un des processus en attente à l'intérieur du moniteur (un processus qui a exécuté précédemment un wait sur la même condition) 24

Les variables condition/1 Une variable condition : est une variable - qui est définie à l aide du type condition; - qui a un identificateur mais, - qui n'a pas de valeur (contrairement à un sémaphore). Une condition : - ne doit pas être initialisée - ne peut être manipulée que par les primitives Wait et Signal. - est représentée par une file d'attente de processus bloqués sur la même cause; - est donc assimilée à sa file d'attente. La primitive Wait bloque systématiquement le processus qui l'exécute La primitive Signal réveille un processus de la file d'attente de la condition spécifiée, si cette file d'attente n'est pas vide; sinon elle ne fait absolument rien. 25

Les variables condition/2 Syntaxe : cond.wait; cond.signal; /* cond est la variable de type condition déclarée comme variable locale */ Autre synthaxe : Wait(cond) ; Signal(cond); Un processus réveillé par Signal continue son exécution à l'instruction qui suit le Wait qui l'a bloqué. 26

Les moniteurs dans les les langages de de programmation Selon les langages (ou les normes), ces mécanismes peuvent être implémentés de différentes façons méthodes «wait/ notify/ notifyall»en Java et méthodes «synchronized» primitives «pthread_cond_wait/ pthread_cond_signal» en Posix et variables conditionnelles objets protégés en Ada La sémantique des réveils peut varier : Qui réveille t-on (le plus ancien, le plus prioritaire, un choisi au hasard, ) Quand réveille t-on (dès la sortie du moniteur, au prochain ordonnancement, ) 27

Un RDV entre N processus à l aide des moniteurs Type Rendez_vous = moniteur Var Nb_arrivés : entier ; Tous_Arrivés : condition ; {variables locales } Procedure Entry Arriver ; {procédure accessible aux programmes utilisateurs } Début Nb_arrivés := Nb_arrivés + 1 ; Si Nb_arrivés < N Alors Tous_Arrivés.Wait ; Tous_Arrivés.Signal; Fin Début {Initialisations } Nb_arrivés := 0; Fin. Les programmes des processus s'écrivent alors : Processus Pi... Rendez_vous.Arriver ; {Point de rendez-vous : Pi sera bloqué si au moins... 28

Références Samia Bouzefrane, Les Systèmes d exploitation: Cours et Exercices corriges Unix, Linux et Windows XP avec C et JAVA (566 pages), Dunod Editeur, Octobre 2003, ISBN : 2 10 007 189 0. Jean-François Peyre, supports de cours sur l informatique industrielle-systèmes temps réel, CNAM(Paris). 29