Java. Programmation. concurrente en. Référence. Brian Goetz. avec Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes et Doug Lea

Dimension: px
Commencer à balayer dès la page:

Download "Java. Programmation. concurrente en. Référence. Brian Goetz. avec Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes et Doug Lea"

Transcription

1 Référence Programmation concurrente en Java Brian Goetz avec Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes et Doug Lea Réseaux et télécom Programmation Génie logiciel Sécurité Système d exploitation

2 Programmation concurrente en Java Brian Goetz Avec la collaboration de : Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes et Doug Lea Traduction : Éric Jacoboni Relecture technique : Éric Hébert, Architecte Java JEE Nicolas de Loof, Architecte Java

3 Pearson Education France a apporté le plus grand soin à la réalisation de ce livre afin de vous fournir une information complète et fiable. Cependant, Pearson Education France n assume de responsabilités, ni pour son utilisation, ni pour les contrefaçons de brevets ou atteintes aux droits de tierces personnes qui pourraient résulter de cette utilisation. Les exemples ou les programmes présents dans cet ouvrage sont fournis pour illustrer les descriptions théoriques. Ils ne sont en aucun cas destinés à une utilisation commerciale ou professionnelle. Pearson Education France ne pourra en aucun cas être tenu pour responsable des préjudices ou dommages de quelque nature que ce soit pouvant résulter de l utilisation de ces exemples ou programmes. Tous les noms de produits ou marques cités dans ce livre sont des marques déposées par leurs propriétaires respectifs. Publié par Pearson Education France 47 bis, rue des Vinaigriers PARIS Tél. : Mise en pages : TyPAO ISBN : Copyright 2009 Pearson Education France Tous droits réservés Titre original : Java Concurrency in Practice Traduit de l américain par Éric Jacoboni ISBN original : Copyright 2006 by Pearson Education, Inc All rights reserved Édition originale publiée par Addison-Wesley Professional, 800 East 96th Street, Indianapolis, Indiana USA Aucune représentation ou reproduction, même partielle, autre que celles prévues à l article L et 3 a) du code de la propriété intellectuelle ne peut être faite sans l autorisation expresse de Pearson Education France ou, le cas échéant, sans le respect des modalités prévues à l article L dudit code. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc.

4 Table des matières Table des listings... XI Préface... XIX Préface à l édition française... XXI Présentation de l ouvrage... XXIII Structure de l ouvrage... XXIII Exemples de code... XXV Remerciements... XXVI 1 Introduction Bref historique de la programmation concurrente Avantages des threads Exploitation de plusieurs processeurs Simplicité de la modélisation Gestion simplifiée des événements asynchrones Interfaces utilisateur plus réactives Risques des threads Risques concernant la "thread safety" Risques sur la vivacité Risques sur les performances Les threads sont partout Partie I Les bases 2 Thread safety Qu est-ce que la thread safety? Exemple : une servlet sans état Atomicité Situations de compétition... 21

5 IV Table des matières Exemple : situations de compétition dans une initialisation paresseuse Actions composées Verrous Verrous internes Réentrance Protection de l état avec les verrous Vivacité et performances Partage des objets Visibilité Données obsolètes Opérations 64 bits non atomiques Verrous et visibilité Variables volatiles Publication et fuite Pratiques de construction sûres Confinement des objets Confinement ad hoc Confinement dans la pile ThreadLocal Objets non modifiables Champs final Exemple : utilisation de volatile pour publier des objets non modifiables Publication sûre Publication incorrecte : quand les bons objets deviennent mauvais Objets non modifiables et initialisation sûre Idiomes de publication correcte Objets non modifiables dans les faits Objets modifiables Partage d objets de façon sûre Composition d objets Conception d une classe thread-safe Exigences de synchronisation Opérations dépendantes de l état Appartenance de l état Confinement des instances Le patron moniteur de Java Exemple : gestion d une flotte de véhicules... 66

6 Table des matières V 4.3 Délégation de la thread safety Exemple : gestionnaire de véhicules utilisant la délégation Variables d état indépendantes Échecs de la délégation Publication des variables d état sous-jacentes Exemple : gestionnaire de véhicules publiant son état Ajout de fonctionnalités à des classes thread-safe existantes Verrouillage côté client Composition Documentation des politiques de synchronisation Interprétation des documentations vagues Briques de base Collections synchronisées Problèmes avec les collections synchronisées Itérateurs et ConcurrentModificationException Itérateurs cachés Collections concurrentes ConcurrentHashMap Opérations atomiques supplémentaires sur les Map CopyOnWriteArrayList Files bloquantes et patron producteur-consommateur Exemple : indexation des disques Confinement en série Classe Deque et vol de tâches Méthodes bloquantes et interruptions Synchronisateurs Loquets FutureTask Sémaphores Barrières Construction d un cache efficace et adaptable Résumé de la première partie Partie II Structuration des applications concurrentes 6 Exécution des tâches Exécution des tâches dans les threads Exécution séquentielle des tâches

7 VI Table des matières Création explicite de threads pour les tâches Inconvénients d une création illimitée de threads Le framework Executor Exemple : serveur web utilisant Executor Politiques d exécution Pools de threads Cycle de vie d un Executor Tâches différées et périodiques Trouver un parallélisme exploitable Exemple : rendu séquentiel d une page Tâches partielles : Callable et Future Exemple : affichage d une page avec Future Limitations du parallélisme de tâches hétérogènes CompletionService : quand Executor rencontre BlockingQueue Exemple : affichage d une page avec CompletionService Imposer des délais aux tâches Exemple : portail de réservations Résumé Annulation et arrêt Annulation des tâches Interruption Politiques d interruption Répondre aux interruptions Exemple : exécution avec délai Annulation avec Future Méthodes bloquantes non interruptibles Encapsulation d une annulation non standard avec newtaskfor() Arrêt d un service reposant sur des threads Exemple : service de journalisation Méthodes d arrêt de ExecutorService Pilules empoisonnées Exemple : un service d exécution éphémère Limitations de shutdownnow() Gestion de la fin anormale d un thread Gestionnaires d exceptions non capturées Arrêt de la JVM Méthodes d interception d un ordre d arrêt Threads démons Finaliseurs Résumé

8 Table des matières VII 8 Pools de threads Couplage implicite entre les tâches et les politiques d exécution Interblocage par famine de thread Tâches longues Taille des pools de threads Configuration de ThreadPoolExecutor Création et suppression de threads Gestion des tâches en attente Politiques de saturation Fabriques de threads Personnalisation de ThreadPoolExecutor après sa construction Extension de ThreadPoolExecutor Exemple : ajout de statistiques à un pool de threads Parallélisation des algorithmes récursifs Exemple : un framework de jeu de réflexion Résumé Applications graphiques Pourquoi les interfaces graphiques sont-elles monothreads? Traitement séquentiel des événements Confinement aux threads avec Swing Tâches courtes de l interface graphique Tâches longues de l interface graphique Annulation Indication de progression et de terminaison SwingWorker Modèles de données partagées Modèles de données thread-safe Modèles de données séparés Autres formes de sous-systèmes monothreads Résumé Partie III Vivacité, performances et tests 10 Éviter les problèmes de vivacité Interblocages (deadlock) Interblocages liés à l ordre du verrouillage Interblocages dynamiques liés à l ordre du verrouillage Interblocages entre objets coopératifs

9 VIII Table des matières Appels ouverts Interblocages liés aux ressources Éviter et diagnostiquer les interblocages Tentatives de verrouillage avec expiration Analyse des interblocages avec les traces des threads Autres problèmes de vivacité Famine Faible réactivité Livelock Résumé Performances et adaptabilité Penser aux performances Performances et adaptabilité Compromis sur l évaluation des performances La loi d Amdahl Exemple : sérialisation cachée dans les frameworks Application qualitative de la loi d Amdahl Coûts liés aux threads Changements de contexte Synchronisation de la mémoire Blocages Réduction de la compétition pour les verrous Réduction de la portée des verrous ("entrer, sortir") Réduire la granularité du verrouillage Découpage du verrouillage Éviter les points chauds Alternatives aux verrous exclusifs Surveillance de l utilisation du processeur Dire non aux pools d objets Exemple : comparaison des performances des Map Réduction du surcoût des changements de contexte Résumé Tests des programmes concurrents Tests de la justesse Tests unitaires de base Tests des opérations bloquantes Test de la sécurité vis-à-vis des threads Test de la gestion des ressources Utilisation des fonctions de rappel Production d entrelacements supplémentaires

