En informática, el modo protegido , también llamado modo de dirección virtual protegida , [ 1 ] es un modo operativo de las unidades centrales de procesamiento (CPU) compatibles con x86 . Permite que el software del sistema utilice características como la segmentación , la memoria virtual , la paginación y la multitarea segura , diseñadas para aumentar el control del sistema operativo sobre el software de aplicación . [ 2 ] [ 3 ]
Cuando se enciende un procesador que admite el modo protegido x86, comienza a ejecutar instrucciones en modo real para mantener la compatibilidad con versiones anteriores de procesadores x86. [ 4 ] El modo protegido solo se puede activar después de que el software del sistema configure una tabla de descriptores y habilite el bit de Habilitación de Protección (PE) en el registro de control 0 (CR0). [ 5 ]
El modo protegido se agregó por primera vez a la arquitectura x86 en 1982, [ 6 ] con el lanzamiento del procesador 80286 (286) de Intel , y posteriormente se extendió con el lanzamiento del 80386 (386) en 1985. [ 7 ] Debido a las mejoras añadidas por el modo protegido, se ha adoptado ampliamente y se ha convertido en la base de todas las mejoras posteriores a la arquitectura x86 (IA-32), [ 8 ] aunque muchas de esas mejoras, como las instrucciones añadidas y los nuevos registros, también aportaron beneficios al modo real.
Historia
El primer procesador x86, el Intel 8086 , tenía un bus de direcciones de 20 bits para su memoria , al igual que su variante Intel 8088. [ 9 ] Esto les permitía acceder a 2²⁰ bytes de memoria, equivalente a 1 megabyte . [ 9 ] En ese momento, 1 megabyte se consideraba una cantidad de memoria relativamente grande, [ 10 ] por lo que los diseñadores de la IBM Personal Computer reservaron los primeros 640 kilobytes para el uso de las aplicaciones y el sistema operativo, y los 384 kilobytes restantes para la BIOS (Sistema Básico de Entrada/Salida) y la memoria para dispositivos adicionales . [ 11 ]
A medida que disminuía el costo de la memoria y aumentaba su uso, la limitación de 1 MB se convirtió en un problema importante. Intel pretendía solucionar esta limitación, junto con otras, con el lanzamiento del 286. [ 11 ]
El 286
El modo protegido inicial, lanzado con el 286, no fue ampliamente utilizado; [ 11 ] por ejemplo, fue utilizado por Coherent (desde 1982), [ 12 ] Microsoft Xenix (alrededor de 1984) [ 13 ] y Minix . [ 14 ] Varias deficiencias, como la incapacidad de realizar llamadas a BIOS y DOS debido a la imposibilidad de volver al modo real sin reiniciar el procesador, impidieron su uso generalizado. [ 15 ] La aceptación se vio obstaculizada además por el hecho de que el 286 permitía el acceso a la memoria en segmentos de 64 kilobytes , direccionados por sus cuatro registros de segmento, lo que significa que solo se podía acceder a 4 × 64 KB , equivalente a 256 KB, a la vez. [ 11 ] Debido a que cambiar un registro de segmento en modo protegido provocaba que se cargara un descriptor de segmento de 6 bytes en la CPU desde la memoria, la instrucción de carga del registro de segmento tomaba muchas decenas de ciclos del procesador, lo que la hacía mucho más lenta que en el 8086 y el 8088; por lo tanto, la estrategia de calcular direcciones de segmento sobre la marcha para acceder a estructuras de datos mayores de 128 kilobytes (el tamaño combinado de los dos segmentos de datos) se volvió poco práctica, incluso para aquellos pocos programadores que la habían dominado en el 8086 y el 8088.
El 286 mantuvo la retrocompatibilidad con el 8086 y el 8088 al entrar inicialmente en modo real al encenderse. [ 4 ] El modo real funcionaba prácticamente de forma idéntica al 8086 y al 8088, lo que permitía que la gran mayoría del software existente para esos procesadores se ejecutara sin modificaciones en el nuevo 286. El modo real también servía como un modo más básico para configurar e iniciar el modo protegido. Para acceder a la funcionalidad extendida del 286, el sistema operativo configuraba algunas tablas en la memoria que controlaban el acceso a la memoria en modo protegido, establecía las direcciones de esas tablas en algunos registros especiales del procesador y luego configuraba el procesador en modo protegido. Esto habilitaba el direccionamiento de 24 bits, lo que permitía al procesador acceder a 2²⁴ bytes de memoria, equivalentes a 16 megabytes . [ 9 ]
El 386

