next up previous contents
Next: Transiciones a través del Up: El Modo Virtual 8086 Previous: Protección en una tarea

Entrando y Saliendo del Modo Virtual 8086.

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
\begin{figure}
\epsfxsize=260pt
\hspace{.45in}
\epsffile{in_out_v86.eps}
\end{figure}

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 up previous contents
Next: Transiciones a través del Up: El Modo Virtual 8086 Previous: Protección en una tarea
Amilcar Meneses
2002-10-03