10 Table des matières IX 12.2 Tests de performances Extension de PutTakeTest pour ajouter un timing Comparaison de plusieurs algorithmes Mesure de la réactivité Pièges des tests de performance Ramasse-miettes Compilation dynamique Échantillonnage irréaliste de portions de code Degrés de compétition irréalistes Élimination du code mort Approches de tests complémentaires Relecture du code Outils d analyse statiques Techniques de tests orientées aspects Profileurs et outils de surveillance Résumé Partie IV Sujets avancés 13 Verrous explicites Lock et ReentrantLock Prise de verrou scrutable et avec délai Prise de verrou interruptible Verrouillage non structuré en bloc Remarques sur les performances Équité synchronized vs. ReentrantLock Verrous en lecture-écriture Résumé Construction de synchronisateurs personnalisés Gestion de la dépendance par rapport à l état Exemple : propagation de l échec de la précondition aux appelants Exemple : blocage brutal par essai et mise en sommeil Les files d attente de condition Utilisation des files d attente de condition Le prédicat de condition Réveil trop précoce

11 X Table des matières Signaux manqués Notification Exemple : une classe "porte d entrée" Problèmes de safety des sous-classes Encapsulation des files d attente de condition Protocoles d entrée et de sortie Objets conditions explicites Anatomie d un synchronisateur AbstractQueuedSynchronizer Un loquet simple AQS dans les classes de java.util.concurrent ReentrantLock Semaphore et CountDownLatch FutureTask ReentrantReadWriteLock Résumé Variables atomiques et synchronisation non bloquante Inconvénients du verrouillage Support matériel de la concurrence L instruction Compare-and-swap Compteur non bloquant Support de CAS dans la JVM Classes de variables atomiques Variables atomiques comme "volatiles améliorées" Comparaison des performances des verrous et des variables atomiques Algorithmes non bloquants Pile non bloquante File chaînée non bloquante Modificateurs atomiques de champs Le problème ABA Résumé Le modèle mémoire de Java Qu est-ce qu un modèle mémoire et pourquoi en a-t-on besoin? Modèles mémoire des plates-formes Réorganisation Le modèle mémoire de Java en moins de cinq cents mots Tirer parti de la synchronisation

12 Table des matières XI 16.2 Publication Publication incorrecte Publication correcte Idiomes de publication correcte Verrouillage contrôlé deux fois Initialisation sûre Résumé Annexe Annotations pour la concurrence A.1 Annotations de classes A.2 Annotations de champs et de méthodes Bibliographie Index

13

14 Table des listings Listing 1 : Mauvaise façon de trier une liste. Ne le faites pas.... Listing 2 : Méthode peu optimale de trier une liste.... XX Listing 1.1 : Générateur de séquence non thread-safe Listing 1.2 : Générateur de séquence thread-safe Listing 2.1 : Une servlet sans état Listing 2.2 : Servlet comptant le nombre de requêtes sans la synchronisation nécessaire. Ne le faites pas Listing 2.3 : Situation de compétition dans une initialisation paresseuse. Ne le faites pas. 22 Listing 2.4 : Servlet comptant les requêtes avec AtomicLong Listing 2.5 : Servlet tentant de mettre en cache son dernier résultat sans l atomicité adéquate. Ne le faites pas Listing 2.6 : Servlet mettant en cache le dernier résultat, mais avec une très mauvaise concurrence. Ne le faites pas Listing 2.7 : Ce code se bloquerait si les verrous internes n étaient pas réentrants Listing 2.8 : Servlet mettant en cache la dernière requête et son résultat Listing 3.1 : Partage de données sans synchronisation. Ne le faites pas Listing 3.2 : Conteneur non thread-safe pour un entier modifiable Listing 3.3 : Conteneur thread-safe pour un entier modifiable Listing 3.4 : Compter les moutons Listing 3.5 : Publication d un objet Listing 3.6 : L état modifiable interne à la classe peut s échapper. Ne le faites pas Listing 3.7 : Permet implicitement à la référence this de s échapper. Ne le faites pas Listing 3.8 : Utilisation d une méthode fabrique pour empêcher la référence this de s échapper au cours de la construction de l objet Listing 3.9 : Confinement des variables locales, de types primitifs ou de types références. 47 Listing 3.10 : Utilisation de ThreadLocal pour garantir le confinement au thread Listing 3.11 : Classe non modifiable construite à partir d objets modifiables sous-jacents. 50 Listing 3.12 : Conteneur non modifiable pour mettre en cache un nombre et ses facteurs. 52 Listing 3.13 : Mise en cache du dernier résultat à l aide d une référence volatile vers un objet conteneur non modifiable Listing 3.14 : Publication d un objet sans synchronisation appropriée. Ne le faites pas Listing 3.15 : Classe risquant un problème si elle n est pas correctement publiée XX

15 XIV Table des listings Listing 4.1 : Compteur mono-thread utilisant le patron moniteur de Java Listing 4.2 : Utilisation du confinement pour assurer la thread safety Listing 4.3 : Protection de l état à l aide d un verrou privé Listing 4.4 : Implémentation du gestionnaire de véhicule reposant sur un moniteur Listing 4.5 : Classe Point modifiable ressemblant à java.awt.point Listing 4.6 : Classe Point non modifiable utilisée par DelegatingVehicleTracker Listing 4.7 : Délégation de la thread safety à un objet ConcurrentHashMap Listing 4.8 : Renvoi d une copie statique de l ensemble des emplacements au lieu d une copie "vivante" Listing 4.9 : Délégation de la thread à plusieurs variables d état sous-jacentes Listing 4.10 : Classe pour des intervalles numériques, qui ne protège pas suffisamment ses invariants. Ne le faites pas Listing 4.11 : Classe point modifiable et thread-safe Listing 4.12 : Gestionnaire de véhicule qui publie en toute sécurité son état interne Listing 4.13 : Extension de Vector pour disposer d une méthode ajouter-si-absent Listing 4.14 : Tentative non thread-safe d implémenter ajouter-si-absent. Ne le faites pas. 76 Listing 4.15 : Implémentation d ajouter-si-absent avec un verrouillage côté client Listing 4.16 : Implémentation d ajouter-si-absent en utilisant la composition Listing 5.1 : Actions composées sur un Vector pouvant produire des résultats inattendus. 84 Listing 5.2 : Actions composées sur Vector utilisant un verrouillage côté client Listing 5.3 : Itération pouvant déclencher ArrayIndexOutOfBoundsException Listing 5.4 : Itération avec un verrouillage côté client Listing 5.5 : Parcours d un objet List avec un Iterator Listing 5.6 : Itération cachée dans la concaténation des chaînes. Ne le faites pas Listing 5.7 : Interface ConcurrentMap Listing 5.8 : Tâches producteur et consommateur dans une application d indexation des fichiers Listing 5.9 : Lancement de l indexation Listing 5.10 : Restauration de l état d interruption afin de ne pas absorber l interruption. 99 Listing 5.11 : Utilisation de la classe CountDownLatch pour lancer et stopper des threads et mesurer le temps d exécution Listing 5.12 : Utilisation de FutureTask pour précharger des données dont on aura besoin plus tard Listing 5.13 : Coercition d un objet Throwable non contrôlé en RuntimeException Listing 5.14 : Utilisation d un Semaphore pour borner une collection Listing 5.15 : Coordination des calculs avec CyclicBarrier pour une simulation de cellules. 106 Listing 5.16 : Première tentative de cache, utilisant HashMap et la synchronisation Listing 5.17 : Remplacement de HashMap par ConcurrentHashMap Listing 5.18 : Enveloppe de mémoïsation utilisant FutureTask

