stringtranslate.com

modo real

El modo real , también llamado modo de dirección real , es un modo de funcionamiento 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 segmentada de 20 bits (que proporciona 1 MB de memoria direccionable) y acceso directo ilimitado al software a toda la memoria direccionable, direcciones de E/S y hardware periférico. El modo real no admite protección de memoria, multitarea ni niveles de privilegios de código.

Antes de la introducción del modo protegido con el lanzamiento del 80286 , el modo real era el único modo disponible para las CPU x86; [1] 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 80286 introdujo el modo protegido , 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 de las principales especificaciones de diseño de los microprocesadores x86 es que son totalmente compatibles con el software escrito para todos los chips x86 anteriores, el chip 286 se creó para iniciarse en "modo real", es decir, en un modo que apagaba la nueva memoria. características de protección, para 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 iniciar sistemas operativos en modo real y pueden ejecutar software escrito para casi cualquier chip x86 anterior sin emulación ni virtualización.

La BIOS del 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 "modo 386 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 requería 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 determinadas funciones. Unix , Linux , OS/2 y 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 . [2] 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 x86 de 32 bits modernos. [ cita necesaria ]

Capacidad de direccionamiento

Los 8086, 8088 y 80186 tienen un bus de direcciones de 20 bits, pero el inusual esquema de direccionamiento segmentado 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 cuatro bits a la izquierda (lo que genera 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 ocurre cuando tanto el segmento como el desplazamiento son 0xFFFF, lo que produce 0xFFFF0 + 0xFFFF = 0x10FFEF. En 8086, 8088 y 80186, el resultado de una dirección efectiva que desborda 20 bits es que la dirección "se ajusta" al extremo cero del rango de direcciones, es decir, se toma en módulo 2^20 (2^20 = 1048576 = 0x100000). Sin embargo, el 80286 tiene 24 bits de dirección y calcula direcciones efectivas en 24 bits incluso en modo real. Por lo tanto, para el segmento 0xFFFF y un desplazamiento mayor que 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 [offset]-0x10, que está en el comienzo del primer megabyte. (Tenga en cuenta que en 80186 y versiones anteriores, el primer kilobyte del espacio de direcciones, comenzando 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 fueron diseñados para aprovechar el comportamiento de direccionamiento de memoria envolvente (módulo), por lo que el 80286 presentó 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 la aritmética de direcciones de los procesadores anteriores, pero el 80286 no tiene interno capacidad para realizar esta función. Cuando IBM usó el 80286 en su IBM PC/AT , resolvieron este problema incluyendo 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 muestran al cargar un mensaje que indica que habían instalado un "controlador A20", una pieza de software para controlar Gate-A20 y coordinarlo según las necesidades de los programas. . En modo protegido, la línea A20 debe estar habilitada; de lo contrario, se producirán errores de direccionamiento físico, lo que probablemente provocará una falla del sistema. Los cargadores de arranque heredados modernos (como GNU GRUB ) utilizan la línea A20. [3]

Cambiar al modo real

Intel introdujo el modo protegido en la familia x86 con la intención de que los sistemas operativos que lo usaran se ejecutaran completamente en el nuevo modo y que todos los programas que se ejecutan 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 en modo real existentes de las que dependían los usuarios, abandonar el modo real planteó problemas para la industria, y los programadores buscaron una manera 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 restablecer el procesador; después de un reinicio, siempre se inicia en modo real para ser compatible con CPU x86 anteriores hasta el 8086. Reiniciar el procesador no borra la RAM del sistema, por lo que esto, aunque incómodo e ineficiente, en realidad es 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 en modo real para restaurar el estado guardado desde la memoria. Luego puede ejecutar otro código en 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 IBM (tipo máquina) basado en 8088 . 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 DOS cambia al modo real para invocar llamadas de DOS o BIOS, luego vuelve al programa de aplicación que se ejecuta en modo protegido.

Rechazar

El cambio hacia el kernel NT provocó que el sistema operativo no necesitara DOS para iniciar la computadora y no 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 de DOS que requieren modo real desde versiones más recientes de Windows es mediante el uso de emuladores como DOSBox o productos de virtualización x86 .

Ver también

Referencias

  1. ^ "Referencia de CPU x86 (archivada el 8 de septiembre de 2018, en lugar de 'Una breve historia de x86': alasir.com/x86ref: 403 prohibido el 24 de marzo de 2023)". Archivado desde el original el 8 de septiembre de 2018 . Consultado el 24 de marzo de 2023 .{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  2. ^ "Arranque · Linux interno". 0xax.gitbooks.io . Consultado el 10 de noviembre de 2020 .
  3. ^ "Línea A20 - Wiki OSDev". wiki.osdev.org . Consultado el 10 de septiembre de 2020 .

enlaces externos