22/09/2015 Cours 1 - Master 2 LSE Jalil Boukhobza Université de Bretagne Occidentale – Lab-STICC J.Boukhobza - Systèmes d'exploitation embarqués 1 Ce cours … Contient 24 séances de 2h: Des cours (5 JB et 3 FS) Des TPs (plus de 10) Pas de TDs … (quelques fois pendant le TP) Evaluation: Contrôle continu (1/2) Projet TP? + comptes rendus de TP Examen final (1/2) J.Boukhobza - Systèmes d'exploitation embarqués 2 1 22/09/2015 Contenu du cours Cours: [JB] Revoir la plupart les fonctionnalités des OS : Plus en détails En se focalisant sur ce qui est spécifique à l’embarqué Un focus sur les pb d’ordonnancement [FS] Ordonnancement temps réel multi cœur (suite M1) 2 étude de cas: [JB] Linux embarqué + [FS] RTEMS TP Etude approfondie du système Linux (une partie) Compilation de noyau Linux pour l’embarqué Manipulation des outils permettant de s’y faire Manipulation d’RTEMS et outillage « Projet? » autour de Linux embarqué 2 intervenants: Frank Singhoff (ordo. Et RTEMS) et Jalil Boukhobza (le reste) J.Boukhobza - Systèmes d'exploitation embarqués 3 Logiciel/matériel embarqué Logiciel embarqué: programme/application utilisé dans un équipement et complètement intégré dans ce dernier. Système embarqué: Matériel(s) + logiciel(s) (+ OS) 2 types de systèmes embarqués (UNE classification): 1. 2. Systèmes embarqués destinés à l’utilisateur (high-end): généralement une version dégradée d’un OS existant (ex: Linux). Ex: routeurs, PDA, smartphone, etc. Systèmes embarqués profondément enfouis: peu de fonctions, très petite empreinte mémoire, généralement construit from scratch. Appareil photo numérique, téléphones portables, etc. Différences avec les « machines normales »: Prix (production de masse) Performance Consommation (contrainte de consommation batterie) Simplifier l’architecture Réduire la vitesse d’horloge Réduire l’utilisation mémoire J.Boukhobza - Systèmes d'exploitation embarqués 4 2 22/09/2015 Système d’exploitation pour l’embarqué ? Les systèmes d’exploitation permettent: De gérer les ressources matérielles en assurant leurs partages entre les différents utilisateurs. De présenter une interface homogène et générique (en abstrayant la complexité matérielle) mieux adaptée aux utilisateurs. Pourquoi un système d’exploitation pour l’embarqué ? Affranchir le développeur de logiciel embarqué de bien connaître le matériel gain en temps de développement Les applications doivent avoir un accès aux services de l’OS via des APIs (réutilisabilité du code, interopérabilité, portabilité, maintenance aisée) Possibilité de bénéficier des mêmes avancées technologiques que les applications classiques (TCP/IP, HTTP, etc.) Environnement de développement plus performant Time-to-market J.Boukhobza - Systèmes d'exploitation embarqués 5 Système d’exploitation pour l’embarqué (2) – le temps réel "En informatique temps réel, le comportement correct d’un système dépend, non seulement des résultats logiques des traitements, mais aussi du temps auquel les résultats sont produits" J. Stankovic. Objectifs : Déterminisme logique : les mêmes entrées appliquées au système produisent les mêmes résultats. Déterminisme temporel : respect des contraintes temporelles (ex: échéance). Fiabilité : le système répond à des contraintes de disponibilité (fiabilité du logiciel et du matériel). ⇒ Système prédictible : on cherche à déterminer a priori si le système va répondre aux exigences temporelles. Un système temps réel n’est pas un système "qui va vite" mais un système qui satisfait à des contraintes temporelles. Source: tr F. Singhoff J.Boukhobza - Systèmes d'exploitation embarqués 6 3 22/09/2015 Exemples de grandeur (I. Demeure and C. Bonnet) La milliseconde pour les systèmes radar. La seconde pour les systèmes de visualisation humain. Quelques heures pour le contrôle de production impliquant des réactions chimiques. 24 heures pour les prévisions météo. Plusieurs mois ou années pour les systèmes de navigation de sonde spatiale. Source: tr F. Singhoff J.Boukhobza - Systèmes d'exploitation embarqués 7 Système d’exploitation pour l’embarqué (3) Garantie de service = niveau de respect des contraintes. Garanties déterministes, probabilistes ou “best effort” 1. Contrôle de processus sans (ou à faible) contrainte temporelle systèmes à temps partagé Garantir le partage équitable du temps et des ressources 2. Contrôle de processus avec contrainte temps réel systèmes temps réel Garantir les temps de réponse Systèmes à contraintes souples/molles: systèmes acceptant des variations minimes de temps de réponse (systèmes multimédias) Systèmes à contraintes dures ou critiques: gestion stricte du temps pour conserver l’intégrité du système (déterminisme logique et temporel et fiabilité) J.Boukhobza - Systèmes d'exploitation embarqués 8 4 22/09/2015 Les latences Définition: différence entre le moment où une tâche doit débuter (ou finir) et le moment ou elle débute réellement. Elles sont dues: Aux propriétés temporelles des processeurs, des bus mémoire et d’autres périphériques Aux propriétés des politiques d’ordonnancement À la préemptivité du noyau À la charge du système Au changement de contexte J.Boukhobza - Systèmes d'exploitation embarqués 9 Les latences (2) Tâches introduisant de « l’indeterminisme » temporel : Accès disque: technologie mécanique, géométrie différente d’un disque à l’autre. Accès au réseau: retransmissions en cas d’erreur Résolution basse du timer Pilotes de périphérique non temps réel: utilisation d’attente active et de période de sommeil peu précise. Allocation et gestion de la mémoire: mémoire virtuelle /swap non prédictible. Système de fichiers virtuel /proc: tout ce qui se passe dans le système création à la volée. … J.Boukhobza - Systèmes d'exploitation embarqués 10 5 22/09/2015 Récapitulatif Critères Temps partagé Temps réel But Maximiser la capacité de traitement (débit) & utilisation des ressources Etre prévisible (garantir les temps de réponse) Temps de réponse Bon en moyenne Bon dans le pire des cas / moyenne non importante Comportement à la charge Confortable à l’utilisateur Stabilité et respect des contraintes de temps J.Boukhobza - Systèmes d'exploitation embarqués 11 Logiciel libre et systèmes embarqués Contrairement aux logiciels classiques, les (plusieurs) logiciels embarqués ont (généralement) une durée de vie particulièrement longue important de faire évoluer le logiciel indépendamment des aléas économiques. Contraintes des systèmes propriétaires: Sociétés de taille moyenne ont du mal à suivre l’évolution technologique. Outils de développement sont moins accessibles, la compétence est donc plus chère à obtenir. Logiciels libres: plusieurs critères (disponibles sur www.opensource.org), les principaux sont: La disponibilité du code source La possibilité de réaliser des travaux dérivés La redistribution sans royalties Contrainte majeure: SAV sur le long terme + obligation de redistribuer le code J.Boukhobza - Systèmes d'exploitation embarqués 12 6 22/09/2015 Mais qu’est ce que l’Open source? Libre redistribution: en tant que composant d’une distribution pas de « droit d’auteur ». 2. Inclusion du code source: code source doit être accessible sans frais supplémentaires. 3. Autorisation de travaux dérivés: modification et travaux dérivés et leur redistribution 4. Intégrité du code source de l’utilisateur 5. Pas de discrimination entre les personnes ou les groupes 6. Pas de discrimination entre les domaines d’applications. 7. Distribution systématique de la licence 8. La licence ne doit pas être spécifique à un produit 9. La licence ne doit pas contaminer d’autres logiciels 10. La licence doit être technologiquement neutre 1. J.Boukhobza - Systèmes d'exploitation embarqués 13 Logiciels libres Initié par Richard M. Stallman (M.I.T) entre 1970-1980 Naissance de GNU (Gnu is Not Unix!) dont le but était de créer un OS. Mise en place d’un nouveau type de licence: GPL (General Public Licence) principe de copyleft par opposition au copyright LGPL (Lesser GPL): originellement Library GPL similaire au GPL sur les points suivants: Le copyleft: interdit de s’approprier le code distribué sous GPL ou LGPL Disponibilité des corrections Différences avec le GPL: permet d’effectuer une édition des liens de code propriétaire avec les bibliothèques permet la disponibilité sous Linux d’applications propriétaires qui utilisent des bibliothèques LGPL indispensables comme glibc J.Boukhobza - Systèmes d'exploitation embarqués 14 7 22/09/2015 Tour d’horizon des OS embarqués VxWorks et pSOS: (WindRiver) Noyau temps réel le plus utilisé dans l’industrie Inclut en natif un support TCP/IP Coût important de la licence Utilisation d’un environnement de compilation croisée Mars Reconnaissance Orbiter QNX: (QNX) Noyau temps réel de type UNIX (conforme à POSIX) Gratuit pour des applications non commerciales Développement direct sur la plateforme cible Très faible empreinte mémoire µC/OS (Micrium): (uCosII ou III) Tablet BlackBerry Environnement de très petite taille (microcontrolleur 68HC11) Utilisable gratuitement pour l’enseignement/recherche. Peut intégrer des protocoles standards J.Boukhobza - Systèmes d'exploitation embarqués 15 Tour d’horizon des OS embarqués (2) Windows CE : (Microsoft) Cantonné à l’équipement de nombreux assistants personnels et téléphone (actuellement Nokia en remplacement de Symbian OS) Nucleus (Mentor Graphics) Noyau temps réel; couche TCP/IP; interface graphique, serveur http, etc. (open source) eCos: embeddable Configurable OS (Cygnus puis RedHat) Temps réel, bien adapté aux très faibles empreintes mémoire. Disponibilité des protocoles standards (TCP/IP, etc.) Basé sur Linux et la chaîne de compilation GNU Conforme à la norme POSIX J.Boukhobza - Systèmes d'exploitation embarqués 16 8 22/09/2015 Y a un « OS » ? Jim Turley (2006) Source: http://www.eetimes.com/discussion/other/4025674/Operating-systems-on-the-rise Source:Richard Nass (2008) http://embedded.com/design/embedded/4007664/An-insider-sview-of-the-2008-Embedded-Market-Study J.Boukhobza - Systèmes d'exploitation embarqués 17 Des chiffres, des chiffres … Source:Richard Nass (2008) http://embedded.com/design/embedded/4007664/An-insider-sview-of-the-2008-Embedded-Market-Study J.Boukhobza - Systèmes d'exploitation embarqués 18 9 22/09/2015 Tendance des (RT)OS … encore des chiffres !! Source: Operating systems on the rise, Jim Turley Embedded Systems Design (06/21/06, 09:00:00 AM EDT) www.eetimes.com/discussion/other/4025674/Operating-systems-on-the-rise J.Boukhobza - Systèmes d'exploitation embarqués 19 J.Boukhobza - Systèmes d'exploitation embarqués 20 10 22/09/2015 Rapport VDC Research 2009 21 J.Boukhobza - Systèmes d'exploitation embarqués 22 2013 EMBEDDED MARKET STUDY, UBM Tech. design west, US, 2013 J.Boukhobza - Systèmes d'exploitation embarqués 11 22/09/2015 J.Boukhobza - Systèmes d'exploitation embarqués 23 J.Boukhobza - Systèmes d'exploitation embarqués 24 12 22/09/2015 J.Boukhobza - Systèmes d'exploitation embarqués 25 J.Boukhobza - Systèmes d'exploitation embarqués 26 13 22/09/2015 J.Boukhobza - Systèmes d'exploitation embarqués 27 J.Boukhobza - Systèmes d'exploitation embarqués 28 14 22/09/2015 J.Boukhobza - Systèmes d'exploitation embarqués 29 J.Boukhobza - Systèmes d'exploitation embarqués 30 15 22/09/2015 J.Boukhobza - Systèmes d'exploitation embarqués 31 J.Boukhobza - Systèmes d'exploitation embarqués 32 16 22/09/2015 Les architectures des systèmes d’exploitation Plusieurs structures différentes: OS Monolithique (plus ancien): 1. Simple/ne consomme pas beaucoup de ressources Convient aux « petits systèmes » ou quelques portions de systèmes temps réel complexe OS entièrement en mode privilégié L’application utilise un appel système pour accéder aux services de l’OS procédure exécutée Gestion de l’interruption : optimisée car pas de changement de contexte entier (prioritaire car l’ordonnanceur est désactivé) Impossible de mettre à jour l’application « à chaud » (remplacement + reboot) J.Boukhobza - Systèmes d'exploitation embarqués 33 OS Monolithiques Structure de base: Un programme principal qui invoque la procédure du service Un ensemble de procédures de services qui gèrent les appels système Un ensemble de procédures utilitaires auxiliaires des précédentes Vielles version d’UNIX (FreeBSD, SOLARIS), DOS. Procédure principale Application Procédures de service Procédures auxiliaires Hardware J.Boukhobza - Systèmes d'exploitation embarqués 34 17 22/09/2015 OS Monolithique (exemple: UNIX) Application Application Application Application API Système de fichiers Gestion de mémoire Pilotes de périphériques Gestion de processus Protection Démarrage et initialisation Support réseau noyau Gestionnaire d’interruptions Couche d’abstraction matérielle (HAL) Matériel J.Boukhobza - Systèmes d'exploitation embarqués 35 OS Monolithiques: avantages/inconvénients De meilleures performances Vite développé … Évolution: chargement dynamique (et donc sélectif) des modules Extension difficile Code non modulaire Très complexe Code massif Plus c’est gros, moins c’est performant ! Nid de bugs Peu fiable (un bug redémarrage) Premières versions à chargement statique 400 périphériques supportés 400 périphériques chargés au démarrage !! J.Boukhobza - Systèmes d'exploitation embarqués 36 18 22/09/2015 Les architectures des systèmes d’exploitation (2) 2. OS Multicouches OS organisé en hiérarchie de couches. Chacune construite sur la base des services offerts par la couche inférieure. Interface et gestion des interruptions similaire à celle des systèmes monolithiques. Meilleure structure et modularité maintenance plus aisée. Configuration plus fine (modularité) meilleure utilisation de la mémoire + performance. J.Boukhobza - Systèmes d'exploitation embarqués 37 OS Multicouches: avantages/inconvénients Facile à étendre (plus structuré) Modèle simple Traverser les différentes couches peut être couteux La multiplication des couches peut ne pas être nécessaire. Performances moins bonnes (vs monolithique) J.Boukhobza - Systèmes d'exploitation embarqués 38 19 22/09/2015 Les architectures des systèmes d’exploitation (3) 3. OS Micronoyau Déplace plusieurs fonctions de l’OS vers des « processus serveurs » s’exécutant en mode utilisateur réduction au maximum de la taille du code privilégié. Gérer les communications entre applications et serveurs pour: Renforcer la politique de sécurité Permettre l’exécution de fonctions système (accès aux registres d’E/S, etc.). Fiabilité augmentée: si un processus serveur « crash », le système continue à fonctionner et il est possible de relancer ce service sans redémarrer. Modèle facilement étendu à des systèmes distribués (efficacité?). Gestion de l’interruption: commutation de tâche moins efficace que le modèle monolithique. J.Boukhobza - Systèmes d'exploitation embarqués 39 OS Micronoyau Processus client Processus client Processus serveur Serveur de terminaux Serveur de fichiers Micronoyau Serveur de mémoire Mode utilisateur Mode noyau Source: « Systèmes d’exploitation », Andrew Tanenbaum, 2ème édition, Pearson Education 2001 Le noyau gèrent les communications entre clients et serveurs. Certains services sont impossibles à exécuter en mode utilisateur (pilotes de périphériques d’E/S): Garder certains processus serveur critiques en mode noyau Garder une partie du mécanisme en mode noyau en laissant le choix des politiques aux serveurs en mode utilisateur. J.Boukhobza - Systèmes d'exploitation embarqués 40 20 22/09/2015 OS micronoyau Machine 1 Machine 2 Machine 3 Machine 4 Machine n Processus client Processus client Processus serveur Serveur de terminaux Serveur de fichiers noyau noyau noyau noyau noyau Source: « Systèmes d’exploitation », Andrew Tanenbaum, 2ème édition, Pearson Education 2001 Si le client communique avec le serveur par envoi de messages, il lui importe peu que le serveur soit local ou distant, le résultat (logique) est le même d’où l’adaptabilité aux systèmes distribués Exemples: Windows NT, Mach, Chorus, QNX. J.Boukhobza - Systèmes d'exploitation embarqués 41 OS Micronoyaux: avantages/inconvénients Extensibilité Minimise le code du noyau Sécurité: Un serveur (mode utilisateur) crashe, il sera le seul à redémarrer Fiabilité Micronoyau: code plus petit moins de bugs Souvent tenté de rajouter des choses dans le noyau (vu qu’il est petit…) Mauvaises performances Requière beaucoup de prudence lors de la conception J.Boukhobza - Systèmes d'exploitation embarqués 42 21 22/09/2015 Les architectures des systèmes d’exploitation (4) 4. OS Machine virtuelle L’OS doit remplir 2 fonctions: Multi programmation moniteur de machine virtuelle Mode privilégié (exécution) Plusieurs processeurs virtuels Services système système invité Un ou plusieurs OS « invités » qui s’exécutent sur les processeurs virtuels et fournissent les services système. Le moniteur de machine virtuelle (hyperviseur) intercepte les instructions privilégiées envoyées par l’OS invité, les vérifie (politique de sécurité) et les exécute sur l’OS invité. Les interruptions sont aussi interceptées par le moniteur de la MV J.Boukhobza - Systèmes d'exploitation embarqués 43 OS machine virtuelle 2 types: MV native MV invité Exemple de ce type d’OS: XEN, VMWare, IBM’ VM/370, QEMU, VirtualBox, etc. Application Application Application Application Système d’exploitation invité Application Système d’exploitation invité Application Application Système d’exploitation invité Application Système d’exploitation invité Moniteur de machine virtuelle Moniteur de machine virtuelle Système d’exploitation hôte Couche matériel Couche matériel VM native J.Boukhobza - Systèmes d'exploitation embarqués VM invité 44 22 22/09/2015 OS machine virtuelle: avantages/inconvénients Permet l’exécution de plusieurs OS sur une seule machine Permet une bonne portabilité des applications Une protection complète (code exécute en mode privilégié complètement géré) Bon environnement de développement (dev système en mode utilisateur…) Gros problème de performances (plusieurs couches) Manque de flexibilité J.Boukhobza - Systèmes d'exploitation embarqués 45 Les normes des systèmes d’exploitation POSIX (Portable Operating System Interface): standard pour les appels de fonction (API) pour les OS UNIX-like. Il existe quelques spécifications pour des primitives temps réels. Plusieurs profils pour le temps réel: 1. PSE51: profile de système temps réel minimaliste : 1 seul processus POSIX pouvant exécuter plusieurs threads POSIX pouvant utiliser le passage de messages POSIX pour communiquer avec d’autres systèmes PS5x 2. PSE52: profile de système de contrôleur temps réel: PSE51+support pour un système de fichiers + E/S asynchrones PSE53: profile de système temps réel dédié: PSE51+support multiprocessus(+MMU) PSE54: profile de système temps réel polyvalent: englobe les autres profils. Il consiste de POSIX.1, POSIX.1b, POSIX.1c, et/ou POSIX.5b Hw: 1 seul processeur avec sa mémoire, pas de MMU et d’E/S standard. 3. 4. Exemple: RTLinux se réclame du profil PSE51 alors qu’RTAI ne réclame rien du tout. J.Boukhobza - Systèmes d'exploitation embarqués 46 23 22/09/2015 Les profils POSIX Source http://blogs.windriver.com/wilson/2006/10/posix_profiles.html J.Boukhobza - Systèmes d'exploitation embarqués 47 Autres normes UNIX98: normalisation de l’OS UNIX. Cette norme incorpore plusieurs des normes de POSIX EL/IX: API pour les systèmes embarqués. Se veut un sous ensemble des normes POSIX et ANSI. ITRON: norme japonaise pour les systèmes embarqués OSEK: norme allemande pour une architecture ouverte reliant les divers contrôleurs électroniques d’un véhicule. RT Spec pour Java: spécification pour un runtime qui édicte des prescriptions (ramasse miettes, certaines politiques d’ordonnancement, etc.) Ada95: ex: MarteOS, OpenRavenscar. RT Corba: un ensemble de spécification temps réel J.Boukhobza - Systèmes d'exploitation embarqués 48 24 22/09/2015 Services des systèmes d’exploitation Gestion des tâches Ordonnancement Gestion des interruptions Communication inter-processus et synchronisation Gestion de la mémoire Entrées/Sorties et pilotes de périphériques Systèmes de fichiers Protocoles de communication …. J.Boukhobza - Systèmes d'exploitation embarqués 49 Principes de base des tâches Processus et Threads Processus: l’activité qui exécute un programme incluant: Le code source Les données L’état du processeur Chaque processus a son propre espace d’adressage Gestion de la création, suppression, changement de priorité, contraintes temporelles, besoins mémoire, etc. Concept de thread utilisateur, noyau, etc. Les « petits » OS pour l’embarqué utilisent seulement les threads (exécutifs) alors que les « gros » OS peuvent utiliser plusieurs modèles processus/threads. J.Boukhobza - Systèmes d'exploitation embarqués 50 25 22/09/2015 Processus et Thread (2) Création de processus et de threads: Statique: toutes les tâches sont connues à l’avance n’est pas possible d’en créer pendant que le système tourne. il Dynamique: appels système permettant de créer et détruire des tâches à la volée: Système plus flexible Plus de complexité (allocation dynamique, gestion d’erreurs) J.Boukhobza - Systèmes d'exploitation embarqués 51 Ordonnancement Entité qui décide quelle tâche doit exécuter le processeur. Compromis entre la prédictibilité temps réel, complexité d’implémentation, et délai d’exécution. RTOS (Real Time OS) supportent plusieurs politiques d’ordonnancement, le choix incombe (parfois) au programmeur: FIFO avec priorité (statique) Date limite la plus proche (priorité dynamique) performant (uniprocesseur), couteux en temps de calcul Serveur sporadique (perte de priorité en fonction du temps processeur consommé). … J.Boukhobza - Systèmes d'exploitation embarqués 52 26 22/09/2015 Gestion d’interruption Gestion de plusieurs périphériques: minuterie (timer), moteurs, capteurs, disques, etc. Requêtes asynchrones signalées par des interruptions 2 types d’interruptions: Interruptions matérielles Interruptions logicielles Le code exécuté lors d’une interruption est dicté par le CPU à l’aide du vecteur d’interruption. Mais l’OS intervient pour: Connecter une adresse mémoire à chaque ligne d’interruption Que faut-il faire après avoir servi une interruption Gestion de l’aspect temps réel. J.Boukhobza - Systèmes d'exploitation embarqués 53 Communication & Synchronisation Inter Processus Sémaphores: (Dijkstra 1965) Synchro à travers 2 opérations atomiques P et V. Bas niveau Exclusion mutuelle assurée par le programmeur Moniteurs (Hoare & Hansen 1974) Mécanisme de haut niveau Exclusion mutuelle assurée par le compilateur Passage de messages Transfert de données entre processus Mise en tampon des messages Rendez-vous J.Boukhobza - Systèmes d'exploitation embarqués 54 27 22/09/2015 Gestion de la mémoire Allocation: Allouer à chaque tâche la mémoire dont elle a besoin Mapping: Faire la correspondance entre la mémoire physique et l’adressage utilisé par les tâches. Protection: Etablir un ensemble de comportements à adopter lorsqu’une tâche utilise de la mémoire non allouée. Implémentation des mécanismes permettant cette gestion. J.Boukhobza - Systèmes d'exploitation embarqués 55 Support Réseau Le standard POSIX socket: Accès uniforme à n’importe quel mode/protocole de communication en réseau (domaine de communication + type de socket) Support réseau spécifique à un OS particulier: Plus de fonctionnalités (création de filtre de msg / spécification de l’ordre de lecture des msg) Moins de réutilisabilité J.Boukhobza - Systèmes d'exploitation embarqués 56 28 22/09/2015 Autres fonctions Signaux temps réel et asynchrones: gestion des événements imprévus (pannes sw ou hw) et dégradation des performances en cas de surcharge du processeur. Horloge et minuterie (timer) haute résolution: donner au processus temps réel une mesure juste du temps écoulé E/S asynchrones: découpler les processus temps réel de l’imprévisibilité des périphériques d’E/S J.Boukhobza - Systèmes d'exploitation embarqués 57 Compromis lors de la conception Espace noyau/espace utilisateur/espace temps réel. OS monolithique/multicouche ou micro-noyau Noyau préemptible ou non Scalabilité Gestion de mémoire / mémoire partagée Dédié / générique J.Boukhobza - Systèmes d'exploitation embarqués 58 29