Un hipervisor integrado es un hipervisor que admite los requisitos de los sistemas integrados .
Los requisitos para un hipervisor integrado son distintos de los hipervisores destinados a aplicaciones de servidor y escritorio. Un hipervisor integrado se diseña en el dispositivo desde el principio, en lugar de cargarse posteriormente a su implementación. Mientras que los entornos de escritorio y empresariales utilizan hipervisores para consolidar el hardware y aislar los entornos informáticos entre sí, en un sistema integrado, los distintos componentes suelen funcionar de forma conjunta para proporcionar la funcionalidad del dispositivo. La virtualización móvil se solapa con la virtualización de sistemas integrados y comparte algunos casos de uso.
Los atributos típicos de la virtualización integrada incluyen eficiencia, seguridad, comunicación, aislamiento y capacidades en tiempo real. [ 1 ]
Fondo
La virtualización de software ha sido un tema importante en el ámbito empresarial desde finales de la década de 1960, pero su uso en sistemas embebidos comenzó a aplicarse a principios de la década de 2000. El uso de la virtualización y su implementación mediante un hipervisor en sistemas embebidos difieren notablemente de las aplicaciones empresariales. Una implementación eficaz de un hipervisor embebido debe abordar una serie de problemas específicos de estas aplicaciones. Entre estos problemas se incluyen la alta integración de los sistemas embebidos, la necesidad de que los bloques funcionales aislados dentro del sistema se comuniquen rápidamente, el requerimiento de un rendimiento en tiempo real y determinista, el entorno con recursos limitados y la amplia gama de requisitos de seguridad y confiabilidad.
Hipervisor
Un hipervisor proporciona uno o más entornos de virtualización de software en los que otro software, incluidos los sistemas operativos , puede ejecutarse con la apariencia de tener acceso completo al hardware del sistema subyacente, cuando en realidad dicho acceso está bajo el control total del hipervisor. Estos entornos virtuales se denominan máquinas virtuales (VM), y un hipervisor suele admitir varias VM gestionadas simultáneamente.
Clasificación
Los hipervisores se clasifican generalmente en tipo 1 o tipo 2, dependiendo de si el hipervisor se ejecuta exclusivamente en modo supervisor o en modo privilegiado (tipo 1) o si está alojado por un sistema operativo como una aplicación normal (tipo 2).
Los hipervisores de tipo 1 gestionan los recursos clave del sistema necesarios para mantener el control sobre las máquinas virtuales y facilitan una base de computación confiable (TCB) mínima. Los hipervisores de tipo 2 suelen ejecutarse como una aplicación dentro de un sistema operativo de propósito general, y dependen de los servicios del sistema operativo para gestionar los recursos del sistema. Actualmente, se suelen cargar extensiones del kernel para aprovechar el hardware con soporte para virtualización.
Hipervisor integrado
Un hipervisor integrado suele ser un hipervisor de tipo 1 que satisface los requisitos del desarrollo de sistemas integrados . Consulte las referencias [ 2 ] y [ 3 ] para obtener una explicación más detallada.
Estos requisitos se resumen a continuación.
- Un hipervisor pequeño y rápido con soporte para múltiples máquinas virtuales aisladas;
- Compatibilidad con el encapsulado ligero pero seguro de componentes de subsistemas de grano medio que interactúan fuertemente;
- Comunicación de alto ancho de banda y baja latencia entre los componentes del sistema, sujeta a una política de seguridad configurable para todo el sistema;
- Impacto mínimo en los recursos del sistema y garantías de latencia en tiempo real;
- Capacidad para implementar una política de planificación entre máquinas virtuales y brindar soporte para componentes de sistemas en tiempo real;
Implementación
Un hipervisor integrado suele proporcionar varias máquinas virtuales (VM), cada una de las cuales emula una plataforma de hardware sobre la que se ejecuta el software virtualizado. La VM puede emular el hardware nativo subyacente; en ese caso, el código integrado que se ejecuta en la máquina real se ejecutará en la máquina virtual y viceversa. La emulación del hardware nativo no siempre es posible ni deseable, por lo que puede definirse una plataforma virtual en su lugar.
Cuando una máquina virtual proporciona una plataforma virtual, el software invitado debe adaptarse para ejecutarse en este entorno; sin embargo, dado que una plataforma virtual puede definirse sin depender del hardware nativo, el software invitado que admite una plataforma virtual puede ejecutarse sin modificaciones en diversas plataformas de hardware distintas compatibles con el hipervisor.
Los hipervisores integrados emplean paravirtualización o utilizan las funciones de virtualización de la CPU subyacente. La paravirtualización es necesaria cuando el hardware no la proporciona y suele implicar modificaciones extensas en la arquitectura principal del núcleo del sistema operativo invitado. La emulación de hardware a nivel de registro es poco común en los hipervisores integrados, ya que resulta muy compleja y lenta. La naturaleza personalizada de los sistemas integrados hace que la necesidad de admitir software invitado binario sin modificar que requiera estas técnicas sea poco frecuente.
El tamaño y la eficiencia de la implementación también son factores importantes para un hipervisor integrado, ya que los sistemas integrados suelen tener recursos mucho más limitados que las plataformas de escritorio y servidores. Asimismo, es deseable que el hipervisor mantenga, en la medida de lo posible, la velocidad nativa, la respuesta en tiempo real, el determinismo y la eficiencia energética de la plataforma de hardware subyacente.
Diseño de hipervisor
Las implementaciones para aplicaciones de sistemas embebidos se han basado comúnmente en diseños de microkernel y kernel de separación pequeños , con virtualización integrada como una capacidad integral. Esto se introdujo con PikeOS en 2005. [ 4 ] Ejemplos de estos enfoques han sido producidos por empresas como Open Kernel Labs (microkernel seguido de un kernel de separación) y LynuxWorks (kernel de separación). VirtualLogix parece adoptar la postura de que un enfoque basado en un monitor de máquina virtual (VMM) dedicado sería aún más pequeño y eficiente. Este tema es objeto de un debate en curso. [ 5 ] [ 6 ] [ 7 ] Sin embargo, el punto principal en cuestión es el mismo para todas las partes de la discusión: la velocidad y el tamaño de la implementación (para un nivel de funcionalidad dado) son de suma importancia. Por ejemplo: "... los hipervisores para uso embebido deben ser capaces de operar en tiempo real, además de ser eficientes en el uso de recursos."
Requisitos de recursos
Los sistemas embebidos suelen tener recursos muy limitados debido al coste y las limitaciones técnicas del hardware. Por lo tanto, es fundamental que un hipervisor embebido sea lo más eficiente posible. Los diseños basados en microkernels y kernels de separación permiten crear hipervisores pequeños y eficientes. Así, los hipervisores embebidos suelen consumir entre varias decenas y varios cientos de kilobytes de memoria , dependiendo de la eficiencia de la implementación y el nivel de funcionalidad que ofrecen. Una implementación que requiera varios megabytes de memoria (o más) generalmente no es aceptable.
Con el pequeño TCB de un hipervisor integrado de tipo 1, el sistema puede ser altamente seguro y confiable. [ 8 ] Se pueden utilizar técnicas estándar de ingeniería de software, como inspecciones de código y pruebas sistemáticas, para reducir la cantidad de errores en una base de código tan pequeña a una fracción minúscula de los defectos que se deben esperar para una combinación de hipervisor y sistema operativo invitado que puede tener entre 100 000 y 300 000 líneas en total. [ 9 ]
Comunicación de la máquina virtual
Una de las funciones más importantes que requiere un hipervisor integrado es un mecanismo seguro de paso de mensajes, necesario para admitir la comunicación en tiempo real entre procesos. En un entorno integrado, un sistema suele tener varias tareas estrechamente acopladas, algunas de las cuales pueden requerir un aislamiento seguro entre sí. En un entorno virtualizado, el hipervisor integrado admite y garantiza este aislamiento entre múltiples máquinas virtuales. Por lo tanto, estas máquinas virtuales requerirán acceso a un mecanismo que proporcione comunicación de baja latencia entre las tareas.
Se puede utilizar un mecanismo de comunicación entre procesos (IPC) para proporcionar estas funciones, así como para invocar todos los servicios del sistema, e implementarlo de manera que se mantenga el nivel deseado de aislamiento de la máquina virtual. Además, debido a su impacto significativo en el rendimiento del sistema, dicho mecanismo IPC debe estar altamente optimizado para lograr una latencia mínima. [ 10 ]
Requisitos de hardware
Un hipervisor integrado debe controlar completamente los recursos del sistema, incluidos los accesos a la memoria, para garantizar que el software no pueda salirse de la máquina virtual. Por lo tanto, un hipervisor requiere que la CPU de destino proporcione soporte para la gestión de memoria (normalmente mediante una MMU ). Muchos procesadores integrados, como ARM , MIPS y PowerPC, han seguido el ejemplo de los fabricantes de chips para ordenadores de sobremesa y servidores al incorporar soporte de hardware para la virtualización. Sin embargo, todavía existe una gran proporción de procesadores integrados que no ofrecen dicho soporte, por lo que se requiere un hipervisor compatible con la paravirtualización .
Los procesadores ARM destacan porque la mayoría de sus diseños de procesadores de clase de aplicación admiten una tecnología llamada ARM TrustZone, que proporciona soporte de hardware para una máquina virtual privilegiada y otra no privilegiada. Normalmente, se ejecuta un sistema operativo de entorno de ejecución confiable (TEE) mínimo en el entorno seguro y un kernel nativo en el entorno no seguro.
Casos de uso
Algunos de los casos de uso más comunes para un hipervisor integrado son: [ 11 ] [ 12 ]
1. Independencia del sistema operativo
Los diseñadores de sistemas embebidos pueden contar con numerosos controladores de hardware y servicios del sistema específicos para una plataforma de destino. Si se requiere compatibilidad con más de un sistema operativo en la plataforma, ya sea de forma concurrente o consecutiva mediante un diseño de hardware común, un hipervisor embebido puede simplificar enormemente la tarea. Dichos controladores y servicios del sistema se pueden implementar una sola vez para el entorno virtualizado; posteriormente, estos servicios estarán disponibles para cualquier sistema operativo alojado. Este nivel de abstracción también permite al desarrollador de sistemas embebidos implementar o modificar un controlador o servicio, tanto en hardware como en software, en cualquier momento, sin que esto sea evidente para el sistema operativo alojado.
2. Compatibilidad con múltiples sistemas operativos en un solo procesador.
Normalmente, esto se utiliza para ejecutar un sistema operativo en tiempo real (RTOS) para funcionalidades de bajo nivel en tiempo real (como la pila de comunicación) y, al mismo tiempo, ejecutar un sistema operativo de propósito general (GPOS) , como Linux o Windows , para dar soporte a aplicaciones de usuario, como un navegador web o un calendario. El objetivo podría ser actualizar un diseño existente sin la complejidad adicional de un segundo procesador, o simplemente minimizar la lista de materiales (BoM).
3. Seguridad del sistema
Un hipervisor integrado puede proporcionar una encapsulación segura para cualquier subsistema definido por el desarrollador, de modo que un subsistema comprometido no pueda interferir con otros subsistemas. Por ejemplo, un subsistema de cifrado necesita una protección sólida contra ataques para evitar la filtración de la información que se supone que protege. Dado que el hipervisor integrado puede encapsular un subsistema en una máquina virtual, puede aplicar las políticas de seguridad necesarias para la comunicación hacia y desde dicho subsistema.
4. Fiabilidad del sistema
La encapsulación de los componentes de un subsistema en una máquina virtual (VM) garantiza que el fallo de cualquier subsistema no afecte a otros. Esta encapsulación evita que los fallos se propaguen de un subsistema en una VM a otro en una VM diferente, lo que mejora la fiabilidad. Además, permite que un subsistema se apague y reinicie automáticamente al detectar un fallo. Esto puede ser especialmente importante para los controladores de dispositivos integrados, ya que es donde se observa la mayor densidad de fallos y, por lo tanto, la causa más común de fallos del sistema operativo e inestabilidad del sistema. También permite la encapsulación de sistemas operativos que no necesariamente se diseñaron según los estándares de fiabilidad exigidos por el nuevo diseño del sistema.
5. Actualización dinámica del software del sistema
El software o las aplicaciones de los subsistemas se pueden actualizar y probar de forma segura para verificar su integridad, descargándolos a una máquina virtual segura antes de su implementación en un sistema en ejecución. Incluso si este proceso falla, el sistema puede volver a su estado anterior reiniciando el subsistema o la aplicación original, sin interrumpir el funcionamiento del sistema.
6. Reutilización de código heredado
La virtualización permite utilizar el código embebido heredado con el entorno del sistema operativo con el que se desarrolló y validó, a la vez que libera al desarrollador para usar un entorno de sistema operativo diferente en una máquina virtual independiente para nuevos servicios y aplicaciones. El código embebido heredado, escrito para una configuración de sistema particular, puede asumir el control exclusivo de todos los recursos del sistema (memoria, E/S y procesador). Este código base se puede reutilizar sin cambios en configuraciones alternativas de E/S y memoria mediante el uso de una máquina virtual que presenta un mapa de recursos y una funcionalidad coherentes con la configuración original del sistema, desacoplando así el código heredado de las particularidades de un diseño de hardware nuevo o modificado.
Cuando se dispone de acceso al código fuente del sistema operativo, la paravirtualización se utiliza habitualmente para virtualizar el sistema operativo en procesadores sin soporte de virtualización de hardware, de modo que las aplicaciones compatibles con el sistema operativo también pueden ejecutarse sin modificaciones y sin recompilación en nuevos diseños de plataformas de hardware.
Incluso sin acceso al código fuente, el código binario heredado puede ejecutarse en sistemas que utilizan procesadores con soporte para virtualización de hardware, como las tecnologías AMD-V e Intel VT , y los procesadores ARM más recientes con soporte para virtualización. [ 13 ] El código binario heredado podría ejecutarse sin modificaciones en una máquina virtual con la asignación de recursos gestionada por el hipervisor integrado, siempre que el hardware del sistema proporcione una funcionalidad equivalente.
7. Protección de la propiedad intelectual
La valiosa propiedad intelectual patentada puede requerir protección contra robos o usos indebidos cuando una plataforma integrada se envía para su posterior desarrollo por parte de (por ejemplo) un cliente OEM . Un hipervisor integrado permite restringir el acceso de otros componentes de software del sistema a una parte específica del sistema que contiene la propiedad intelectual que necesita protección.
8. Segregación de licencias de software
La propiedad intelectual del software que opera bajo un esquema de licenciamiento puede separarse de otra propiedad intelectual de software que opera bajo un esquema diferente. Por ejemplo, el hipervisor integrado puede proporcionar un entorno de ejecución aislado para software propietario que comparte el procesador con software de código abierto sujeto a la GPL. [ 14 ]
9. Migración de aplicaciones de sistemas de un solo núcleo a sistemas de múltiples núcleos.
A medida que los nuevos procesadores utilizan arquitecturas multinúcleo para aumentar el rendimiento, el hipervisor integrado puede gestionar la arquitectura subyacente y presentar un entorno de uniprocesador a las aplicaciones y sistemas operativos heredados, aprovechando al mismo tiempo el nuevo diseño de sistema multiprocesador. De esta forma, un cambio en el entorno de hardware no requiere modificar el software existente.
Productos comerciales
- Crisol de Star Lab Corp. [ 15 ]
- Hipervisor multiplataforma: permite que las aplicaciones se ejecuten de forma nativa en una única plataforma de sistema operativo de MapuSoft Technologies, Inc.
- Hipervisor OKL4: compatible con dispositivos inteligentes conectados basados en ARM (integrados y móviles). Se utiliza en aplicaciones sensibles a la defensa y la seguridad. Cuenta con soporte comercial de Cog Systems.
- Multivisor INTEGRITY [ 16 ] - Un servicio de virtualización de microkernel de tipo II del RTOS INTEGRITY con certificación de seguridad
Referencias
- ↑Virtualización para sistemas embebidos
- ↑Archivado el 2 de abril de 2018 en Wayback Machine: El papel de la virtualización en los sistemas embebidos.
- ↑Archivado el 10/10/2008 en Wayback Machine. La virtualización y los hipervisores ayudan al diseño de sistemas embebidos.
- ↑Archivado el 21/11/2010 en Wayback Machine. Cinco años reinventando el diseño de sistemas embebidos.
- ↑Núcleos pequeños frente a monitores de máquinas virtuales
- ↑¿Los microkernels de monitores de máquinas virtuales están bien diseñados?
- ↑Archivado el 11/05/2008 en Wayback Machine (Respuesta a) ¿Están bien hechos los microkernels de monitores de máquinas virtuales?
- ↑¿Su sistema es seguro?
- ↑Archivado el 2 de septiembre de 2011 en Wayback Machine Trustworthy Computing Systems .
- ↑Mejora de la comunicación entre procesos mediante el diseño del núcleo
- ↑ Heiser, Gernot (27 de noviembre de 2007). Virtualización para sistemas embebidos (PDF) (Informe técnico). págs. 10–16 .
- ↑ Strobl, Marius (2013). Virtualización para sistemas embebidos fiables . Múnich: GRIN Publishing GmbH. págs. 11–17 . ISBN 978-3-656-49071-5.
- ↑Archivado el 3 de mayo de 2013 en Wayback Machine: Extensiones de virtualización ARM
- ↑Preguntas frecuentes sobre la GPL
- ↑ Crucible - Virtualización integrada segura
- ↑ "INTEGRITY Multivisor" . www.ghs.com . Consultado el 20 de junio de 2024 .
- Sistemas embebidos
- Virtualización