Máquinas Virtuales $ ' Máquinas Virtuales en arquitecturas de microkernel Amilcar Meneses Viveros & Hugo Garcı́a Monroy Sección Computación Departamento de Ingenierı́a Eléctrica CINVESTAV-IPN México, D.F. Departamento de Aplicación de Microcomputadoras Instituto de Ciencias Universidad Autónoma de Puebla. & Amilcar Meneses Viveros % Julio 2003 1 Máquinas Virtuales $ ' Resumen Antecedentes y motivación. Definición de Máquina Virtual. Sistemas Operativos con arquitectura microkernel Ejemplo: Dos como MV sobre el microkernel Mach ejecutándose en NeXTSTEP/OpenStep. • Mach, NeXTSTEP/OpenStep y DOS. • El modo virtual en la familia de procesadores 80x86 • Diseño e implantacion de DOS como máquina virtual sobre Mach. & Amilcar Meneses Viveros % Julio 2003 2 Máquinas Virtuales $ ' Antecedentes y Motivación Existen una gran variedad de sistemas operativos, cada uno tiene ventajas y desventajas (Linux, Windows, BSD, OS/2, Mac OSX, Solaris, AIX, NeXTSTEP...). . Es deseable para los usuarios tener acceso a la tecnologı́a multiplataformas: ejecutar varios sistemas operativos concurrentemente en la misma computadora y cambiar de uno a otro sin necesidad de reiniciar la máquina Manejo de programas o recursos que no están disponibles en un sistema operativo Ejecutar concurrentemente un mismo sistema operativo (VM Servers) Pruebas de software Seguridad Para presumir... & Amilcar Meneses Viveros % Julio 2003 3 Máquinas Virtuales $ ' Antecedentes y Motivación Ejemplos de sistemas con plataformas cruzadas: Coherent Virtual Machine, Maryland University (emulador). Virtual PC, de Connectix (emulador, simulador). Blue Box - Mac OS X, DP2, Apple Inc (emulador). SimOS, Universidad de Standford (simulador) VMApp, Departamento de Aplicación de Microcomputadoras-ICUAP (emulador). VMware, de VMware (emulador). Stella, Bradford W. Mott (simuladorde Atari 2600) MAME, Nicola Salmoria, (simulador de máquinas arcade) ¿JVM, IVM, .NET? (simulador, intérprete) & Amilcar Meneses Viveros Julio 2003 % 4 Máquinas Virtuales $ ' Máquina Virtual Definición 1: “Una máquina que es capaz de realizar una operación, aunque no la produzca”. Definición 2: “Un sistema de software que ofrece una copia exacta del hardware sobre el cual, la MV, se está ejecutando”. Definición 3: “Un duplicado de hardware y software del sistema de computación real en el cual un subconjunto de instrucciones del procesador se ejecuta sobre el procesador anfitrión en modo nativo”. & Amilcar Meneses Viveros % Julio 2003 5 Máquinas Virtuales $ ' Máquina Virtual Podemos considerar la primera máquina virtual al sistema VM/370 de IBM. Programa Programa Programa VM/370 VM/370 VM/370 Manejador de sesiones VM/370 Hardware de IBM 370 & Amilcar Meneses Viveros % Julio 2003 6 Máquinas Virtuales $ ' Máquina Virtual Configuración: 1. Un S.O. anfitrión, trabajando con varios S.O. huéspedes 2. Un servidor de S.O. trabajando con varios huéspedes El S.O. anfitrión o el servidor de S.O., debe monitorear al S.O. huésped (MV). Cuando la MV trate de ejecutar una instrucción privilegiada (interrupciones, manejo de alguún dispositivo de entrada o salida, ...). ¡¡Recuerde!!: la MV ejecutará un conjunto de instrucciones de manera nativa (las instrucciones que no generan conflictos con las demás máquinas virtuales). & Amilcar Meneses Viveros % Julio 2003 7 Máquinas Virtuales $ ' Máquina Virtual Monitor de Máquina Virtual (MMV): La parte principal de una máquina virtual lo constituye el monitor de máquina virtual, que es la capa que se encarga de manejar los recursos del sistema, exportándolos a la MV. Figura 1: Capa MMV & Amilcar Meneses Viveros % Julio 2003 8 Máquinas Virtuales $ ' Máquina Virtual Figura 2: Funcionamiento y módulos de un MMV & Amilcar Meneses Viveros % Julio 2003 9 Máquinas Virtuales $ ' Máquina Virtual Figura 3: Tipos de MV & Amilcar Meneses Viveros % Julio 2003 10 Máquinas Virtuales $ ' Máquina Virtual Ejecución de instrucciones privilegiadas Reemplazar el código por instrucciones no privilegiadas para emular los efectos que la instruccion privilegiada ocasiona. Detectar la ejecución de la instrucción privilegiada y emular/simular la instrucción en turno. Las instrucciones de entrada y salida deben darse por los servicios del S.O.: & Amilcar Meneses Viveros % Julio 2003 11 Máquinas Virtuales $ ' Sistemas Operativos con arquitectura de microkernel Los sistemas operativos tradicionales (monolı́ticos) pueden dividirse en uno o más servidores de Sistema Operativo a nivel de usuario y un microkernel. Los servidores proporcionan la funcionalidad tradicional de los sistemas operativos —el manejo de archivos, procesos y trabajo en redes—. El microkernel proporciona un pequeño número de servicios fundamentales —el manejo de memoria virtual, comunicación entre procesos y manejo de tareas-hilos—. Tipos de microkernel: Mach (darwin), Chorus, V Kernel y Spring. S.O a partir de microkernel: Debian, NeXTSTEP/OpenStep, Mac OS X, y OS/F2. & Amilcar Meneses Viveros % Julio 2003 12 Máquinas Virtuales $ ' Sistemas Operativos con arquitectura de Microkernel & Amilcar Meneses Viveros % Julio 2003 13 Máquinas Virtuales $ ' DOS como MV sobre el microkernel de Mach, ejecutándose concurrentemente con NeXTSTEP/OpenStep Se ejecutan en arquitecturas Intel i386. NeXTSTEP/OpenStep está implantado sobre Mach. Los procedores de Intel, a partir del 386 incorporan el modo de ejecución virtual. NeXTSTEP/OpenStep es el S.O anfitrión, DOS es el huésped. & Amilcar Meneses Viveros % Julio 2003 14 Máquinas Virtuales $ ' DOS como MV... Microkernel Mach Desarrollado en CMU, por el grupo encabezado por Richard Rashid. Versiones para Motorola 68040, SPARC, Intel i386, y PowerPC. Se encarga de manejar procesos, comunicación entre procesos y memoria virtual. Intérprete de UNIX (BSD 4.2) Abstracciones de Mach: tareas, hilos, puertos, mensajes y objetos de de memoria. Proceso UNIX = traea + hilo La memoria virtual setá diseñada para uniprocesadores o para manejo de memoria compartida en arquitecturas paralelas. La memoria virtual asigna 4MB de memoria a cada tarea mach. & Amilcar Meneses Viveros % Julio 2003 15 Máquinas Virtuales $ ' DOS como MV... El kernel se encarga de manejar las excepciones. El manejo lo puede hacer el propio kernel o delegar esta responsabilidad al un proceso del usuario. • Acceso ilegal (errores de bus, violaciones de protección y segmentación). • Errores aritméticos (sobreflujo, división por cero, etc.). • Instrucciones del hardware destinadas para el soporte de facilidades como emulación, depuración y detección de errores. Proporciona un conjunto de llamados al sistema, para manejo de de los hilos a través de los registros propios de cada arquitectura. & Amilcar Meneses Viveros % Julio 2003 16 Máquinas Virtuales $ ' DOS como MV... NeXTSTEP/OpenStep NeXTSTEP/OpenStep es un ambiente de desarrollo orientado a objetos que corre sobre el micronkernel de Mach. & Amilcar Meneses Viveros % Julio 2003 17 Máquinas Virtuales $ ' DOS como MV... DOS Se ejecuta en arquitecturas “clones” del IBM-PC, basado en el 8088. & Amilcar Meneses Viveros % Julio 2003 18 Máquinas Virtuales $ ' DOS como MV... DOS El sistema DOS es monólitico, y se almacena en el primer megabyte de memoria. & Amilcar Meneses Viveros % Julio 2003 19 Máquinas Virtuales $ ' DOS como MV... La familia de procesadores de Intel 80x86 Procesador de 32 bits. Manejo de memoria virtual (64 terabytes) Manejo de multiprocesos Sistema de protecciones: jerarquia de cuatro niveles de preferencia: 0: kernel, 1: servicios del sistema, 2:extensiones al SO, 3: aplicaciones del usuario. Tres modos de ejecucion: protegido, real, virtual. Modo virtual: se ejecuta una tarea (del modo protegido y llamada tarea virtual) como si fuera el 8086. Detección de ejecución de instrucciones especiales a nivel hardware cuando se ejecuta un proceso en modo virtual. & Amilcar Meneses Viveros % Julio 2003 20 Máquinas Virtuales $ ' DOS como MV... Instrucciones que generan excepciones en modo virtual Cuando un microprocesador está corriendo en modo virtual 8086, existen instrucciones que son sensitivas al IOPL. CLI, STI, PUSH, POPF, INT n, IRET, IN, OUT, INS, y OUTS Estas instrucciones son sensitivas a el IOLP para dar oportunidad al monitor virtual 8086 de emular su ejecución. & Amilcar Meneses Viveros % Julio 2003 21 Máquinas Virtuales $ ' DOS como MV... Una tarea se ejecuta en modo virtual cuando se enciende la bandera V M del registro de banderas. Figura 4: Entrando y saliendo del modo virtual & Amilcar Meneses Viveros % Julio 2003 22 Máquinas Virtuales $ ' DOS como MV... La organización de DOS como aplicación de NeXTSTEP Generar una tarea que sirva como monitor de DOS. Utilizar el modo virtual de ejecución del procesador (Intel): crear un hilo mach que se ejecute en modo virtual 8086. Crear la máquina DOS en el primer megabyte de una tarea Mach. Asignarle un MMV (encargado del manejo de excepciones). & Amilcar Meneses Viveros % Julio 2003 23 Máquinas Virtuales $ ' DOS como MV... Diseño de la implantación de la MV DOS en Mach. & Amilcar Meneses Viveros % Julio 2003 24 Máquinas Virtuales $ ' DOS como MV... Diseño de la implantación de la MV DOS en Mach-NeXTSTEP como aplicación multihilos. & Amilcar Meneses Viveros % Julio 2003 25 Máquinas Virtuales $ ' DOS como MV... Vista de la aplicación VM.app. & Amilcar Meneses Viveros % Julio 2003 26 Máquinas Virtuales $ ' Resultados, conclusiones y trabajo furturo Dispositivo Simulador Emulador Emulador con Mach-NeXTSTEP CPU Proceso CPU CPU en MV8086 Arq. trap Señales Señales Manejo de excepciones Inst. privilegiadas Simulación Sim. o ejec. Simulación directa E/S Arch. especiales Arch. especiales Arch. especiales Objetos & Amilcar Meneses Viveros % Julio 2003 27 Máquinas Virtuales $ ' Trabajo a futuro Ampliar la simulacion de dispositivos de E/S. Ampliar el trabajo para la ejecución de Windows... aunque Exportar el trabajo a otras plataformas con tecnologia de microkernel Mach: Rhapsody, GNUStep y Debian. Generar un MMV general para ejecutar NeXTSTEP/OpenStep en Debian. & Amilcar Meneses Viveros % Julio 2003 28