Next: Transiciones a través del
Up: El Modo Virtual 8086
Previous: Protección en una tarea
La figura 2.12 engloba las formas de entrar y salir de un
programa 8086.
Figure 2.12:
Entrando y saliendo del modo virtual 8086
|
Se selecciona el modo virtual 8086 encendiendo la bandera VM, las formas
de hacer esta operación son las siguientes:
- 1.
- Cuando una tarea que transfiere el control a una tarea i486, carga la
imagen del registro EFLAGS del nuevo TSS. El TSS de la nueva tarea debe
ser, al menos, del tipo i386 y no del tipo i286, debido a que el TSS de
este procesador no carga la palabra alta del registro EFLAGS, que es
donde se encuentra la bandera VM. Activar la bandera VM en el nuevo
contenido del registro EFLAGS indica que la nueva tarea está ejecutando
instrucciones 8086, por esta razón, el procesador que realiza
la emulación forma una dirección base del estilo 8086 cuando se
cargan los registros de segmento del TSS.
- 2.
- Una instrucción IRET en un procedimiento de una tarea i486
carga el registro de la pila. Activar la bandera VM indica que el
procedimiento al que se le regresa el control es un procedimiento 8086.
El CPL debe ser 0 cuando se ejecute la instrucción IRET, de otro modo
el procesador no cambiará el estado de la bandera VM.
Cuando se elige una tarea para entrar al modo virtual 8086, los
registros de segmento se cargan del TSS. Pero cuando una instrucción IRET
se utiliza para activar la bandera VM los registros de segmento guardan los
valores almacenados durante el modo protegido. El software puede recargar
estos registros con selectores de segmento apropiados para el modo virtual 8086.
El procesador abandona el modo virtual 8086 cuando ocurre una interrupción
o excepción. Esto ocurre por dos causas.
- 1.
- La interrupción o excepción provoca un cambio de tarea. Cuando se
cambia a otra tarea desde una tarea en modo virtual 8086 se carga el
registro de banderas EFLAGS del TSS de la nueva tarea.
- 2.
- La interrupción o excepción llama a un procedimiento con nivel de
privilegio 0 (máximo privilegio). El procesador guarda el contenido
actual del registro EFLAGS en la pila, entonces limpia la bandera VM.
El software del sistema no cambia el estado de la bandera VM directamente,
sin embargo cambia el estado de la imagen del registro EFLAGS almacenado en
la pila o en el TSS cuando se crea por primera vez una tarea virtual 8086.
Next: Transiciones a través del
Up: El Modo Virtual 8086
Previous: Protección en una tarea
Amilcar Meneses
2002-10-03