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



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

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

Introduction à la programmation concurrente

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

Problèmes liés à la concurrence

Synchro et Threads Java TM

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

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

Threads. Threads. USTL routier 1

Introduction : les processus. Introduction : les threads. Plan

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

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

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

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

Un ordonnanceur stupide

Cours de Systèmes d Exploitation

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

TD2 Programmation concurrentielle

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

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

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

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

Chapitre 4 : Exclusion mutuelle

INITIATION AU LANGAGE JAVA

Notion de thread (1/2)

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

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

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

PIGOURIER Vincent ANNEE SPECIALE 99/00 RAPPORT DE PROJET : LES THREADS JAVA. Responsable : Serge Rouveyrol

Introduction à la Programmation Parallèle: MPI

Sixième partie. Programmation multi-activités Java & Posix Threads. Généralités Java Threads POSIX Threads Autres approches

LOG4430 : Architecture et conception avancée

REALISATION d'un. ORDONNANCEUR à ECHEANCES

OCL - Object Constraint Language

Ordonnancement temps réel

Remote Method Invocation Les classes implémentant Serializable

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

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

Une introduction à la technologie EJB (2/3)

Introduction aux Systèmes et aux Réseaux

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

Guide d'installation et de configuration de Pervasive.SQL 7 dans un environnement réseau Microsoft Windows NT

Programmation d Applications Concurrentes et Distribuées (INF431)

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

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

Cours de Génie Logiciel

Systèmes d exploitation Gestion de processus

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Cours de Base de Données Cours n.12

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

INTRODUCTION À LA PROGRAMMATION CONCURRENTE

Cours Programmation Système

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

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

La technologie Java Card TM

Auto-évaluation Programmation en Java

Network musical jammin

Guide rapide IDEP. Helpdesk

Concept de machine virtuelle

Applications Embarquées Critiques

La Programmation Orientée Agent Les Agents Réactifs

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

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

Support de cours Java

Composants Logiciels. Le modèle de composant de CORBA. Plan

Calcul Parallèle. Cours 5 - JAVA RMI

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

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

PROGRAMMATION EVENEMENTIELLE sur EXCEL

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1

Etude d Algorithmes Parallèles de Data Mining

INTRODUCTION à Microsoft Dynamics CRM 2013 FR80501

Initiation à LabView : Les exemples d applications :

TUTORIAL ULTRAVNC (EDITION 2)

Conception des systèmes répartis

Qu'est-ce qu'un processus: Définitions

RAPPORT DE STAGE DE TROISIEME ANNEE EFFECTUE A

Initiation au HPC - Généralités

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

2. Comprendre les définitions de classes

Master IAC Philippe Caillou DÉVELOPPEMENT DE SMA. Cours 1b

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

L exclusion mutuelle distribuée

gestion des processus La gestion des processus

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

Etude de l ENT de l Université de Paris 5. Mise en place d outils de suivi de la charge de l ENT (monitoring)

Cours en ligne Développement Java pour le web

Guide d installation de MySQL

SMS sur le réseau fixe

Espace de stockage intermédiaire. Compte de Messagerie. Communication «Asynchrone» «Compte de Messagerie»

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Développement Logiciel

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes

Cours A7 : Temps Réel

Créer et modifier un fichier d'import des coordonnées approximatives avec Excel

Transcription:

Un concept plus général: g Variables condition On appelle variable condition une var qui peut être testée et endort le thread qui la teste si la condition est fausse le réveille quand la condition devient vraie Sont employées dans les moniteurs, mais peuvent aussi être utilisées indépendamment 21

Blocage dans les moniteurs threads attendent dans la file d entrée ou dans une file de condition (ils n exécutent rien) sur x.wait: le thread est placé dans la file de la condition (il n exécute pas) x.signal amène dans le moniteur 1 thread de la file x (si x vide, aucun effet) 22

