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).

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

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

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

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

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

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

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

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

Virtualisation en pratique

Virtualisation en pratique Virtualisation en pratique Kenneth Hess et Amy Newman Traduit par Isabelle Hurbain-Palatin 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

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

Entraînement au concours ACM-ICPC

Entraînement au concours ACM-ICPC Entraînement au concours ACM-ICPC Concours ACM-ICPC : format et stratégies Page 1 / 16 Plan Présentation Stratégies de base Page 2 / 16 Qu est-ce que c est? ACM-ICPC : International Collegiate Programming

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

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

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

Développer pour le Web mobile

Développer pour le Web mobile Développer pour le Web mobile Maximiliano Firtman Traduit par Hervé Soulard avec la contribution technique de Jean-Marc Delprato Pearson Education France a apporté le plus grand soin à la réalisation de

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

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

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

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

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

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

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

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

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

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

Solutions de gestion de la sécurité Livre blanc

Solutions de gestion de la sécurité Livre blanc Solutions de gestion de la sécurité Livre blanc L intégration de la gestion des identités et des accès avec l authentification unique Objectif : Renforcer la politique de sécurité et améliorer la productivité

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

Corrigé de l examen de systèmes opératoires Module Synchronisation des processus

Corrigé de l examen de systèmes opératoires Module Synchronisation des processus Corrigé de l examen de systèmes opératoires Module Synchronisation des processus 2ième Année Informatique et Mathématiques Appliquées 17 Novembre 1999 1 Les sémaphores 1. Donner la définition d un sémaphore

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

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

5 Moniteurs. Slide 1. Caractéristique majeure d un programme avec moniteurs = Composé de deux sortes de modules/processus: Slide 2

5 Moniteurs. Slide 1. Caractéristique majeure d un programme avec moniteurs = Composé de deux sortes de modules/processus: Slide 2 5 Moniteurs Motivation = les sémaphores peuvent être utilisés pour résoudre à peu près n importe quel problème d exclusion mutuelle ou synchronisation... mais, les sémaphores possèdent certains désavantages:

Plus en détail

Guillaume SOLDERA (B guillaume.soldera@serli.fr) SERLI Informatique Bull OW2 Consortium. Comparatif Choco/Drools dans le cadre du projet JASMINe

Guillaume SOLDERA (B guillaume.soldera@serli.fr) SERLI Informatique Bull OW2 Consortium. Comparatif Choco/Drools dans le cadre du projet JASMINe Guillaume SOLDERA (B guillaume.soldera@serli.fr) SERLI Informatique Bull OW2 Consortium dans le cadre du projet JASMINe Avril 2008 Table des matières 1 Introduction 3 1.1 Rappel sur JASMINe.......................................

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

Le service pack 6 (SP6) est le dernier disponible pour visual studio 6. Ce dernier devrait être maintenu par Microsoft jusqu en 2008.

Le service pack 6 (SP6) est le dernier disponible pour visual studio 6. Ce dernier devrait être maintenu par Microsoft jusqu en 2008. 1 CONCEPT DE BASE 1.1 Visual Basic 6 1.1.1 Pour quoi faire? VB est un langage de type RAD : «Rapid Application Development». Il permet de créer des applications rapidement grâce à une conception simple

Plus en détail

Le client/serveur repose sur une communication d égal à égal entre les applications.

Le client/serveur repose sur une communication d égal à égal entre les applications. Table des matières LES PRINCIPES DE BASE... 1 Présentation distribuée-revamping...2 Présentation distante...3 Traitements distribués...3 données distantes-rd...4 données distribuées-rda distribué...4 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

RAPPORT DE CONCEPTION UML :

RAPPORT DE CONCEPTION UML : Carlo Abi Chahine Sylvain Archenault Yves Houpert Martine Wang RAPPORT DE CONCEPTION UML : Bamboo Ch@t Projet GM4 Juin 2006 Table des matières 1 Introduction 2 2 Présentation du logiciel 3 2.1 Précisions