Con el lanzamiento del 386 en 1985, [ 7 ] se abordaron muchos de los problemas que impedían la adopción generalizada del modo protegido anterior. [ 11 ] El 386 se lanzó con un tamaño de bus de direcciones de 32 bits, lo que permite el acceso a 2³² bytes de memoria, equivalente a 4 gigabytes . [ 16 ] Los tamaños de segmento también se incrementaron a 32 bits, lo que significa que se podía acceder al espacio de direcciones completo de 4 gigabytes sin necesidad de cambiar entre múltiples segmentos. [ 16 ] Además del aumento del tamaño del bus de direcciones y los registros de segmento, se agregaron muchas otras características nuevas con la intención de aumentar la seguridad y la estabilidad operativa. [ 17 ] El modo protegido se utiliza ahora en prácticamente todos los sistemas operativos modernos que se ejecutan en la arquitectura x86, como Microsoft Windows , Linux y muchos otros. [ 18 ]
Además, aprendiendo de los fallos del modo protegido del 286 para satisfacer las necesidades de las aplicaciones multitarea de DOS, Intel añadió un modo virtual 8086 independiente , [ 19 ] que permitía emular varios procesadores 8086 virtualizados en el 386. Sin embargo, la virtualización de hardware x86 necesaria para virtualizar el propio modo protegido tuvo que esperar otros 20 años. [ 20 ]
386 adiciones al modo protegido
Con el lanzamiento del 386, se agregaron las siguientes características adicionales al modo protegido: [ 2 ]
- Paginación
- Espacio de direcciones físicas y virtuales de 32 bits (El espacio de direcciones físicas de 32 bits no está presente en el 80386SX ni en otras variantes del procesador 386 que utilizan el bus 286 más antiguo. [ 21 ] )
- Desplazamientos de segmento de 32 bits
- Posibilidad de volver al modo real sin reiniciar.
- Modo virtual 8086
Entrada y salida del modo protegido
Hasta el lanzamiento del 386, el modo protegido no ofrecía un método directo para volver al modo real una vez activado. IBM ideó una solución alternativa (implementada en el IBM AT ) que consistía en reiniciar la CPU mediante el controlador del teclado y guardar los registros del sistema, el puntero de pila y, a menudo, la máscara de interrupción en la RAM del chip del reloj en tiempo real. Esto permitía a la BIOS restaurar la CPU a un estado similar y comenzar a ejecutar el código anterior al reinicio. Posteriormente, se utilizó un fallo triple para reiniciar la CPU del 286, lo que resultó mucho más rápido y eficiente que el método del controlador del teclado.
Para entrar en modo protegido, primero se debe crear la Tabla de Descriptores Globales (GDT) con un mínimo de tres entradas: un descriptor nulo, un descriptor de segmento de código y un descriptor de segmento de datos. Luego, se debe establecer el bit PE en el registro CR0 y se debe realizar un salto lejano para borrar la cola de entrada de precarga . [ 22 ] [ 23 ] Además, en una máquina compatible con IBM, para permitir que la CPU acceda a los 16 MB del espacio de direcciones (en lugar de solo los 8 megabytes pares), se debe habilitar la línea A20 (la línea de dirección número 21). (A20 está deshabilitada al encender, lo que hace que cada megabyte impar del espacio de direcciones se asigne al megabyte par anterior, para garantizar la compatibilidad con el software antiguo escrito para los modelos IBM PC y PC/XT basados en Intel 8088). [ 24 ] Habilitar A20 no es estrictamente necesario para ejecutar en modo protegido; la CPU funcionará normalmente en modo protegido con A20 deshabilitada, solo que sin la capacidad de acceder a la mitad de las direcciones de memoria.
; Programa MASM ; entrar en modo protegido (establecer bit PE) mov EBX , CR0 ; guardar el registro de control 0 (CR0) en EBX o EBX , PE_BIT ; establecer bit PE mediante OR, guardar en EBX mov CR0 , EBX ; guardar EBX de nuevo en CR0; limpiar la cola de precarga; (usando la instrucción de salto lejano jmp) jmp CLEAR_LABEL CLEAR_LABEL:Con el lanzamiento del 386, se podía salir del modo protegido cargando los registros de segmento con valores de modo real, deshabilitando la línea A20 y borrando el bit PE en el registro CR0, sin necesidad de realizar los pasos de configuración inicial requeridos con el 286. [ 25 ]
Características
El modo protegido cuenta con varias características diseñadas para mejorar el control del sistema operativo sobre el software de aplicación, con el fin de aumentar la seguridad y la estabilidad del sistema. [ 3 ] Estas adiciones permiten que el sistema operativo funcione de una manera que sería significativamente más difícil o incluso imposible sin el soporte de hardware adecuado. [ 26 ]
Niveles de privilegio