16 Table des listings XV Listing 5.19 : Implémentation finale de Memoizer Listing 5.20 : Servlet de factorisation mettant en cache ses résultats avec Memoizer Listing 6.1 : Serveur web séquentiel Listing 6.2 : Serveur web lançant un thread par requête Listing 6.3 : Interface Executor Listing 6.4 : Serveur web utilisant un pool de threads Listing 6.5 : Executor lançant un nouveau thread pour chaque tâche Listing 6.6 : Executor exécutant les tâches de façon synchrone dans le thread appelant. 123 Listing 6.7 : Méthodes de ExecutorService pour le cycle de vie Listing 6.8 : Serveur web avec cycle de vie Listing 6.9 : Classe illustrant le comportement confus de Timer Listing 6.10 : Affichage séquentiel des éléments d une page Listing 6.11 : Interfaces Callable et Future Listing 6.12 : Implémentation par défaut de newtaskfor() dans ThreadPoolExecutor. 131 Listing 6.13 : Attente du téléchargement d image avec Future Listing 6.14 : La classe QueueingFuture utilisée par ExecutorCompletionService Listing 6.15 : Utilisation de CompletionService pour afficher les éléments de la page dès qu ils sont disponibles Listing 6.16 : Récupération d une publicité dans un délai imparti Listing 6.17 : Obtention de tarifs dans un délai imparti Listing 7.1 : Utilisation d un champ volatile pour stocker l état d annulation Listing 7.2 : Génération de nombres premiers pendant une seconde Listing 7.3 : Annulation non fiable pouvant bloquer les producteurs. Ne le faites pas Listing 7.4 : Méthodes d interruption de Thread Listing 7.5 : Utilisation d une interruption pour l annulation Listing 7.6 : Propagation de InterruptedException aux appelants Listing 7.7 : Tâche non annulable qui restaure l interruption avant de se terminer Listing 7.8 : Planification d une interruption sur un thread emprunté. Ne le faites pas Listing 7.9 : Interruption d une tâche dans un thread dédié Listing 7.10 : Annulation d une tâche avec Future Listing 7.11 : Encapsulation des annulations non standard dans un thread par redéfinition de interrupt() Listing 7.12 : Encapsulation des annulations non standard avec newtaskfor() Listing 7.13 : Service de journalisation producteur-consommateur sans support de l arrêt. 156 Listing 7.14 : Moyen non fiable d ajouter l arrêt au service de journalisation Listing 7.15 : Ajout d une annulation fiable à LogWriter Listing 7.16 : Service de journalisation utilisant un ExecutorService Listing 7.17 : Arrêt d un service avec une pilule empoisonnée

17 XVI Table des listings Listing 7.18 : Thread producteur pour IndexingService Listing 7.19 : Thread consommateur pour IndexingService Listing 7.20 : Utilisation d un Executor privé dont la durée de vie est limitée à un appel de méthode Listing 7.21 : ExecutorService mémorisant les tâches annulées après l arrêt Listing 7.22 : Utilisation de TrackingExecutorService pour mémoriser les tâches non terminées afin de les relancer plus tard Listing 7.23 : Structure typique d un thread d un pool de threads Listing 7.24 : Interface UncaughtExceptionHandler Listing 7.25 : UncaughtExceptionHandler, qui inscrit l exception dans le journal Listing 7.26 : Enregistrement d un hook d arrêt pour arrêter le service de journalisation. 167 Listing 8.1 : Interblocage de tâches dans un Executor monothread. Ne le faites pas Listing 8.2 : Constructeur général de ThreadPoolExecutor Listing 8.3 : Création d un pool de threads de taille fixe avec une file bornée et la politique de saturation caller-runs Listing 8.4 : Utilisation d un Semaphore pour ralentir la soumission des tâches Listing 8.5 : Interface ThreadFactory Listing 8.6 : Fabrique de threads personnalisés Listing 8.7 : Classe de base pour les threads personnalisés Listing 8.8 : Modification d un Executor créé avec les méthodes fabriques standard Listing 8.9 : Pool de threads étendu par une journalisation et une mesure du temps Listing 8.10 : Transformation d une exécution séquentielle en exécution parallèle Listing 8.11 : Transformation d une récursion terminale séquentielle en récursion parallèle. 186 Listing 8.12 : Attente des résultats calculés en parallèle Listing 8.13 : Abstraction pour les jeux de type "taquin" Listing 8.14 : Nœud pour le framework de résolution des jeux de réflexion Listing 8.15 : Résolveur séquentiel d un puzzle Listing 8.16 : Version parallèle du résolveur de puzzle Listing 8.17 : Loquet de résultat partiel utilisé par ConcurrentPuzzleSolver Listing 8.18 : Résolveur reconnaissant qu il n y a pas de solution Listing 9.1 : Implémentation de SwingUtilities à l aide d un Executor Listing 9.2 : Executor construit au-dessus de SwingUtilities Listing 9.3 : Écouteur d événement simple Listing 9.4 : Liaison d une tâche longue à un composant visuel Listing 9.5 : Tâche longue avec effet visuel Listing 9.6 : Annulation d une tâche longue Listing 9.7 : Classe de tâche en arrière-plan supportant l annulation, ainsi que la notification de terminaison et de progression

18 Table des listings XVII Listing 9.8 : Utilisation de BackgroundTask pour lancer une tâche longue et annulable. 203 Listing 10.1 : Interblocage simple lié à l ordre du verrouillage. Ne le faites pas Listing 10.2 : Interblocage dynamique lié à l ordre du verrouillage. Ne le faites pas Listing 10.3 : Induire un ordre de verrouillage pour éviter les interblocages Listing 10.4 : Boucle provoquant un interblocage dans une situation normale Listing 10.5 : Interblocage lié à l ordre du verrouillage entre des objets coopératifs. Ne le faites pas Listing 10.6 : Utilisation d appels ouverts pour éviter l interblocage entre des objets coopératifs Listing 10.7 : Portion d une trace de thread après un interblocage Listing 11.1 : Accès séquentiel à une file d attente Listing 11.2 : Synchronisation inutile. Ne le faites pas Listing 11.3 : Candidat à l élision de verrou Listing 11.4 : Détention d un verrou plus longtemps que nécessaire Listing 11.5 : Réduction de la durée du verrouillage Listing 11.6 : Candidat au découpage du verrou Listing 11.7 : Modification de ServerStatus pour utiliser des verrous divisés Listing 11.8 : Hachage utilisant le découpage du verrouillage Listing 12.1 : Tampon borné utilisant la classe Semaphore Listing 12.2 : Tests unitaires de base pour BoundedBuffer Listing 12.3 : Test du blocage et de la réponse à une interruption Listing 12.4 : Générateur de nombre aléatoire de qualité moyenne mais suffisante pour les tests Listing 12.5 : Programme de test producteur-consommateur pour BoundedBuffer Listing 12.6 : Classes producteur et consommateur utilisées dans PutTakeTest Listing 12.7 : Test des fuites de ressources Listing 12.8 : Fabrique de threads pour tester ThreadPoolExecutor Listing 12.9 : Méthode de test pour vérifier l expansion du pool de threads Listing : Utilisation de Thread.yield() pour produire plus d entrelacements Listing : Mesure du temps à l aide d une barrière Listing : Test avec mesure du temps à l aide d une barrière Listing : Programme pilote pour TimedPutTakeTest Listing 13.1 : Interface Lock Listing 13.2 : Protection de l état d un objet avec ReentrantLock Listing 13.3 : Utilisation de trylock() pour éviter les interblocages dus à l ordre des verrouillages Listing 13.4 : Verrouillage avec temps imparti Listing 13.5 : Prise de verrou interruptible