Un pb concernant le signal Quand un thread P exécute x.signal et libère un thr. Q, il pourrait y avoir 2 thr. qui peuvent s exécuter, P et Q, ce qui est défendu. Deux solutions possibles: P pourrait attendre jusqu` à ce que Q sorte du moniteur, p.ex. dans une file spéciale (dite urgente) (v. Stallings) Q pourrait attendre jusqu à ce que P sorte du moniteur 23

Terminologie Java Les méthodes synchronisées de Java sont essentiellement des moniteurs Un seul thread à la fois peut les exécuter Il y a 2 files pour un objet: File d entrée File d attente (méthode wait) Un thread ne peut avoir que 1 file wait Limitation importante qui complique les choses en Java Wait existe en Java + ou comme décrit pour les moniteurs Signal s appelle notify Notify() libère 1 seul thread NotifyAll les libères tous Mais ils n exécutent pas: ils sont mis dans la file d entrée 24

Java: diagramme simplifié de transition d éd état threads nouveau nouveau start prêt ou en exécution exécutable = runnable stop ou term. de run mort Sleep Wait I/O join suspend b loqué = not runnable notify Fin E/S resume bloqué sur une file associée à un événement 25

Un diagramme plus complet new NEW READY start Notify, E/S terminée, resume, interrupted NOT RUNNABLE yield ou terminaison tranche ou préemption Ordonnanceur choisit fil RUNNING Sleep, wait, I/O, join, suspend RUNNABLE = READY ou RUNNING DEAD complète run method ou exception pas traitée Les méthodes suspend, resume, stop ne sont pas recommandées aujourd hui (deprecated). 26

Retour au problème des philosophes structures de données? 27

Philosophes (ctnd( ctnd) Chaque philos. a son propre state qui peut être (thinking, hungry, eating) philosophe i peut faire state[i] = eating ssi les voisins ne mangent pas Chaque condition a sa propre condition self le philosophe i peut attendre sur self [ i ] si veut manger, mais ne peut pas obtenir les 2 baguettes 28

Chaque philosophe exécute à jamais: repeat pickup eat putdown forever 29

Un philosophe mange private test(int i) { if ( (state[(i + 4) % 5]!= EATING) && (state[i] == HUNGRY) && (state[(i + 1) % 5]!= EATING) ) { state[i] = EATING; self[i].signal; } } Un philosophe mange si ses voisins ne mangent pas et s il a faim. Une fois rassasié, il signale de façon qu un autre pickup soit possible, si pickup s était arrêté sur wait Il peut aussi sortir sans avoir mangé si le test est faux 30

Chercher de prendre les baguettes public entry pickup(int i) { state[i] = HUNGRY; test(i); if (state[i]!= EATING) self[i].wait; } Phil. cherche à manger en testant, s il sort de test qu il n est pas mangeant il attend un autre pickup n est pas possible avant un self[i] signal 31

Déposer les baguettes public entry putdown(int i) { state[i] = THINKING; // tester les deux voisins test((i + 4) % 5); test((i + 1) % 5); } Une fois fini de manger, un philosophe se préoccupe de faire manger ses voisins en les testant 32

Une solution ingénieuse, cependant les baguettes ne sont que implicites 33

P/C: tampon circulaire de dimension k Peut consommer seulement si le nombre N d éléments consommables est au moins 1 (N = in-out) Peut produire seulement si le nombre E d espaces libres est au moins 1 (E = out-in) 34

Variables conditionnelles utilisées Si le tampon est plein, le producteur doit attendre qu il devienne non-plein Var conditionnelle notfull Si le tampon est vide, le consommateur doit attendre qu il devienne non-vide Var conditionnelle notempty 35

Moniteur pour P/C avec tampon fini (syntaxe un peu différente, pas orienté objet) Monitor boundedbuffer: buffer: vecteur[0..k-1] de items; nextin = 0, nextout = 0, count = 0 ; notfull, notempty: condition; Produce(v): if (count==k) notfull.wait; buffer[nextin] = v; nextin = (nextin+1 mod k); count ++; notempty.signal; Variable conditionnelle sur laquelle le producteur attend s il n y a pas d espaces libres Consume(v): if (count==0) notempty.wait; v = buffer[nextout]; nextout = (nextout+1 mod k); count --; notfull.signal; Variable conditionnelle sur laquelle le consommateur attend s il n y a pas d espaces occupés 36

La solution Java est plus compliquée surtout à cause du fait que Java n a pas de variables conditionnelles nommées 37

Relation entre moniteurs et autre mécanismesm Les moniteurs sont implantés utilisant les sémaphores ou les autres mécanismes déjà vus Il est aussi possible d`implanter les sémaphores en utilisant les moniteurs! exercices 38

Le problème de la SC en pratique... Les systèmes réels rendent disponibles plusieurs mécanismes qui peuvent être utilisés pour obtenir la solution la plus efficace dans différentes situations 39

Synchronisation en Solaris 2 (avec UCT multiples) Plusieurs mécanismes utilisés: adaptive mutex protège l accès aux données partagées pour des SC courtes sémaphores et condition variables protègent des SC plus importantes serrures lecteurs-rédacteurs (reader-writers locks) protègent des données qui normalement ne sont que lues les mêmes mécanismes sont disponibles aux usagers et dans le noyau 40

Adaptive mutex en Solaris 2 Utilisés pour des SC courtes: quand un thread veut accéder à des données partagées: Si les données sont couramm. utilisées par un thread exécutant sur un autre UCT, l autre thread fait une attente occupée Sinon, le thread est mis dans une file d attente et sera réveillé quand les données deviennent disponibles 41

Windows NT: aussi plus. mécanismesm exclusion mutuelle sur données partagées: un fils doit demander accès et puis libérer section critiques: semblables mais pour synchroniser entre fils de threads différents sémaphores event objects: semblables à condition variables 42

Concepts importants Sections critiques: pourquoi Difficulté du problème de la synch sur SC Bonnes et mauvaises solutions Accès atomique à la mémoire Solutions logiciel `pures` Solution matériel: test-and-set Solutions par appels du système: Sémaphores, moniteurs, fonctionnement Problèmes typiques: tampon borné, lecteursécrivains, philosophes, crossing-bridge, etc 43