Sistemas operativos modernos

Cuando un programa CMS ejecuta una llamada al sistema, ésta salta (mediante TRAP) al sistema operativo en su propia máquina virtual, no a VM/370, como haría si se estuviera ejecu­ tando en una máquina real, no virtual. Luego CMS emite las instrucciones de E/S normales pa­ ra leer su disco virtual, o lo que sea que se necesite para ejecutar la llamada. VM/370 atrapa estas instrucciones de E/S y luego las ejecuta como parte de su simulación del hardware real. Al se­ parar por completo las funciones de la multiprogramación y proporcionar una máquina extendi­ da, cada una de las partes puede ser mucho más sencilla, más flexible y más fácil de mantener. El concepto de máquina virtual se usa mucho hoy día en un contexto distinto: la ejecución de programas viejos para MS-DOS en una Pentium (u otra CPU Intel de 32 bits). Al diseñar la Pentium y su software, tanto Intel como Microsoft se percataron de que mucha gente querría ejecutar software viejo en hardware nuevo. Por ello, Intel incluyó un modo 8086 vir­ tual en la Pentium. En este modo, la máquina actúa como una 8086 (que es idéntica a una 8088 desde el punto de vista del software), hasta con direccionamiento de 16 bits con un límite de l MB. Windows y otros sistemas operativos utilizan este modo para ejecutar programas de MS- DOS. Estos programas se inician en modo 8086 virtual. En tanto ejecuten instrucciones nor­ males, se ejecutarán en el hardware desnudo, pero cuando un programa trate de saltar al sistema operativo para efectuar una llamada al sistema, o intente realizar operaciones protegi­ das de E/S en forma directa, se efectuará un sallo (TRAP) al monitor de máquina virtual. Este diseño puede tener dos variantes. En el primero, MS-DOS se carga en el espacio de direcciones de la 8086 virtual, de modo que lo único que hace el monitor de máquina virtual es rebotar el salto a MS-DOS, como sucedería en una 8086 real. Más adelante, cuando MS- DOS trate de realizar la E/S él mismo, la operación será atrapada y ejecutada por el monitor de máquina virtual. En la otra variante, el monitor de máquina virtual se limita a atrapar el primer salto y efec­ tuar él mismo la E/S, pues ya conoce todas las llamadas al sistema de MS-DOS y, por tanto, sabe qué debe hacer cada salto (TRAP). Esta variante es menos pura que la primera, puesto que sólo emula MS-DOS correctamente, no otros sistemas operativos, como hace la primera. Por otra parte, es mucho más rápida, pues ahorra el trabajo de iniciar MS-DOS para que realice la E/S. Una desventaja adicional de ejecutar realmente MS-DOS en modo 8086 virtual es que MS-DOS se mete mucho con el bit que habilita/inhabilita las interrupciones, y la emulación de esto es muy costosa. Vale la pena señalar que ninguno de estos enfoques en realidad es igual al del VM/370, pues la máquina emulada no es una Pentium completa, sólo una 8086. Con el sistema VM/370 es po­ sible ejecutar el VM/370 mismo en la máquina virtual. Con la Pentium no es posible ejecutar Windows, digamos, en la 8086 virtual, porque ninguna versión de Windows se ejecuta en una 8086; una 286 es lo mínimo incluso para la versión más antigua, y no se ofrece emulación de 286 (mucho menos emulación de Pentium). No obstante, basta modificar un poco el bina­ rio de Windows para hacer posible esta emulación, y esto se ha incorporado en algunos pro­ ductos comerciales. Otra área en la que se usan máquinas virtuales, pero de forma un tanto distinta, es en la ejecución de programas en Java. Cuando Sun Microsystems inventó el lenguaje de programa­ ción Java, también inventó una máquina virtual (es decir, una arquitectura de computadora) lia-

RkJQdWJsaXNoZXIy MjI4NDcx