19 XVIII Table des listings Listing 13.6 : Interface ReadWriteLock Listing 13.7 : Enveloppe d un Map avec un verrou de lecture-écriture Listing 14.1 : Structure des actions bloquantes en fonction de l état Listing 14.2 : Classe de base pour les implémentations de tampons bornés Listing 14.3 : Tampon borné qui se dérobe lorsque les préconditions ne sont pas vérifiées. 299 Listing 14.4 : Code client pour l appel de GrumpyBoundedBuffer Listing 14.5 : Tampon borné avec blocage brutal Listing 14.6 : Tampon borné utilisant des files d attente de condition Listing 14.7 : Forme canonique des méthodes dépendantes de l état Listing 14.8 : Utilisation d une notification conditionnelle dans BoundedBuffer.put(). 310 Listing 14.9 : Porte refermable à l aide de wait() et notifyall() Listing : Interface Condition Listing : Tampon borné utilisant des variables conditions explicites Listing : Semaphore implémenté à partir de Lock Listing : Formes canoniques de l acquisition et de la libération avec AQS Listing : Loquet binaire utilisant AbstractQueuedSynchronizer Listing : Implémentation de tryacquire() pour un ReentrantLock non équitable. 321 Listing : Les méthodes tryacquireshared() et tryreleaseshared() de Semaphore Listing 15.1 : Simulation de l opération CAS Listing 15.2 : Compteur non bloquant utilisant l instruction CAS Listing 15.3 : Préservation des invariants multivariables avec CAS Listing 15.4 : Générateur de nombres pseudo-aléatoires avec ReentrantLock Listing 15.5 : Générateur de nombres pseudo-aléatoires avec AtomicInteger Listing 15.6 : Pile non bloquante utilisant l algorithme de Treiber (Treiber, 1986) Listing 15.7 : Insertion dans l algorithme non bloquant de Michael-Scott (Michael et Scott, 1996) Listing 15.8 : Utilisation de modificateurs atomiques de champs dans ConcurrentLinkedQueue Listing 16.1 : Programme mal synchronisé pouvant produire des résultats surprenants. Ne le faites pas Listing 16.2 : Classe interne de FutureTask illustrant une mise à profit de la synchronisation. 351 Listing 16.3 : Initialisation paresseuse incorrecte. Ne le faites pas Listing 16.4 : Initialisation paresseuse thread-safe Listing 16.5 : Initialisation impatiente Listing 16.6 : Idiome de la classe conteneur de l initialisation paresseuse Listing 16.7 : Antipatron du verrouillage vérifié deux fois. Ne le faites pas Listing 16.8 : Initialisation sûre pour les objets non modifiables

20 Préface À l heure où ce livre est écrit, les machines de gamme moyenne utilisent désormais des processeurs multicœurs. En même temps, et ce n est pas une coïncidence, les rapports de bogues signalent de plus en plus de problèmes liés aux threads. Dans un article récent posté sur le site des développeurs de NetBeans, l un des développeurs principaux indique qu une même classe a été corrigée plus de quatorze fois pour remédier à ce genre de problème. Dion Almaer, ancien éditeur de TheServerSide, a récemment écrit dans son blog (après une session de débogage harassante qui a fini par révéler un bogue lié aux threads) que ce type de bogue est si courant dans les programmes Java que ceux-ci ne fonctionnent souvent que "par accident". Le développement, le test et le débogage des programmes multithreads peut se révéler très difficile car, évidemment, les problèmes de concurrence se manifestent de façon imprévisible. Ils apparaissent généralement au pire moment lorsque le programme est en production et doit gérer une lourde charge de travail. L une des difficultés de la programmation concurrente en Java consiste à distinguer la concurrence offerte par la plate-forme et la façon dont les développeurs doivent appréhender cette concurrence dans leurs programmes. Le langage fournit des mécanismes de bas niveau, comme la synchronisation et l attente de conditions, qui doivent être utilisés correctement pour implémenter des protocoles ou des politiques au niveau des applications. Sans ces politiques, il est vraiment très facile de créer des programmes qui se compileront et sembleront fonctionner alors qu ils sont bogués. De nombreux ouvrages excellents consacrés à la programmation concurrente manquent ainsi leur but en se consacrant presque exclusivement aux mécanismes de bas niveau et aux API au lieu de s intéresser aux politiques et aux patrons de conception. Java 5.0 constitue une étape majeure vers le développement d applications concurrentes en Java car il fournit à la fois des composants de haut niveau et des mécanismes de bas niveau supplémentaires facilitant la construction des applications concurrentes à la fois pour les débutants et les experts. Les auteurs sont des membres essentiels du JCP Expert Group 1, qui a créé ces outils ; outre la description de leur comportement et de 1. N.d.T. : JCP signifie Java Community Process. Il s agit d un processus de développement et d amélioration de Java ouvert à toutes les bonnes volontés. Les propositions émises sont appelées JSR (Java Specification Request) et leur mise en place est encadrée par un groupe d experts (Expert Group).

Les Design Patterns en Java

Les Design Patterns en Java Les Design Patterns en Java Les 23 modèles de conception fondamentaux Steven John Metsker et William C. Wake Pearson Education France a apporté le plus grand soin à la réalisation de ce livre afin de vous

Plus en détail

jquery Simplifiez et enrichissez vos développements JavaScript 3 e édition Jonathan Chaffer Karl Swedberg

jquery Simplifiez et enrichissez vos développements JavaScript 3 e édition Jonathan Chaffer Karl Swedberg jquery Simplifiez et enrichissez vos développements JavaScript 3 e édition Jonathan Chaffer Karl Swedberg Traduit par Hervé Soulard avec la contribution technique de Didier Mouronval Pearson France a apporté

Plus en détail

Drupal 7. Créer et administrer son site de manière rapide et efficace. David Mercer. 2011 Pearson Education France Drupal 7 David Mercer

Drupal 7. Créer et administrer son site de manière rapide et efficace. David Mercer. 2011 Pearson Education France Drupal 7 David Mercer Drupal 7 Créer et administrer son site de manière rapide et efficace David Mercer Pearson Education France a apporté le plus grand soin à la réalisation de ce livre afin de vous fournir une information

Plus en détail

Créer un site e-commerce avec Dreamweaver CS4 et PHP/MySQL

Créer un site e-commerce avec Dreamweaver CS4 et PHP/MySQL Créer un site e-commerce avec Dreamweaver CS4 et PHP/MySQL 4 e édition Pearson Education France a apporté le plus grand soin à la réalisation de ce livre afin de vous fournir une information complète et

Plus en détail

Magento. Pratique du e-commerce avec Magento. Christophe Le Bot avec la contribution technique de Bruno Sebarte

Magento. Pratique du e-commerce avec Magento. Christophe Le Bot avec la contribution technique de Bruno Sebarte Magento Pratique du e-commerce avec Magento Christophe Le Bot avec la contribution technique de Bruno Sebarte Pearson Education France a apporté le plus grand soin à la réalisation de ce livre afin de

Plus en détail

Le Cloud Computing avec Amazon Web Services

Le Cloud Computing avec Amazon Web Services Le Cloud Computing avec Amazon Web Services Jeff Barr Traduit par Isabelle Hurbain-Palatin, avec la contribution technique de Dominique Colombani Pearson Education France a apporté le plus grand soin à

Plus en détail

Google AdWords Sandrine Burriel, avec la contribution d Isabelle Hurbain-Palatin, Emmanuel Rosenfeld et l équipe Google France

Google AdWords Sandrine Burriel, avec la contribution d Isabelle Hurbain-Palatin, Emmanuel Rosenfeld et l équipe Google France Google AdWords Sandrine Burriel, avec la contribution d Isabelle Hurbain-Palatin, Emmanuel Rosenfeld et l équipe Google France II Google AdWords Pearson Education France a apporté le plus grand soin à

Plus en détail