Plus en détail

Le «thread local storage» et son utilisation

Le «thread local storage» et son utilisation Résumé Les allocations mémoire sont généralement plus coûteuses que d ordinaire en environnement multi-thread. En effet, la majorité des algorithmes d allocation en usage dans les systèmes d exploitation

Plus en détail

D un point de vue système, ajuster la mémoire est l une des principales méthodes pour augmenter ou réduire les performances d un processus.

D un point de vue système, ajuster la mémoire est l une des principales méthodes pour augmenter ou réduire les performances d un processus. GESTION DE LA MEMOIRE SOUS UNIX La mémoire est une ressource critique car elle conditionne les temps de traitements. Différentes options SAS sont disponibles pour utiliser au mieux la mémoire de la machine.

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

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

É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

Bienvenue dans le monde de la construction logicielle

Bienvenue dans le monde de la construction logicielle Chapitre 1 Bienvenue dans le monde de la construction logicielle Sommaire : 1.1 La construction logicielle, qu est-ce que c est? : page 3 1.2 Pourquoi la construction logicielle est-elle importante? :

Plus en détail

Par le service des publications Citrix. Citrix Systems, Inc.

Par le service des publications Citrix. Citrix Systems, Inc. Licences : présentation de l architecture Par le service des publications Citrix Citrix Systems, Inc. Avis Les informations contenues dans cette publication peuvent faire l'objet de modifications sans

Plus en détail

L informatique en BCPST

L informatique en BCPST L informatique en BCPST Présentation générale Sylvain Pelletier Septembre 2014 Sylvain Pelletier L informatique en BCPST Septembre 2014 1 / 20 Informatique, algorithmique, programmation Utiliser la rapidité

Plus en détail

Traduction des Langages : Le Compilateur Micro Java

Traduction des Langages : Le Compilateur Micro Java BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant

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

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

SAUVEGARDE ET RESTAURATION DES METADONNEES AVEC SAS 9.3

SAUVEGARDE ET RESTAURATION DES METADONNEES AVEC SAS 9.3 SAUVEGARDE ET RESTAURATION DES METADONNEES AVEC SAS 9.3 SAS 9.3 est disponible depuis le 12 Juillet 2011. Cette nouvelle version s accompagne de son lot de nouveautés notamment au niveau du serveur de

Plus en détail

Projet informatique «Voyageur de commerce» Résolution approchée par algorithme génétique du problème du voyageur de commerce

Projet informatique «Voyageur de commerce» Résolution approchée par algorithme génétique du problème du voyageur de commerce Année 2007-2008 Projet informatique «Voyageur de commerce» Résolution approchée par algorithme génétique du problème du voyageur de commerce B. Monsuez Projet informatique «Voyageur de commerce» Résolution

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

Synchronisation des processus. Didier Verna. didier@lrde.epita.fr http://www.lrde.epita.fr/ didier. Systèmes d Exploitation. Didier Verna EPITA

Synchronisation des processus. Didier Verna. didier@lrde.epita.fr http://www.lrde.epita.fr/ didier. Systèmes d Exploitation. Didier Verna EPITA 1/16 Synchronisation des processus didier@lrde.epita.fr http://www.lrde.epita.fr/ didier 2/16 Table des matières 1 2 Synchronisation matérielle 3 Synchronisation logicielle 4 classiques 4/16 Nécessité

Plus en détail

Développement itératif, évolutif et agile

Développement itératif, évolutif et agile Document Développement itératif, évolutif et agile Auteur Nicoleta SERGI Version 1.0 Date de sortie 23/11/2007 1. Processus Unifié Développement itératif, évolutif et agile Contrairement au cycle de vie

Plus en détail

Machine de Turing. Informatique II Algorithmique 1

