Top Qs
Chronologie
Chat
Contexte

Système d'exploitation embarqué

type de système d’exploitation De Wikipédia, l'encyclopédie libre

Remove ads

Un système d'exploitation embarqué est un système d'exploitation pouvant être installé sur un système embarqué. Ce système d'exploitation est conçu avec des spécificités à gérer afin de répondre à des besoins spécifiques au type de système embarqué.

Définition

Un système d'exploitation est un programme qui gère le matériel. Il sert d'intermédiaire entre l'application logicielle et le matériel informatique (périphériques, capteurs, moteurs...)[1]. La diversité des systèmes d'exploitation disponibles offre des constructions et propriétés particulières qui permettent de répondre à des objectifs très variés[2]. À part pour les tâches très simples (l'ordonnancement, la commutation de tâches, entrées/sorties, ...), une application embarquée à besoin d'un système d'exploitation adapté répondant aux contraintes pour être installée sur le système embarqué (espace mémoire par exemple). Le système d'exploitation doit aussi disposer des fonctionnalités requises pour la tâche qu'il aura à exécuter[3]. Les systèmes d'exploitation pour PC sont conçus avec une interface homme-machine particulière (écran-clavier-souris). Dans le cadre d'un système d'exploitation embarqué, l'interface homme-machine pour pouvoir interagir avec peut être spécifique (clavier à digicode, écrans de smartphones...), voire inexistante (cartes de crédit, cartes sim, ...), auquel cas on utilise une machine intermédiaire (bornes, téléphones[4]). Étant la plupart du temps hors de portée humaine, un système d'exploitation embarqué doit avoir un niveau de robustesse bien au-dessus des exigences d'un système d'exploitation de bureau[5]. Les systèmes d'exploitation embarqués nécessitent une très grande fiabilité, ainsi que de bonnes performances[6].

Remove ads

Spécificités

Résumé
Contexte

Les systèmes embarqués sont utilisés dans des domaines très variés tels que la téléphonie mobile, l’électroménager, les équipements médicaux, l’aéronautique, l’automobile, les bornes automatiques, etc. Mise à part peut être l’horloge système, les fonctionnalités du système d’exploitation sur lesquels ils vont s'appuyer seront hétérogènes. Et avec un parc d'appareils qui est tout aussi hétérogène, ces dispositifs ne supportent pas toutes les variantes des systèmes d'exploitation existants[7]. Étant dans un système contraint, le système d'exploitation doit répondre aux besoins de l'appareil. L'adaptation se fait donc en trouvant le bon compromis entre taille et performances pour optimiser le système d'exploitation. Les systèmes d'exploitation privilégiés sont donc ceux avec seulement les pilotes de périphériques requis[8].

Temps-réel

Des systèmes embarqués peuvent avoir des contraintes d'ordre temporel. Pour supporter ces contraintes, il existe des systèmes d'exploitation temps réel qui fournissent des services et des primitives qui peuvent garantir les délais d’exécution souhaités.

Pour qu'un OS soit un RTOS[note 1] il doit répondre à 4 exigences[9] :

Le comportement de synchronisation du système d'exploitation doit être prévisible.
Le système d'exploitation doit garantir de pouvoir terminer chaque service en cours d’exécution dans un temps maximal fixé. L’ordonnancement est donc déterministe pour une gestion optimale des tâches.
Le système d'exploitation doit gérer l'ordonnancement des tâches.
L'ordonnancement peut être événementiel (on parle aussi d'ordonnancement par priorité) : l'ordonnanceur ne change de tâche que lorsqu'un événement de plus haute priorité a besoin de service.
Il peut être aussi par partage de tâches : L'ordonnanceur change de tâche aux interruptions de l'horloge, ce qui le rend plus multi-tâches dans le sens où les tâches ne s’exécutent plus une à une aux yeux de l'utilisateur.
Le système d'exploitation doit gérer le temps afin d'ordonnancer au mieux les tâches en fonction de leur délai.
Cette gestion est obligatoire si le traitement interne est lié à un temps absolu dans l'environnement physique. La synchronisation d'horloge globale est effectuée (au choix) via 2 standards : UTC[note 2] ou TAI[note 3]. Si le système est utilisé dans un réseau, il est régulièrement synchronisé pour que tous les systèmes soient coordonnés.
Le système d'exploitation doit être rapide. Un système d'exploitation répondant à toutes les exigences mentionnées jusqu'ici serait inutile s'il était très lent.

Système de fichiers

Un système embarqué n'a pas systématiquement besoin d'un système de fichier. Un capteur en réseaux récupère des informations et les transmet aussitôt sur le réseau. La carte bancaire ou un badge d’accès sont des contre-exemples, car ils doivent avoir en mémoire des données utilisateur. Le système de fichiers peut être intégré au système d'exploitation, permettant aux applications de lire et d'écrire des fichiers sur un espace de mémoire non volatile du système physique[10].