VMware. par l exemple. Ryan Troy Matthew Helmke. Traduit par Hervé Soulard avec la contribution technique de Sylvain Siou (VMware)

VMware. par l exemple. Ryan Troy Matthew Helmke. Traduit par Hervé Soulard avec la contribution technique de Sylvain Siou (VMware) VMware par l exemple Ryan Troy Matthew Helmke Traduit par Hervé Soulard avec la contribution technique de Sylvain Siou (VMware) Pearson Education France a apporté le plus grand soin à la réalisation de

Plus en détail

Créez des jeux Flash avec ActionScript 3.0

Créez des jeux Flash avec ActionScript 3.0 L E P R O G R A M M E U R Créez des jeux Flash avec ActionScript 3.0 2 e édition Gary Rosenzweig Pearson Education France a apporté le plus grand soin à la réalisation de ce livre afin de vous fournir

Plus en détail

Synchronisation par. Rappels. Plan. Conditions et moniteurs (1/7) Inf 431 Cours 11. jeanjacqueslevy.net

Synchronisation par. Rappels. Plan. Conditions et moniteurs (1/7) Inf 431 Cours 11. jeanjacqueslevy.net Rappels Inf 431 Cours 11 un processus t (Thread) est un programme qui s exécute Synchronisation par mémoire partagée tstart lance l exécution concurrente de la méthode trun de t tinterrupt signale qu on

Plus en détail

GUIDE DU MONTAGE PHOTO avec Photoshop

GUIDE DU MONTAGE PHOTO avec Photoshop GUIDE DU MONTAGE PHOTO avec Photoshop Matt Kloskowski Pearson a apporté le plus grand soin à la réalisation de ce livre afin de vous fournir une information complète et fiable. Cependant, Pearson n assume

Plus en détail

WordPress 3. Toutes les clés pour créer, maintenir et faire évoluer votre site web. Xavier Borderie, Francis Chouquet et Amaury Balmer

WordPress 3. Toutes les clés pour créer, maintenir et faire évoluer votre site web. Xavier Borderie, Francis Chouquet et Amaury Balmer WordPress 3 Toutes les clés pour créer, maintenir et faire évoluer votre site web Xavier Borderie, Francis Chouquet et Amaury Balmer Pearson Education France a apporté le plus grand soin à la réalisation

Plus en détail

Cours de Systèmes d Exploitation

Cours de Systèmes d Exploitation Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation

Plus en détail

Résumé du chapitre 3 Synchronisation entre processus : de producteur/consommateur aux sémaphores

Résumé du chapitre 3 Synchronisation entre processus : de producteur/consommateur aux sémaphores Résumé du chapitre 3 Synchronisation entre processus : de producteur/consommateur aux sémaphores Jacques Mossière 22 septembre 2008 1 Introduction Nous étudions dans ce chapitre la réalisation des processus

Plus en détail

1.1 Remote Procedure Call (RPC)

1.1 Remote Procedure Call (RPC) 1.1 Remote Procedure Call (RPC) Le modèle Client-Serveur est un modèle simple à utiliser pour la structuration des systèmes répartis. Mais ce modèle s appuie sur des communications de type entrée/sortie

Plus en détail

Cours 3: Coopération entre processus: Synchronisation + Communication

Cours 3: Coopération entre processus: Synchronisation + Communication Cours 3: Coopération entre processus: Synchronisation + Communication Coopération entre processus & Synchronisation + Communication 1. Introduction 2. Rendez-vous de N entités 3. Producteur(s) / Consommateur(s)

Plus en détail

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

Métriques de performance pour les algorithmes et programmes parallèles Métriques de performance pour les algorithmes et programmes parallèles 11 18 nov. 2002 Cette section est basée tout d abord sur la référence suivante (manuel suggéré mais non obligatoire) : R. Miller and

Plus en détail

CSS. Techniques professionnelles pour une mise en page moderne. Eric A. Meyer. 2011 Pearson Education France CSS Eric A. Meyer

CSS. Techniques professionnelles pour une mise en page moderne. Eric A. Meyer. 2011 Pearson Education France CSS Eric A. Meyer CSS Techniques professionnelles pour une mise en page moderne Eric A. Meyer Pearson Education France a apporté le plus grand soin à la réalisation de ce livre afin de vous fournir une information complète

Plus en détail

Cours 3: Coopération entre processus: Synchronisation + Communication

Cours 3: Coopération entre processus: Synchronisation + Communication Cours 3: Coopération entre processus: Synchronisation + Communication Coopération entre processus & Synchronisation + Communication 1. Introduction 2. Rendez-vous de N entités 3. Producteur(s) / Consommateur(s)

Plus en détail

Adobe Flex 3. Training from the Source. Jeff Tapper Michael Labriola Matthew Boles avec James Talbot

Adobe Flex 3. Training from the Source. Jeff Tapper Michael Labriola Matthew Boles avec James Talbot Adobe Flex 3 Training from the Source Jeff Tapper Michael Labriola Matthew Boles avec James Talbot Avant-propos de Matt Chotin, responsable produit Flex Pearson Education France a apporté le plus grand

Plus en détail

LA GESTION DE FICHIERS

LA GESTION DE FICHIERS CHAPITRE 6 : LA GESTION DE FICHIERS Objectifs spécifiques Connaître la notion de fichier, ses caractéristiques Connaître la notion de répertoires et partitions Connaître les différentes stratégies d allocation

Plus en détail

3dsMax : Modéliser pour le jeu vidéo

3dsMax : Modéliser pour le jeu vidéo 3dsMax : Modéliser pour le jeu vidéo Techniques professionnelles de modélisation de personnages, de véhicules et de décors Andrew Gahan Pearson Education France a apporté le plus grand soin à la réalisation

Plus en détail

La programmation concurrente

La programmation concurrente La programmation concurrente Jean-Ferdy Susini Maître de Conférences - CNAM Département Informatique Sources : Android Developpers, Wikipedia Paris, 06/05/2015 Architecture matérielle 2 Considérons l architecture

Plus en détail

Chap. III : Le système d exploitation

Chap. III : Le système d exploitation UMR 7030 - Université Paris 13 - Institut Galilée Cours Architecture et Système Le système d exploitation (ou O.S. de l anglais Operating System ) d un ordinateur est le programme qui permet d accéder

Plus en détail

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

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation Cycle Ingénierie 2e année SIGL Dernière mise à jour : 19/10/2006 Christophe Porteneuve Threads Principes Cycle de vie Création java.lang.thread

Plus en détail

JAVA PROGRAMMATION. Programme. 1. Java, HTML et World Wide Web

JAVA PROGRAMMATION. Programme. 1. Java, HTML et World Wide Web PROGRAMMATION PUBLIC Professionnels informatiques qui souhaitent développer des applications et «applets» Java DUREE 4 jours 28 heures OBJECTIF Créer divers «applets» à intégrer dans un site Web dynamique,

Plus en détail

Créations graphiques. John McWade Before&After. 2010 Pearson Education France Créations graphiques John McWade

Créations graphiques. John McWade Before&After. 2010 Pearson Education France Créations graphiques John McWade Créations graphiques John McWade Before&After Pearson Education France a apporté le plus grand soin à la réalisation de ce livre afin de vous fournir une information complète et fiable. Cependant, Pearson

Plus en détail

GENERALITES SUR LES SYSTEMES D EXPLOITATION

GENERALITES SUR LES SYSTEMES D EXPLOITATION CHAPITRE 1 : GENERALITES SUR LES SYSTEMES D EXPLOITATION Objectifs spécifiques Connaître la définition d un système d exploitation Connaître le rôle d un système d exploitation Connaître les classes des

Plus en détail

PLAN. Synchronisation des Processus: Exclusion Mutuelle. Problème de synchronisation: Exemple. Spécification du Problème

PLAN. Synchronisation des Processus: Exclusion Mutuelle. Problème de synchronisation: Exemple. Spécification du Problème PLAN Synchronisation des Processus: Exclusion Mutuelle N.Hameurlain http://www.univ-pau.fr/~hameur Spécification du problème Section Critique () Exclusion Mutuelle Principe Propriétés Réalisation d exclusion

