Systèmes d`exploitation Temps Réels
Transcription
Systèmes d`exploitation Temps Réels
Systèmes d'exploitation Temps Réels F. Touchard Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 1 Introduction ● Objectif : ➢ ➢ ● qu'est-ce qu'un système d'exploitation temps réel ? fonctionnalités attendues présentation de quelques produits ➢ ➢ ➢ VxWorks OSEK/VDX Linux pour le temps réel : ✔ ✔ F. Touchard approches co-noyau et noyau préemptible Xenomai Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 2 Système d'exploitation ● un ensemble de programmes qui permet de ➢ ➢ ● gérer les ressources matérielles d'un ordinateur fournir des services aux utilisateurs pour accéder à ces ressources les caractéristiques vont varier suivant le type d'utilisation de la machine : ➢ multi-utilisateur vs mono-utilisateur ✔ ➢ multi-tâche vs mono-tâche ✔ ➢ ➢ F. Touchard multi-tâche préemptif vs multi-tâche coopératif distribué ou non ✔ ➢ multi-utilisateur en partageant le temps d'utilisation des machines distantes reliées par un réseau de communication apparaissent comme une machine unique temps réel embarqué Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 3 Système d'exploitation ● historique ➢ ➢ les premiers ordinateurs étaient mono-utilisateur et monotâche pas besoin d'OS ✔ ● seulement des bibliothèques de programmes pour accéder aux ressources systèmes d'exploitation « modernes » ➢ 2 grandes familles : ✔ systèmes « Unix-like » ✘ ✘ ✘ ✘ ✔ MS Windows ✘ ✘ F. Touchard propriétaires ou non (certifiés par OpenGroup) System-V BSD Linux propriétaires essentiellement destinés aux architectures Intel (IA-32, x86-64) Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 4 Système d'exploitation ● noyau ➢ gestion des tâches ✔ ➢ gestion du matériel ✔ ➢ ● ➢ ➢ communication entre les programmes et le matériel monolithique monolithique modulaire micro-noyau interface utilisateur ➢ ➢ ➢ F. Touchard CPU, mémoire, périphériques, réseau, etc... architecture du noyau ➢ ● création, desruction ordonnancement, etc... ne fait pas partie intégrante de l'OS, mais essentielle passe par un programme (shell) mode ligne ou mode graphique Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 5 Systèmes d'exploitation temps réel ● système d'exploitation ou exécutif temps réel ➢ ➢ fournir à l'utilisateur un environnement lui permettant de mettre en œuvre facilement son application, en lui cachant un certain nombre de problèmes (gestion des périphériques, des fichiers, interruptions, etc...) constitué d'un ensemble de primitives chargées de fournir cette fonctionnalité ✔ ✔ ➢ possédant des fonctionnalités spécifiques pour gérer les contraintes temporelles ✔ ✔ F. Touchard souvent (mais pas toujours) exécutées en mode noyau (appels système, ou system calls) interfacées avec l'utilisateur par des fonctions dites "systèmes" (de la libc pour les systèmes Unix, Microsoft C Run-time Library, incluse dans Microsoft Visual C++) le comportement du système doit être prédictible en terme de temps de réponse il doit fournir les outils pour aider à respecter les échéances Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 6 les exécutifs du marché ● plusieurs dizaines de systèmes d'exploitation temps réel ➢ ➢ http://es2.dedicated-systems.info/ la plupart sont des OS généralistes ✔ ✔ ✔ ✔ ✔ ✔ ✔ ➢ beaucoup plus de systèmes spécialisés développés dans le cadre d'un secteur d'activité (automobile, avionique, téléphonie, etc...) ✔ ✔ ➢ F. Touchard VxWorks QNX ChorusOS (VirtualLogix) pSOS+ VRTX Windows CE Xenomai OSEK/VDX IPhone, Android, Windows Phone 7 ouverts ou propriétaires Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 7 les exécutifs du marché ● motivations pour des systèmes généralistes ➢ la plupart des applications ont besoin de services "généraux" ✔ ✔ ➢ souci de minimiser les phases de développement ✔ ✔ ➢ F. Touchard accès à des fichiers accès au réseau minimiser les coûts réutilisation de composants souci de portabilité des applications, indépendance vis-à-vis de la plateforme d'exécution Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 8 les exécutifs du marché ● Motivations pour des systèmes spécialisés ➢ performances ✔ ➢ ➢ utilisations très spécifiques marché captif ✔ ✔ ✔ ➢ F. Touchard adéquation au matériel utilisé automobile avionique télécoms quand le coût n'est pas un argument... Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 9 services attendus d’un RTOS ● gestion des threads ➢ ➢ ➢ implémentent généralement l’unité d’activité considérés comme des unités indépendantes pour l’ordonanncement peuvent exister sous forme de ✔ ✔ ✔ ➢ états : ✔ ✔ ✔ ✔ ✔ F. Touchard threads périodiques threads apériodiques (sporadiques) threads serveurs (pour implémenter des serveurs de tâches apériodiques) dormant (en attente de la requête de réveil) prêt (en attente de la CPU) en cours suspendu (en attente d’une ressource) terminé Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 10 services attendus d’un RTOS ● le noyau ➢ exécute au bénéfice de l’utilisateur les opérations qui nécessitent des privilèges spéciaux ✔ ✔ ✔ ➢ F. Touchard appels systèmes ordonnanceur ( + gestion du temps) gestion des interruptions matérielles et logicielles souvent implémenté sous la forme d’un « micro-noyau » Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 11 services attendus d’un RTOS ● gestion du temps ➢ ➢ ● communication et synchronisation ➢ ➢ ➢ ● ➢ ➢ F. Touchard signaux, événements gestion de la mémoire ➢ ● files de messages mémoire partagée sémaphores, mutexes, variables conditionnelles notifications asynchrones ➢ ● horloges timers mémoire virtuellle verrouillage de la mémoire protection de la mémoire entrées-sorties, gestion du réseau Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 12 Études de cas ● ● ● F. Touchard VxWorks OSEK/VDX extensions Temps Réel pour Linux : Xenomai Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 13 VxWorks ● ● ● ● produit propriétaire de Wind River le plus utilisé rendu « célèbre » par la mission Pathfinder sur Mars construit autour d'un micronoyau (WIND) ➢ ➢ ➢ ➢ ➢ adaptable aux besoins de l'utilisateur (profil) profil noyau minimal : ~ 100 kB profil noyau de base : ~ 150 kB profil OS de base (noyau de base + qques supports : I/O, coprocesseur, ...) : ~ 250 kB activation ou désactivation à la demande de certains services ✔ ✔ F. Touchard héritage de priorité gestion de la mémoire, etc... Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 14 VxWorks ● noyau monolithique ➢ ➢ ● procure tous les services attendus d'un OS Temps Réel ➢ ➢ ➢ ➢ ➢ F. Touchard non Unix mais fournit une interface conforme à POSIX ordonnanceur préemptif basé sur la priorité gestion de la mémoire via une MMU support des processeurs sans MMU communications inter-processeurs via des messages suivant le protocole open source TIPC (Transparent Interprocess Communications) environnements de développement (Eclipse, simulateur pour tester l'application même sans disposer du matériel, y compris le réseau) Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 15 VxWorks ● disponible sur de nombreuses architectures ➢ ➢ ➢ ➢ ➢ ➢ F. Touchard ARM (9, 11) Intel Pentium (2, 3, 4, M) Intel XScale (IXP425, IXP465) MIPS (4K, 5K, ...) PowerPC SuperH (4, 4a) Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 16 OSEK/VDX exécutif développé dans le cadre des applications embarquées pour le contrôle automobile (automotive) ● http://www.osek-vdx.org ● F. Touchard Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 17 OSEK/VDX ● Offene Systeme und deren Schnittstellen für die Elektronik im Kraftfahrzeug (BMW, Bosch, DaimlerChrysler, Opel, Siemens, VW et l'Université of Karlsruhe) ➢ ➢ ● F. Touchard Open Systems and the Corresponding Interfaces for Automotive Electronics Systèmes Ouverts et les Interfaces Correspondantes pour l'Electronique Automobile Vehicle Distributed eXecutive (Renault) Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 18 OSEK/VDX ● ● ● ● ● ● ● F. Touchard exécutif développé dans le cadre des applications embarquées pour le contrôle automobile (automotive) Consortium européen (franco-allemand) depuis 1995 pour les configurations mono processeur avec des contraintes temps réel strictes pour une grande variété d'applications, pour les phases de mise au point aussi bien que pour la production (gestion des erreurs) indépendant du langage de programmation (syntaxe à la ANSI-C) portabilité et ré-utilisation du software Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 19 OSEK/VDX ● organisation du consortium (2011) Comité de direction Adam Opel AG, BMW AG, Daimler AG, IIIT - Univ. Karlsruhe, GIE.RE. PSA, Renault, Robert Bosch GmbH, Continental Automotive GmbH, Volkswagen AG Comité technique STEERING COMMITTEE, Accelerated Technology Inc., ACTIA, AFT GmbH, Ashling, ATM Computer GmbH, Blaupunkt, Borg Instruments GmbH, C&C Electronics, Cambridge Consultants, Continental Teves, Cummins Engine Company, Delco Electronics, Denso, EDS Epsilon GmbH, Working Group Operating System ETAS GmbH & Co KG, FIAT- Centro Ricerche, Ford (Europe), FZI, GM Europe GmbH, Greenhills, Grupo Antolin, Hella KG, Hewlett Packard France, Hitachi Micro Systems Europe Ltd., Hitex, IBM Deutschland Entwicklung GmbH, Infineon, INRIA, Integrated Systems Inc., Working Group Communication IRISA, Lauterbach LucasVarity, Metrowerks Magneti Marelli, Mecel, Motorola, National Semiconductor, NEC Electronics GmbH, Noral, NRTA, Philips Car Systems, Porsche AG, Sagem Electronic Division, Softing GmbH, ST Microelectronics, Stenkil Systems AB,Sysgo Real-Time Solutions GmbH, TECSI, Telelogic GmbH, TEMIC, Texas Instruments, Thomson-CSF Detexis, Trialog, UTA - United Technologies Automotive, Valeo Electronics, VDO Adolf Schindling GmbH, Vector Informatik, Visteon, Volvo Car Corporation, Wind River Systems, 3Soft GmbH. Working Group Network Manag. Working Group Certification Groupe Groupe des des Utilisateurs Utilisateurs F. Touchard Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 20 Exigences spécifiques ● dues au contexte de développement des applications automobiles ➢ ➢ ➢ ➢ ➢ F. Touchard l'OS est configuré et mis à l'échelle de façon statique (spécification statique du nombre de tâches, de ressources, de services) l'OS est capable de tourner à partir de mémoires ROM l'OS fournit la portabilité des tâches applicatives l'OS doit se comporter de façon prédictible et documentées et se conformer aux exigences temps réel des applications automotives l'OS doit permettre l'implémentation de paramètres de performance prédictibles Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 21 Architecture générale ● ● organisée autour des ECUs (Electronic Control Unit) 3 entités : ➢ ➢ ➢ F. Touchard OSEK-OS (real time operating system) : environnement d'exécution des ECUs OSEK-COM (communication) : échange de données entre et inter ECUs OSEK-NM (network management) : configuration, registration et monitoring des ECUs Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 22 Architecture générale Operating System Communication Interaction Layer (IL) Transport Layer (TL) Network Management Application Data Link Layer (DLL) Communication hardware Data Link Layer (DLL) Réseau (CAN bus) F. Touchard Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 23 Architecture générale OSEK fournit un environnement d'exécution pour les applications qui peuvent s'exécuter indépendamment les unes des autres ● 2 interfaces utilisateurs fournies par OSEK pour gérer les entités qui veulent accéder concurrement à la CPU: ● ➢ ➢ les routines de gestion d'interruption (ISR) gérées par l'OS les tâches ✔ ✔ F. Touchard basiques étendues Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 24 Architecture générale Priorité haute ● 3 niveaux d'exécution ➢ ➢ ➢ Niveau d'interruption interrupt niveau logique (fonctionnement de l'ordonnanceur) niveau tâche sans OS services avec OS services les 3 niveaux vont en ordre décroissant de priorité ● les niveaux de priorité à l'intérieur d'un niveau d'exécution sont définis de façon statique ● Niveau logique pour l'ordonnanceur Niveau des tâches attente : oui/non 1 Introduction aux systèmes Temps Réels 4 Tâches préemption : non/full/mixed basse F. Touchard 2 3 Systèmes d'exploitations pour le temps réel Déroulement du contexte 25 Architecture générale ● les services de l'OS gèrent les 3 niveaux d'exécution ainsi que ➢ ➢ ➢ ➢ ➢ ➢ F. Touchard l'administration des tâches l'administration des événements (synchronisation des tâches) l'administration des ressources matérielles partagées les compteurs et alarmes la communication entre tâches par messages le traitement des erreurs Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 26 Les tâches d'OSEK/VDX ● tâches basiques ➢ ➢ sans points bloquants rend le processeur ✔ ✔ ✔ ✔ à la terminaison préemption par une tâche de priorité supérieure sur occurrence d'un interrupt 3 états ✘ ✘ ✘ F. Touchard running terminate running : la tâche a la CPU ready : la tâche a été préemptée suspended : la tâche est terminée et attend une requête de ré-activation Introduction aux systèmes Temps Réels suspended preempt Systèmes d'exploitations pour le temps réel start activate ready 27 Les tâches d'OSEK/VDX ● tâches étendues ➢ ➢ en plus des propriétés des tâches basiques, elles peuvent invoquer des services bloquants possèdent un état supplémentaire : waiting, pendant lequel elles attendent l'allocation de la ressource bloquante running wait terminate suspended waiting preempt start activate release ready F. Touchard Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 28 Les tâches d'OSEK/VDX ● les tâches basiques n'ont pas d'autres points de synchronisation que leur début et leur fin ➢ ➢ ● les tâches étendues peuvent se suspendre pour attendre une information intermédiaire ➢ ➢ F. Touchard des applications avec des points internes de synchronisation seront implémentées par plusieurs tâches basiques peu gourmandes en termes de ressources système (RAM) elles peuvent implémenter une application cohérente en une seule tâche elles demandent un peu plus de ressources système Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 29 Propriétés des tâches ● activation ➢ 2 primitives ✔ ✔ ➢ ➢ après l'activation, la tâche est prête dès la 1ère instruction suivant la classe de conformance, la requête d'activation est prise en compte ou non : ✔ ✔ F. Touchard ActivateTask ChainTask pas d'instances multiples d'une tâche les requêtes multiples sont éventuellement mises en queue pour être prises en compte à la terminaison Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 30 Propriétés des tâches ● terminaison ➢ ➢ ne peut être provoqué que par la tâche elle-même 2 primitives ✔ ✔ TerminateTask ChainTask activation des tâches périodiques à l'aide de compteurs (voir plus loin) ● changement de contexte ● ➢ ➢ ● priorité ➢ ➢ F. Touchard par appel à la primitive Schedule par décision de l'ordonnanceur à priorité égale, FIFO par rapport à l'activation une tâche préemptée est première de la liste d'attente Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 31 Politique d'ordonnancement valeur des priorités statique (sauf quand on utilise l'algorithme de priorité plafonnée) ● 3 politiques ● ➢ ➢ ➢ F. Touchard préemptif non préemptif mixte Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 32 Politique d'ordonnancement l'ordonnanceur est considéré comme une ressource qui peut être réservée, empêchant ainsi temporairement la préemption (appel à la primitive GetRessource) ● l'appel à l'ordonnanceur est effectué dans les conditions "classiques" (terminaison, opération bloquante, activation d'une tâche de priorité supérieure, appel à ReleaseResource, retour d'interrupt) pas d'appel pendant la routine d'interrupt ● F. Touchard Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 33 Traitement des interruptions par une routine dédiée : ISR, généralement dans le contexte de la tâche interrompue ● acquitte l'interruption sur le contrôleur et la transforme en action pour l'application (e.g. Event) ● 2 modèles d'ISR ● ➢ ➢ F. Touchard type 1: routine où l'on n'a pas besoin de faire un appel système → seulement un retard type 2: déclarée comme telle → appels systèmes pour l'entrée et la sortie de la routine d'interruption. pas d'appel à l'ordonnanceur pendant son exécution, pas d'appel bloquant Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 34 Synchronisation par événement ● ● ● ● ● F. Touchard utilise le modèle synchrone, c'est-à-dire qu'un événement est généré et attendu de façon explicite de type "privé" appartenant au consommateur, utilisable uniquement pour des tâches étendues critère pour la transition waiting → ready quand un au moins des événements attendus est présent un événement est persistant, c'est-à-dire qu'une tâche dans l'état running demandant à attendre un événement déjà arrivé va rester dans cet état l'effacement d'un événement doit se faire de façon explicite (permet de simuler des événements fugaces) Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 35 Synchronisation par événement ● synchronisation de tâches étendues préemptables ✔ ✔ F. Touchard exemple de 2 tâches T1 et T2 avec prio(T1) > prio(T2) T1 est bloquée dans l'attente d'un événement que va envoyer T2 Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 36 Synchronisation par événement ● synchronisation de tâches étendues préemptables Ordonnanceur Evénement de la tâche étendue 1 Tâche étendue 1 Tâche étendue 2 waiting running prio(T1) > prio(T2) F. Touchard Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 37 Synchronisation par événement ● synchronisation de tâches étendues préemptables Ordonnanceur re ad y Evénement de la tâche étendue 1 Tâche étendue 1 Tâche étendue 2 waiting running set event running ready prio(T1) > prio(T2) F. Touchard Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 38 Synchronisation par événement ● synchronisation de tâches étendues préemptables Ordonnanceur re ad y Evénement de la tâche étendue 1 Tâche étendue 1 Tâche étendue 2 waiting running set event running clear event ready prio(T1) > prio(T2) F. Touchard Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 39 Synchronisation par événement ● synchronisation de tâches étendues préemptables Ordonnanceur re ad y Evénement de la tâche étendue 1 Tâche étendue 1 Tâche étendue 2 waiting running set event running clear event wait for event ready waiting running prio(T1) > prio(T2) F. Touchard Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 40 Synchronisation par événement ● synchronisation de tâches étendues non préemptables Ordonnanceur Evénement de la tâche étendue 1 Tâche étendue 1 Tâche étendue 2 F. Touchard waiting running Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 41 Synchronisation par événement ● synchronisation de tâches étendues non préemptables Ordonnanceur Evénement de la tâche étendue 1 Tâche étendue 1 Tâche étendue 2 F. Touchard waiting running ready set event Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 42 Synchronisation par événement ● synchronisation de tâches étendues non préemptables Ordonnanceur Evénement de la tâche étendue 1 Tâche étendue 1 Tâche étendue 2 F. Touchard waiting running ready set reschedule event Introduction aux systèmes Temps Réels running ready Systèmes d'exploitations pour le temps réel 43 Synchronisation par événement ● synchronisation de tâches étendues non préemptables Ordonnanceur Evénement de la tâche étendue 1 Tâche étendue 1 Tâche étendue 2 F. Touchard waiting running ready set reschedule event Introduction aux systèmes Temps Réels clear event running ready Systèmes d'exploitations pour le temps réel 44 Synchronisation par événement ● synchronisation de tâches étendues non préemptables Ordonnanceur Evénement de la tâche étendue 1 Tâche étendue 1 Tâche étendue 2 F. Touchard waiting running ready set reschedule event Introduction aux systèmes Temps Réels clear event running ready Systèmes d'exploitations pour le temps réel wait for event waiting running 45 Gestion des ressources ● OSEK-VDX permet la pleine gestion des ressources critiques ➢ ➢ algorithme de la priorité plafonnée pour éviter les phénomènes d'inversion de priorité et les interblocages l'algorithme de priorité plafonnée peut être optionnellement étendu aux accès à des ressources partagées par des ISR ✔ ✔ ➢ ➢ F. Touchard pour assigner les priorités plafonds, des priorités virtuelles plus grandes que celles des tâches sont assignées aux interrupts sinon l'OS n'exécutera une ISR que si toutes les ressources qui y seront demandées sont libres l'OS interdit l'accès imbriqué à une même ressource l'ordonnanceur est une ressource Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 46 Alarmes et compteurs ● pour le traitement des événements récurrents ➢ ➢ timers nombre de tours de l'arbre à cames enregistrés par un objet "compteur" qui compte les ticks et repasse à 0 quand il atteint la valeur maximale. Plusieurs alarmes peuvent être associées à un compteur. Une tâche peut être associée à l'alarme (de façon statique, à la génération du système) ● à l'occurrence de l'alarme, au choix : ● ➢ ➢ ➢ F. Touchard activation de la tâche signalisation d'un événement de la tâche exécution d'une routine dans le contexte de l'exécutif Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 47 Communication ● par des messages dont la structure est définie à la génération du système ➢ messages d'événements ✔ messages mis en queue dans une file de message. Mais il ne peut y avoir qu'une seule tâche en attente ✘ ➢ messages d'état ✔ message au "tableau noir", non mis en queue mais contenu dans un buffer à une place, surécrits quand un nouveau arrive ✘ ● F. Touchard transition d'état demandée, alarmes, etc... résultat d'un capteur... modèle de communication asynchrone (les appels en lecture ou écriture ne sont jamais bloquants) Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 48 Communications ● re-synchronisation sur la fin de l'opération par ➢ ➢ ➢ ➢ ➢ ● type de communication défini de façon statique ➢ ➢ F. Touchard polling activation d'une tâche en fin d'opération signalisation d'un événement en fin d'opération exécution d'une routine de callback occurrence d'une alarme si l'opération ne s'est pas terminée dans un délai de garde 1 à 1 (mais on peut définir une liste à la générarion et ne choisir le destinataire qu'à l'exécution) 1 à n, chaque destinataire recevant le message Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 49 Développements récents ● de plus en plus de technologies "assistées" ➢ ➢ freinage direction beaucoup plus exigeantes en termes de déterminisme et de contraintes temporelles ● émergence de réseaux sécuritaires (TTP/C, TTCAN, Flexay) ● OSEKtime : OS temps réel qui peut gérer, en plus des tâches "classiques" d'OSEK, des tâches "Time Triggered" (TT) ● F. Touchard Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 50 OSEKtime comportement déterministe même en condition de surcharge et conditions de faute ● compatible avec OSEK/VDX (activé pendant les temps morts de OSEK/VDX) ● Tâches TT ● ➢ ➢ ➢ ➢ ➢ F. Touchard modules (1 point d'activation, 1 point de sortie) 3 états : suspended, running, preempted ordonnancement statique et préemptif des tâches TT (table d'ordonnancement remplie hors ligne) surveillance du respect des échéances par le noyau. En cas de non respect, exécution d'une routine utilisateur et shutdown du système (?!?) exécution des tâches non TT dans les creux, systématiquement préemptées par les tâches TT Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 51 Linux pour le Temps Réel ● points forts de Linux ➢ ➢ ➢ ➢ ➢ ● points faibles ➢ ● ● pas vraiment un micro noyau mais Linux "natif" n'est pas un OS Temps Réel il existe des solutions pour faire de Linux un RTOS : ➢ ➢ F. Touchard fiabilité du noyau faible coût performances (http://ltp.sourceforge.net) portabilité ouvert aux autres systèmes (y compris Windows) adjonction d’un co-noyau temps réel modifier Linux pour avoir un noyau entièrement préemptible Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 52 Linux pour le Temps Réel ● l’approche co-noyau ➢ ➢ solution « classique » (a existé même pour Windows : RTX) impossible de faire confiance au noyau GPOS pour les aspects temps réels ✔ ✔ ➢ ➢ ➢ le noyau temps réel intercepte toutes les interruptions matérielles et les traite avant de les passer éventuellement au noyau Linux ✔ PIC virtuel Linux fonctionne avec une priorité inférieure à celle du noyau temps réel mais ✔ ✔ F. Touchard délègue ceux-ci à un noyau spécialisé le noyau Linux continue à servir les tâches classiques nécessité de porter sur le noyau temps réel tous les pilotes dont on attend une réponse temps réel les appels aux fonctions de la glibc peuvent avoir des latences importantes Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 53 Linux pour le Temps Réel ➢ plusieurs approches ✔ support pour l’exécution des tâches temps réel dans l’espace utilisateur ✘ ✘ ✔ tâches temps réel uniquement dans l’espace noyau (modules) ✘ F. Touchard Xenomai RTAI RTLinux/GPL Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 54 Linux pour le Temps Réel ● l’approche « noyau entièrement préemptible » ➢ ➢ ➢ ➢ modifier le noyau pour que les tâches non temps réel et dont les temps d’exécutions ne sont pas connus n’interfèrent pas avec les tâches temps réel complexe (le noyau est gros) mais seuls le cœur du noyau et quelques pilotes doivent être modifiés (travail d’experts) patch PREEMPT_RT Real Time Linux Wiki ✔ ✔ ✔ ✔ ➢ F. Touchard prise en compte des interruptions par des threads noyaux implémentation de l'héritage de priorité remplacement des spinlocks par des mutex mise en place de compteurs à haute précision pour exprimer les délais et les échéances en millisecondes approche généralement suffisante pour le temps réel mou ou ferme Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 55 Linux pour le Temps Réel ● approche co-noyau (RTLinux) ➢ ➢ un micro-noyau temps réel intercepte les interruptions matérielles et les traite prioritairement les tâches temps réel sont exécutées dans l’espace noyau sous forme de modules Processe sutilisateurs Processes temps réels Librairies systèmes pilotes I/O RT scheduler accès direct h/w F. Touchard Introduction aux systèmes Temps Réels Noyau Linux Interrupts s/w RT Kernel I/O Interrupts h/w Systèmes d'exploitations pour le temps réel 56 Xenomai ● approche co-noyau temps réel ➢ ➢ F. Touchard basé sur les spécifications ADEOS (Adaptive Domain Environment for Operating Systems) de Karim Yaghmour projet initialement créé pour faciliter le portage des applications temps réel vers un RTOS de type Linux Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 57 Xenomai ● abstraction des propriétés communes des RTOS traditionnels ➢ couche générique H/W (HAL) et S/W (SAL) ➢ « peaux » pour émuler les RTOS traditionnels applications dans l’espace utilisateur interface interface appels appels systèmes systèmes Linux Linux VxWorks VxWorks RTAI RTAI VRTX VRTX POSIX POSIX ... ... applications dans l’espace noyau couche couche générique générique temps temps réel réel (Xenomai (Xenomai core) core) SAL/HAL SAL/HAL I-Pipe I-Pipe F. Touchard Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 58 Interrupt Pipeline ● pour organiser la distribution des interruptions de façon à ce que le noyau Linux ne retarde pas leur prise en compte par le RTOS ➢ ➢ implémentation de ADEOS organise un ensemble de domaines connectés par le pipeline ✔ ✔ partagent le même espace d’adresses implémentés sous forme de module interrupts et traps domaine de priorité max domaine root domaine de priorité min Noyau Linux F. Touchard Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 59 Interrupt Pipeline ● distribution prioritisée des interruptions suivant le schéma de "protection optimiste des interruptions" : ➢ un domaine peut passer en mode bloqué (stalled) ✔ ✔ ✔ ➢ ● au déblocage, les interruptions accumulées sont traitées et éventuellement passées aux domaines de priorité inférieure les événements systèmes sont propagés par le même pipeline abstrait ➢ ➢ F. Touchard les interruptions arrivantes ne sont plus distribuées aux handlers du domaine les interruptions arrivantes sont accumulées et ne sont plus transmises aux domaines de priorité inférieure les domaines de priorité supérieure continuent à recevoir les interruptions et à les traiter notifications synchrones d'exceptions (division par zéro, accès mémoire invalide,...), d'actions exécutées par le noyau Linux (pagination, ...) ne peuvent pas être retardées, à l'inverse des interruptions Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 60 Xenomai Core ● pour fournir toutes les ressources systèmes utilisées par les peaux ➢ ➢ ● constitué de : ➢ ➢ ➢ ➢ ➢ F. Touchard briques génériques pouvant être spécialisées groupées dans un module : le noyau Xenomai un objet « thread temps réel » contrôlé par un ordonnanceur temps réel (FIFO par niveau de priorité) un objet générique « interruption » un objet « allocateur de mémoire » ayant un temps de réponse prédictible un objet générique « synchronisation » dont sont dérivés les sémaphores, mutexes, files de messages, etc... un objet « gestion du temps » Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 61 peaux Xenomai ● à partir des fonctions de Xenomai Core, plusieurs API ont été développées ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ F. Touchard POSIX (toutes les fonctions de la glibc) VxWorks pSOS+ VRTX uiTRON RTAI « native » RTDM (pour le développement de drivers temps réels) Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 62 Coexistence de Linux et Xenomai interaction des tâches temps réel avec les tâches non temps réel ● mécanisme du « real time shadowing » ● ➢ ➢ ➢ pour les tâches non temps réel qui deviennent temps réel objet « RT shadow » attaché à la tâche qui peut être alors ordonnancée par l’ordonnanceur de Xenomai partage des structures task_struct (spécifique Linux) et xnthread (spécifique Xenomai) par les ordonnanceurs ordonnanceur ordonnanceur Linux Linux ordonnanceur ordonnanceur Xenomai Xenomai lien interne struct task_struct F. Touchard Introduction aux systèmes Temps Réels struct xnthread Systèmes d'exploitations pour le temps réel 63 Coexistence de Linux et Xenomai ● les threads temps réels peuvent s'exécuter ➢ ➢ dans l'espace noyau sous forme de modules noyau dans l'espace utilisateur (threads Xenomai) à ne pas confondre avec les threads Linux classiques, non temps réel ● les threads Xenomai peuvent s'exécuter ● ➢ ➢ F. Touchard dans le domaine de plus haute priorité du pipeline (mode d'exécution "primaire") dans l'espace Linux (mode d'exécution "secondaire"), mais avec des temps de latence d'ordonnancement un peu plus grands Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 64 Coexistence de Linux et Xenomai ● pour que les threads Xenomai en mode secondaire puissent être temps réel, il faut : ➢ un schéma de priorités commun pour le noyau temps réel et le noyau Linux ✔ ✔ ✔ F. Touchard si un thread Xenomai en mode primaire passe en mode secondaire, le noyau Linux va hériter de sa priorité un thread Xenomai en mode primaire ne va préempter un thread en mode secondaire que si sa priorité effective est supérieure un thread Linux en mode SCHED_FIFO sera toujours préempté par un thread en mode primaire et sera en compétition avec les threads en mode secondaire Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 65 Coexistence de Linux et Xenomai ➢ des temps d'exécution prédictibles ✔ ➢ ➢ F. Touchard blocage des interruptions destinées à Linux par un domaine Adeos intermédiaire : le "bouclier à interruptions" (interrupt shield), activé dès qu'un thread Xenomai tourne en mode secondaire un noyau Linux avec un ordonnancement à grain fin pour les threads Xenomai en mode secondaire la gestion des inversions de priorité Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 66 Coexistence de Linux et Xenomai ● pipeline Xenomai Interruptions et traps Xenomai (primaire) F. Touchard Introduction aux systèmes Temps Réels bouclier à interruptions Systèmes d'exploitations pour le temps réel Linux (secondaire) 67 Coexistence de Linux et Xenomai ● propagation des interruptions ➢ le noyau temps réel de Xenomai reçoit en premier les interruptions ✔ ✔ ✔ ➢ ➢ ➢ quand il n'y a plus de threads Xenomai à exécuter, la CPU est donnée au bouclier qui va les passer au noyau Linux s'il est désactivé, ou les bloquer s'il est activé 2 modes de propagation pour Adeos, par domaine et par interrupt (implicite ou explicite) Xenomai utilise le mode explicite ✔ ✔ F. Touchard il les traite il les marque pour être passés dans la suite du pipeline quand le dernier traitant est terminé, Xenomai donne la CPU au thread Xenomai de plus haute priorité chaque traitant doit faire appel au service de propagation pour toutes les interruptions prises en compte si aucun traitant n'a été déclaré, l'interruption est automatiquement passée au noyau Linux Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 68 RTDM ● couche intermédiaire entre une application temps réel et les services fournis par un pilote ➢ pilotes à protocole (communication par échange de message) ✔ ✔ ➢ pilotes pour des périphériques nommés ✔ F. Touchard réseaux temps réel bus CAN cf périphériques caractères Introduction aux systèmes Temps Réels Systèmes d'exploitations pour le temps réel 69 La norme POSIX ● Portable Operating System Interface ● pour aider à produire des codes portables sans trop d'efforts ● initié par l'IEEE et organisé par l'ISO ● à partir d'UNIX, pour le C ANSI ● différents standards pour différents problèmes ➢ ➢ ● F. Touchard POSIX.1b (ou POSIX.4) : extensions temps réel POSIX.1c : extensions pour les threads important : l'interface POSIX ne fournit pas un environnement temps réel, mais uniquement des interfaces qui peuvent être utilisées dans le cadre d'un OS Temps Réel Introduction aux systèmes temps réell 70 La norme POSIX ● POSIX a été remplacé récemment par SUSV3 (Single Unix Specification Version 3) ➢ SUSV3 inclut les différentes version de POSIX ✔ ➢ F. Touchard extensions Temps Réel : option RTS je garderai les références à POSIX.1 et 4 pour bien différencier les extensions temps réel Introduction aux systèmes temps réell 71