Hyperviseur pour système embarqué
Les hyperviseurs pour systèmes embarqués désignent des dispositifs de virtualisation adaptés aux spécificités et aux contraintes des systèmes embarqués. Le fonctionnement de ces hyperviseurs diffère majoritairement en fonction de l'architecture de processeur, du cas d'utilisation et des besoins du système embarqué visé.
La recherche dans ce domaine s'est principalement développée au début des années 2010 afin de répondre aux nouveaux besoins des smartphones à la suite de la rapide évolution de leur capacité de calcul.
Malgré leurs différences de fonctionnement, les hyperviseurs destinés aux systèmes embarqués se retrouvent sur un certain nombre de concepts[évasif]. Plusieurs technologies ont été proposées et parfois concrétisées pour les différentes architectures et cas d'utilisation des systèmes embarqués.
Présentation générale
[modifier | modifier le code]Historique
[modifier | modifier le code]L'intérêt pour la virtualisation des systèmes embarqués s'est réellement concrétisé lorsque les capacités techniques des smartphones se sont rapprochées de celles des serveurs et des ordinateurs de bureau[1],[2],[3].
Gernot Heiser (en) a défini en 2008 le rôle de la virtualisation des systèmes embarqués en montrant que ces derniers disposaient de caractéristiques de plus en plus proches des systèmes où la virtualisation est traditionnellement utilisée[4], tout en notant qu'ils conservaient certaines spécificités intrinsèques[5]. Il présente les avantages pouvant être apportés par la virtualisation des systèmes embarqués[6], en citant principalement la sécurité. Il remarque cependant que l'architecture des systèmes embarqués impose certaines contraintes[7], notamment le besoin d'un partage efficace des ressources ainsi que d'une virtualisation simple, légère et dont l'empreinte soit la plus faible possible. Il propose pour cela une implémentation dédiée qui est OKL4[8], à base de micronoyau L4[9].
Par la suite, d'autres approches ont été proposées, telles que XtratuM (en)[10] pour les systèmes critiques temps réel.
Certaines de ces approches se sont commercialement concrétisées, avec par exemple en 2009 le Motorola Evoke QA4 reposant sur un hyperviseur L4[11]. Gernot Heiser a, à la suite de ses travaux de recherche, fondé Open Kernel Labs (en), une entreprise développant des hyperviseurs et des systèmes d'exploitation dédiés aux systèmes embarqués.
Domaines d'application
[modifier | modifier le code]La recherche sur la virtualisation des systèmes embarqués s'est principalement concentrée sur les smartphones[12],[13],[14],[15],[16].
Elle trouve cependant d'autres utilisations, par exemple dans le domaine de l'aéronautique et de l'astronautique[17], ou encore de l'automobile[18]. Une autre application est celle du domaine médical[19].
Enjeux
[modifier | modifier le code]Par rapport aux systèmes où la virtualisation est traditionnellement utilisée, les systèmes embarqués ont certaines spécificités qui peuvent avoir une incidence sur leur potentielle virtualisation.
Parmi elles, on peut noter :
- des contraintes d'énergie[5] : de nombreux systèmes embarqués reposent sur une batterie et disposent donc d'une source d'énergie limitée. L'hyperviseur ne doit donc pas ajouter une charge trop importante[20].
- une mémoire et une puissance de calcul encore relativement faibles.
- des besoins de sécurité :
- par exemple avec les smartphones, auxquels des données de plus en plus confidentielles sont confiées : données personnelles, paiement à l'aide de la technologie NFC[21], partage d'un smartphone entre une utilisation personnelle et professionnelle, etc. La sécurité du système ne doit pas être compromise ; la virtualisation pourrait au contraire être utilisée pour l'améliorer[22].
- dans le domaine de l'automobile, de l'astronautique ou de la médecine, où les responsabilités confiées aux systèmes embarqués sont critiques. L'ajout d'une couche de virtualisation ne doit pas compromettre la fiabilité du système déjà existant.
- une latence très faible[23] : certains systèmes embarqués disposent de contraintes de temps réel. L'hyperviseur ne doit pas déséquilibrer l'ordonnancement du temps de calcul processeur ; certaines tâches critiques doivent pouvoir fonctionner immédiatement dans tous les cas.
- des architectures de processeur différentes : principalement les processeurs ARM, MIPS, PowerPC, ou encore x86 basse consommation. Les différences entre ces architectures peuvent induire des solutions de virtualisation totalement différentes[24],[25],[26].
- des cas d'utilisation différents : pour certains systèmes, la virtualisation apporte peu d'intérêt, ou le système est trop minimaliste pour que la virtualisation puisse être envisagée[27].
Concepts
[modifier | modifier le code]Plusieurs implémentations techniques ont été proposées et parfois concrétisées. Ces différentes approches se retrouvent cependant sur un certain nombre de concepts.
Abstraction de l'architecture matérielle
[modifier | modifier le code]La virtualisation permet de disposer d'une couche d'abstraction au-dessus du matériel ; ainsi, l'environnement de développement peut être vu comme une machine virtuelle, ce qui facilite sa maintenance par rapport à un environnement dépendant du matériel.
Ceci est d'autant plus pertinent dans le domaine des smartphones, où le matériel évolue rapidement, et où un même système d'exploitation peut être utilisé sur un matériel totalement différent (ce qui est par exemple le cas d'Android).
Séparation des composants logiciels
[modifier | modifier le code]![](http://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Isolation_des_composants_par_le_biais_d%27un_hyperviseur_sur_les_syst%C3%A8mes_embarqu%C3%A9s.svg/220px-Isolation_des_composants_par_le_biais_d%27un_hyperviseur_sur_les_syst%C3%A8mes_embarqu%C3%A9s.svg.png)
Un des principaux avantages apportés par la virtualisation des systèmes embarqués est la possibilité d'isoler ses composants.
De cette façon, on peut avoir d'un côté le système d'exploitation temps réel (en anglais RTOS, pour Real-Time Operating System), et de l'autre un système d'exploitation utilisateur, gérant plutôt la partie applicative. De cette manière, une faille présente dans une application ne pourra avoir aucune incidence sur le RTOS.
Communication intercomposants
[modifier | modifier le code]Les systèmes virtualisés et l'hyperviseur doivent pouvoir communiquer entre eux de façon simple et efficace.
En effet, la plupart des systèmes embarqués ont des ressources limitées et disposent de contraintes de temps réel : l'hyperviseur ne doit donc pas prendre une part trop importante dans le temps de calcul processeur, et la méthode de communication entre les différents composants doit rester légère.
Implémentations
[modifier | modifier le code]La virtualisation des systèmes embarqués doit prendre en compte certaines limites et spécificités par rapport aux systèmes de virtualisation traditionnelle. Plusieurs approches techniques ont donc été proposées.
Mésovirtualisation
[modifier | modifier le code]La mésovirtualisation (traduction du terme original anglais mesovirtualization) est un concept de virtualisation légère proposé dès 2007 par Megumi Ito et Shuichi Oikawa[28].
Elle se dit minimaliste[29], dans le sens où l'hyperviseur est petit et où le système hôte n'a pas besoin de lourdes modifications[29]. Elle se dit aussi performante[30], notamment car l'hyperviseur n'exécute qu'un nombre réduit d'instructions sur le processeur[29].
Cependant, la recherche sur la mésovirtualisation n'a jamais reçu d'application concrète. Elle ne concernait aussi que l'architecture x86[31].
Xen
[modifier | modifier le code]![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/10/Arm_5250_full_1.jpg/220px-Arm_5250_full_1.jpg)
Xen est une solution de virtualisation populaire sur les ordinateurs de bureau et les serveurs.
Cependant, cette virtualisation repose principalement sur le fonctionnement de l'architecture x86. Les systèmes embarqués reposent plutôt sur d'autres processeurs tels que ARM. La présence d'instructions privilégiées sur cette architecture rend impossible l'utilisation de la technique trap and emulate de Xen[26],[32].
L'utilisation d'une architecture Xen reste possible sur les systèmes embarqués, mais reste moins performante que ce que peut proposer L4. L'apparition d'instructions dédiées à la virtualisation dans certains processeurs ARM tels que le Cortex-A15 laisse cependant envisager une utilisation de Xen réellement adaptée aux systèmes embarqués.
Architecture de type L4
[modifier | modifier le code]L'approche de Gernot Heiser est d'avoir un hyperviseur le plus réduit possible, pour plusieurs raisons[5] :
- par mesure de simplicité (ne pas ajouter de complexité supplémentaire) ;
- par souci de sécurité (un hyperviseur n'apporte de la sécurité que s'il est plus sécurisé que le système hôte) ;
- pour les performances et la réduction de consommation mémoire[2] ;
- pour d'autres apports, tels que la vérification formelle.
Il propose donc une architecture à base de micronoyau L4, très performant et dont le coût de passage de messages est très faible.
Une comparaison entre cette architecture et une architecture Xen dans le cadre des systèmes embarqués a donné l'avantage à l'architecture L4 au niveau des performances et de la sécurité[33].
XtratuM
[modifier | modifier le code]Certains domaines d'application des systèmes embarqués, tels que l'aéronautique, font de la prévisibilité un élément critique.
L’hyperviseur XtratuM (en) a été élaboré spécialement pour des systèmes critiques temps réel qui utilisent des applications spatiales sécurisées basées sur le standard ARINC 653. C’est un hyperviseur bas niveau qui effectue un partage de la mémoire et du processeur, permettant ainsi à plusieurs applications de fonctionner indépendamment[10].
Il repose sur le principe de la paravirtualisation, qui est adaptée aux systèmes embarqués ayant des contraintes de temps réel[34].
XtratuM a été conçu pour l'architecture SPARC V8 du processeur Leon3[35].
XtratuM est conçu en trois couches[34] :
- la couche liée au matériel : elle contient les pilotes nécessaires et est isolée du reste par la Couche d'abstraction matérielle.
- la couche du service interne : elle n’est pas accessible depuis les partitions. Elle contient la base de la bibliothèque standard du C et un ensemble de structures de données. Le programme d'amorçage en fait partie.
- la couche du service de virtualisation : elle permet aux partitions d’utiliser les services de paravirtualisation.
Une partition est un environnement d’exécution géré par XtratuM comprenant un ou plusieurs processus implémentés par un système d’exploitation. Les partitions disposent d’un accès aux ressources processeur déterminé par une durée fixe choisie en fonction de leur besoin. La planification de cycles alloue le temps nécessaire à chaque partition, une à la fois.
XtratuM fonctionne avec deux types de partitions : les partitions normales et les partitions systèmes. Les partitions normales sont limitées tandis que les partitions systèmes permettent de gérer et de surveiller l’état du système et des autres partitions[34],[36].
Son architecture interne est composée[34] :
- d'une gestion de la mémoire ;
- d'une planification de cycles fixes;
- d'une gestion d’interruption ;
- d'une gestion de l’horloge et des timers ;
- d'une gestion de la communication inter-partitions ;
- d'un mécanisme de surveillance ;
- d'un mécanisme de suivi.
Références
[modifier | modifier le code]- Heiser 2011, p. 901
- Chen 2011, p. 2834
- Aguiar 2010, p. 2
- Heiser 2008, p. 11
- Heiser 2008, p. 12
- Heiser 2008, p. 12-13
- Heiser 2008, p. 13-14
- Heiser 2008, p. 15
- Heiser 2008, p. 14-15
- Crespo 2010, p. 67
- Gu 2012, p. 282
- Chen 2011
- Brakensiek 2008
- Lange 2011
- Gudeth 2011
- Acharya 2009
- Crespo 2010
- Oh 2012, p. 1100
- Aguiar 2010, p. 11
- Chen 2011, p. 2838
- Heiser 2011, p. 903
- Hwang 2008, p. 257
- Gu 2012, p. 277
- Mittal 2013, p. 445
- Aguiar 2010, p. 5
- Chen 2011, p. 2836
- Aguiar 2010, p. 6
- Ito 2007, p. 496
- Ito 2007, p. 499
- Ito 2007, p. 504
- Ito 2007, p. 497
- Hwang 2008, p. 258
- Iqbal 2010, p. 15
- Crespo 2010, p. 68
- Gu 2012, p. 278
- Crespo 2010, p. 69
Bibliographie
[modifier | modifier le code] : document utilisé comme source pour la rédaction de cet article.
- (en) Gernot Heiser, « The Role of Virtualization in Embedded Systems », IIES '08, , p. 11–16 (ISBN 978-1-60558-126-2, DOI 10.1145/1435458.1435461)
- (en) Alexandra Aguiar et Fabiano Hessel, « Embedded Systems' Virtualization: The Next Challenge? », Rapid System Prototyping, , p. 1–7 (ISBN 978-1-4244-7073-0, DOI 10.1109/RSP.2010.5656430)
- (en) Gernot Heiser, « Virtualizing Embedded Systems – Why Bother? », DAC '11 Proceedings of the 48th Design Automation Conference, , p. 901–905 (ISBN 978-1-4503-0636-2, DOI 10.1145/2024724.2024925)
- (en) Xiaoyi Chen, « Smartphone Virtualization: Status and Challenges », Electronics, Communications and Control (ICECC), 2011 International Conference, , p. 2834–2839 (ISBN 978-1-4577-0320-1, DOI 10.1109/ICECC.2011.6066716)
- (en) Jörg Brakensiek, Axel Dröge, Martin Botteck, Hermann Härtig et Adam Lackorzynski, « Virtualization as an enabler for security in mobile devices », IIES '08 Proceedings of the 1st workshop on Isolation and integration in embedded systems, , p. 17–22 (ISBN 978-1-60558-126-2, DOI 10.1145/1435458.1435462)
- (en) Aashish Mittal, Dushyant Bansal, Sorav Bansal et Varun Sethi, « Efficient Virtualization on Embedded Power Architecture® Platforms », ASPLOS '13, , p. 445–458 (ISBN 978-1-4503-1870-9, DOI 10.1145/2451116.2451163)
- (en) A. Crespo, I. Ripoll et M. Masmano, « Partitioned Embedded Architecture Based on Hypervisor: The XtratuM Approach », Dependable Computing Conference (EDCC), 2010 European, , p. 67–72 (ISBN 978-0-7695-4007-8, DOI 10.1109/EDCC.2010.18)
- (en) Joo-Young Hwang, Sang-Bum Suh, Sung-Kwan Heo, Chan-Ju Park, Jae-Min Ryu, Seong-Yeol Park et Chul-Ryun Kim, « Xen on ARM: System Virtualization Using Xen Hypervisor for ARM-Based Secure Mobile Phones », Consumer Communications and Networking Conference, , p. 257–261 (ISBN 978-1-4244-1456-7, DOI 10.1109/ccnc08.2007.64)
- (en) Megumi Ito et Shuichi Oikawa, « Mesovirtualization: Lightweight Virtualization Technique for Embedded Systems », Lecture Notes in Computer Science Volume 4761, , p. 496–505 (ISBN 978-3-540-75663-7, DOI 10.1007/978-3-540-75664-4_52)
- (en) Matthias Lange, Steffen Liebergeld, Adam Lackorzynski, Alexander Warg et Michael Peter, « L4Android: a generic operating system framework for secure smartphones », SPSM '11 Proceedings of the 1st ACM workshop on Security and privacy in smartphones and mobile devices, , p. 39–50 (ISBN 978-1-4503-1000-0, DOI 10.1145/2046614.2046623)
- (en) Kevin Gudeth, Matthew Pirretti, Katrin Hoeper et Ron Buskey, « Delivering secure applications on commercial mobile devices: the case for bare metal hypervisors », SPSM '11 Proceedings of the 1st ACM workshop on Security and privacy in smartphones and mobile devices, , p. 33–38 (ISBN 978-1-4503-1000-0, DOI 10.1145/2046614.2046622)
- (en) Alexandra Aguiar, Carlos Moratelli, Marcos L.L. Sartori et Fabiano Hessel, « A virtualization approach for MIPS-based MPSoCs », Quality Electronic Design (ISQED), 2013 14th International Symposium, , p. 611–618 (ISBN 978-1-4673-4951-2, DOI 10.1109/ISQED.2013.6523674)
- (en) Yuki Kinebuchi, Midori Sugaya, Shuichi Oikawa et Tatsuo Nakajima, « Task Grain Scheduling for Hypervisor-Based Embedded System », High Performance Computing and Communications, 2008. HPCC '08, , p. 190–197 (ISBN 978-0-7695-3352-0, DOI 10.1109/HPCC.2008.144)
- (en) Tsung-Han Lin, Y. Kinebuchi, A. Courbot, H. Shimada, T. Morita, H. Mitake, Chen-Yi Lee et T. Nakajima, « Hardware-Assisted Reliability Enhancement for Embedded Multi-core Virtualization Design », Object/Component/Service-Oriented Real-Time Distributed Computing (ISORC), , p. 241–249 (ISSN 1555-0885, DOI 10.1109/ISORC.2011.37)
- (en) Yuan-Cheng Lee, Chih-Wen Hsueh et Rong-Guey Chang, « Inline Emulation for Paravirtualization Environment on Embedded Systems », Embedded and Real-Time Computing Systems and Applications (RTCSA), , p. 388–392 (ISSN 1533-2306, DOI 10.1109/RTCSA.2011.50)
- (en) Zonghua Gu et Qingling Zhao, « A State-of-the-Art Survey on Real-Time Issues in Embedded Systems Virtualization », Journal of Software Engineering and Applications, , p. 277–290 (DOI 10.4236/jsea.2012.54033)
- (en) Soo-Cheol Oh, KwangWon Koh, Chei-Yol Kim, KangHo Kim et SeongWoon Kim, « Acceleration of Dual OS Virtualization in Embedded Systems », Computing and Convergence Technology (ICCCT), , p. 1098–1101 (ISBN 978-1-4673-0894-6)
- (en) Asif Iqbal, Nayeema Sadeque et Rafika Ida Mutia, « An Overview of Microkernel, Hypervisor and Microvisor Virtualization Approaches for Embedded Systems », Department of Electrical and Information Technology, Lund University, , p. 1–15
- (en) A. Acharya, J. Buford et V. Krishnaswamy, « Phone virtualization using a microkernel hypervisor », Internet Multimedia Services Architecture and Applications (IMSAA), , p. 1-6 (ISBN 978-1-4244-4793-0, DOI 10.1109/IMSAA.2009.5439460)