En el modo protegido, existen cuatro niveles de privilegio o anillos , numerados del 0 al 3, siendo el anillo 0 el de mayor privilegio y el 3 el de menor. El uso de anillos permite que el software del sistema restrinja el acceso de las tareas a los datos, las compuertas de llamada o la ejecución de instrucciones privilegiadas. [ 27 ] En la mayoría de los entornos, el sistema operativo y algunos controladores de dispositivos se ejecutan en el anillo 0 y las aplicaciones en el anillo 3. [ 27 ]
Compatibilidad con aplicaciones en modo real
Según el Manual de referencia del programador Intel 80286 , [ 28 ]
El microcontrolador 80286 mantiene la compatibilidad con la mayoría de los programas de aplicación de los microcontroladores 8086 y 80186. La mayoría de los programas de aplicación del 8086 se pueden recompilar o reensamblar y ejecutar en el 80286 en modo protegido.
En general, la compatibilidad binaria con el código en modo real, la capacidad de acceder hasta a 16 MB de memoria física y 1 GB de memoria virtual fueron los cambios más evidentes para los programadores de aplicaciones. [ 29 ] Esto no estuvo exento de limitaciones. Si una aplicación utilizaba o dependía de alguna de las técnicas que se describen a continuación, no se ejecutaría: [ 30 ]
- aritmética de segmentos
- Instrucciones privilegiadas
- Acceso directo al hardware
- Escribir en un segmento de código
- Ejecutando datos
- Segmentos superpuestos
- Uso de las funciones del BIOS, debido a que las interrupciones del BIOS están reservadas por Intel [ 31 ].
En realidad, casi todos los programas de aplicación de DOS violaban estas reglas. [ 32 ] Debido a estas limitaciones, se introdujo el modo virtual 8086 con el 386. A pesar de estos posibles contratiempos, Windows 3.0 y sus sucesores pueden aprovechar la compatibilidad binaria con el modo real para ejecutar muchas aplicaciones de Windows 2.x ( Windows 2.0 y Windows 2.1x ) en modo protegido, que se ejecutaban en modo real en Windows 2.x. [ 33 ]
Modo virtual 8086
Con el lanzamiento del 386, el modo protegido ofrece lo que los manuales de Intel denominan modo virtual 8086. El modo virtual 8086 está diseñado para permitir que el código escrito previamente para el 8086 se ejecute sin modificaciones y simultáneamente con otras tareas, sin comprometer la seguridad ni la estabilidad del sistema. [ 34 ]
Sin embargo, el modo virtual 8086 no es completamente compatible con versiones anteriores de todos los programas. Los programas que requieren manipulación de segmentos, instrucciones privilegiadas, acceso directo al hardware o que utilizan código automodificable generarán una excepción que deberá ser gestionada por el sistema operativo. [ 35 ] Además, las aplicaciones que se ejecutan en modo virtual 8086 generan una interrupción al utilizar instrucciones que implican entrada/salida (E/S), lo que puede afectar negativamente al rendimiento. [ 36 ]
Debido a estas limitaciones, algunos programas diseñados originalmente para ejecutarse en el 8086 no pueden ejecutarse en modo virtual 8086. Como resultado, el software del sistema se ve obligado a sacrificar la seguridad del sistema o la compatibilidad con versiones anteriores al trabajar con software heredado . Un ejemplo de este sacrificio se observa en el lanzamiento de Windows NT , que eliminó la compatibilidad con versiones anteriores para aplicaciones de DOS con comportamientos problemáticos. [ 37 ]
Segmentación de direcciones
Modo real
En modo real, cada dirección lógica apunta directamente a una ubicación de memoria física. Cada dirección lógica consta de dos partes de 16 bits : la parte de segmento de la dirección lógica contiene la dirección base de un segmento con una granularidad de 16 bytes, es decir, un segmento puede comenzar en la dirección física 0, 16, 32, ..., 2²⁰ − 16. La parte de desplazamiento de la dirección lógica contiene un desplazamiento dentro del segmento, es decir, la dirección física se puede calcular como dirección_física = parte_segmento × 16 + desplazamiento, si la línea de dirección A20 está habilitada, o (parte_segmento × 16 + desplazamiento) mod 2²⁰ , si A20 está desactivada. Cada segmento tiene un tamaño de 2¹⁶ bytes.
Modo protegido
En modo protegido, la parte del segmento se reemplaza por un selector de 16 bits , donde los 13 bits superiores (del 3 al 15) contienen el índice de una entrada dentro de una tabla de descriptores . El siguiente bit (el 2) especifica si la operación se utiliza con la GDT o la LDT. Los dos bits menos significativos (el 1 y el 0) del selector se combinan para definir el privilegio de la solicitud, donde los valores 0 y 3 representan el privilegio más alto y el más bajo, respectivamente. Esto significa que el desplazamiento de bytes de los descriptores en la tabla de descriptores es el mismo que el del selector de 16 bits, siempre que los tres bits menos significativos sean cero.
La entrada de la tabla de descriptores define la dirección lineal real del segmento, un valor límite para el tamaño del segmento y algunos bits de atributo (indicadores).
286
La dirección del segmento en la entrada de la tabla de descriptores tiene una longitud de 24 bits, por lo que cada byte de la memoria física puede definirse como el límite del segmento. El valor límite en la entrada de la tabla de descriptores tiene una longitud de 16 bits, por lo que la longitud del segmento puede estar entre 1 byte y 2,16 bytes . La dirección lineal calculada es igual a la dirección de la memoria física.
386
La dirección del segmento dentro de la entrada de la tabla de descriptores se expande a 32 bits para que cada byte de la memoria física pueda definirse como el límite del segmento. El valor límite dentro de la entrada de la tabla de descriptores se expande a 20 bits y se completa con un indicador de granularidad (bit G, para abreviar):
- Si el bit G es cero, el límite tiene una granularidad de 1 byte, es decir, el tamaño del segmento puede ser de 1, 2, ..., 2 20 bytes.
- Si G-bit es un límite, tiene una granularidad de 2¹² bytes , es decir, el tamaño del segmento puede ser 1 × 2¹² , 2 × 2¹² , ..., 2²⁰ × 2¹² bytes. Si la paginación está desactivada, la dirección lineal calculada es igual a la dirección de memoria física. Si la paginación está activada, la dirección lineal calculada se utiliza como entrada para la paginación.
El procesador 386 también utiliza valores de 32 bits para el desplazamiento de la dirección.
Para mantener la compatibilidad con el modo protegido 286, se añadió un nuevo indicador predeterminado (bit D). Si el bit D de un segmento de código está desactivado (0), todos los comandos dentro de este segmento se interpretarán como comandos de 16 bits por defecto; si está activado (1), se interpretarán como comandos de 32 bits.
Estructura de la entrada del descriptor de segmento
Dónde:
- A es el bit al que se accede ;
- R es el bit legible ;
- C (bit 42) depende de X : [ 38 ]
- Si X = 1, entonces C es el bit Conforme y determina qué niveles de privilegio pueden saltar a este segmento (sin cambiar el nivel de privilegio):
- Si C = 0, entonces solo el código con el mismo nivel de privilegio que DPL puede saltar aquí;
- Si C = 1, entonces el código con el mismo nivel de privilegio o uno inferior en relación con DPL puede saltar aquí.
- Si X = 0, entonces C es el bit de dirección :
- Si C = 0, entonces el segmento crece hacia arriba ;
- Si C = 1, entonces el segmento crece hacia abajo .
- Si X = 1, entonces C es el bit Conforme y determina qué niveles de privilegio pueden saltar a este segmento (sin cambiar el nivel de privilegio):
- X es el bit ejecutable : [ 38 ]
- Si X = 1, entonces el segmento es un segmento de código;
- Si X = 0, entonces el segmento es un segmento de datos.
- S es el bit de tipo de segmento , que generalmente debe estar desactivado para los segmentos del sistema; [ 38 ]
- DPL es el Nivel de Privilegio del Descriptor ;
- P es el bit de Presente ;
- D es el tamaño de operando predeterminado ;
- G es el bit de granularidad ;
- El bit 52 del descriptor 80386 no es utilizado por el hardware.
Paginación


