Programmation temps-réel (PTR) Introduction - 2007...
Transcript of Programmation temps-réel (PTR) Introduction - 2007...
Programmation temps-réel(PTR)
Introduction - 2007 (v0.4)
Daniel [email protected]
E-mail: [email protected]
Institut ReDS (http://reds.heig-vd.ch)
Bureau A07A
Tutorat PTR
Contact
Jeudi à 13H00–13H45, salle A05a
2PTR - Introduction - DRE/REDS, 2007
* Conception de systèmes digitaux complexes * Systèmes embarqués* Interfaces intelligentes* Méthodologies de conception bio-inspirées
Reconfigurable Embedded Digital Systems
Références et liens utilesPierre Breguet, Luigi Zaffalon, "Programmation concurrente et temps réel avec ADA 95", PPUR
Francis Cottet et al., "Ordonnancement temps réel", cours et exercices corrigés, Hermes, 2000
Doug Abbott, “Linux for Embedded and Real-time Applications”, Elsevier Science, 2002
Edward L. Lamie, “Real-time Embedded Multithreading”, CMP Books
http://www.embedded.com
http://www.freertos.org
http://www.linuxdevices.com
http://www.realtimelinuxfoundation.org
http://www.osnews.com 3PTR - Introduction - DRE/REDS, 2007
Introduction au temps-réelDéfinition, classification, architecture d'un OS temps-réelEspace utilisateur et noyau, notion de thread, TCB, etc.
Interactions matériel/logicielInterruptions, ISRServices de timer, watchdog, etc.
Ordonnancement des tâches temps-réel
Plan du cours
Décomposition en tâches concurrentesAlgorithmes d’ordonnancement et performance
Mécanismes de communicationModèles de communication, boîte aux lettresMémoire partagée
Mécanismes de synchronisationMutex, sémaphore, variable condition, inversion et héritage de priorité, etc.
4PTR - Introduction - DRE/REDS, 2007
Les laboratoires se font par groupe de deux, en salle A09.Système d'exploitation utilisé: Linux 2.6 avec extension d'un noyau temps-réel (Xenomai)Le langage de programmation sera le langage C.
3 l b t i I t Li X Ch dd P thFi d
Laboratoires
3 laboratoires: IntroLinXen - Cheddar - PathFinder
Préparation au cours “Système embarqué” (EMB)Microcontrôleur 32 bits ARM-926EJS
Deux examens (TE) de 45’ et un examen final d'une heure.
5PTR - Introduction - DRE/REDS, 2007
Définition, classification, notion de temps
OS, espace utilisateur, espace noyau
Plan
Notion de tâche et TCB
Services de gestion des tâches
Langage de programmation temps-réel
6PTR - Introduction - DRE/REDS, 2007
Qu’est-ce un système temps-réel ?Un système temps réel est une association logiciel/matériel où le logiciel permet, entre autre, unegestion adéquate des ressources matérielles en vue de remplir certaines tâches ou fonctions dans des limitestemporelles bien précises.
Système temps-réel – Définition (1/2)
La notion de temps réel appliquée à uneapplication:
Capacité d'appréhender un flux d'évènements asynchrones issus d'un processus.Ne perd aucun de ces évènementsDoit traiter chaque événement en un temps déterminé.
7PTR - Introduction - DRE/REDS, 2007
3 caractéristiques fondamentalesDéterminisme logique (aspect fonctionnel / spécification)
Les mêmes entrées appliquées au système produisent les mêmes résultats.
Déterminisme temporel (aspect dynamique / simulation)Respect des contraintes temporelles (échéances)
Fiabilité (aspect matériel / datasheet)
Système temps-réel – Définition (2/2)
Fiabilité (aspect matériel / datasheet)Le système répond à des contraintes de disponibilité (matériel/logiciel).
Par conséquent, le comportent d'un système temps-réel doit être prédictible.
Les temps de latence et leurs variations (jigues) sont maîtrisés.
Un système temps-réel n'est PAS un système "qui va vite", mais un système qui satisfait à des contraintes temporelles.
8PTR - Introduction - DRE/REDS, 2007
Multimédia sur le WebVidéoconférence, diffusion d'un film, téléphonie (skype), etc.
Systèmes réparties/distribuésApplications distribuées sur InternetServices de télécommunications (envoi de SMS/MMS, localisation d'un utilisateur mobile etc ) répartis sur différents
Système temps-réel – Applications (1/2)
localisation d un utilisateur mobile, etc.) répartis sur différentsserveurs.
Systèmes embarqués, systèmes industrielsSystème informatique dans lequel le processeur est englobé dans un système plus large et/ou que le logiciel est entièrement dédié à une application donnée.Exemples: sonde spatiale, terminal GSM, set-top-box (décodeur TV), lecteur MP3, bio-senseurs, robots, contrôleur de périphérique, etc.
9PTR - Introduction - DRE/REDS, 2007
En 2000, un rapport du RNRT estimait qu’un citoyen habitant dans un pays développé utiliserait dans les prochaines années environ 80 processeurs quotidiennement par le biais de systèmes enfouis et/ou mobiles. Cette prédiction risque d’être largement dépassée si l’on considère qu’une Peugeot 607 contient à elle seule 37 processeurs !
Système temps-réel – Applications (2/2)
Une autre étude montre que sur l'ensemble de tous les processeurs, seul env. 2% sont utilisés pour les PCs de bureau (desktop) ! Les autres sont utilisés dans des systèmes embarqués/portables.
10PTR - Introduction - DRE/REDS, 2007
Les systèmes temps-réel ont des exigences différentes en matière de contraintes temporelles.
Temps-réel strict ou dur – Hard RealtimeNécessite une gestion "stricte" du temps. Généralement, le processeur est alloué de manière totalitaire aux différentes tâches.Toutes les échéances doivent être garanties.
Système temps-réel – Classification
Aujourd'hui, les systèmes d'exploitation temps-réel permettent la gestion d'échéances avec une précision de l'ordre de la microseconde (μs).
Rappel: ce n'est pas synonyme de rapidité, mais bien de précision!
Temps-réel souple ou lâche – Soft RealtimeQuelques échéances peuvent ne pas être respectées, de manière occasionnelle.Tous les systèmes d'exploitation d'aujourd'hui peuvent "gérer" des tâches temps-réel souple.
11PTR - Introduction - DRE/REDS, 2007
Le temps-réel strict nécessite une couche logicielle particulière qui contrôle les interactions matérielles et logicielles, et ordonnance les tâches de manière à ce que toutes les échéances soient respectées.
Temps-réel strict
Par respect des échéances, il est question de précision (dépendra de la latence/gigue). La complexité du noyau (ordonnanceur, traitement des interruptions) peut entraîner une surcharge temporelle (overhead) au niveau du traitement.
12PTR - Introduction - DRE/REDS, 2007
La nanoseconde – O(ns)Temps d'accès à une RAM (5-80ns)La durée entre deux ticks d'horloge d'un processeur Pentium (durée d'un tick)Fréquence de 1 GHz (109 Hz)
La microseconde – O(μs)Un traitement dans un noyau de système d'exploitation (chagement de contexte, interruption matérielle, etc.)Systèmes utilisant des radars (navigation, détection de mouvement, etc.)Transmission sur des bus de terrain, transmission radioFréquence de 1 MHz (106 Hz)
Notion de temps - Ordres de grandeur
La milliseconde – O(ms)Temps d'accès à un disque dur SCSI ou IDE (5-20 ms)La durée d'échantillonnage du son, protocoles de télécommunicationFréquence de 1 KHz (103 Hz)
La seconde (s) – O(s)Systèmes de visualisation humain, (temps durant lequel l'œil peut "intégrer" 25 images au plus), applications multimédia, temps de réponse des applications informatiques (accès DB, compilation, etc.)Fréquence de 1 Hz
L'heure (h) – O(h)Applications de surveillance de réactions chimiques, surveillance de données météorologiques
Le mois, l'année – O(m, a)Systèmes de navigation de sonde spatiale
13PTR - Introduction - DRE/REDS, 2007
Un système d'exploitation temps-réel est une catégorie de sys. d'exploitation permettant la programmation et l'exécution de tâches temps-réel.
Il ne diffère pas fondamentalement d'un OS standard "non" temps-réel.Il est généralement plus simple, plus petit (car destiné à être
OS temps-réel - Objectif
Il est généralement plus simple, plus petit (car destiné à êtreembarqué) et offre moins de confort au niveau du développement.
Un OS temps-réel permet de gérer le temps de manière "stricte" (temps-réel strict) ou non (temps-réel souple).
Ordonnancement spécifique des tâches temps-réelStructures de données "temps-réel" Accès direct au matériel
14PTR - Introduction - DRE/REDS, 2007
Exécutif temps-réel - Structure
tâche Tâches applicatives
Utilisation des servicesActivation
15PTR - Introduction - DRE/REDS, 2007
Monde matériel
InterruptionsHorloge
ordonnanceur
chargeur
tempssynchronisation
communication
événements
tâches
Exécutif
Les processeurs offrent différents modes d'exécution
Mode utilisateurPermet l'exécution de plusieurs processus en assurant leur protection.Pas d'accès aux instructions privilégiées.Avec l'aide de la MMU (Memory Management Unit) le
Espace utilisateur/noyau (1/3)
Avec l'aide de la MMU (Memory Management Unit), le gestionnaire mémoire peut différencier les espaces d'adressage.C'est le mode dans lequel les applications vont s'exécuter.
Mode superviseur (il peut y en avoir plusieurs)Accès à toutes les instructions, y compris aux instructions privilégiées (instructions I/O, accès mémoire physique, etc.).Plus de protection garantie.Accès à toute la mémoire physique
16PTR - Introduction - DRE/REDS, 2007
Espace utilisateur/noyau (2/3)
Compilateurshell(prompt,
lignes de commande, etc.)
Interface H/M
Encodeur/Décodeur
Base de données
Espace utilisateur(mode utilisateur)
appels système
17PTR - Introduction - DRE/REDS, 2007
Espace noyau(mode superviseur)
Interfaces (fonctions C)
Gestion des interruptions
Gestionnairemémoire
Gestion des tâches
Exécutif temps-réel
MatérielHAL (Hardware Abstraction Layer)Gestion des
interruptions
Objets de communication
Objets de synchronisation
Drivers
Votreapplication
temps-réel !!
L'espace utilisateur correspond à l'environnement d'exécution lorsque le processeur est en mode utilisateur.
Les applications d'un ordinateur conventionnel (PC/Laptop/etc.) s'exécutent dans l'espace utilisateur.
L'espace noyau correspond à l'environnement d'exécution lorsque le processeur est en mode noyau.
Espace utilisateur/noyau (3/3)
d exécution lorsque le processeur est en mode noyau.Les services de l'OS s'exécutent dans l'espace noyau.La plupart des drivers.Les applications temps-réels !
La barrière entre l'espace utilisateur et l'espace noyau constitue l'interface entre l'application et le système d'exploitation.
L'application fait appel aux services du système d'exploitation à l'aide d'appels système.
18PTR - Introduction - DRE/REDS, 2007
Exemple d'appels système
Un appel système est généralement une fonction C.Un appel système déclenche une interruption logicielle; il s'agit d'une interruption synchrone, c-à-d que le processeur exécute une instruction particulières (INT, SWI, etc.).Il peut y avoir plusieurs interruptions logicielles (overflow, division par zéro, etc.) - Une des interruptions logicielles est réservée aux appels systèmes.
Exemple d'appels systèmes:open(), write(), read(), close(), etc.
Les appels système ne sont pas visibles dans l'espace noyau!!
Par conséquent, une application temps-réel ne se programme pas de la même manière qu'une application dans l'espace utilisateur.
PTR - Introduction - DRE/REDS, 2007 19
OS temps-réel commercialVxWorks http://www.windriver.compSOS+ http://www.windriver.comThreadX http://www.ghs.com/products/rtos/threadx.htmlLynxOS http://www.lynuxworks.com/rtosQnx http://www.qnx.comRTLinux http://www.fsmlabs.com/Jaluna http://www.jaluna.com
Exemples d'OS temps-réel
OS temps-réel en logiciel libre (Open Source, GNU, etc.)RTAI http://www.rtai.orgXENOMAI http://www.xenomai.orgucLinux http://www.uclinux.org (patch Linux 2.4 / intégré à Linux 2.6)eCos http://sources.redhat.com/ecosMaRTE OS http://marte.unican.esORK http://polaris.dit.upm.es/~ork (Ada)S.Ha.R.K. http://shark.sssup.itFIASCO http://os.inf.tu-dresden.de/fiasc DROPS http://os.inf.tu-dresden.de/drops
20PTR - Introduction - DRE/REDS, 2007
Une tâche (ou thread) est une suite d'instructions qui effectue un traitement spécifique.
Une tâche est associée à un contexte d'exécution.La notion de tâche permet de "modulariser" l'application (tâche d'acquisition, tâche de filtrage, tâche de communication, etc.)Une application est composée d’une ou plusieurs tâches.
Les "objets" suivants sont associés à chaque tâche: pile, registres (!), état, priorité
Caractéristiques d'une tâche
21PTR - Introduction - DRE/REDS, 2007
Pile
Registres
Etat
Pile
Registres
Etat Pile
Registres
Etat
sémaphores mémoire FIFOs Timers
Services et ressources publiques Application
Priorité Priorité Priorité
Diagramme états-transitions d'une tâche
Ready
Tâche créé et initialisé(prêt à être ordonnancée)New
Tâche désactivéepar l'ordonnanceur
22PTR - Introduction - DRE/REDS, 2007
RunningWaiting
Zombie
Tâche élue/activée
Tâche suspendue(requête I/O, mise en attente)
Tâche réveillée(fin I/O, ressource disponible)
Tâche terminée
TCB - Définition
Toutes les informations relatives à une tâche sont stockées et mises à jour dans une structure spéciale dédiée à la tâche:
le TCB (Task Control Block)
Champ Description
Thread_id Identificateur du thread
Run_cound Nombre de fois que le thread a étéexécuté
Stack_ptr Pointeur courant vers la pile du thread
Stack_start Pointeur vers le début de la pile
Stack_end Pointeur vers la fin de la pile
Stack_size Taille réservée de la pile
Time_slice Quantum de temps courant pour l’exécution
New time slice Nouveau quantum de temps alloué à
Un changement de contexted'une tâche à une autrenécessite la mise à jour du TCB.
Cela demande un temps pas toujours négligeable!
PTR - Introduction - DRE/REDS, 2007 23
New_time_slice Nouveau quantum de temps alloué àce thread
Ready_next Pointeur vers le prochain thread prêt
Ready_previous Pointeur vers le thread précédent prêt
Thread_name Nom du thread
Thread_priority Priorité du thread
Thread_state Etat du thread
Delayed_suspend Délai de suspension du thread
Suspending Flag de suspension
Thread_entry Point d’entrée (fonction) du thread
Thread_args Arguments transmis au thread
Thread_timer Descripteur de timer associé
Dans un système temps-réel, il y a différents types de tâches.Tâches périodiques (ou cycliques)
Tâche de supervision/monitoring, régulation, lecture de capteurs, etc.Ces tâches sont plus ou moins importantes.Un ordonnancement doit être effectué afin de garantir les échéances.
Tâches apériodiques (ou sporadiques)
Tâches - Types
Alarmes, tâches de configuration, interaction avec un utilisateur, etc.Tâches sporadiques
L'intervalle minimal entre deux occurrences est connu.
Les tâches sont indépendantes.Elles peuvent être exécutés dans n'importe quel ordre.
Les tâches sont dépendantes.Il existe des contraintes de précédences entre les tâches.
24PTR - Introduction - DRE/REDS, 2007
POSIX - Portable Operating System Interface ou interface portable pour les systèmes d'exploitation.
Norme développée par l'IEEE et standardisée par l'ANSI et l'ISO. Portabilité des logiciels au niveau de leur code source. Initialement mis en place pour les systèmes de type UNIX mais d'autres systèmes d'exploitation comme Windows NT sont aujourd'hui "conformes" à POSIX. IEEE 1003.1-1990.API système. Définition d'interfaces de programmation standards pour les systèmes de type UNIX, connu également sous l'appellation ISO 9945-1. Ce standard contient la définition de ces fonctions (bindings) en langage C
Normalisation - POSIX
ces fonctions (bindings) en langage C.
Plusieurs sous-standardsIEEE 1003.2-1992
Interface applicative pour le shell et applications annexes. Définit les fonctionnalités du shell et commandes annexes pour les systèmes de type UNIX.
IEEE 1003.1b-1993API temps réel. Ajout du support de programmation temps réel au standard précédent. On parle également de POSIX.4.
IEEE 1003.1c-1995 : Interface de programmation (API) pour le multithreading.Implémenté par LinuxThreads/NPTL
25PTR - Introduction - DRE/REDS, 2007
Principaux critères de choix:Déterminisme temporel et logique validés
Fiabilité
Présence d’abstractions “temps-réel”Tâches, synchronisation, horloges, etc.
Langage pour le temps-réel (1)
Accès aisé aux ressources de bas niveau
Portabilité, normalisation
Compilation croisée (cross-compilation)
Performance
Deux approches: langage de bas niveau et de haut niveau
26PTR - Introduction - DRE/REDS, 2007
Langages de bas niveau: C/C++, assembleurLargement diffusés et utilisés à ce jour
Accès direct aux ressources de bas niveau
Idéal pour les I/O (entrées/sorties)
Doit être couplé avec les services du système (synchronisation,
Langage pour le temps-réel (2)
Doit être couplé avec les services du système (synchronisation,ordonnancement)
Recours aux librairies
Langage généralement restreintComportement temporel déterministe facile à évaluer
Peu adapté aux logiciels complexes et/ou volumineux
Pas vraiment normalisé, donc peu portableEffort de standardisation par POSIX
27PTR - Introduction - DRE/REDS, 2007
Langages de haut niveau: Ada 95Langage conçu, entre autre, pour le support des applications temps-réel
Abstraction temps-réel: tâche, interruption, ordonnancement (priorité fixe et dynamique), synchronisation par sémaphore,
Langage pour le temps-réel (3)
(priorité fixe et dynamique), synchronisation par sémaphore,timer et gestion du temps, outils de communication basés sur les rendez-vous
Interface et syntaxe normalisé par ISOLangage très portable
Adapté à la production de logiciels volumineux
Langage complexe
28PTR - Introduction - DRE/REDS, 2007
http://www.lifl.fr/~boulet/formation/syst-dist/exposes2000-2001/RT
http://beru.univ-brest.fr/~singhoff
Références
29PTR - Introduction - DRE/REDS, 2007