Una mirada práctica a los Micro-Kernels y los Virtual Machine Monitors François Armand, Michel Gien INFORMATICA III DI PIETRO, Franco RODRIGUEZ, Matías VICARIO, Luciano
Introducción En este papper se muestran dos miradas diferentes de virtualización en sistemas embebidos. Vamos a comparar la utilización de micro-kernel contra la de Monitor de Máquina Virtual, también denominados, hypervisores. Los criterios utilizados para evaluar dichos puntos de vista son: La performance. La re utilización de software preexistente.
Introducción La coexistencia de varios SO en la misma plataforma de hardware es uno de los propósitos principales del Software de Virtualización de Hardware. Esto es posible mediante una imagen virtual del hardware a cada sistema operativo. Cada uno de los SO cree que está corriendo solo.
Monitor de máquinas virtuales / Hypervisors El término Monitor de máquinas Virtuales indica un software que controla y virtualiza el hardware para poder hacer uso del mismo en distintos SO. Para realizar esto, se encarga de engañar al SO, haciéndole creer que se dispone del hardware para el cual el SO fue diseñado.
Monitor de máquinas virtuales / Hypervisors El hypervisor provee de una capa extra de manejo de hardware que multiplexa el uso real del mismo entre varios SO o distintas instancias del mismo SO. En algunos dispositivos se utilizan los hypervisors con el fin de poder ejecutar de manera simultanea un SO que admite funcionamiento en tiempo real y uno que no.
Micro-Kernels Estos tienden a la modularización de la codificación. Manteniendo un código optimizado a costo de trabajar sólo con funciones básicas. Como ejemplo, QNX, evolucionó de un kernel embebido de tiempo real a un SO basado en Micro-Kernel que también soporta tareas de tiempo real.
Micro-Kernels Los Micro-Kernels tienen la meta de mantener las cosas lo más simple posible, implementando solo mecanismos de bajo nivel. La comunicación entre procesos (IPC) está implementada de la misma manera y se utiliza para la comunicación entre SOs y SO y el Micro-Kernel. Si bien la arquitectura propuesta por los Micro-Kernels es modular y elegante, agregan complejidad al diseño del sistema por proveer mayor cantidad de APIs.
Distintos enfoques para Virtualización Virtualización transparente: Es ejecutar múltiples SO simultáneamente en el mismo procesador sin modificarlos. Para-virtualización: Una plataforma enfocada en paravirtualización permite que el monitor de la máquina virtual (VMM) sea más simple y de esta manera se optimice el rendimiento a expensas de perder transparencia
Distintos enfoques para Virtualización Hosted Virtualization: Es una capa de Virtualización que está instalada sobre el SO host. El mismo tiene acceso directo al hardware y es responsable de manejar los servicios básicos del SO invitado. Este tipo de Virtualización crea un ambiente de máquina virtual y coordina las llamadas a CPU, memoria disco, red, y otros recursos a través del SO host. Native Virtualization: No requiere la presencia de un SO host y tiene acceso directo al Hardware.
Micro-Kernels vs Hypervisors A continuación describiremos las diferencias entre ambos para la ejecución de servicios Tareas: Micro-kernels manejan las tareas del SO invitado. Esto requiere de grandes modificaciones en el SO que permitan al micro-kernel el manejo de las mismas. Existe entonces la necesidad de contar con las tareas tanto en el SO, como en el micro-kernel, produciendo un desaprovechamiento de recursos. Hypervisors en cambio, desconocen las tareas que se realizan en el SO invitado. Esta independencia evita la sobrecarga de tareas y produce un mejor aprovechamiento de recursos.
Micro-Kernels vs Hypervisors Planificación: Micro-kernels proveen servicios para programar las tareas, reemplazando los del SO invitado por los suyos. El SO invitado deberá ser extremadamente modificado para permitir esto. Con hypervisors, cada SO invitado mantiene su propia política de planificación. Esto permite una política de tiempo compartido entre los SO invitados, dando una prioridad mayor a los SO de tiempo real.
Micro-Kernels vs Hypervisors Memoria: Los micro-kernels gestionan memoria real y virtual para las tareas que deban soportar. El micro-kernel está involucrado en cada cambio en memoria. El SO invitado debe ser fuertemente modificado para permitir esto. Los hypervisors solo disponen de la memoria concedida a la respectiva máquina virtual (SO invitado).
Micro-Kernels vs Hypervisors Comunicaciones Con un micro-kernel, no existe otro modo de comunicación entre SOs más que utilizando el IPC (Inter-Process Communication) del micro-kernel. Los hypervisors permiten la comunicación de SOs por medio de mecanismos de muy bajo nivel, como ser el uso compartido de memoria como buffers para el intercambio de datos.
Micro-Kernels vs Hypervisors Device Drivers Los micro-kernels suelen detectar interrupciones de periféricos y manejarlas a través del IPC del micro-kernel. Los hypervisors para sistemas embebidos, permiten a los SOs invitados ejecutar sus DD nativos.
Conclusiones El uso de hypervisors en sistemas embebidos es la mejor opción para la ejecución de SOs. Una ventaja de la tecnología de virtualización radica en soportar distintos ambientes de ejecución en el mismo hardware con mínimos cambios el software existente.
Conclusiones Los SO con Micro-Kernels deben ser utilizados cuando uno puede empezar desde cero e introducir un nuevo SO en dispositivos que sean capaces de ejecutar aplicaciones muy diferentes. Los hypervisors deben utilizarse cuando se quiere aprovechar el software ya diseñado del SO nativo o extender las capacidades de los dispositivos basados en SO ya establecidos.