Articulo de referencia

Modo real

El modo real , también llamado modo de direcciones reales , es un modo de funcionamiento de todas las CPU compatibles con x86 . Su nombre proviene del hecho de que las direccion...

El modo real , también llamado modo de direcciones reales , es un modo de funcionamiento de todas las CPU compatibles con x86 . Su nombre proviene del hecho de que las direcciones en el 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 (lo que proporciona 1 MB de memoria direccionable) y acceso directo ilimitado por software a toda la memoria direccionable, direcciones de E/S y hardware periférico. El modo real no ofrece soporte para protección de memoria , multitarea ni niveles de privilegio 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 la 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 permitía (entre otras cosas) la protección de memoria a nivel de hardware. Sin embargo, el uso de estas nuevas características 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, el chip 286 se diseñó para arrancar en "modo real", es decir, en un modo que desactivaba las nuevas características de protección de 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 sistemas operativos en modo real y ejecutar software escrito para casi cualquier chip x86 anterior sin emulación ni virtualización. En 2023, Intel propuso eliminar el modo real de las futuras CPU en la especificación X86S .

La BIOS de PC que introdujo IBM opera 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 permitió el uso del modo protegido, que se implementó de forma más completa en Windows 3.0 , que podía ejecutarse en modo real o utilizar el modo protegido de la misma manera que Windows/386. Windows 3.0 tenía varios modos: "modo real", "modo estándar" y "modo mejorado para 386"; este último requería algunas de las funciones de virtualización del procesador 80386 y, por lo tanto, no se ejecutaba en un 80286. Windows 3.1 eliminó la compatibilidad con el modo real y fue el primer entorno operativo de uso general que requería al menos un procesador 80286. Ninguna de estas versiones puede considerarse un sistema operativo x86 moderno, ya que solo cambiaban al modo protegido para ciertas funciones. Unix , Linux , OS/2 y Windows NT se consideran sistemas operativos modernos, ya que cambian la CPU a modo protegido al inicio, nunca vuelven al modo real y proporcionan todos los beneficios del modo protegido en todo momento. Los sistemas operativos de 64 bits usan el modo real solo en la etapa de inicio, después de lo cual el núcleo del sistema operativo cambia la CPU a modo largo . [ 2 ] Cabe destacar que 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 modernos de 32 bits.

Capacidad de direccionamiento

Los procesadores 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 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 (creando un número de 20 bits con cuatro ceros menos significativos) antes de sumarle 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 los 8086, 8088 y 80186, el resultado de una dirección efectiva que excede los 20 bits es que la dirección "se reinicia" hasta el extremo cero del rango de direcciones, es decir, se toma módulo 2^20 (2^20 = 1048576 = 0x100000). Sin embargo, el 80286 tiene 24 bits de dirección y calcula direcciones efectivas de 24 bits incluso en modo real. Por lo tanto, para el segmento 0xFFFF y un desplazamiento mayor que 0x000F, el 80286 accedería al inicio del segundo megabyte de memoria, mientras que el 80186 y anteriores accederían a una dirección igual a [desplazamiento]-0x10, que está al inicio del primer megabyte. (Tenga en cuenta que en el 80186 y anteriores, el primer kilobyte del espacio de direcciones, a partir de la dirección 0, es la ubicación permanente e inamovible de la tabla de vectores de interrupción). Así pues, 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 de tipo módulo (wrap-around), por lo que el 80286 presentó un problema de retrocompatibilidad. 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, produce un efecto de módulo 2^20 para igualar la aritmética de direcciones de los procesadores anteriores, pero el 80286 no tiene capacidad interna para realizar esta función. Cuando IBM utilizó el 80286 en su IBM PC/AT , resolvió 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 del 80286 y el bus del sistema; esto se conoce como Puerta A20 (la puerta A20) y todavía se implementa en los chipsets 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 cargarse, un mensaje que indicaba la instalación de un "controlador A20", un software para controlar Gate-A20 y adaptarlo a 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á un fallo del sistema. Los gestores de arranque modernos (como GNU GRUB ) utilizan la línea A20. [ 3 ]

Switching to real mode

Intel introduced protected mode into the x86 family with the intention that operating systems which used it would run entirely in the new mode and that all programs running under a protected mode operating system would run in protected mode as well. Because of the substantial differences between real mode and even the rather limited 286 protected mode, programs written for real mode cannot run in protected mode without being rewritten. Therefore, with a wide base of existing real mode applications which users depended on, abandoning real mode posed problems for the industry, and programmers sought a way to switch between the modes at will. However, Intel, consistent with their intentions for the processor's usage, provided an easy way to switch into protected mode on the 80286 but no easy way to switch back to real mode. Before the 386 the only way to switch from protected mode back to real mode was to reset the processor; after a reset it always starts up in real mode to be compatible with earlier x86 CPUs back to the 8086. Resetting the processor does not clear the system's RAM, so this, while awkward and inefficient, is actually feasible. From protected mode, the processor's state is saved in memory, then the processor is reset, restarts in real mode, and executes some real mode code to restore the saved state from memory. It can then run other real mode code until the program is ready to switch back to protected mode. The switch to real mode is costly in terms of time, but this technique allows protected mode programs to use services such as BIOS, which runs entirely in real mode (having been designed originally for the 8088-based IBM Personal Computer model (machine type) 5150). This mode-switching technique is also the one used by DPMI (under real, not emulated, DOS) and DOS extenders like DOS/4GW to allow protected mode programs to run under DOS; the DPMI system or DOS extender switches to real mode to invoke DOS or BIOS calls, then switches back to return to the application program which runs in protected mode.

Decline

As versions of Windows built on the NT kernel (which bypass real mode at startup) became increasingly popular, the need to restart the computer in real mode to use MS-DOS declined after Windows 3.1x, until it was no longer supported in Windows ME. The only way of running DOS applications that require real mode from within newer versions of Windows is by using emulators such as DOSBox or x86 virtualization products.

See also

References

  1. "Referencia de CPU x86 (Archivado 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 del original el 8 de septiembre de 2018. Recuperado el 24 de marzo de 2023 .{{cite web}}: CS1 maint: bot: estado de la URL original desconocido ( enlace )
  2. "Arranque · Linux Inside" . 0xax.gitbooks.io . Consultado el 10 de noviembre de 2020 .
  3. "Línea A20 - Wiki de OSDev" . wiki.osdev.org . Archivado del original el 16 de septiembre de 2020. Consultado el 10 de septiembre de 2020 .
  • Chourdakis, Michael (21 de mayo de 2015). "Tutorial de ensamblador en modo real, protegido y largo para PC" . Code Project .