control-systems-and-automation
Mise en œuvre de la virtualisation dans les systèmes d'exploitation intégrés pour la flexibilité
Table of Contents
Introduction : Pourquoi la virtualisation compte dans les systèmes embarqués
Les systèmes d'exploitation embarqués sont les cerveaux invisibles derrière d'innombrables appareils, des capteurs IoT aux implants médicaux aux unités d'infodivertissement automobile et aux contrôleurs industriels. À mesure que la demande de dispositifs intelligents et plus connectés augmente, la complexité de leurs piles logicielles est de plus en plus grande. Les développeurs sont de plus en plus appelés à exécuter plusieurs applications avec différents niveaux de confiance, exigences de latence et cycles de mise à jour sur le même matériel.
Cet article explore comment la virtualisation peut être mise en œuvre dans les systèmes d'exploitation intégrés pour obtenir une plus grande flexibilité. Nous allons couvrir les concepts de base, les avantages pratiques, les stratégies de mise en œuvre, et les principaux défis auxquels les ingénieurs sont confrontés lors de l'apport de virtualisation aux appareils à ressources limitées.
Comprendre la virtualisation dans les systèmes embarqués
La virtualisation crée une abstraction logicielle des ressources matérielles – comme les cœurs de processeurs, la mémoire, le stockage et les périphériques d'entrée et d'entrée en vigueur – afin que plusieurs systèmes ou applications d'exploitation puissent fonctionner simultanément sur une seule plate-forme physique. Dans les systèmes embarqués, cela est généralement réalisé par un hyperviseur (également appelé moniteur de machine virtuelle) qui se situe entre le matériel et les systèmes d'exploitation invités. L'hyperviseur gère l'allocation des ressources, impose l'isolement et gère les interruptions et les exceptions.
Contrairement à la virtualisation du serveur où la puissance de calcul brute et la mémoire massive sont abondantes, les systèmes embarqués sont souvent limités par une capacité de traitement limitée, de petites empreintes de mémoire et des budgets de puissance stricts. Par conséquent, les hyperviseurs embarqués sont conçus pour être légers, minimisant les frais généraux tout en fournissant des fonctionnalités de virtualisation de base. De nombreuses architectures de type‐1 (bale-métal), où l'hyperviseur fonctionne directement sur le matériel, ou de type‐2 (hôte), où un système d'exploitation hôte gère la virtualisation.
Contrairement au calcul général, de nombreux appareils embarqués doivent répondre aux événements en microsecondes. Cela exige que l'hyperviseur gère efficacement la virtualisation, évite d'introduire des latences imprévisibles et fournisse des mécanismes pour réserver des cycles de processeurs pour des tâches critiques dans le temps. Extensions de virtualisation du matériel, comme ARM’s Extensions de virtualisation (p. ex., dans les processeurs Cortex-A) ou Intel VT-x/AMD-V, aide à décharger certaines tâches de virtualisation du matériel, réduisant ainsi considérablement les frais généraux de l'hyperviseur.
Avantages de la virtualisation pour les systèmes d'exploitation embarqués
La virtualisation offre une gamme d'avantages qui s'attaquent directement à la complexité croissante des logiciels intégrés. Les sections suivantes décomposent les avantages les plus importants.
Flexibilité accrue et allocation dynamique des ressources
Avec la virtualisation, les architectes système peuvent partager les ressources matérielles entre plusieurs instances de l'OS invité. Chaque invité peut exécuter un système d'exploitation différent, par exemple un système d'exploitation en temps réel (RTOS) pour les boucles de contrôle, en même temps qu'une instance Linux pour les tâches de réseau et d'interface utilisateur. Cette flexibilité permet aux développeurs de choisir le meilleur système d'exploitation pour chaque sous-système sans être verrouillé dans une plate-forme monolithique unique.
Une forte isolement pour la sûreté et la sécurité
L'isolement est peut-être le plus important avantage de la virtualisation dans les systèmes embarqués. Chaque machine virtuelle fonctionne dans son propre domaine protégé, de sorte qu'une faille (par exemple, un crash de logiciel ou une corruption de mémoire) dans une VM ne peut pas se propager à d'autres. Ceci est particulièrement important pour les systèmes de criticité mixte[ où coexistent des applications avec différents niveaux d'intégrité de sécurité.
Utilisation efficace des ressources et réduction des coûts
En regroupant les charges de travail sur un seul processeur multi-cœur utilisant la virtualisation, les fabricants peuvent réduire le nombre de puces, l'espace de plateau et la consommation d'énergie. Cette consolidation matérielle réduit les coûts de la facture de matériel et simplifie la conception du système. De plus, parce que les VM peuvent partager des périphériques et de la mémoire grâce à des pilotes paravirtualisés, l'utilisation globale des ressources s'améliore, ce qui entraîne une utilisation plus faible de la puissance et une durée de vie prolongée de la batterie dans les appareils portables.
Gestion simplifiée de la maintenance, des mises à jour et du cycle de vie
Les appareils embarqués nécessitent de plus en plus de mises à jour sur le terrain pour les correctifs de sécurité, les corrections de bogues ou les ajouts de fonctionnalités. La virtualisation rend les mises à jour plus sûres et moins perturbatrices. Au lieu de mettre à jour l'ensemble du firmware système, vous pouvez mettre à jour un VM à la fois tandis que les autres VM continuent à fonctionner.
Productivité améliorée des développeurs
Les développeurs peuvent travailler sur différents sous-systèmes indépendamment (par exemple, l'interface utilisateur Linux, la logique de contrôle sur RTOS) et les tester dans un environnement virtualisé avant l'intégration. L'hyperviseur fournit une couche d'abstraction matérielle standard, de sorte que les équipes peuvent développer et déboguer en utilisant la même pile logicielle qui va fonctionner sur le périphérique cible.
Mise en œuvre de la virtualisation dans les systèmes embarqués
Déployer la virtualisation dans un environnement intégré exige une sélection minutieuse de l'hyperviseur, l'adaptation des conducteurs et la prise en compte de la conception pour les contraintes en temps réel.
Choisir le bon hyperviseur
L'hyperviseur est la pierre angulaire de toute solution de virtualisation. Pour les systèmes embarqués, l'hyperviseur doit être léger, évolutif et supporter les charges de travail en temps réel.
- Xen Project – Un hyperviseur open source de type‐1 qui a été adapté pour une utilisation intégrée (par exemple, Xen pour ARM). Il prend en charge les clients paravirtuels et entièrement virtualisés, et offre une forte isolation. Les capacités en temps réel de Xen=1 se sont améliorées avec l'introduction du Xenomai co-kernel et support de programmation dédié. (Xen Embedded et Automotive)
- KVM (Machine Virtuelle basée sur le noyau)[ – Un hyperviseur type-2 qui exploite les capacités de virtualisation du noyau Linux. Bien que traditionnellement utilisé dans les serveurs, KVM peut être accordé pour les systèmes embarqués (par exemple, dans les constructions basées sur Yocto). Il bénéficie d'un vaste écosystème d'outils et de support de pilotes. (KVM Main Page)
- OpenAMP / Xilinx RFSoC – Pour les systèmes basés sur ARM avec extensions de virtualisation matérielle, OpenAMP fournit un cadre pour l'exécution de plusieurs OS invités en utilisant les mécanismes et rpmsg. Il est largement utilisé dans Xilinx Zynq et d'autres systèmes embarqués basés sur FPGA.
- Asperviseurs commerciaux RTOS[ – Produits comme Green Hills Integrity Multivisor, QNX Hypervisor[, ou Wind River Helix Virtualization Platform[ sont conçus spécifiquement pour les environnements mixtes de criticité et de certification de sécurité.
Lors de la sélection d'un hyperviseur, évaluer son empreinte (RAM et stockage), interrompre les frais généraux de latence, l'assistance à l'horaire (surtout pour les tâches en temps réel difficiles) et la préparation à la certification (par exemple, ISO 26262 pour l'automobile, CEI 62304 pour les soins médicaux).
Soutien matériel et considérations relatives à la plateforme
Pour l'architecture ARM, les extensions de virtualisation (VE) disponibles dans les processeurs Cortex-A (et non Cortex-M) offrent un niveau d'exception dédié (EL2) pour l'hyperviseur. Cela permet à l'hyperviseur de piéger les opérations privilégiées des clients sans réécrire leur code de noyau (virtualisation complète). Sans ces extensions, l'hyperviseur peut toujours exécuter des OS invités par paravitualisation, où l'OS invité est modifié pour émettre des hyperappels au lieu d'exécuter des instructions privilégiées.
Parmi les autres caractéristiques architecturales qui aident à la virtualisation intégrée, mentionnons :
- IOMMU (Unité de gestion de la mémoire d'entrée/sortie) – fournit l'isolement du périphérique et un accès DMA sécurisé (accès direct à la mémoire) pour chaque VM.
- GICv2/v3 (Generic Interrupt Controller) – gère l'interruption du routage vers la machine virtuelle correcte sans médiation hyperviseur pour chaque interruption.
- – permettre le piquage des VM vCPU vers des noyaux physiques dédiés, réduisant le thrashage du cache et assurant l'exécution déterministe.
Si votre plateforme cible manque de ces fonctionnalités, prévoyez des frais généraux plus hyperviseurs et attendez-vous à des limites sur le nombre d'invités simultanés ou la complexité de l'émulation de l'appareil.
Rendement en temps réel et gestion des latences
L'un des plus grands défis de la virtualisation intégrée est de préserver le comportement en temps réel. L'hyperviseur doit programmer les vCPU, virtualiser les interruptions et gérer la mémoire d'une manière qui minimise la latence. Plusieurs stratégies peuvent aider:
- Planning prioritaire et préventif[ – Attribuer une priorité de programmation plus élevée aux VM invités en temps réel. Certains hyperviseurs (p. ex. KVM avec patch de noyau en temps réel, Xen avec programmeur RTDS) prennent en charge le planning en fonction des dates.
- Assignation de base dédiée – Réservez un noyau physique entier pour un invité en temps réel. Lorsqu'il est fait, ce client ne souffre jamais de retards co-échelonnés. L'hyperviseur ne gère que l'interruption de l'acheminement, ce qui peut être fait en matériel avec support VGIC.
- – Pour les périphériques sensibles au temps, accorder un accès direct au matériel (p. ex., en utilisant VFIO ou virtio en mode passe-pass), ce qui contourne l'hyperviseur sur le chemin de données et réduit la latence à des niveaux presque natifs.
- Drivers paravivitualisés – Utilisez des pilotes paravirtualisés légers pour les blocs, les réseaux et les E/S série pour éviter l'émulation lourde.
Même avec ces techniques, il existera une latence résiduelle. Une analyse comparative approfondie avec des outils comme le test cyclique (sur les invités Linux) ou le matériel de mesure en temps réel dédié est essentielle.
Gestion de la mémoire et du stockage
Les systèmes embarqués ont souvent une mémoire limitée. L'hyperviseur lui-même consomme la RAM pour ses structures de données (p. ex., tables de pages, blocs de contrôle VM).Chaque système d'exploitation d'invités nécessite également une mémoire dédiée, qui peut être attribuée statiquement ou dynamiquement. L'allocation statique est plus simple et garantit que les invités à forte intensité de mémoire ne meurent jamais de faim, mais elle peut entraîner des gaspillages. Le ballonnage de la mémoire dynamique permet à l'hyperviseur de récupérer la mémoire inutilisée des invités inactif et de la redistribuer, mais elle ajoute de la complexité et peut introduire des latences variables.
Le stockage dans les périphériques intégrés est souvent basé sur le flash (eMMC, NAND ou NOR). L'hyperviseur peut fournir des disques virtuels de niveau bloc ou le stockage de partition pour chaque invité. Considérez le réglage de l'usure et les choix du système de fichiers (p. ex. UBIFS pour NAND brut) lors de la conception de la virtualisation du stockage.
Défis et limites de la virtualisation intégrée
Malgré ses nombreux avantages, la virtualisation n'est pas une balle d'argent. Les développeurs devraient être conscients des obstacles suivants.
Rendement en tête
Même avec l'accélération matérielle, la virtualisation introduit des frais généraux, notamment pour interrompre la manipulation, le changement de contexte et la gestion de la mémoire. Pour les tâches les plus intensives ou sensibles à la latence du CPU, les frais généraux peuvent être inacceptables. Dans de tels cas, envisager d'utiliser partitions de métaux-bare (assignant un noyau physique exclusivement à une tâche critique sans OS) ou utilisant un RTOS minimal qui fonctionne directement sur le matériel, avec seulement des fonctions non critiques virtualisées.
Coûts de certification et de qualification
Les systèmes embarqués critiques pour la sécurité (automobile, aérospatiale, médicale) nécessitent une certification en fonction des normes de sécurité fonctionnelles. L'ajout d'un hyperviseur accroît la complexité du système et introduit des modes de défaillance supplémentaires. L'hyperviseur lui-même doit être certifié. Les fournisseurs d'hyperviseur commercial fournissent souvent des artefacts de certification, mais cela ajoute des coûts et peut limiter le choix de solutions de virtualisation.
Manque de support matériel pour les MCU de bas niveau
La plupart des approches de virtualisation intégrées ciblent les microprocesseurs (MPU) avec MMU et extensions de virtualisation, typiquement Cortex-A ou x86. Sur les microcontrôleurs à ressources limitées (MCU) comme Cortex-M, qui ne disposent pas d'un support de piège MMU et hyperviseur, la virtualisation logicielle uniquement (p. ex. FreeRTOS avec isolement MPU) est possible mais très limitée. La virtualisation multi-OS véritable sur les MCU reste un domaine de recherche actif.
Complexité du conducteur et périphérique
Chaque VM s'attend généralement à ses propres pilotes de périphériques. Le partage des périphériques entre VM (par exemple, un seul UART, un bus SPI ou un contrôleur Ethernet) nécessite une conception soignée. Les pilotes paravirualisés peuvent aider, mais ils doivent être portés à chaque OS invité. Pour les périphériques propriétaires ou anciens, l'hyperviseur peut avoir besoin d'émuler du matériel, qui est complexe et lent.
Garanties d'isolement en temps réel
Garantir qu'une tâche dure en temps réel respecte ses échéances lorsque d'autres VM fonctionnent est difficile. L'interférence de cache, la dispute de bus et le partage de bande passante de mémoire peuvent causer des retards imprévisibles. Des techniques avancées comme la coloration du cache, la partition de LLC (Last Level Cache) et la réservation de bande passante de mémoire sont en cours d'étude, mais ne sont pas encore largement disponibles dans les hyperviseurs de production.
Orientations futures de la virtualisation intégrée
Le paysage de la virtualisation intégrée évolue. Plusieurs tendances façonnent la prochaine génération de systèmes intégrés flexibles.
Unikernels et machines virtuelles légères
Les unikernels sont des VM spécialisés et à usage unique qui ne comprennent que les composants OS minimaux nécessaires à une application. Ils réduisent l'empreinte mémoire et le temps de démarrage tout en maintenant les avantages d'isolement de la virtualisation. Par exemple, un un unikernel contrôlant un hub de capteur peut démarrer en millisecondes et utiliser seulement quelques centaines de kilooctets.
Conteneurisation sur les dispositifs embarqués
Si les conteneurs partagent le noyau OS hôte et ont donc des frais plus bas que les VM, ils ne disposent pas du même niveau d'isolement. Cependant, les conteneurs embarqués (par exemple Docker sur Yocto ou LXC sur petit Linux) deviennent réalisables parce que les noyaux Linux modernes offrent des fonctionnalités d'isolement plus fortes (seccomp, espaces de noms, cgroups).
Systèmes de criticité mixte et normes ouvertes
Des normes comme AMBA CHI (CoreLink)[ et [La décomposition d'ASIL[ dans l'automobile conduit l'isolement assisté par le matériel.Le Multicore AssociationS Virtualization Working Group[ développe des API pour la communication hyperviseur-invitée et la gestion des ressources.
L'IA et la virtualisation de l'extrémité
La virtualisation des moteurs d'inférence réseau neuronale, par exemple, peut nécessiter des modèles de partage de mémoire (p. ex., partition GPU Nvidia=) avec vGPU. La recherche sur la virtualisation du système hétérogene permettra à plusieurs invités de partager les ressources de l'accélérateur en toute sécurité.
Conclusion
La virtualisation n'est plus seulement un concept de datacenter, c'est une technique pratique et puissante pour accroître la flexibilité, la sécurité et l'efficacité des ressources dans les systèmes d'exploitation intégrés. En choisissant avec soin un hyperviseur qui correspond aux capacités matérielles et aux exigences en temps réel, les ingénieurs peuvent consolider plusieurs charges de travail sur une seule plateforme, isoler les fonctions critiques des fonctions non critiques et simplifier la maintenance à long terme.
Que vous construisiez la prochaine génération de contrôleurs de domaine automobile, de pompes à perfusion médicale ou de passerelles industrielles IoT, la virtualisation offre un chemin pour répondre aux exigences croissantes de la complexité des logiciels sans sacrifier le déterminisme et la fiabilité des systèmes embarqués. En adoptant ces approches aujourd'hui, vous positionnez vos produits pour un avenir où l'adaptabilité est un avantage concurrentiel.