Manejador de Máquina Virtual (Virtual Machine Manager)

El Manejador de Máquina Virtual [Virtual Machine Manager (VMM)] es el verdadero sistema operativo detrás de Windows 95. Erige y mantiene el marco para manejar máquinas virtuales. También provee muchos otros servcios importantes a las VxDs. Los tres servicios importantes son:

Manejo de Memoria

VMM usa la capacidad de paginación de los procesadores Intel 80386 y posteriores para crear un espacio de dirección virtual de 32-bit para el sistema VM. Divide el espacio de direcciones en cuatro áeras distintas.

VMM provee tres tipos de servicios de memoria a las VxDs

Manejo de Interrupciones

Las interrupciones en el vector de modo protegido para la Tabla del Descriptor de Interrupciones [Interrupt Descriptor Table (IDT)]. VMM supervisa la IDTs de VMs con la ayuda de VxDs. Normalmente VMM maneja casi todas las entradas en IDTs. Suministra manejadores de interrupciones de primer nivel que salvan en la pila el estado del programa interrumpido y transfieren el control al manejador de interrupciones del segundo nivel el cual puede ser suministrado por varias VxDs para su actual procesamiento. Cuando termina la tarea del manejador del segundo nivel, se transfiere el control a la rutina de reiteración de despacho [redispatch routine] que restaurará el estado del programa interrumpido y resumirá la ejecución en el punto de interrupción.

La descripción anterior está supersimplificada. La reiteración del despacho [redispatch] no puede ser inmediato debido a que el lapso de tiempo de la VM interrumpida puede expirar. Las VxDs pueden instalar manejadores de interrupción a través de servicios VMM tales como Set_PM_Int o Hook_V86_Int_Chain. Las VxDs no deben modificar las entradas IDT directamente (pero puedes hacerlo si estás seguro de que sabes lo que estás haciendo)

Planificación de los Hilos [Thread Scheduling]

La VMM usa dos componentes de planificación [scheduler components] para implementar multitarea preventiva entre hilos y VMs.

La tarea del planificador primario es escoger el hilo con mayor prioridad de ejecución para correr. Esta selección ocurre mientras la VMM está sirviendo una interrupción (tales como interrupciones del temporizador). El lado exterior determina a cuál hilo/VM le será entregado el control cuando la VMM regrese de servir la interrupción. El planificador primario trabaja bajo la regla de todo o nada. Sea que un hilo va a ser corrido o sea que no. Sólo se elige un hilo. VMM y otras VxDs pueden aumentar/ajustar la prioridad de ejecución de los servicios de los hilos a través de los servicios VMM. Por ejemplo, si ocurre una interrupción de hardware, VMM aumentará la prioridad de ejecución del manejador de interrupciones de manera que tenga la más alta probabilidad de terminación en el tiempo más corto posible.

El planificador secundario usa los servicios del planificador primario para localizar tiempo de CPU entre los hilos que comparten la más alta prioridad de ejecución dando a cada hilo un lapso de tiempo. Cuando ejecuta un hilo hasta que el lapso de tiempo expira, el planificador secundario aumenta la prioridad de ejecución del siguiente hilo de manera que será elegido por el planificador primario para que corra.

Puedes obtener mayores detalles sobre estos temas leyendo Walter Oney's Systems Programming for Windows 95 y la documentación de la Windows 95 DDK.


Index

Next

[Iczelion's Win32 Assembly Homepage]

n u M I T_o r's   Programming Page

Este tutorial, original de Iczelion, ha sido traducido por:   n u M I T_o r