Plus en détail

Les Systèmes d Exploitation: Concepts et Programmation

Les Systèmes d Exploitation: Concepts et Programmation Les Systèmes d Exploitation: d Concepts et Programmation Samia Bouzefrane MCF en Informatique, CNAM samia.bouzefrane@cnam.fr http://cedric.cnam.fr/~bouzefra Samia Bouzefrane, Cours SYSTEME 1 Introduction

Plus en détail

Architecture des calculateurs

Architecture des calculateurs Chapitre 1 Architecture des calculateurs 1.1 Introduction Ce paragraphe n a pas la prétention de présenter un cours d informatique. D une manière générale, seuls les caractéristiques architecturales qui

Plus en détail

Les tâches et la synchronisation en langage Java

Les tâches et la synchronisation en langage Java Les tâches et la synchronisation en langage Java Les threads, les verrous, les sémaphores et les moniteurs en Java D après les cours de D. Genthial et B. Caylux Langage Java Threads et synchronisation

Plus en détail

Systèmes d Exploitation temps réel. Programmation des STR. Gabriel FREY 2013 freyg.it@gmail.com

Systèmes d Exploitation temps réel. Programmation des STR. Gabriel FREY 2013 freyg.it@gmail.com Systèmes d Exploitation temps réel 1 2 Plan de l intervention 1. Introduction aux Systèmes Temps Réel 2. Programmation concurrente Synchronisation et communication Besoin en facultés temporelles 3. Ordonnancement

Plus en détail

ASSEMBLAGE ET ÉDITION DES LIENS

ASSEMBLAGE ET ÉDITION DES LIENS ASSEMBLAGE ET ÉDITION DES LIENS Mewtow 11 novembre 2015 Table des matières 1 Introduction 5 2 La chaine d assemblage 7 2.1 Résolution des symboles.............................. 7 2.2 Relocation.....................................

Plus en détail

Gestion des Processus

Gestion des Processus Plan Gestion des Processus Concept de processus Ordonnancement Ryan Cassel cassel@limsi.fr Synchronisation Université Paris XI 2 de Tanenbaum Pour préparer un gateau: Recette Programme Ingrédients

Plus en détail

Synchronisation des Processus et les sémaphores

Synchronisation des Processus et les sémaphores Synchronisation des Processus et les sémaphores Achraf Othman Support du cours : www.achrafothman.net 1 PLAN Spécification du problème Section Critique (SC) Exclusion Mutuelle Principe Propriétés Réalisation

Plus en détail

INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE

INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE I N T E RS Y S T E M S INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE David Kaaret InterSystems Corporation INTERSySTEMS CAChé CoMME ALTERNATIvE AUx BASES de données RéSIdENTES

Plus en détail

Multi-processeurs, multi-cœurs et cohérence mémoire et cache

Multi-processeurs, multi-cœurs et cohérence mémoire et cache Multi-processeurs, multi-cœurs et cohérence mémoire et cache Intervenant : Thomas Robert Institut Mines-Télécom Rappel système d exploitation & Parallélisme L unité d exécution pour un système d exploitation

Plus en détail

1. Les fondements de l informatique 13

1. Les fondements de l informatique 13 Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Introduction aux systèmes d exploitation

Introduction aux systèmes d exploitation Introduction aux systèmes d exploitation Le système d exploitation est un ensemble de logiciels qui pilotent la partie matérielle d un ordinateur. Les principales ressources gérées par un système d exploitation

Plus en détail

Système d exploitation

Système d exploitation Chapitre 2 Système d exploitation 2.1 Définition et rôle Un ordinateur serait bien difficile à utiliser sans interface entre le matériel et l utilisateur. Une machine peut exécuter des programmes, mais

Plus en détail

Table des matières. Cours Système d Exploitation. Chapitre II : Gestion des processus

Table des matières. Cours Système d Exploitation. Chapitre II : Gestion des processus Chapitre II : Gestion des processus Table des matières I Processus et contexte d un processus 2 II État d un processus 3 III Système d exploitation multi-tâches et parallélisme 3 IV Problèmes dues au multi-tâches

Plus en détail

Analyse de la démographie des objets dans les systèmes Java temps-réel

Analyse de la démographie des objets dans les systèmes Java temps-réel Analyse de la démographie des objets dans les systèmes Java temps-réel Nicolas BERTHIER Laboratoire VERIMAG Responsables du stage : Christophe RIPPERT et Guillaume SALAGNAC le 29 septembre 26 1 Introduction

Plus en détail

Projet Active Object

Projet Active Object Projet Active Object TAO Livrable de conception et validation Romain GAIDIER Enseignant : M. Noël PLOUZEAU, ISTIC / IRISA Pierre-François LEFRANC Master 2 Informatique parcours MIAGE Méthodes Informatiques

Plus en détail

Conduite du Projet Système

Conduite du Projet Système Conduite du Projet Système Département Télécom 2ème Année Enseignants : Yves Denneulin, Jacques Mossière, Grégory Mounié, Simon Nieuviarts, Franck Rousseau, Sébastien Viardot Résumé Ce document est complémentaire

Plus en détail

Systèmes d exploitation II Chapitre 2 : Gestion des processus. www.achrafothman.net

Systèmes d exploitation II Chapitre 2 : Gestion des processus. www.achrafothman.net Systèmes d exploitation II Chapitre 2 : Gestion des processus www.achrafothman.net 1 Processus Concept de Processus Ordonnancement de Processus Opérations sur les Processus Processus Coopératifs Communication

Plus en détail

Évaluation et implémentation des langages

Évaluation et implémentation des langages Évaluation et implémentation des langages Les langages de programmation et le processus de programmation Critères de conception et d évaluation des langages de programmation Les fondations de l implémentation

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

Chapitre 5. Communication interprocessus. 5.1 Introduction

Chapitre 5. Communication interprocessus. 5.1 Introduction Communication interprocessus 5.1 Introduction Dans une activité parallèle (ou pseudo parallèle), un ensemble de processus séquentiels s exécutent en parallèle. Cette exécution résulte deux types de relations

Plus en détail

Page 1 2 La présente invention concerne le domaine des architectures informatiques, et en particulier un procédé pour le développement d applications destiné à un fonctionnement en réseau, par exemple

Plus en détail

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

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation

Plus en détail

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

14 Le langage Java : concepts et pratique

14 Le langage Java : concepts et pratique Avant-propos Le langage Java, né en janvier 1995 chez Sun, est un langage à objets qui permet d écrire de façon simple et claire des programmes portables sur la majorité des plateformes. Lié à l essor

Plus en détail

Spring par la pratique

Spring par la pratique Spring par la pratique 2 e édition Spring 2.5 et 3.0 Arnaud Cogoluègnes Thierry Templier Julien Dubois Jean-Philippe Retaillé avec la contribution de Séverine Templier Roblou et de Olivier Salvatori Groupe

Plus en détail

Généralités sur le développement sous Linux... 1 Outils de développement... 3 Éditeurs de texte... 4

Généralités sur le développement sous Linux... 1 Outils de développement... 3 Éditeurs de texte... 4 Table des matières Avant-propos................................................ V CHAPITRE 1 Concepts et outils........................................... 1 Généralités sur le développement sous Linux....................

Plus en détail

QUELQUES CONCEPTS INTRODUCTIFS

QUELQUES CONCEPTS INTRODUCTIFS ESIEE Unité d'informatique IN101 Albin Morelle (et Denis Bureau) QUELQUES CONCEPTS INTRODUCTIFS 1- ARCHITECTURE ET FONCTIONNEMENT D UN ORDINATEUR Processeur Mémoire centrale Clavier Unité d échange BUS

Plus en détail

Programmation Multi-Threading en Java