Sécurité

Ci-dessous, une liste d’exigences typiques de sécurité que l'on retrouve sur des systèmes embarqués qu'un OS peut fournir[11] :

Identification de l'utilisateur
Processus de validation de l'utilisateur avant de lui donner accès au système. Le système en question peut être physique (ouverture de porte par badge d’accès) ou informatique (compte et mot de passe avant de pouvoir interagir avec le logiciel).
Connexion réseau sécurisé
Fournit une connexion réseau uniquement si l'appareil est autorisé. Permet en cas d'intrusion de limiter son impact sur le réseau et les systèmes reliés. Dans le cas des réseaux de capteurs sans-fil, cela réduit les chances qu'un faux capteur s'y introduise pour récupérer les données récoltées.
Communication sécurisée
Inclut l’authentification des entités communicantes, qui assure la confidentialité et l'intégrité des données transmises et protège l'identité des entités communicantes. Deux automates qui souhaitent se synchroniser s’authentifieront mutuellement puis échangeront leurs informations en assurant la confidentialité et l'intégrité par un moyen cryptographique.
Stockage sécurisé
Confidentialité et intégrité des données stockées sur le système.
Sécurité du contenu
Restriction d'utilisation du contenu numérique en lecture et écriture sur le système. En sécurisant le contenu, il assure un niveau de sécurité tout au long de l'utilisation de ce système.
Disponibilité
Le système doit pouvoir exécuter sa(ses) fonction(s) dans tous les cas. L'ABS[note 4] d'une automobile en est un bon exemple, il doit pouvoir être disponible à chaque fois qu'on l’interroge afin d'assurer la sécurité de ses occupants.

API/bibliothèque

Pour les développeurs, il est souhaitable que l'appareil dispose d'APIs pour faciliter le développement de l'application.

La machine virtuelle Java inclut des interfaces et d'autres bibliothèques natives qui lui permettent d'être facilement intégrée à un RTOS. Écrite en C, la machine virtuelle Java est compilée avec le RTOS et interprète les bytes-codes Java pour que l'application s'exécute[12]. Grâce à cela, l’appareil peut interpréter du byte-code Java et profiter des APIs disponibles (exemple: java.net pour les fonctionnalités tcp/ip, java.io pour les entrées/sorties, ...).

Communication

Thumb
Illustration de l'utilité d'un bus CAN dans une automobile pour réduire le câblage et faciliter la communication avec les équipements

Un système embarqué peut avoir à communiquer avec un ou plusieurs autres systèmes (lorsqu'il s'agit de systèmes embarqués travaillant de manière collaborative) ou périphériques. Pour ces cas là, le système d'exploitation peut fournir les primitives pour établir une communication en fonction du medium utilisé[13] :

  • Réseau: utilisé pour des communications sur un réseau Ethernet(TCP, UDP, SMTP, DataSocket)
  • Mémoire partagée
  • Communication sans-fil IrDA: pour des échanges de données via Infrarouge
  • Communication par Bus: utilise des ports destinés à des bus de communication (Série, CAN)
  • Fibre optique.

Virtualisation

Thumb
La virtualisation permet de faire coexister deux systèmes d'exploitation complètement différents sur un même processeur.

L'atout majeur de la virtualisation est la garantie que deux applications concurrentes sur un même système n’interfèrent pas entre elles. Utiliser la virtualisation permet d'imposer dans chaque machine virtuelle des limitations d’accès aux ressources et périphériques en fonction des besoins de l'application[14].

L’intérêt de la virtualisation est aussi de faire cohabiter deux systèmes d'exploitation différents (temps-réel inclus) sur le même processeur et fournissant donc à chaque processus les spécifications requises à l’exécution de leur tâche[14].

La virtualisation permet aussi d’apporter un niveau de sécurité pour éviter des dommages inter-processus. Chaque processus étant lancé par une machine virtuelle distincte, si l'un d'entre eux rencontre un problème, il n'aura aucun impact sur les autres processus en cours sur d'autres machines virtuelles[14].

Consommation énergétique

Pour des systèmes embarqués autonomes en énergie, il est judicieux de choisir un système d'exploitation permettant de limiter la consommation énergétique. Pour limiter la consommation, il y a des techniques matérielles (choix des composants, circuits reconfigurables), logicielles (optimisation du code, utilisation d'instructions spécifiques) et hybrides (mise en veille des périphériques non utilisés). Le système d'exploitation peut seulement agir sur les solutions hybrides et logicielles[15].

Remove ads

Domaines d'application

Résumé
Contexte