Machine de Turing. Informatique II Algorithmique 1 Machine de Turing Nous avons vu qu un programme peut être considéré comme la décomposition de la tâche à réaliser en une séquence d instructions élémentaires (manipulant des données élémentaires) compréhensibles

Plus en détail

EX4C Systèmes d exploitation. Séance 6 Synchronisation

EX4C Systèmes d exploitation. Séance 6 Synchronisation EX4C Systèmes d exploitation Séance 6 Synchronisation Sébastien Combéfis vendredi 21 novembre 2014 Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution Pas d

Plus en détail

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

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores INTRODUCTION AUX SYSTEMES D EXPLOITATION TD2 Exclusion mutuelle / Sémaphores Exclusion mutuelle / Sémaphores - 0.1 - S O M M A I R E 1. GENERALITES SUR LES SEMAPHORES... 1 1.1. PRESENTATION... 1 1.2. UN

Plus en détail

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

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

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

4D v11 SQL Release 5 (11.5) ADDENDUM

4D v11 SQL Release 5 (11.5) ADDENDUM ADDENDUM Bienvenue dans la release 5 de 4D v11 SQL. Ce document présente les nouveautés et modifications apportées à cette nouvelle version du programme. Prise en charge de nouvelles plates-formes La release

Plus en détail

Groupe Eyrolles, 2006, ISBN : 2-212-11919-4

Groupe Eyrolles, 2006, ISBN : 2-212-11919-4 Groupe Eyrolles, 2006, ISBN : 2-212-11919-4 Table des matières Préface... III Remerciements................................................... III Conventions typographiques........................................

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

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

Optimisation des bases de données

Optimisation des bases de données Optimisation des bases de données Mise en œuvre sous Oracle Laurent Navarro Avec la contribution technique d Emmanuel Lecoester Pearson Education France a apporté le plus grand soin à la réalisation de

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

Introduction à la programmation

Introduction à la programmation Chapitre 2 Introduction à la programmation Nous avons vu, dans le chapitre précédent, ce qu est un algorithme et un certain nombre de façons pour exécuter les algorithmes à la main. Nous allons voir, dans

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

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

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

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

Présentation du PL/SQL

Présentation du PL/SQL I Présentation du PL/ Copyright Oracle Corporation, 1998. All rights reserved. Objectifs du Cours A la fin de ce chapitre, vous saurez : Décrire l intéret du PL/ Décrire l utilisation du PL/ pour le développeur

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

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

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

Automatisation des copies de systèmes SAP

Automatisation des copies de systèmes SAP Pour plus d informations sur les produits UC4 Software, visitez http://www.liftoff-consulting.com/ Automatisation des copies de systèmes SAP Introduction Le thème de la copie des systèmes SAP est une source

Plus en détail

Air Transat. Contexte. Buts. Défis. Solution. Industry Travelling, Transport

Air Transat. Contexte. Buts. Défis. Solution. Industry Travelling, Transport Air Transat www.airtransat.ca Industry Travelling, Transport Partner r42 communication Cooper Building 3981 boul. Saint-Laurent, suite 215 Montreal H2W1Y5 Quebec, Canada Ralph Spandl ralph@r42.ca Contexte

Plus en détail

Claude Kaiser Machine virtuelle et environnement utilisateur SRI_B CHAPITRE 1

Claude Kaiser Machine virtuelle et environnement utilisateur SRI_B CHAPITRE 1 CHAPITRE 1 FOURNIR À L'UTILISATEUR UNE MACHINE VIRTUELLE ET UN ENVIRONNEMENT D'EXÉCUTION DE PROGRAMMES Plan ENVIRONNEMENT DE TRAVAIL ADAPTÉ AU BESOIN DE L'UTILISATEUR Fonctions de l'environnement d'exécution

Plus en détail

Environnements de Développement