Programmation Multi-Threading en Java Programmation Multi-Threading en Java Christophe Gravier, Frédérique Laforest, Julien Subercaze Télécom Saint-Étienne Université Jean Monnet {prénom.nom}@univ-st-etienne.fr FI2_INFO4 2012 2013 1 / 35 Plan

Plus en détail

Analyse abstraite de missions sous PILOT

Analyse abstraite de missions sous PILOT Analyse abstraite de missions sous PILOT Damien Massé EA 3883, Université de Bretagne Occidentale, Brest damien.masse@univ-brest.fr Résumé Nous étudions la possibilité de réaliser un analyseur par interprétation

Plus en détail

Application web pour la coordination de trajets piétons jusqu aux transports en commun

Application web pour la coordination de trajets piétons jusqu aux transports en commun Application web pour la coordination de trajets piétons jusqu aux transports en commun PROJET DE FIN D ETUDES ASR Etudiants : Encadrants : Oumar Sharif DAMBABA Clément BERTHOU Olivier BERGER Christian

Plus en détail

Design patterns par la pratique

Design patterns par la pratique Alan SHALLOWAY James TROTT Design patterns par la pratique Groupe Eyrolles, 2002 ISBN : 2-212-11139 Table des matières Préface.................................................... XV SECTION I Introduction

Plus en détail

Initiation au HPC - Généralités

Initiation au HPC - Généralités Initiation au HPC - Généralités Éric Ramat et Julien Dehos Université du Littoral Côte d Opale M2 Informatique 2 septembre 2015 Éric Ramat et Julien Dehos Initiation au HPC - Généralités 1/49 Plan du cours

Plus en détail

Génération de code : langages objets Gestion mémoire 2 novembre 2011

Génération de code : langages objets Gestion mémoire 2 novembre 2011 Génération de code : langages objets Gestion mémoire 2 novembre 2011 1 Compilation d un langage objet Représentation des classes et des objets Héritage multiple Appartenance à une classe 2 Environnement

Plus en détail

Structure en couches des systèmes informatiques

Structure en couches des systèmes informatiques Structure en couches des systèmes informatiques Vue simplifiée d un système informatique Ce que le simple utilisateur perçoit «à première vue» d un système informatique : Le boîtier (tour, desktop ou portable)

Plus en détail

GEL 1001 Design I (méthodologie)

GEL 1001 Design I (méthodologie) GEL 1001 Design I (méthodologie) Technique 2 Systèmes embarqués et fiabilité Hiver 2013 Département de génie électrique et de génie informatique Plan Système embarqué Ordinateur et architecture Von Neumann

Plus en détail

07 - Mémoire. Morgan Barbier morgan.barbier@unicaen.fr L2 S4 2012/2013

07 - Mémoire. Morgan Barbier morgan.barbier@unicaen.fr L2 S4 2012/2013 07 - Mémoire Morgan Barbier morganbarbier@unicaenfr L2 S4 2012/2013 1 Introduction Problèmatique Multitâches : L OS moderne permet d exécuter plusieurs tâches en même temps Chacune de ses tâches possèdent

Plus en détail

Plan de cette partie. Implantation des SGBD relationnels. Définition et fonctionnalités. Index. Coûts pour retrouver des données

Plan de cette partie. Implantation des SGBD relationnels. Définition et fonctionnalités. Index. Coûts pour retrouver des données Implantation des SGBD relationnels Université de Nice Sophia-Antipolis Version 3.4 25//06 Richard Grin Plan de cette partie Nous allons étudier (très rapidement!) quelques éléments de solutions utilisés

Plus en détail

ARCHITECTURES DES SYSTÈME DE BASE DE DONNÉES. Cours Administration des Bases de données M Salhi

ARCHITECTURES DES SYSTÈME DE BASE DE DONNÉES. Cours Administration des Bases de données M Salhi ARCHITECTURES DES SYSTÈME DE BASE DE DONNÉES Cours Administration des Bases de données M Salhi Architectures des Système de base de données Systèmes centralisés et client-serveur Server System Architectures

Plus en détail

CEG4566/CSI4541 Conception de systèmes temps réel. Chapitre 8 - Communication et synchronisation dans les systèmes temps réel

CEG4566/CSI4541 Conception de systèmes temps réel. Chapitre 8 - Communication et synchronisation dans les systèmes temps réel CEG4566/CSI4541 Conception de systèmes temps réel Chapitre 8 - Communication et synchronisation dans les systèmes temps réel Sommaire 8.1 Objets partagés et exclusion mutuelle 8.2 Moniteurs et synchronisation

Plus en détail

Table des matières. 4. INSTRUCTIONS RÉPÉTITIVES... 25 Réaffectation 25 Répétitions en boucle L instruction while 26 Commentaires 26 Remarques 27

Table des matières. 4. INSTRUCTIONS RÉPÉTITIVES... 25 Réaffectation 25 Répétitions en boucle L instruction while 26 Commentaires 26 Remarques 27 Gérard Swinnen Apprendre à programmer avec Python 3 Avec 60 pages d exercices corrigés! Objet Multithreading Bases de données Événements Programmation web Programmation réseau Unicode Impression PDF Python

Plus en détail

Cours client-serveur Web : Java et RMI (Remote Method Invocation)

Cours client-serveur Web : Java et RMI (Remote Method Invocation) Cours client-serveur Web : Java et RMI (Remote Method Invocation) 1 Java: Rappel sur les threads Cycle de vie d un thread (1) Né -> prêt appel de la méthode start du thread Prêt Exécution Distribution

Plus en détail

Démarrer et quitter... 13

Démarrer et quitter... 13 Démarrer et quitter... 13 Astuce 1 - Ouvrir, modifier, ajouter un élément dans le Registre... 14 Astuce 2 - Créer un point de restauration... 18 Astuce 3 - Rétablir un point de restauration... 21 Astuce

Plus en détail

Exécution des applications réparties

Exécution des applications réparties Exécution des applications réparties Programmation des Applications Réparties Olivier Flauzac URCA Master STIC-Informatique première année Olivier Flauzac (URCA) PAR : Exécution des applications réparties

Plus en détail

Analyse et programmation 1

Analyse et programmation 1 Analyse et programmation Aperçu du fonctionnement de l ordinateur Fonctionnement de l ordinateur Codage de l information Bus d échange d information CPU Exécution d un programme par la CPU Gestion des

Plus en détail

Université Paris Diderot Master 1 II. Théorie et pratique de la concurrence

Université Paris Diderot Master 1 II. Théorie et pratique de la concurrence Université Paris Diderot Master 1 II Théorie et pratique de la concurrence Partiel du 30 avril 2009 Durée : 1h30. Tous les documents sont autorisés. Le barème est indicatif. Question 1 : Soit le programme

Plus en détail

10 tâches d administration simplifiées grâce à Windows Server 2008 R2. 1. Migration des systèmes virtuels sans interruption de service

10 tâches d administration simplifiées grâce à Windows Server 2008 R2. 1. Migration des systèmes virtuels sans interruption de service 10 tâches d administration simplifiées grâce à Windows Server 2008 R2 Faire plus avec moins. C est l obsession depuis plusieurs années de tous les administrateurs de serveurs mais cette quête prend encore

Plus en détail

Mémoire virtuelle. Généralités

Mémoire virtuelle. Généralités Mémoire virtuelle Généralités La pagination pure - Conversion d adresses virtuelles en adresses physiques - Table des pages à plusieurs niveau et table inversée - Algorithmes de remplacement de page -

Plus en détail

Programmation réseau en Java : les threads

Programmation réseau en Java : les threads Programmation réseau en Java : les threads Michel Chilowicz Transparents de cours sous licence Creative Commons By-NC-SA Master 2 TTT Université Paris-Est Marne-la-Vallée Version du 28/02/2013 chilowi

Plus en détail

Design, améliorations, et implémentations

Design, améliorations, et implémentations CPU et Mémoire Design, améliorations, et implémentations Techniques et caractéristiques modernes qui permettent de donner aux ordinateurs actuels toute leur puissance 1 Architectures CPU Design de l architecture