Les contraintes de choix et d'utilisation d'un système d'exploitation pour un système embarqué dépendent du domaine d'application dans lequel se retrouvera le système. De nos objets du quotidien (Smartphone, Électroménager...) jusqu'aux systèmes de contrôle d'un avion ou Curiosity, sans oublier les équipements médicaux, de télécommunication (Satellite, antenne relais...) et militaire (drone, système de guidage de missiles...), les domaines d'application sont larges et étendus, et leurs objectifs divers[2].

Les domaines d'application qui vont suivre vont mettre en situation les spécificités énoncées plus tôt.

Aéronautique et Aérospatial

Pour satisfaire de grandes contraintes temps-réel, les algorithmes de systèmes de contrôle d'avions sont exécutés sur des systèmes d'exploitation temps réel[16]. Cette nécessité vient du grand nombre de capteurs présents sur l’appareil et d'élément contrôlable.

Automobile

Dans le domaine de l'automobile, les systèmes embarqués ont commencé à prendre place depuis que des équipements d'aide à la conduite sont intégrés dans nos véhicules (ABS, ESP, ...), mais aussi pour commander les éléments du véhicule (phares, essuie-glaces, vitres, verrouillage des portes, outils de navigation, ...). Pour cela, les constructeurs automobiles se tournent vers des systèmes d'exploitation temps-réel afin de centraliser la gestion de tous les éléments électroniques et pouvoir gérer la priorité des tâches (pour pouvoir privilégier le traitement des éléments de sécurité avant ceux de confort). Le système d'exploitation choisi doit aussi pouvoir communiquer avec les éléments électroniques du véhicule par bus de données[17].

Un exemple d'utilisation dans le domaine automobile, est Windows Embedded Automotive (en) sur lequel s’appuie la technologie Ford Sync (en)[18].

Des partenariats entre les constructeurs automobiles et des sociétés privées sont en cours pour que des systèmes d'exploitation plus connus du grand public soient utilisés dans les voitures. C'est le cas d'Apple avec iOS in the Car (en). Et le projet Open Automotive Alliance[19] de Google.

Des regroupements de constructeurs existent avec pour but d'avoir un RTOS commun comme AUTOSAR , OSEK/VDX.

Robotique

Les contraintes liées au développement robotique sont les interactions avec les périphériques (capteurs, webcam, moteurs pas à pas...). Pour exemple, RoBIOS est un système d'exploitation destiné au développement robotique et a dans son code binaire une large bibliothèque de fonctions systèmes et des pilotes de périphériques pour contrôler et accéder à tous les types de matériel[20].

Réseau de capteurs

Le travail du système d'exploitation est de gérer l'allocation des ressources de manière ordonnée et contrôlée. Le programmeur peut utiliser des appels systèmes pour accéder aux services que fournit le système d'exploitation[21].

Les réseaux de capteurs ayant de plus en plus de données à collecter, traiter et transmettre, les contraintes font que le système d'exploitation doit être multi-threadé pour répondre aux besoins. En entrelaçant les tâches complexes et sensibles, le système peut atténuer le problème producteur-consommateur[22].

Davantage d’informations Architecture, Modèle de programmation ...

Cartes à puce

Thumb
La carte SIM que l'on utilise dans les téléphones portables utilise un système d'exploitation embarqué.

Les systèmes d'exploitation pour carte à puce sont dépourvus d'interface utilisateur, du moins, ces interfaces sont limitées (borne, capteur...). La principale spécificité requise sur une carte à puce est la sécurité ; une autre contrainte est le faible espace de stockage mémoire offert pour accueillir le système d'exploitation et les données qui seront y sont mémorisées[23].

Un système d'exploitation pour carte à puce est construit pour offrir un ensemble de services pour la gestion des données, le contrôle d'accès, et les services cryptographiques. Les fonctions de base d'un système d'exploitation qui sont communes à tous les types de cartes à puce sont[24] :

  1. Gestion des échanges entre la carte et le monde extérieur, principalement en termes de protocole d'échange.
  2. Gestion des fichiers et des données stockées dans la mémoire.
  3. Contrôle d'accès à l'information et aux fonctions.
  4. Gestion de la sécurité de la carte et des procédures d'algorithmes cryptographiques.
  5. Garantie de fiabilité, notamment en termes de cohérence des données.

Mobile

Les smartphones sont des appareils ayant les capacités d'un micro-ordinateur. Avec un nombre de smartphones grandissant de jour en jour, la qualité du système d'exploitation doit être de mise afin de pouvoir exécuter un même programme sur différents modèles de smartphones. Le système d'exploitation détermine les caractéristiques, la performance, la sécurité et les add-ons des applications d'un smartphone[25]. Le système d'exploitation doit gérer une interface homme-machine intuitive et réactive pour que l'utilisateur puisse exécuter ses applications[1] ; il doit aussi contribuer à minimiser la consommation d'énergie du smartphone.

Remove ads

Voir aussi

Notes et références

Bibliographie

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads