next up previous contents
Next: Los Monitores de Máquinas Up: Creación de Hilos Virtuales Previous: Contents

Introducción

Las Máquinas Virtuales contituyen un medio para proporcionar a un ambiente determinado de un sistema operativo, la posibilidad de ejecutar software que está disponible en otra plataforma --esta plataforma es otro sistema operativo--. Definimos a una Máquina Virtual como ``un sistema de software que ofrece una copia exacta del hardware sobre el cual, la Máquina Virtual, se está ejecutando''. Este enfoque de Máquina Virtual permite que se ejecuten, de manera concurrente, varios Sistemas Operativos en una misma plataforma de hardware. La parte central de una Máquina Virtual es el Monitor de Máquina Virtual. Los Monitores de Máquinas Virtuales son programas que dan el soporte para la ejecución de las Máquinas Virtuales sobre alguna platafoma determinada.

Es frecuente confundir a una Máquina Virtual con un Simulador. La diferencia sustancial entre Simulador y Máquina Virtual, es que el simulador realiza una simulación de todas y cada una de las instrucciones del CPU --lo que permite que se ejecuten en distintas plataformas de hardware--, mientras que en una Máquina Virtual, una buena parte de sus instrucciones se ejecutan en el CPU anfitrión en forma nativa -esto es, sólo corren sobre la plataforma a la que están duplicando--.

El desarrollo de los Monitores de Máqunas Virtuales se ha beneficiado de las tecnologías de micronúcleo, para la construcción de sistemas operativos, y del desarrollo de arquitecturas de familias de procesadores, como el caso de la familia 80x86 de Intel[24]. La combinación de ambas tecnologías le permiten desarrollar Monitores de Máquinas Virtuales seguros [24] y, gracias a la arquitectura de micronúcleo, se permite la ejecución de estos Monitores a nivel de usuario.

Ejecutar el sistema operativo DOS en el ambiente de desarrollo de NeXTSTEP es un buen ejemplo de una Máquina Virtual, cuyo Monitor se construye con los llamados al sistema que ofrece el micronúcleo de Mach (sobre el cual está desarrollado NeXTSTEP), y que se ejecuta sobre el procesador 80486 (en adelante) de INTEL.

Los procesadores de INTEL ofrecen la posibilidad de Emular al procesador 8086, a través de uno de sus modos de operación: el modo virtual 8086 -esto es, permiten utilizar un proceso en modo protegido para que ejecute las instrucciones del 8086 y genere las direcciones de memoria en el primer megabyte de memoria la tarea Mach, como si fuera la memoria de la PC--. Note que hablamos de una emulación, y no de una simulación, ya que con la emulación, el CPU se comporta como si fuera un 8086, y en una simulación, se debería simular cada una de las instrucciones de la máquina 8086 (y no es el caso). Por esta razón, es factible tener un emulador que ejecute a DOS sobre cualquier sistema operativo que corra, sobre esta familia de procesadores, en modo protegido.

NeXTSTEP es un ambiente de desarrollo orientado a objetos que está construido sobre el micronúcleo de Mach. El micronúcleo Mach se ejecuta en modo protegido en los procesadores de INTEL, 80386 en adelante . Este micronúcleo se encarga del manejo de tareas e hilos; del manejo memoria virtual; y del manejo de la comunicación entre procesos. La construcción de sistemas operativos utilizando la tecnología de micronúcleo se basa en el desarrollo de distintos servidores que hacen las diferentes tareas que tiene a su cargo el sistema operativo (por ejemplo, servidores para el manejo del sistema archivos, manejo de video, y manejo de entrada y salida, entre otros).

La ejecución de una Máquina Virtual que soporte a DOS en Mach y NeXTSTEP, se puede plantear como la ejecución de código 8086 por un hilo que corra en el modo virtual de ejecución V86 de el procesador 80486 de INTEL --esto es, para que el CPU se comporte como el 8086--, y de un conjunto de servidores para el manejo de archivos, manejo de entrada y salida, y para el Monitor de Máquina Virtual de DOS.

En este trabajo de tesis se ha implantado un hilo Mach que corre en el modo virtual 8086 --que fungirá como el hilo de ejecución de la Máquina Virtual--, y una parte del Monitor de Máquina Virtual, para ayudar a la ejecución del hilo en modo virtual con el manejo de recursos del sistema. Adicionalmente se ha planteado el diseño de una Máquina Virtual que ejecute a DOS sobre NeXTSTEP.

Para probar la ejecución del hilo en modo virtual, y de su monitor correspondiente, se ha creado una aplicación NeXTSTEP (VM.app) para monitorear la ejecución de programas 8086.

Note que para la ejecución de DOS en Mach se realiza una emulación y no una simulación, ya que en una simulación, el SO da la apariencia de ejecutarse sobre una máquina que no existe, y en la emulación el procesador 80486 se comportará como si fuera un 8086. Sin embargo, se deben utilizar algunas técnicas de simulación para proporcionarle a DOS, recursos que no tendrá disponibles al ejecutarse sobre un SO que trabaja el procesador en modo protegido.

Esta tesis esta dividida en 7 capítulos. En el primer capítulo se realiza una discusión de los monitores de máquinas virtuales y los mecanismos de simulación de sistemas operativos. En los tres capítulos siguientes se realiza la descripción del manejo de del modo virtual en la familia de procesadores 80x86 de INTEL; del sistema operativo DOS y del hardware de la IBM-PC; y del micronúcleo Mach. En los tres capítulos finales se plantea la arquitectura de la Máquina Virtual DOS para que se ejecute como una aplicación de NeXTSTEP; la implantación del hilo virtual 8086 con su proceso monitor asociado; y se discute la aplicación de NeXTSTEP VM para monitorear la ejecución del hilo virtual 8086. Finalmente se presentan los logros y conclusiones obtenidos en el desarrollo de este trabajo.


next up previous contents
Next: Los Monitores de Máquinas Up: Creación de Hilos Virtuales Previous: Contents
Amilcar Meneses
2002-10-03