Plus en détail

WWW - Intérêts du Web

WWW - Intérêts du Web WWW - Intérêts du Web client universel facilité d'emploi standards ouverts intégration des autres services Internet extensibilité du système faibles coûts logiciel et réseau utilisation au sein d'une entreprise

Plus en détail

Java. Java. Le livrede. Avec 80 exercices corrigés. Avec 80 exercices corrigés. Le livre. Anne Tasso. 5 e édition. Un best-seller qui a déjà conquis

Java. Java. Le livrede. Avec 80 exercices corrigés. Avec 80 exercices corrigés. Le livre. Anne Tasso. 5 e édition. Un best-seller qui a déjà conquis Anne Tasso Un best-seller qui a déjà conquis des milliers d'étudiants! Java Le livre Java Le livrede de premier premier langage langage Avec 80 exercices corrigés Avec 80 exercices corrigés 5 e édition

Plus en détail

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean. Plan du cours 2 Introduction générale : fondamentaux : les fondamentaux Michel Buffa (buffa@unice.fr), UNSA 2002, modifié par Richard Grin (version 1.1, 21/11/11), avec emprunts aux supports de Maxime

Plus en détail

LIVRE BLANC : Architectures OXYGENE version 8. MEMSOFT Page 1 sur 16 Livre Blanc Architectures Oxygène

LIVRE BLANC : Architectures OXYGENE version 8. MEMSOFT Page 1 sur 16 Livre Blanc Architectures Oxygène LIVRE BLANC : Architectures OXYGENE version 8 MEMSOFT Page 1 sur 16 Livre Blanc Architectures Oxygène Date du document : 25 septembre 2013 Ce livre blanc est destiné à l'information des professionnels

Plus en détail

IBM WebSphere ILOG JRules Business Rule Management System (BRMS) systèmes de gestion de règles métier

IBM WebSphere ILOG JRules Business Rule Management System (BRMS) systèmes de gestion de règles métier Automatisation des décisions métier et réduction du délai de lancement de nouvelles initiatives IBM WebSphere ILOG JRules Business Rule Management System (BRMS) systèmes de gestion de règles métier Gestion

Plus en détail

Chap. V : Les interruptions

Chap. V : Les interruptions UMR 7030 - Université Paris 13 - Institut Galilée Cours Architecture et Système Nous étudions dans ce chapitre les interruptions matérielles (ou externes), c est-à-dire déclenchées par le matériel (hardware)

Plus en détail

Not For Public Diffusion

Not For Public Diffusion LoriotPro V4 Extended Edition Module de corrélation d événements de type down/up (BETA) Lecointe Ludovic Copyright 2005-2006 LUTEUS SARL. All rights reserved. This documentation is copyrighted by LUTEUS

Plus en détail

Besoin de concevoir des systèmes massivement répartis. Comment tester le système? Solution. Évaluation de systèmes répartis à large échelle

Besoin de concevoir des systèmes massivement répartis. Comment tester le système? Solution. Évaluation de systèmes répartis à large échelle Besoin de concevoir des systèmes massivement répartis. Évaluation de systèmes répartis à large échelle Sergey Legtchenko Motivation : LIP6-INRIA Tolérance aux pannes Stockage de données critiques Coût

Plus en détail

Systèmes d exploitation. Introduction. (Operating Systems) http://www.sir.blois.univ-tours.fr/ mirian/

Systèmes d exploitation. Introduction. (Operating Systems) http://www.sir.blois.univ-tours.fr/ mirian/ Systèmes d exploitation (Operating Systems) Introduction SITE : http://www.sir.blois.univ-tours.fr/ mirian/ Systèmes d exploitation - Mírian Halfeld-Ferrari p. 1/2 Qu est-ce qu un SE? Ensemble de logiciels

Plus en détail

Tic Tac Toe. J2ME Bluetooth. Projet LO52. Rapport de projet Béatrice Frey et Cyril Crassin Printemps 2005

Tic Tac Toe. J2ME Bluetooth. Projet LO52. Rapport de projet Béatrice Frey et Cyril Crassin Printemps 2005 Rapport de projet LO52 Béatrice Frey et Cyril Crassin Printemps 2005 Projet LO52 Tic Tac Toe J2ME Bluetooth Université de Technologie de Belfort-Montbéliard GI04 Sommaire Introduction...2 1. La plateforme

Plus en détail

Plan du cours 5:Threads

Plan du cours 5:Threads Plan du cours 5:Threads introduction Définition Création des Threads Gestion des priorités Synchronisation Page : 1 Introduction(1) Les structure de contrôle: If.. Else.. While Switch. Try..catch.. Offrent

Plus en détail

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

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007 NFP 121 Java et les Threads Présentation : Thierry Escalarasse Mai 2007 Plan du cour Présentation de la notion de Threads La classe Thread L interface Runnable Les états d un thread La Synchronisation

Plus en détail

Stockage : capacité, performances

Stockage : capacité, performances Stockage : capacité, performances Intervenant :Thomas Robert C234-4 thomas.robert@telecom-paristech.fr Transparents : Thomas Robert Institut Mines-Télécom Lectures possibles Chapitre 7.2 de : http://ceit.aut.ac.ir/~amirkhani/

Plus en détail

Introduction : les processus. Introduction : les threads. Plan

Introduction : les processus. Introduction : les threads. Plan IN328 Programmation distribuée avec Java et J2EE 2 - Threads en Java Introduction : les processus Un processus est un ensemble d instructions à exécuter, un espace mémoire réservé et éventuellement d autres

Plus en détail

Moniteurs, Java, Threads et Processus

Moniteurs, Java, Threads et Processus Moniteurs, Java, Threads et Processus 1 Une vue orientée-objet de la mémoire partagée On peut voir un sémaphore comme un objet partagé accessible par deux méthodes : wait et signal. L idée du concept de

Plus en détail

FileMaker Pro 13. Utilisation d une Connexion Bureau à distance avec FileMaker Pro 13

FileMaker Pro 13. Utilisation d une Connexion Bureau à distance avec FileMaker Pro 13 FileMaker Pro 13 Utilisation d une Connexion Bureau à distance avec FileMaker Pro 13 2007-2013 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, Californie 95054

Plus en détail

Parallélisation Automatique

Parallélisation Automatique Parallélisation Automatique Paul Feautrier ENS de Lyon Paul.Feautrier@ens-lyon.fr 8 septembre 2008 1 / 23 Pourquoi la parallélisation automatique? Les gains de performances dus à la technologie s amenuisent

Plus en détail

IFT785 Approches Orientées Objets

IFT785 Approches Orientées Objets IFT785 Approches Orientées Objets FINAL Été 2002 Début : Lundi 19 août 2002 à 9h00 am Remise : Jeudi 22 août 2002 à 9h00 am Professeur : Sylvain GIROUX Note : /100 points Remarques : L examen est secret.

Plus en détail

Historique. Évolution des systèmes d exploitation (à travers les âges)

Historique. Évolution des systèmes d exploitation (à travers les âges) Historique Évolution des systèmes d exploitation (à travers les âges) Historique L histoire des systèmes d exploitation permet de dégager des concepts de base que l on retrouve dans les systèmes actuels

Plus en détail

Chapitre 1 : Introduction aux Systèmes d Exploitation (SE)

Chapitre 1 : Introduction aux Systèmes d Exploitation (SE) 1. Introduction Chapitre 1 : Introduction aux Systèmes d Exploitation (SE). 1 système informatique est un ensemble constitué de matériels et de logiciels et qui assure le traitement des données.. Les pgms

Plus en détail

Architectures Parallèles

Architectures Parallèles Architectures Parallèles Cours pour Ingénieur Préparé par Dr. Olfa Hamdi-Larbi ola_ola79@yahoo.fr Reçoit les signaux du contrôleur, cherche les données et les traite Instructions, Données à traiter et

Plus en détail