39
Le langage Java - © Copyright 2004 - AONIX. Tous droits réservés. Page 1 Etat de l’art de Java temps réel Ecole d’été Temps Réel –Nancy 2005 Marc richard-Foy

Etat de l’Art de Java Temps Réel Java

Embed Size (px)

DESCRIPTION

Etat de l’Art de Java Temps Réel Java

Citation preview

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 1

    Etat de lart de Java temps relEcole dt Temps Rel Nancy 2005

    Marc richard-Foy

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 2

    Plan

    1. Concepts et exemples de la concurrence Java 2. Critique du modle de la concurrence Java 3. Lapport Java 5 4. La spcification Temps rel RTSJ 5. La spcification SCJ 6. Conclusion

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 3

    Concepts de la concurrence Java (1)

    Il y a de nombreuses faons de supporter la programmation concurrente : API pour la gestion explicite de processus concurrents Mots cl ddis dans le langage (ex: task en Ada) Intgration dans la Programmation Oriente Objet avec par

    exemple la notion dobjets actifs Java adopte lapproche des objets actifs pour

    reprsenter les threads. Communication et synchronisation des threads

    De nombreuses techniques : variables partages, passage de messages

    Java adopte la notion de moniteur aussi bien pour les mcanismes dexclusion mutuelle que de communication asynchrone.

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 4

    Concepts de la concurrence Java (2)

    Un moniteur peut tre considr comme un objet o chacune de ses oprations sexcute en exclusion mutuelle

    Etat encapsulInterface procdurale

    Verrou

    Les variables de conditions expriment une contrainte sur lordre dexcution des oprations

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 5

    Les threads exemple (1)/* Programme qui compte jusqu une valeur passe en

    argument de la ligne de commande. Chaque valeur de comptage est affiche lcran par le thread qui effectue le comptage tandis que le thread Main affiche un message indiquant quil a termin. */

    public class MyApp extends Thread{public final int count;public MyApp(int count){ this.count = count; }public void run(){

    for (int j=0; j

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 6

    Les threads exemple (2)

    Thread dans la JVM

    Thread dans lapplication

    Invoke MyApp.main

    MyApp ma = new MyApp(...);

    ma.start(); ma.run();

    System.out.println("..."); System.out.println(j);

    Implicite

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 7

    Exclusion mutuelle - exemplepublic class Coordinate {

    public Coordinate(int initX, int initY) {x = initX;y = initY;

    }public synchronized void update(int newX,

    int newY) {x = newX;y = newY;

    }public synchronized void display() {System.out.println(x);System.out.println(y);

    }private int x, y;

    }

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 8

    Communication asynchrone - Exemple(1)

    public class BoundedBuffer {private int buffer[];private int first;private int last;private int count = 0;private int size;

    public BoundedBuffer(int length) {size = length;buffer = new int[size];last = 0;first = 0;

    };

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 9

    Communication asynchrone - Exemple(2)public synchronized void put(int item)

    throws InterruptedException {while (count == size) wait();last = (last + 1) % size ; // % is moduluscount++;buffer[last] = item;notifyAll();

    };public synchronized int get()

    throws InterruptedException {while (count == 0) wait();first = (first + 1) % size ; // % is moduluscount--;notifyAll();return buffer[first];

    };}

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 10

    Plan

    1. Concepts et exemples de la concurrence Java 2. Critique du modle de la concurrence Java 3. Lapport Java 5 4. La spcification Temps rel RTSJ 5. La spcification SCJ 6. Conclusion

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 11

    Points forts du modle de la concurrence Java

    Modle simple et directement support par le langage Ceci limite potentiellement les erreurs qui surviennent

    en interfaant les RTOS Le contrle du typage fort et de la syntaxe du langage

    donne quelques protections Par exemple il nest pas possible doublier la fin dun

    bloc synchronized La portabilit des programmes est amliore cause

    du modle de la concurrence indpendamment de lOS sous-jacent

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 12

    Faiblesses (1)

    Mcanisme de priorit des threads insuffisant

    Programmation de processus priodiques limits par labsence de mcanismes dattente sur des temps absolus

    Le traitement des vnements asynchrones ncessitent un thread ddi

    Transfert de contrle asynchrone : Ne pas utiliser les mthodes stop(), suspend() et resume() sous risque dinterblocage ou dincohrence

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 13

    Faiblesses (2) wait/notify

    Lappel de moniteurs imbriqus peut conduire des interblocages car le verrou du moniteur englobant nest pas relch quand le thread attend sur un wait du moniteur imbriqu.

    Seulement une file dattente wait set par objet versus par condition associe lobjet

    Origine du rveil dun thread excutant wait() : notify()/notifyAll(), interrupt() ou time-out ?

    Pas de prfrence donne aux threads qui continuent aprs un notify sur ceux qui accdent au verrou du moniteur pour la premire fois

    Lidiome while (!condition) {obj.wait()}est fondamental

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 14

    Faiblesses (2) -synchronized

    Il nest pas vident de dterminer quand des appels imbriqus un moniteur peuvent tre effectus : Les mthodes dans une classe ntant pas dclares synchronized peuvent nanmoins contenir des instructions synchronized;

    Les mthodes dans une classe ntant pas dclares synchronized peuvent tre surcharges par une mthode synchronized;

    Une mthode non synchronized peut le devenir en tant appele depuis une construction synchronized dune sous-classe

    Les mthodes appeles via les interfaces ne peuvent pas tre synchronized

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 15

    Faiblesses (3) synchronized

    Impossible de faire machine arrire dans une tentative de prise de verrou, dabandonner aprs un dlai ou une interruption

    Impossible de personnaliser la smantique du verrou en ce qui concerne la r-entrance, lquit ou les accs en lecture versus criture.

    Pas de contrle daccs pour la synchronisation. Toute mthode peut effectuer synchronized(obj) pour tout objet accessible

    Impossibilit dobtenir un verrou dans une mthode et de le relcher dans une autre (structure en bloc)

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 16

    Plan

    1. Concepts et exemples de la concurrence Java 2. Critique du modle de la concurrence Java 3. Lapport Java 5 4. La spcification Temps rel RTSJ 5. La spcification SCJ 6. Conclusion

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 17

    Modle Mmoire Java (1)

    Le modle mmoire java (JMM) comprend: Une mmoire principale partages entre tous les threads Une mmoire locale propre chaque thread similaire un cache

    Le modle dfinit les conditions ncessaires et suffisantes qui permettent de savoir que les critures mmoire des autres threads sont visibles par le thread courant et inversement que les critures par le thread courant sont visibles par les autres threads.

    Les r-ordonnancements des instructions par les compilateurs ou processeurs sont le souci principal

    http://www.cs.umd.edu/users/pugh/java/memoryModel

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 18

    Modle Mmoire Java (2)

    Java 1.5 a rvis la smantique des mots cl final, volatile et synchronized pour assurer quun programme correctement synchronis sexcute correctement sur tout type darchitecture matrielle

    La synchronisation reprsente plus quune simple exclusion mutuelle : En sortie dun bloc synchronized le cache du thread courant

    est sauv dans la mmoire partage A lentre dun bloc synchronized les variables locales du

    thread courant sont recharges depuis la mmoire partage

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 19

    class VolatileExample {int x= 0;volatile boolean v = false;public void writer() {

    x=42;v= true;

    }public void reader() {

    if (v == true) {// si on utilise x on a la garantie de voir 42{

    {}

    Ce qui est visible par le thread A quand il crit le champ volatile le devient par le thread B quand il lit ce mme champ !

    Exemple avec volatile

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 20

    Mcanisme tendu de verrou

    package java.util.concurrent.locks;public interface Lock {

    public void lock(); // Attendre dobtenir le verrou.

    public Condition newCondition();// Crer une variable de condition// utiliser avec le verrou.

    public void unlock();

    }

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 21

    Les variables de condition

    package java.util.concurrent.locks;public interface Condition {

    public void await() throws InterruptedException;

    // Relche atomiquement le verrou associ// et met le thread courant en attente.

    public void signal();// Rveil un thread en attente du verrou.public void signalAll();// Rveil tous les threads en attente// du verrou.

    }

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 22

    Utilitaires de gestion de la concurrence (1)

    Le paquetage java.util.concurrent fournit un ensemble trs riche et complet de classes et interfaces pour le dveloppement dapplications concurrentes

    Locks (Lock, ReadWriteLock et Condition) time-out possible, interrupt possible, conditions multiples par verrou, pas la structure en rgion, personalit de laccs au verrou (read/write), quit possible dans le mcanisme dattente, respecte le modle mmoire Java

    Atomicit java.util.concurrent.atomic

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 23

    Utilitaires de gestion de la concurrence (2)

    Thread-safe collections Interfaces Queue et BlockingQueue

    Task Scheduling Framework Squencer et contrler des tches asynchrones Soumission dans un thread ou un pool de thread Interfaces Callable, Future et Executor

    Synchronizers Semaphore et Mutex CyclicBarrier CountDownLatch (compte rebours) Exchanger (rendezvous)

    Rsolution du temps la nanoseconde pour toutes les mthodes avec timeout

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 24

    Classe LockSupport

    La classe LockSupport fournit les mcanismes de base pour le support des verrous :package java.util.concurrent.locks;public class LockSupport {

    public static void park()public static void parkNanos(long nanos)public static void parkUntil(long deadline)public static void unpark(Thread thread)

    } Semblable au smaphore binaire Utiliser park/unpark au lieu des mthodes

    dconseilles Thread.suspend et Thread.resume Briques de base pour les implementeurs qui souhaitent

    dvelopper leurs propres classes Locks.

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 25

    Etat des threads Java

    start

    create thread object

    run method exits

    garbage collectedand finalization

    synchronizedblock/method

    (thread termination)

    destroywait

    parkjoin

    notifynotifyAll

    unpark interrupt

    sleepjoin

    waitparkUntilparkNanos

    notifynotifyAllunpark

    interrupt

    Non-Existing

    New

    Runnable

    Blocked

    Waiting

    Timed_WaitingTerminated

    Non-Existing

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 26

    Plan

    1. Concepts et exemples de la concurrence Java 2. Critique du modle de la concurrence Java 3. Lapport Java 5 4. La spcification Temps rel RTSJ 5. La spcification SCJ 6. Conclusion

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 27

    RTSJ principes directeurs

    Compatibilit arrire avec les programmes java non temps rel

    Support du principe Write Once, Run Anywhere mais pas au dtriment du dterminisme

    Supporter ltat de lart actuel tout en tant ouvert des volutions

    Donner la priorit au dterminisme dans la conception Pas dextension syntaxique du langage Donner des degrs de libert aux implmentations

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 28

    Amliorations temps rel

    RTSJ amliore la programmation temps rel Java dans les domaines suivants : Gestion mmoire Horloge et gestion du temps

    Ordonnancement et objets schedulable

    Threads temps rel

    Gestion des vnemenst asynchrones et timers

    Trasnfert de contrle asynchrone

    Synchronisation et partage de ressource

    Accs la mmoire physique

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 29

    Modle mmoire RTSJ

    HeapMemory : cest le tas mmoire Java classique.

    ImmortalMemory : cest une zone mmoire partage entre toutes les threads. Les objets allous dans cette zone ne sont jamais collects par le Garbage Collector et ne sont librs que lorsque le programme se termine.

    ScopedMemory : cest une zone pour les objets qui ont une dure de vie bien dfinie. Un compteur de rfrences associ chaque ScopedMemory permet de conserver la trace de combien dentits temps rel sont un moment donn en train dutiliser cette rgion mmoire.

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 30

    ScopedMemory - exemple

    import javax.realtime.*; public class Region {

    LTMemory locale; class Action implements Runnable {

    public void run() {// Tous les objets allous dans cette// mthode run() ont la porte de// lexcution de cette mthode : ils// seront librs en sortant de la mthode. ... }

    }static public void main(String [] args){

    locale = new LTMemory(8*1024, 8*1024); Action action = new Action(); // Pendant lexcution de la mthode run()// associe largument action les objets// seront allous dans la rgion locale.locale.enter(action);

    }}

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 31

    Gestion du temps

    La classe abstraite HighResolutionTime dfinit le temps avec une prcision de la nanoseconde

    Les classes AbsoluteTime, RelativeTime et RationalTime permettent de manipuler des temps absolus (dates) ou des intervalles de temps (dures)

    Ces temps sont relatifs des horloges. Plusieurs types dhorloge sont possibles au sein dun mme programme

    RTSJ fournit toujours une horloge temps rel associ un temps croissance monotone

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 32

    Objets Schedulable

    RTSJ gnralise les entits schedulable du thread jusqu la notion dobjets Schedulable

    Un objet Schedulable implmente linterface Schedulable

    Chaque objet Schedulable indique ses exigences: Dchance (quand il doit tre lligible), Mmoire (ex: taux dallocation sur la heap), Ordonnancement (priorit)

    Linterface Schedulable est implmente par les classes: RealTimeThread et NoHeapRealTimeThread qui

    tendent la classe Thread pour le temps rel AsyncEventHandler pour le traitement dvnements

    asynchrones (handlers dinterruptions par exemple)

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 33

    Thread priodiques

    public class Periodic extends RealtimeThread{public Periodic(

    PriorityParameters PP, PeriodicParameters P) { super(pp, p); };

    public void run(){boolean noProblems = true;while(noProblems) {

    // Code excuter chaque priode...noProblems = waitForNextPeriod();

    }// Echance manque...

    }}

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 34

    Priority Inversion control in RTSJ

    Linversion de priorit peut survenir quand un objet schedulable est bloqu en attente de ressource

    Pour limiter la dure du temps de blocage RTSJ impose que : Toutes les files dattente du systme soient gres par ordre de

    priorit FIFO pour les objets schedulable de mme priorit dans la mme

    file De mme les files associes lappel de la mthode wait() de la

    classe Object doivent tre aussi ordonnes par priorit Par dfaut le protocole dhritage de priorit est appliqu aux

    objets schedulable bloqus en attente de ressource Le protocole dhritage priorit plafond (PCP) peut tre associ

    une ressource de faon programmatique

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 35

    Plan

    1. Concepts et exemples de la concurrence Java 2. Critique du modle de la concurrence Java 3. Lapport Java 5 4. La spcification Temps rel RTSJ 5. La spcification SCJ 6. Conclusion

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 36

    Systmes critiques - Modes dexcution

    Initialisation

    Mission

    Terminaison

    Mise sous tensionDmarrage

    RcuprationRedmarrage

    Mode Oprationnel

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 37

    Modle de concurrence SCJ

    Lordonnancement est premptif par priorit fixe, Seuls les objets Schedulable globaux sont

    supports, ReleaseParameter soit priodiques soit

    sporadiques, Chaque traitement dvnement asynchrone

    sexcute dans un thread ddi, Les dpassements dchance sont dtects, Le partage de ressource se fait laide de

    mthodes synchronized (non blocantes), Linversion de priorit est contrle par le PCP

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 38

    Plan

    1. Concepts de la concurrence Java 2. Exemples illustrant le modle de la concurrence Java 3. Critique du modle de la concurrence Java 4. Lapport Java 5 : le JSR 133 5. Lapport Java 5 : le JSR 166 6. La spcification Temps rel RTSJ 7. La spcification SCJ 8. Conclusion

  • Le langage Java - Copyright 2004 - AONIX. Tous droits rservs. Page 39

    Conclusion

    Java 1.5 augmente significativement les capacits de la programmation concurrente,

    Le RTSJ version 1.0.1 est stable,

    Le SCJ a t soumis comme JSR The Open Group est le chef de file

    Discussions en cours sur le type dannotations pour lanalyse temps rel et le modle mmoire (rgions imbriques)

    Une voie intressante : les systmes temps rel architecture neutre