Environnements de Développement Institut Supérieur des Etudes Technologiques de Mahdia Unité d Enseignement: Environnements de Développement Mme BEN ABDELJELIL HASSINE Mouna m.bnaj@yahoo.fr Développement des systèmes d Information Syllabus

Plus en détail

Gé nié Logiciél Livré Blanc

Gé nié Logiciél Livré Blanc Gé nié Logiciél Livré Blanc Version 0.2 26 Octobre 2011 Xavier Blanc Xavier.Blanc@labri.fr Partie I : Les Bases Sans donner des définitions trop rigoureuses, il faut bien commencer ce livre par énoncer

Plus en détail

Mieux programmer en Java

Mieux programmer en Java Mieux programmer en Java Peter Haggar Éditions Eyrolles ISBN : 2-212-09171-0 2000 PARTIE 1 l exécution de l instruction return, cependant, le contrôle est transféré au bloc finally en // 2. Cela provoque

Plus en détail

Examen Corrigé NFP137 : Systèmes et applications concurrentes

Examen Corrigé NFP137 : Systèmes et applications concurrentes CONSERVATOIRE NATIONAL DES ARTS et METIERS Centre de Paris Examen Corrigé NFP137 : Systèmes et applications concurrentes 3 juillet 2007 Exercice 1 : Gestion des ressources : L algorithme du banquier. Lorsqu

Plus en détail

RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005

RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005 Oussama ELKACHOINDI Wajdi MEHENNI RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005 Sommaire I. Préliminaire : Notice d exécution et mode opératoire...4 II. Architecture globale de l application...5

Plus en détail

Présentation. Logistique. Résumé de la 1e Partie. Mise en place du système

Présentation. Logistique. Résumé de la 1e Partie. Mise en place du système Présentation Diapo01 Je m appelle Michel Canneddu. Je développe avec 4D depuis 1987 et j exerce en tant qu indépendant depuis 1990. Avant de commencer, je tiens à remercier mes parrains Jean-Pierre MILLIET,

Plus en détail

Gestion des accès aux ressources à l aide des groupes

Gestion des accès aux ressources à l aide des groupes Gestion des accès aux ressources à l aide des groupes Un groupe est un ensemble de comptes d utilisateur. Les groupes permettent de simplifier la gestion de l accès des utilisateurs et des ordinateurs

Plus en détail

Deuxième partie. Protocoles d exclusion mutuelle. Plan. Interférences et isolation. Isolation Protocoles d exclusion mutuelle

Deuxième partie. Protocoles d exclusion mutuelle. Plan. Interférences et isolation. Isolation Protocoles d exclusion mutuelle Plan Deuxième partie 1 2 Primitives de gestion des activités 2 / 26 4 / 26 Interférences et isolation Contenu de cette partie di cultés résultant d accès concurrents à un objet partagé mise en œuvre de

Plus en détail

Plan. Cours 4 : Méthodes d accès aux données. Architecture système. Objectifs des SGBD (rappel)

Plan. Cours 4 : Méthodes d accès aux données. Architecture système. Objectifs des SGBD (rappel) UPMC - UFR 99 Licence d informatique 205/206 Module 3I009 Cours 4 : Méthodes d accès aux données Plan Fonctions et structure des SGBD Structures physiques Stockage des données Organisation de fichiers

Plus en détail

Introduction. Python?

Introduction. Python? 1 Introduction Python - why settle for snake oil when you can have the whole snake? «Python - Pourquoi se contenter d huile de serpent quand on peut avoir le serpent tout entier?» Mark Jackson En guise

Plus en détail

Les modèles technologiques de la localisation

Les modèles technologiques de la localisation Les modèles technologiques de la localisation Les modèles technologiques de la localisation Cécile Martin Université Rennes 2 Avant d entrer en détails dans les modèles technologiques de la localisation,

Plus en détail

La version 12 de PaperPort s est enrichie de nombreuses fonctions qui vont vous aider à gérer encore plus efficacement l ensemble de vos documents.

