Systèmes temps réel et logiciel libre
Transcription
Systèmes temps réel et logiciel libre
Systèmes temps réel et logiciel libre Pierre FICHEUX ([email protected]) Avril 2012 Systèmes temps réel et LL 1 Présentation Open Wide ● ● SSLL créée en septembre 2001 avec Thales et Schneider => 10 ans d'expérience ! 120 collaborateurs sur Paris, Lyon et Toulouse – ● ● Dont une dizaine de collaborateurs à Toulouse. Aujourd'hui => Leader en France des technologies Open Source Deux activités : – Informatique Indutrielle – Intégration SI Systèmes temps réel et LL 2 Présentation PF ● ● ● ● ● ● Ingénieur Arts et Métiers + Sup'Aéro Utilisateur de logiciels libres depuis 1989 Utilisateur de Linux depuis 1992 Auteur des trois éditions de l'ouvrage « Linux embarqué » (Eyrolles), la 4ème sortira en juin 2012 Auteur GNU Linux Magazine CTO Open Wide Ingénierie Systèmes temps réel et LL 3 Introduction au temps réel Systèmes temps réel et LL 4 Le temps en informatique ● ● Certains systèmes sont liés au temps à différents niveaux : – un distributeur de billets ne doit pas mettre 5 minutes à délivrer les billets – une balance ne doit pas peser en 30 secondes – un radar ne doit pas mettre 2 secondes à réagir – un système de freinage ne doit pas mettre plus de 150 ms pour acquérir l’information et réagir D'autres systèmes ne le sont pas, si l'on reste dans les limites raisonnables du « temps de réponse » Systèmes temps réel et LL 5 Système temps-réel ● ● Caractéristiques : – exactitude logique (comme tout système) : les sorties sont déterminées en fonction des entrées et de l’état interne – exactitude temporelle : réaction appropriée en un temps borné à un événement Exigences sur le l'échéance temporelle et non pas sur les performances ni le rendement – Un micro-contrôleur 8 bits sous µC/OS-II peut être temps-réel alors qu'un PC sous Linux ne l'est pas ! Systèmes temps réel et LL 6 Les types de temps-réel ● ● ● ● ● Temps-réel mou : un retard dans l’obtention du résultat n’est pas dramatique (distributeur de billets) Temps-réel dur : un retard dans l’obtention du résultat le rend inutile (pilotage matériel) Temps-réel « ferme » : un retard, s’il arrive très peu souvent, peut être toléré (téléphonie, multimédia) La plupart des systèmes temps-réel modernes sont « hybrides » (exemple : Linux/Xenomai) – Certaines tâches sont temps-réel (dur) – D'autres ne le sont pas ou peu (mou/ferme) Frontière mou/dur parfois difficile à définir ! Systèmes temps réel et LL 7 Approches asynchrone / synchrone ● ● Asynchrone – Interaction avec l'environnement (interruption), dérive d'horloge entre calculateurs – Modélisation complexe (nombreux cas de préemption) Synchrone – Modélisation statique du comportement – Pas d'interruption ni d'allocation dynamique – Convient aux systèmes critiques – Langages dédiés, génération de code (ESTEREL, SIGNAL, SynDEx) Systèmes temps réel et LL 8 Cible matérielle ● Deux cas de figure : – – Pas de système d'exploitation (Bare Board) ● Système critique et/ou certifié (DO-178, CEI 61508, ...) ● Éventuellement un simple « exécutif » temps réel Utilisation d'un RTOS ● Plus de souplesse et portabilité ● Certification possible sur certains OS : VxWorks 653 (Wind River), LynxOS-178 / LynxOS-SE (LynuxWorks), INTEGRITY178 (Green Hills) Systèmes temps réel et LL 9 RTOS ● ● GPOS (Windows, Linux, ...) – Lissage des priorités (dynamique) => complexe – Grand nombre de tâches concurrentes (> 200 sur un PC Linux « inactif ») – 15M lignes de code pour le noyau Linux 3.x ! RTOS – Prévisible : évaluer le pire des cas – Déterministe : faible influence de la charge – Pas ou peu de notion de « performances moyennes » – Peu de tâches concurrentes – Simple, léger, faible consommation (< 100K lignes de code pour FreeRTOS) Systèmes temps réel et LL 10 Domaines d'application ● ● ● ● 1960-70 : remplacer la mécanique et la logique « câblée » lorsque c'est possible (souplesse) 1980 : RTOS génériques Historique – Militaire, spatial (RTOS/360, VRTX sur Hubble) – Contrôle de processus industriel – Transport : AUTOSAR/OSEK, ARINC 653 – Internet/Telecom : routeurs, PABX (Chorus) Assimilé / émergent (temps-réel mou, embarqué) – ● Multimédia : audio, vidéo, TV, automobile (GENIVI), Téléphonie, médical Systèmes temps<=> réel et LL RTOS n'est plus L'équivalence embarqué 11 Architecture d'un RTOS ● ● Basé sur un noyau associé à un ensemble de services Deux types de noyau – Monolithique : contient tout le code nécessaire à la gestion du matériel (ex : Linux) – Micro-noyau : fournit uniquement la gestion de base => associé à un autre noyau (Linux/ADEOS) Systèmes temps réel et LL 12 Logiciel libre et temps réel (Linux) Systèmes temps réel et LL 13 Utilisation du logiciel libre ● ● Avantages – Disponibilité du code source: maintenabilité dans le temps – Redistribution sans royalties – Développement dérivé de code source existant Inconvénients – Contraintes de certaines licences (GPL, LGPL) – Support technique – Outils disponibles / RTOS propriétaires Systèmes temps réel et LL 14 Linux pour le temps réel ? ● ● ● ● Réservé aux systèmes complexes – Gestion complexe de la mémoire (MMU) – Empreinte mémoire importante: 2 Mo pour µCLinux, 4 Mo pour Linux – Consommation mémoire vive : 16 Mo minimum – Alternatives libres: eCOS, RTEMS, FreeRTOS beaucoup plus légers Migration temps réel des anciens RTOS complexe → évolution avec les extensions PREEMPT-RT et Xenomai Incompatible avec les systèmes critiques Souvent utilisé pour les outils, les simulateurs et architectures « mixtes » (banc de test) Systèmes temps réel et LL 15 Extensions TR pour Linux ● ● ● API POSIX (threads, ordonnancement) disponible Le noyau Linux n'est pas « préemptif » (10 ms) – Traitement des IRQ – SMP Deux approches – Optimisation du noyau ● – ● PREEMPT-RT (500 µs à 1 ms) Architecture à double noyau (10/20 µs) ● RTLinux ● RTAI ● Xenomai Les patch preempt-kernel et low-latency (pour Systèmes temps réel et LL noyau 2.4, intégrée au 2.6) sont OBSOLETES 16 PREEMPT-RT ● ● ● ● ● ● ● Patch expérimental sur base 2.6.x (-rt), à partir du 2.6.15 → http://rt.wiki.kernel.org Disponible sur quelques architectures (utilisé surtout sur x86) → ARM, Nios II, MicroBlaze Threaded interrupt model → thread noyau pour la prise en compte des interruptions Prévention des inversions de priorité (par héritage) Réécriture complète des mécanismes de synchronisation Timers noyau haute précision (sous-système hrtimer) → dépend du matériel Bons résultats sur CPU « puissants » (16 ms → 70 µs) Systèmes temps réel et LL 17 Tâche périodique, noyau standard non chargé Systèmes temps réel et LL 18 Tâche périodique, noyau standard chargé Systèmes temps réel et LL 19 Tâche périodique, PREEMPT-RT chargé Systèmes temps réel et LL 20 Linux + co-noyau ● ● Séparation entre le composant temps-réel et Linux – Ordonnanceur temps-réel spécifique – Pas de dépendance sur les sections critiques Linux :-) Virtualisation de la gestion d'interruptions Linux – ● ● Routage prioritaire des interruptions vers le conoyau Linux comme tâche idle du co-noyau Historique : – RTLinux (1999) devenu un produit commercial de FSMLabs puis Wind River (2007) – Brevet logiciel aux USA :-/ Systèmes temps réel et LL 21 Utilisation et performances ● ● ● Changement minimal sur le noyau Linux – patch de virtualisation d'interruptions – pas d'impact sur l'écriture de code noyau classique Impact sur l'écriture de code temps-réel ! – utilisation d'APIs fournies par le co-noyau – notion de domaine d'exécution (temps-réel / normal) Garanties temps-réel fortes – ordonnanceur spécifique indépendant – sous-système temps-réel bien délimité – Gigue maximale de l’ordre de 20 µs :-) Systèmes temps réel et LL 22 RTLinux ● ● ● ● ● ● Projet universitaire (New Mexico Tech) développé par Victor Yodaiken et Michael Barabanov en 1999 Développement en espace noyau Produit commercial développé par FSMLabs Dépôt d’un brevet logiciel → conflit avec la FSF Vendu à Wind River en 2007 Version GPL obsolète (2.6.9) mais toujours disponible Systèmes temps réel et LL 23 Architecture RTLinux Systèmes temps réel et LL 24 Test de RTLinux, noyau 2.4.17 (2002) Systèmes temps réel et LL 25 RTAI ● ● ● ● ● ● Real Time Application Interface Un « fork » de RTLinux développé au DIAPM de l’école polytechnique de Milan → Dipartimento di Ingegneria Aerospaziale (Paolo Montegazza) Utilisé au DIAPM pour des travaux d’enseignement et de recherche Position douteuse / brevet logiciel FSMLabs Collaboration avec Xenomai entre 2003 et 2005 → RTAI/Fusion Toujours actif mais peu d’évolution → version 3.8 en février 2010 Systèmes temps réel et LL 26 Xenomai ● ● ● Xenomai est un sous-système temps-réel de Linux : – Faible latence – Programmation de tâches en espace utilisateur → dualité d'ordonnancement Linux / Xenomai – RTOS générique + interfaces (skins) → émulation de RTOS traditionnels – Pilotes spécifiques (RTDM) – Supporte de nombreuses plate-formes (x86, ARM, PowerPC, Nios II, Blackfin) Licence GPL (cœur), LGPL (interfaces, espace utilisateur) Projet très actif ! Systèmes temps réel et LL 27 Architecture Xenomai Systèmes temps réel et LL 28 Comparaison Linux / Xenomai Systèmes temps réel et LL 29 Autres exemples de RTOS libres Systèmes temps réel et LL 30 eCos ● ● ● ● ● ● ● Embeddable Configurable OS (CYGNUS 1997) Supporte de nombreux CPU 16, 32 et 64 bits Empreinte mémoire de 10 à 100 Ko Outils de configuration avancé, gestion de « packages » Version « pro » par Utilisé dans le multimédia : http://www.ecoscentric.com/ecos/examples.sht ml Voir la présentation de Jean-Jacques PITROLLE Systèmes temps réel et LL 31 RTEMS ● ● ● ● ● ● ● ● ● Real-Time Executive for Missile/Military Systems → RTE for Multiprocessor Systems Développé depuis 1988, libre depuis 1994 32 bits CPU (8/16 bits avec TinyRTEMS) API POSIX, ARINC 653 (AIR/ESA) Programmation C/C++/Ada Empreinte minimale entre 64 et 128 Ko (256 à 400 Ko suivant le nombre de paquets) Utilisation industrielle (ESA, EADS, ...) Large communauté de développeurs http://wiki.rtems.org/wiki/index.php Systèmes temps réel et LL 32 RTEMS, bibliographie ● ● ● ● http://air.di.fc.ul.pt/air/ http://neutrons.ornl.gov/workshops/epics2007/ presentations/epics071013-RTEMS-EPICSKnoxville-2007.ppt https://moodle.dce.fel.cvut.cz/pluginfile.php/15 70/mod_resource/content/0/svs_rtems_intro.pd f http://www.ris.prd.fr/GT/LL/presentations/05planche.pdf Systèmes temps réel et LL 33