Programmation temps-réel (PTR) Introduction - 2007...

15
Programmation temps-réel (PTR) Introduction - 2007 (v0.4) Daniel Rossier [email protected] E-mail: [email protected] Institut ReDS (http://reds.heig-vd.ch) Bureau A07A Tutorat PTR Contact Jeudi à 13H00–13H45, salle A05a 2 PTR - 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

Transcript of Programmation temps-réel (PTR) Introduction - 2007...

Page 1: Programmation temps-réel (PTR) Introduction - 2007 (v0.4)hackbbs.org/article/reds/form_de_base/PTR/pdf/01_Introduction_v0.4.pdf · 9Les temps de latence et leurs variations (jigues)

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

Page 2: Programmation temps-réel (PTR) Introduction - 2007 (v0.4)hackbbs.org/article/reds/form_de_base/PTR/pdf/01_Introduction_v0.4.pdf · 9Les temps de latence et leurs variations (jigues)

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

Page 3: Programmation temps-réel (PTR) Introduction - 2007 (v0.4)hackbbs.org/article/reds/form_de_base/PTR/pdf/01_Introduction_v0.4.pdf · 9Les temps de latence et leurs variations (jigues)

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

Page 4: Programmation temps-réel (PTR) Introduction - 2007 (v0.4)hackbbs.org/article/reds/form_de_base/PTR/pdf/01_Introduction_v0.4.pdf · 9Les temps de latence et leurs variations (jigues)

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

Page 5: Programmation temps-réel (PTR) Introduction - 2007 (v0.4)hackbbs.org/article/reds/form_de_base/PTR/pdf/01_Introduction_v0.4.pdf · 9Les temps de latence et leurs variations (jigues)

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

Page 6: Programmation temps-réel (PTR) Introduction - 2007 (v0.4)hackbbs.org/article/reds/form_de_base/PTR/pdf/01_Introduction_v0.4.pdf · 9Les temps de latence et leurs variations (jigues)

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

Page 7: Programmation temps-réel (PTR) Introduction - 2007 (v0.4)hackbbs.org/article/reds/form_de_base/PTR/pdf/01_Introduction_v0.4.pdf · 9Les temps de latence et leurs variations (jigues)

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

Page 8: Programmation temps-réel (PTR) Introduction - 2007 (v0.4)hackbbs.org/article/reds/form_de_base/PTR/pdf/01_Introduction_v0.4.pdf · 9Les temps de latence et leurs variations (jigues)

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

Page 9: Programmation temps-réel (PTR) Introduction - 2007 (v0.4)hackbbs.org/article/reds/form_de_base/PTR/pdf/01_Introduction_v0.4.pdf · 9Les temps de latence et leurs variations (jigues)

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

Page 10: Programmation temps-réel (PTR) Introduction - 2007 (v0.4)hackbbs.org/article/reds/form_de_base/PTR/pdf/01_Introduction_v0.4.pdf · 9Les temps de latence et leurs variations (jigues)

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

Page 11: Programmation temps-réel (PTR) Introduction - 2007 (v0.4)hackbbs.org/article/reds/form_de_base/PTR/pdf/01_Introduction_v0.4.pdf · 9Les temps de latence et leurs variations (jigues)

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

Page 12: Programmation temps-réel (PTR) Introduction - 2007 (v0.4)hackbbs.org/article/reds/form_de_base/PTR/pdf/01_Introduction_v0.4.pdf · 9Les temps de latence et leurs variations (jigues)

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

Page 13: Programmation temps-réel (PTR) Introduction - 2007 (v0.4)hackbbs.org/article/reds/form_de_base/PTR/pdf/01_Introduction_v0.4.pdf · 9Les temps de latence et leurs variations (jigues)

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

Page 14: Programmation temps-réel (PTR) Introduction - 2007 (v0.4)hackbbs.org/article/reds/form_de_base/PTR/pdf/01_Introduction_v0.4.pdf · 9Les temps de latence et leurs variations (jigues)

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

Page 15: Programmation temps-réel (PTR) Introduction - 2007 (v0.4)hackbbs.org/article/reds/form_de_base/PTR/pdf/01_Introduction_v0.4.pdf · 9Les temps de latence et leurs variations (jigues)

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