Modo real
Modo real, también llamado modo de dirección real, es un modo operativo de todas las CPU compatibles con x86. El modo recibe su nombre del hecho de que las direcciones en modo real siempre corresponden a ubicaciones reales en la memoria. El modo real se caracteriza por un espacio de direcciones de memoria segmentado de 20 bits (que proporciona 1 MB de memoria direccionable) y acceso de software directo ilimitado a toda la memoria direccionable, direcciones de E/S y hardware periférico. El modo real no admite niveles de privilegio de código, multitarea o protección de memoria.
Antes del lanzamiento del 80286, que introdujo el modo protegido, el modo real era el único modo disponible para las CPU x86; y para compatibilidad con versiones anteriores, todas las CPU x86 se inician en modo real cuando se reinician, aunque es posible emular el modo real en otros sistemas cuando se inician en otros modos.
Historia
La arquitectura 286 introdujo el modo protegido, lo que permite (entre otras cosas) la protección de la memoria a nivel de hardware. Sin embargo, el uso de estas nuevas funciones requería un nuevo sistema operativo diseñado específicamente para el modo protegido. Dado que una especificación de diseño principal de los microprocesadores x86 es que son totalmente compatibles con versiones anteriores del software escrito para todos los chips x86 anteriores a ellos, el chip 286 se diseñó para comenzar en "modo real". – es decir, en un modo que desactivó las nuevas funciones de protección de la memoria, de modo que pudiera ejecutar sistemas operativos escritos para el 8086 y el 8088. A partir de 2018, las CPU x86 actuales (incluidas las CPU x86-64) pueden arrancar en tiempo real. sistemas operativos en modo y puede ejecutar software escrito para casi cualquier chip x86 anterior sin emulación o virtualización.
El BIOS de PC que introdujo IBM funciona en modo real, al igual que los sistemas operativos DOS (MS-DOS, DR-DOS, etc.). Las primeras versiones de Microsoft Windows se ejecutaban en modo real. Windows/386 hizo posible hacer algún uso del modo protegido, y esto se realizó de manera más completa en Windows 3.0, que podía ejecutarse en modo real o hacer uso del modo protegido a la manera de Windows/386. Windows 3.0 en realidad tenía varios modos: "modo real", "modo estándar" y "386-modo mejorado"; este último requería algunas de las funciones de virtualización del procesador 80386 y, por lo tanto, no se ejecutaría en un 80286. Windows 3.1 eliminó la compatibilidad con el modo real y fue el primer entorno operativo convencional que requirió al menos un procesador 80286. Ninguna de estas versiones podría considerarse un sistema operativo x86 moderno, ya que cambiaron al modo protegido solo para ciertas funciones. Unix, Linux, OS/2, Windows NT se consideran sistemas operativos modernos, ya que cambian la CPU al modo protegido al inicio, nunca regresan al modo real y brindan todos los beneficios del modo protegido todo el tiempo. Los sistemas operativos de 64 bits usan el modo real solo en la etapa de inicio, y el kernel del sistema operativo cambiará la CPU al modo largo. En particular, el modo protegido del 80286 es considerablemente más primitivo que el modo protegido mejorado introducido con el 80386; este último a veces se denomina modo protegido 386 y es el modo en el que se ejecutan los sistemas operativos modernos x86 de 32 bits.
Capacidad de direccionamiento
El 8086, 8088 y 80186 tienen un bus de direcciones de 20 bits, pero el esquema de direccionamiento segmentado inusual que Intel eligió para estos procesadores en realidad produce direcciones efectivas que pueden tener 21 bits significativos. Este esquema desplaza un número de segmento de 16 bits a la izquierda cuatro bits (haciendo un número de 20 bits con cuatro ceros menos significativos) antes de agregarle un desplazamiento de dirección de 16 bits; la suma máxima se produce cuando tanto el segmento como el desplazamiento son 0xFFFF, lo que da como resultado 0xFFFF0 + 0xFFFF = 0x10FFEF. En el 8086, 8088 y 80186, el resultado de una dirección efectiva que desborda 20 bits es que la dirección "envuelve" al extremo cero del rango de direcciones, es decir, se toma el módulo 2^20 (2^20 = 1048576 = 0x100000). Sin embargo, el 80286 tiene 24 bits de dirección y calcula direcciones efectivas hasta 24 bits incluso en modo real. Por lo tanto, para el segmento 0xFFFF y un desplazamiento superior a 0x000F, el 80286 en realidad accedería al comienzo del segundo megabyte de memoria, mientras que el 80186 y anteriores accederían a una dirección igual a [desplazamiento]-0x10, que está en el principio del primer megabyte. (Tenga en cuenta que en el 80186 y versiones anteriores, el primer kilobyte del espacio de direcciones, que comienza en la dirección 0, es la ubicación permanente e inamovible de la tabla de vectores de interrupción). Por lo tanto, la cantidad real de memoria direccionable por las CPU x86 80286 y posteriores en modo real es 1 MB + 64 KB – 16 B = 1.114.096 B.
Línea A20
Algunos programas anteriores al 80286 se diseñaron para aprovechar el comportamiento de direccionamiento de memoria envolvente (módulo), por lo que el 80286 presentaba un problema de compatibilidad con versiones anteriores. Forzar la línea de dirección 21 (el cable de señal lógica real que sale del chip) a un nivel lógico bajo, que representa un cero, da como resultado un efecto de módulo 2^20 para que coincida con los procesadores anteriores. aritmética de direcciones, pero el 80286 no tiene capacidad interna para realizar esta función. Cuando IBM usó el 80286 en su IBM PC/AT, resolvieron este problema al incluir una puerta configurable por software para habilitar o deshabilitar (forzar a cero) la línea de dirección A20, entre el pin A20 en el 80286 y el bus del sistema; esto se conoce como Gate-A20 (la puerta A20), y todavía se implementa en los conjuntos de chips de PC hasta el día de hoy. La mayoría de las versiones del controlador de memoria extendida HIMEM.SYS para IBM-/MS-DOS mostraban al cargar un mensaje que indicaba que habían instalado un 'controlador A20', una pieza de software para controlar Gate-A20 y coordinarlo. a las necesidades de los programas. En el modo protegido, la línea A20 debe habilitarse o, de lo contrario, se producirán errores de direccionamiento físico, lo que probablemente provoque un bloqueo del sistema. Los cargadores de arranque heredados modernos (como GNU GRUB) usan la línea A20.
Cambiar al modo real
Intel introdujo el modo protegido en la familia x86 con la intención de que los sistemas operativos que lo usaban se ejecutaran completamente en el nuevo modo y que todos los programas que se ejecutaran en un sistema operativo en modo protegido también se ejecutaran en modo protegido. Debido a las diferencias sustanciales entre el modo real e incluso el modo protegido 286 bastante limitado, los programas escritos para el modo real no pueden ejecutarse en modo protegido sin ser reescritos. Por lo tanto, con una amplia base de aplicaciones de modo real existentes de las que dependían los usuarios, abandonar el modo real planteó problemas para la industria, y los programadores buscaron una forma de cambiar entre los modos a voluntad. Sin embargo, Intel, de acuerdo con sus intenciones para el uso del procesador, proporcionó una manera fácil de cambiar al modo protegido en el 80286, pero no una manera fácil de volver al modo real. Antes del 386, la única forma de cambiar del modo protegido al modo real era reiniciar el procesador; después de un reinicio, siempre se inicia en modo real para ser compatible con las CPU x86 anteriores al 8086. Reiniciar el procesador no borra la memoria RAM del sistema, por lo que esto, aunque es incómodo e ineficiente, es realmente factible. Desde el modo protegido, el estado del procesador se guarda en la memoria, luego el procesador se reinicia, se reinicia en modo real y ejecuta algún código de modo real para restaurar el estado guardado de la memoria. Luego puede ejecutar otro código de modo real hasta que el programa esté listo para volver al modo protegido. El cambio al modo real es costoso en términos de tiempo, pero esta técnica permite que los programas en modo protegido utilicen servicios como BIOS, que se ejecuta completamente en modo real (habiendo sido diseñado originalmente para el modelo de computadora personal de IBM basado en 8088 (tipo de máquina) 5150). Esta técnica de cambio de modo también es la utilizada por DPMI (en DOS real, no emulado) y extensores de DOS como DOS/4GW para permitir que los programas en modo protegido se ejecuten en DOS; el sistema DPMI o el extensor de DOS cambia al modo real para invocar llamadas de DOS o BIOS, luego vuelve a cambiar para regresar al programa de aplicación que se ejecuta en modo protegido.
Rechazar
El cambio hacia el kernel NT resultó en que el sistema operativo no necesitara DOS para iniciar la computadora y tampoco pudiera usarlo. La necesidad de reiniciar la computadora en modo real MS-DOS disminuyó después de Windows 3.1x hasta que ya no fue compatible con Windows ME. Actualmente, la única forma de ejecutar aplicaciones DOS que requieren modo real desde las versiones más nuevas de Windows es mediante el uso de emuladores como DOSBox o productos de virtualización x86.
Contenido relacionado
Algoritmo de dibujo lineal
Ordenar por fusión
MD5