Ir al contenido

Modo irreal

De Wikipedia, la enciclopedia libre

A diferencia del modo real, el modo protegido y el modo largo, el modo irreal no es un modo de direccionamiento separado en el que los procesadores x86 o x86-64 pueden operar. En lugar de ello, el modo irreal, también llamado modo real grande o modo real plano, es una variante del modo real (PE=0) en la cual unos o más registros de segmento han sido cargados con direcciones y límites 32 bits.

Para activar el modo irreal, el programa tiene que entrar en modo protegido, localizar un descriptor plano en el GDT o LDT o crear alguno, cargar algunos de los registros de segmento con el respectivo selector de modo protegido, entonces se retorna del modo protegido al modo real. Cuando se está de nuevo en el modo real, el procesador continuará usando los descriptores del caché como habían quedado establecidos en el modo protegido, por lo menos hasta que sean recargados los registros de segmento, permitiendo así el acceso a 4 GiB de memoria extendida desde el modo real.

¡Sin embargo, la trampa es que la recarga del descriptor de segmento del caché, que ahora contiene valores "irreales", puede ocurrir asincrónicamente dentro de un manejador de excepción o interrupción, y después, incluso si el manejador intenta recargar correctamente el segmento antes del IRET (retornando de la excepción o interrupción), él fallará pues el descriptor oculto sería recargado bajo reglas del modo real, resultando en la pérdida del descriptor plano y una catástrofe inminente!. Por lo tanto, o se prohíben las interrupciones mientras se están accediendo las direcciones "irreales", que puede ser solamente por una pequeña duración, o se usa un registro de segmento (FS o GS) que esté absolutamente garantizado que no serán tocados por el Sistema operativo, el BIOS, o cualquier driver.

En un principio, este modo era considerado como un bug, pero más adelante se convirtió en una técnica estándar para los procesadores x86 y x86-64.

Algunos DOS Extenders usaron esta característica para direccionar la memoria alta. Fue usado por muchos juegos de computadora entre los años 1990 y 1995, debido a que permitió a los programadores usar más memoria que en el modo real, la cual estaba restringida a 1 MiB (640 KiB usables), además, todavía manteniendo el acceso al sistema operativo DOS, que no trabaja en modo protegido. Después de la introducción de Windows 95 el modo irreal rápidamente cayó en desuso pues los programas que lo usaban no podían correr en el DOS Prompt de Ms-Windows, estos programas requerían, en Windows 95 y 98, "Reiniciar en modo MS-DOS", y no podían correr para nada en sistemas Windows NT, 2000 y XP. Para esos sistemas operativos, la única manera de correr los programas diseñados para el modo irreal era un emulador como el DOSBox.

Véase también

[editar]