La version 12 de PaperPort s est enrichie de nombreuses fonctions qui vont vous aider à gérer encore plus efficacement l ensemble de vos documents. Bienvenue! Nuance PaperPort est un logiciel de gestion documentaire qui vous permet de numériser, d organiser, de consulter, de manipuler et de partager vos documents papier et vos fichiers numériques

Plus en détail

Serveur d intégration continue Jenkins et d analyse de code Sonar couplés à la forge logiciel SourceSup

Serveur d intégration continue Jenkins et d analyse de code Sonar couplés à la forge logiciel SourceSup Serveur d intégration continue Jenkins et d analyse de code Sonar couplés à la forge logiciel SourceSup Sébastien MEDARD GIP RENATER 263 avenue du Général Leclerc CS 74205 35042 Rennes Cedex Résumé L intégration

Plus en détail

PG208, Projet n 3 : Serveur HTTP évolué

PG208, Projet n 3 : Serveur HTTP évolué PG208, Projet n 3 : Serveur HTTP évolué Bertrand LE GAL, Serge BOUTER et Clément VUCHENER Filière électronique 2 eme année - Année universitaire 2011-2012 1 Introduction 1.1 Objectif du projet L objectif

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

Systèmes d exploitation Gestion des fichiers. Catalin Dima

Systèmes d exploitation Gestion des fichiers. Catalin Dima Systèmes d exploitation Gestion des fichiers Catalin Dima 1 Problématique Certains processus doivent stocker/avoir accès à une très grande quantité de mémoire Parfois plusieurs ordres de grandeur par rapport

Plus en détail

CH.3 SYSTÈMES D'EXPLOITATION

CH.3 SYSTÈMES D'EXPLOITATION CH.3 SYSTÈMES D'EXPLOITATION 3.1 Un historique 3.2 Une vue générale 3.3 Les principaux aspects Info S4 ch3 1 3.1 Un historique Quatre générations. Préhistoire 1944 1950 ENIAC (1944) militaire : 20000 tubes,

Plus en détail

Mise en œuvre des serveurs d application

Mise en œuvre des serveurs d application Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés

Plus en détail

Chargement de processus Allocation contigüe Allocation fragmentée Gestion de pages. Gestion mémoire. Julien Forget

Chargement de processus Allocation contigüe Allocation fragmentée Gestion de pages. Gestion mémoire. Julien Forget Julien Forget Université Lille 1 École Polytechnique Universitaire de Lille Cité Scientifique 59655 Villeneuve d Ascq GIS 3 2011-2012 1 / 46 Rôle du gestionnaire de mémoire Le gestionnaire de mémoire a

Plus en détail

EP60.92 Projet d application pluridisciplinaire La chasse aux trésors 2011-2012

EP60.92 Projet d application pluridisciplinaire La chasse aux trésors 2011-2012 EP60.92 Projet d application pluridisciplinaire La chasse aux trésors 2011-2012 I. Objectifs Mettre en œuvre les compétences acquises ou en cours d acquisition en: o Modélisation UML, Réseau, Base de données,

Plus en détail

fichiers Exemple introductif : stockage de photos numériques

fichiers Exemple introductif : stockage de photos numériques b- La Gestion des données Parmi les matériels dont il a la charge, le système d exploitation s occupe des périphériques de stockage. Il s assure, entre autres, de leur bon fonctionnement mais il doit être

Plus en détail

Sujet 4 : Jeu en réseau en Java / Swing. Auteur : Thomas JGENTI I072545

Sujet 4 : Jeu en réseau en Java / Swing. Auteur : Thomas JGENTI I072545 Projet Interfaces Homme-Machine Demi-valeur 16874 Année 2002-2003 Sujet 4 : Jeu en réseau en Java / Swing Auteur : Thomas JGENTI I072545 http://jgenti.free.fr/cnam Table de matières Table de matières...2

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

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