Además de agregar el modo virtual 8086, el 386 también agregó paginación al modo protegido. [ 39 ] Mediante la paginación, el software del sistema puede restringir y controlar el acceso de una tarea a las páginas, que son secciones de memoria. En muchos sistemas operativos, la paginación se utiliza para crear un espacio de direcciones virtuales independiente para cada tarea, impidiendo que una tarea manipule la memoria de otra. La paginación también permite mover páginas del almacenamiento primario a un almacenamiento secundario más lento y de mayor capacidad , como un disco duro . [ 40 ] Esto permite utilizar más memoria de la que está físicamente disponible en el almacenamiento primario. [ 40 ]
La arquitectura x86 permite el control de páginas mediante dos matrices : directorios de páginas y tablas de páginas . Originalmente, un directorio de páginas tenía el tamaño de una página, cuatro kilobytes, y contenía 1024 entradas de directorio de páginas (PDE), aunque las mejoras posteriores a la arquitectura x86 añadieron la capacidad de usar páginas de mayor tamaño. Cada PDE contenía un puntero a una tabla de páginas. Una tabla de páginas también tenía originalmente un tamaño de cuatro kilobytes y contenía 1024 entradas de tabla de páginas (PTE). Cada PTE contenía un puntero a la dirección física de la página real y solo se utiliza cuando se usan páginas de cuatro kilobytes. En un momento dado, solo un directorio de páginas puede estar en uso activo. [ 41 ]
Multitarea
Mediante el uso de los anillos, las puertas de llamada privilegiadas y el Segmento de Estado de Tarea (TSS), introducidos con el 286, se hizo posible la multitarea preventiva en la arquitectura x86. El TSS permite modificar los registros de propósito general, los campos selectores de segmento y las pilas sin afectar a los de otra tarea. Además, el TSS permite que el nivel de privilegio y los permisos de los puertos de E/S de una tarea sean independientes de los de otra.
En muchos sistemas operativos, no se utilizan todas las funciones del TSS. [ 42 ] Esto se debe comúnmente a problemas de portabilidad o a los problemas de rendimiento que generan los conmutadores de tareas de hardware. [ 42 ] Como resultado, muchos sistemas operativos utilizan tanto hardware como software para crear un sistema multitarea. [ 43 ]
Sistemas operativos
Los sistemas operativos como OS/2 1.x intentan alternar el procesador entre los modos protegido y real. Esto es lento e inseguro, ya que un programa en modo real puede provocar fácilmente el bloqueo del ordenador. OS/2 1.x define reglas de programación restrictivas que permiten que una API de familia o un programa vinculado se ejecute tanto en modo real como en modo protegido. Algunos sistemas operativos Unix antiguos , OS/2 1.x y Windows utilizaban este modo.
Windows 3.0 podía ejecutar programas en modo real en modo protegido de 16 bits; al cambiar a modo protegido, decidía conservar el modelo de nivel de privilegio único que se usaba en modo real, razón por la cual las aplicaciones y DLL de Windows pueden interceptar interrupciones y realizar acceso directo al hardware. Esto se mantuvo durante la serie Windows 9x . Si un programa de Windows 1.x o 2.x está bien escrito y evita la aritmética de segmentos, se ejecutará de la misma manera tanto en modo real como en modo protegido. Los programas de Windows generalmente evitan la aritmética de segmentos porque Windows implementa un esquema de memoria virtual por software, moviendo el código y los datos del programa en la memoria cuando los programas no se están ejecutando, por lo que manipular direcciones absolutas es peligroso; los programas solo deben conservar identificadores de bloques de memoria cuando no se estén ejecutando. Iniciar un programa antiguo mientras Windows 3.0 se ejecuta en modo protegido activa un cuadro de diálogo de advertencia, que sugiere ejecutar Windows en modo real u obtener una versión actualizada de la aplicación. Actualizar programas que se comportan correctamente mediante la utilidad MARK con el parámetro MEMORY evita este cuadro de diálogo. No es posible tener algunos programas con interfaz gráfica de usuario (GUI) ejecutándose en modo protegido de 16 bits y otros en modo real. En Windows 3.1 , el modo real dejó de ser compatible y no se podía acceder a él.
En los sistemas operativos modernos de 32 bits, el modo virtual 8086 todavía se utiliza para ejecutar aplicaciones, por ejemplo, programas extensores de DOS compatibles con DPMI (a través de máquinas virtuales de DOS ) o aplicaciones de Windows 3.x (a través del subsistema Windows on Windows ) y ciertas clases de controladores de dispositivos (por ejemplo, para cambiar la resolución de pantalla mediante la funcionalidad del BIOS) en OS/2 2.0 (y versiones posteriores de OS/2) y Windows NT de 32 bits , todo bajo el control de un núcleo de 32 bits. Sin embargo, los sistemas operativos de 64 bits (que se ejecutan en modo largo ) ya no lo utilizan, puesto que el modo virtual 8086 se ha eliminado del modo largo.
Véase también
Referencias
- ↑ "Método y sistema de control de acceso a memoria para su implementación" . Patente estadounidense 5483646. 23 de mayo de 1995. Archivada del original (Patente) el 26 de septiembre de 2007. Consultada el 14 de julio de 2007.
El sistema de control de acceso a memoria según la reivindicación 4, en el que dicho primer modo de dirección es un modo de dirección real y dicho segundo modo de dirección es un modo de dirección virtual protegido.
- 1 2 Manual del desarrollador de software de las arquitecturas Intel 64 e IA-32 Volumen 1: Arquitectura básica . Intel . Mayo de 2019. Sección 2.1.3 El procesador Intel 386 (1985). Archivado del original el 6 de septiembre de 2019. Recuperado el 6 de septiembre de 2019 .
- 1 2 root (14 de julio de 2007). "Guía: ¿Qué significa el modo protegido?" (Guía) . Delorie Software . Archivado del original el 3 de julio de 2023. Recuperado el 14 de julio de 2007.
El propósito del modo protegido no es proteger su programa. El propósito es proteger a todos los demás (incluido el sistema operativo) de su programa.
- 1 2 Manual del desarrollador de software de las arquitecturas Intel 64 e IA-32 Volumen 1: Arquitectura básica . Intel . Mayo de 2019. Sección 3.1 Modos de operación. Archivado del original el 6 de septiembre de 2019. Recuperado el 6 de septiembre de 2019 .
- ↑ Collins, Robert (2007). "Conceptos básicos del modo protegido" . Recuperado el 21 de julio de 2025 .
- ↑ Manual del desarrollador de software de las arquitecturas Intel 64 e IA-32 Volumen 1: Arquitectura básica . Intel . Mayo de 2019. Sección 2.1.2 El procesador Intel 286 (1982). Archivado del original el 6 de septiembre de 2019. Consultado el 6 de septiembre de 2019 .
- 1 2 "Informe de Ciudadanía Global de Intel 2003" . Archivado del original (Cronología) el 22 de marzo de 2008. Consultado el 14 de julio de 2007. 1985
Intel lanza el procesador Intel386
- ↑ Manual del desarrollador de software de las arquitecturas Intel 64 e IA-32 Volumen 1: Arquitectura básica . Intel . Mayo de 2019. Sección 2.1 Breve historia de la arquitectura Intel 64 e IA-32.
- 1 2 3 "A+ - Hardware" (Tutorial/Guía) . Tutoriales sobre desarrollos y características de microprocesadores para PC . BrainBell.com. Archivado del original el 31/03/2022 . Consultado el 24/07/2007 .
- ↑ Risley, David (23 de marzo de 2001). "Historia de la CPU" . PCMechanic. Archivado del original (Artículo) el 29 de agosto de 2008. Recuperado el 24 de julio de 2007.
Lo interesante es que los diseñadores de la época nunca sospecharon que alguien necesitaría más de 1 MB de RAM.
- 1 2 3 4 5 Kaplan, Yariv (1997). "Introducción al modo protegido" . Internals.com. Archivado del original (Artículo) el 22 de junio de 2007. Recuperado el 24 de julio de 2007 .
- ↑ "Preguntas frecuentes sobre información general del sistema operativo Coherent" . 23 de enero de 1993. Archivado del original el 4 de junio de 2016. Consultado el 7 de enero de 2014 .
- ↑ "Comunicado de prensa de Microsoft XENIX 286" (PDF) (Comunicado de prensa). Microsoft. Archivado del original (PDF) el 21/10/2014 . Consultado el 17/08/2015 .
- ↑ "Hoja informativa de MINIX" . Archivado del original el 7 de enero de 2014.
- ↑ Mueller, Scott (24 de marzo de 2006). "Procesadores P2 (286) de segunda generación" . Actualización y reparación de PC, 17.ª edición (libro) (17.ª ed.). Que. ISBN 0-7897-3404-4. Consultado el 11 de julio de 2017 .
- 1 2 80386 Manual de referencia del programador (PDF) . Santa Clara, CA: Intel. 1986. Sección 2.1 Organización y segmentación de la memoria. Archivado (PDF) del original el 28-12-2018 . Recuperado el 06-09-2019 .
- ↑ Manual del desarrollador de software de las arquitecturas Intel 64 e IA-32 Volumen 1: Arquitectura básica . Intel . Mayo de 2019. Sección 3.1 Modos de operación. Archivado del original el 6 de septiembre de 2019. Consultado el 6 de septiembre de 2019 .
- ↑ Hyde, Randall (noviembre de 2004). "12.10. Operación en modo protegido y controladores de dispositivos" . Write Great Code . O'Reilly. ISBN 1-59327-003-8.
- ↑ Charles Petzold , La maravilla de 32 bits de Intel: El microprocesador 80386, PC Magazine , 25 de noviembre de 1986, págs. 150-152
- ↑ Tom Yager (6 de noviembre de 2004). "Enviar software para que haga el trabajo del hardware" . InfoWorld . Archivado del original el 18 de octubre de 2014. Recuperado el 24 de noviembre de 2014 .
- ↑ Shvets, Gennadiy (3 de junio de 2007). "Familia de procesadores Intel 80386" (Artículo) . Archivado del original el 20 de agosto de 2007. Recuperado el 24 de julio de 2007.
80386SX
: versión de bajo costo del 80386. Este procesador tenía un bus de datos externo de 16 bits y un bus de direcciones externo de 24 bits.
- ↑ "Manual del desarrollador de software para arquitecturas Intel 64 e IA-32, volúmenes combinados 3A, 3B, 3C y 3D: Guía de programación del sistema" . Intel . 9.9.1 Cambio al modo protegido, página 9-13. Archivado del original el 6 de septiembre de 2019. Consultado el 6 de septiembre de 2019 .
- ↑ "Manual del desarrollador de software para arquitecturas Intel 64 e IA-32, volúmenes combinados 3A, 3B, 3C y 3D: Guía de programación del sistema" . Intel . Sección 9.10.2 Listado STARTUP.ASM, página 9-19. Archivado del original el 6 de septiembre de 2019. Consultado el 6 de septiembre de 2019 .
- ↑ "Manual del desarrollador de software para arquitecturas Intel 64 e IA-32, volúmenes combinados 3A, 3B, 3C y 3D: Guía de programación del sistema" . Intel . Sección 21.33.1 Segment Wraparound, página 21-34. Archivado del original el 6 de septiembre de 2019. Consultado el 6 de septiembre de 2019 .
- ↑ "Manual del desarrollador de software para arquitecturas Intel 64 e IA-32, volúmenes combinados 3A, 3B, 3C y 3D: Guía de programación del sistema" . Intel . Sección 9.9.2 Volver al modo de dirección real, página 9-14. Archivado del original el 6 de septiembre de 2019. Consultado el 6 de septiembre de 2019 .
- ↑ Manual de referencia del programador Intel 80386 1986 (PDF) . Santa Clara, CA: Intel. 1986. Capítulo 7, Multitarea. Archivado (PDF) del original el 28-12-2018 . Consultado el 06-09-2019 .
- 1 2 Manual del desarrollador de software de las arquitecturas Intel 64 e IA-32 Volumen 1: Arquitectura básica . Intel . Mayo de 2019. Sección 6.3.5 Llamadas a otros niveles de privilegio. Archivado del original el 6 de septiembre de 2019. Recuperado el 6 de septiembre de 2019 .
- ↑ Manual de referencia del programador de 80286 y 80287 (PDF) . Santa Clara, CA: Intel. 1987. Sección 1.2 Modos de operación. Archivado (PDF) del original el 27/09/2019 . Consultado el 06/09/2019 .
- ↑ Manual de referencia del programador de 80286 y 80287 (PDF) . Santa Clara, California: Intel. 1987. Sección 1.3.1 Gestión de memoria.
- ↑ Manual de referencia del programador de 80286 y 80287 (PDF) . Santa Clara, California: Intel. 1987. Apéndice C Consideraciones de compatibilidad de 8086/8088. Archivado (PDF) del original el 27/09/2019 . Consultado el 06/09/2019 .
- ↑ "Método y sistema de control de acceso a memoria para su implementación" (Patente) . Patente estadounidense 5483646. 6 de mayo de 1998. Archivada del original el 7 de julio de 2007. Consultada el 25 de julio de 2007.
Esto ha sido imposible hasta la fecha y ha obligado a los equipos de desarrollo de BIOS a añadir soporte para llamadas a funciones de 32 bits desde aplicaciones de 32 bits.
- ↑ Robinson, Tim (26 de agosto de 2002). "Modo virtual 8086" . berliOS. Archivado del original (Guía) el 3 de octubre de 2002. Recuperado el 25 de julio de 2007. ... en segundo lugar, el modo protegido también era incompatible con la gran cantidad de código
en
modo real que existía en ese momento.
- ↑ Robinson, Tim (26 de agosto de 2002). "Modo virtual 8086" . berliOS. Archivado del original (Guía) el 3 de octubre de 2002. Recuperado el 25 de julio de 2007 .
- ↑ Manual del desarrollador de software para arquitecturas Intel 64 e IA-32, volúmenes combinados 3A, 3B, 3C y 3D: Guía de programación del sistema . Intel . Mayo de 2019. Sección 20.2 Modo 8086 virtual. Archivado del original el 6 de septiembre de 2019. Consultado el 6 de septiembre de 2019 .
- ↑ Manual del desarrollador de software para arquitecturas Intel 64 e IA-32, volúmenes combinados 3A, 3B, 3C y 3D: Guía de programación del sistema . Intel . Mayo de 2019. Sección 20.2.7 Instrucciones confidenciales. Archivado del original el 6 de septiembre de 2019. Consultado el 6 de septiembre de 2019 .
- ↑ Robinson, Tim (26 de agosto de 2002). "Modo virtual 8086" . berliOS. Archivado del original (Guía) el 3 de octubre de 2002. Recuperado el 25 de julio de 2007.
Una desventaja de usar el modo V86 es la velocidad: cada instrucción sensible a IOPL hará que la CPU entre en modo kernel, al igual que la E/S a puertos que están enmascarados en el TSS.
- ↑ Dabak, Prasad; Millind Borate (octubre de 1999). Windows NT no documentado (libro). Hungry Minds. ISBN 0-7645-4569-8.
- 1 2 3 "Tabla de descriptores globales - Wiki de OSDev" . Archivado del original el 15/01/2019 . Recuperado el 15/01/2019 .
- ↑ "Descripción general del modo protegido [ deinmeister.de ] " (Sitio web) . Consultado el 29 de julio de 2007 .
- 1 2 "¿Qué es PAE X86?" . Microsoft TechNet. 28 de mayo de 2003. Archivado del original (Artículo) el 22 de abril de 2008. Recuperado el 29 de julio de 2007. El
proceso de paginación permite al sistema operativo superar los límites reales de la memoria física. Sin embargo, también tiene un impacto directo en el rendimiento debido al tiempo necesario para escribir o recuperar datos del disco.
- ↑ Gareau, Jean. "Programación avanzada para sistemas embebidos x86: Paginación" . Embedded.com. Archivado del original (Guía) el 16 de mayo de 2008. Consultado el 29 de julio de 2007.
Solo un directorio de páginas puede estar activo a la vez, indicado por el registro CR3.
- 1 2 zwanderer (2 de mayo de 2004). "noticias: Explicación de la multitarea para x86 #1" . NewOrer . NewOrder. Archivado del original (Artículo) el 12 de febrero de 2007. Recuperado el 29 de julio de 2007.
La razón por la que el cambio de tareas por software es tan popular es que puede ser más rápido que el cambio de tareas por hardware. Intel nunca desarrolló realmente el cambio de tareas por hardware, lo implementaron, vieron que funcionaba y simplemente lo dejaron así. Los avances en la multitarea mediante software han hecho que esta forma de cambio de tareas sea más rápida (algunos dicen que hasta 3 veces más rápida) que el método de hardware. Otra razón es que la forma en que Intel cambia de tareas no es en absoluto portable.
- ↑ zwanderer (2 de mayo de 2004). "noticias: Explicación de la multitarea para x86 #1" . NewOrer . NewOrder. Archivado del original (Artículo) el 12 de febrero de 2007. Recuperado el 29 de julio de 2007. ... ambos dependen de la capacidad de los procesadores Intel para cambiar de tarea,
pero
lo hacen de maneras diferentes.
Enlaces externos
- Conceptos básicos del modo protegido
- Introducción al modo protegido
- Descripción general del funcionamiento en modo protegido de la arquitectura Intel.
- Descripción general y tutorial del modo protegido
- Tutorial sobre el modo protegido de Code Project
- Implementación del lenguaje de programación
- Modos de funcionamiento X86