En informática, el modo protegido , también llamado modo de dirección virtual protegida , [1] es un modo operativo de unidades centrales de procesamiento (CPU) compatibles con x86 . Permite que el software del sistema utilice funciones como memoria virtual , paginación y multitarea segura diseñada para aumentar el control del sistema operativo sobre el software de la 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 los procesadores x86. [4] El modo protegido solo se puede ingresar 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 añadió primero a la x86 arquitectura en 1982, [6] con el lanzamiento de Intel 's 80286 (286) de procesador, y luego se extendió con el lanzamiento de la 80386 (386) en 1985. [7] Debido a las mejoras agregado por el modo protegido, se ha adoptado ampliamente y se ha convertido en la base para todas las mejoras posteriores a la arquitectura x86, [8] aunque muchas de esas mejoras, como instrucciones agregadas y nuevos registros, también trajeron beneficios al modo real.
Historia
El Intel 8086 , el predecesor del 286, fue diseñado originalmente con un bus de direcciones de 20 bits para su memoria . [9] Esto permitió al procesador acceder a 2 20 bytes de memoria, equivalente a 1 megabyte . [9] En ese momento, 1 megabyte se consideraba una cantidad relativamente grande de memoria, [10] por lo que los diseñadores de la computadora personal de IBM reservaron los primeros 640 kilobytes para que los usaran las aplicaciones y el sistema operativo y los 384 kilobytes restantes para el BIOS. (Sistema básico de entrada / salida) y memoria para dispositivos adicionales . [11]
A medida que disminuyó el costo de la memoria y aumentó el uso de la memoria, la limitación de 1 MB se convirtió en un problema importante. Intel tenía la intención de resolver 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 Microsoft Xenix (alrededor de 1984), [12] Coherent [13] y Minix . [14] Varias deficiencias, como la imposibilidad de acceder al BIOS o las llamadas al DOS debido a la imposibilidad de volver al modo real sin reiniciar el procesador, impidieron un uso generalizado. [15] La aceptación también se vio obstaculizada por el hecho de que el 286 solo permitía el acceso a la memoria en segmentos de 16 bits a través de cada uno de los registros de cuatro segmentos, lo que significa que solo se podía acceder a 4 * 2 16 bytes, equivalentes a 256 kilobytes , a la vez. [11] Debido a que cambiar un registro de segmento en modo protegido hizo 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 tomó muchas decenas de ciclos de procesador, haciéndola mucho más lenta que en el 8086; Por lo tanto, la estrategia de computar direcciones de segmentos 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ó impráctica, incluso para aquellos pocos programadores que lo habían dominado en el 8086/8088. .
El 286 mantuvo la compatibilidad con versiones anteriores de su precursor el 8086 al ingresar inicialmente en modo real al encenderse. [4] El modo real funcionaba prácticamente de manera idéntica al 8086, lo que permitía que la gran mayoría del software 8086 existente se ejecutara sin modificaciones en el 286 más nuevo. El modo real también servía como un modo más básico en el que se podía configurar el modo protegido, resolviendo una especie de problema del huevo y la gallina. Para acceder a la funcionalidad extendida del 286, el sistema operativo configuraría algunas tablas en la memoria que controlaban el acceso a la memoria en modo protegido, configuraba las direcciones de esas tablas en algunos registros especiales del procesador y luego configuraba el procesador en modo protegido. Esto habilitó el direccionamiento de 24 bits que permitió al procesador acceder a 2 24 bytes de memoria, equivalente 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 fue lanzado con un tamaño de bus de direcciones de 32 bits, lo que permite el acceso a 2 32 bytes de memoria, equivalente a 4 gigabytes . [16] Los tamaños de los segmentos también se incrementaron a 32 bits, lo que significa que se podía acceder al espacio de direcciones completo de 4 gigabytes sin la necesidad de cambiar entre múltiples segmentos. [16] Además del tamaño aumentado 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 operativas. [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 las fallas del modo protegido 286 para satisfacer las necesidades del DOS multiusuario , Intel agregó un modo 8086 virtual separado , [19] que permitió emular múltiples procesadores 8086 virtualizados en el 386. Se requiere virtualización de hardware x86 para virtualizar el Sin embargo, el modo protegido en sí 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
- 32-bit física y virtual espacio de direcciones (32 bits espacio de direcciones físicas no está presente en la 80386SX , y otras variantes 386 de procesador que utilizan el más viejo 286 de bus. [21] )
- 32 bits de segmento offsets
- Posibilidad de volver al modo real sin reiniciar
- Modo 8086 virtual
Entrar y salir 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 que se ingresó al modo protegido. IBM ideó una solución alternativa (implementada en IBM AT ) que implicaba restablecer la CPU a través del 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 permitió al BIOS restaurar la CPU a un estado similar y comenzar a ejecutar el código antes del reinicio. [ aclaración necesaria ] Más tarde, se usó una falla triple para restablecer la CPU 286, que era mucho más rápida y limpia que el método del controlador de teclado (y no depende del hardware compatible con IBM AT, pero funcionará en cualquier CPU 80286 en cualquier sistema).
Para ingresar al 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. En una máquina compatible con IBM, la línea A20 ( línea de dirección 21) también debe estar habilitada para permitir el uso de todas las líneas de dirección para que la CPU pueda acceder a más de 1 megabyte de memoria (solo se permite usar las primeras 20 después de encendido, para garantizar la compatibilidad con software anterior escrito para los modelos IBM PC y PC / XT basados en Intel 8088 ). Después de realizar esos dos pasos, el bit PE debe establecerse en el registro CR0 y debe realizarse un salto lejano para borrar la cola de entrada de captación previa .
; establecer PE bit mov eax , cr0 o eax , 1 mov cr0 , eax; salto lejano (cs = selector de segmento de código) jmp cs : @ pm@ pm :; Ahora estamos en PM.
Con el lanzamiento del 386, se pudo 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 la necesidad de realizar los pasos de configuración iniciales requeridos con el 286.
Características
El modo protegido tiene una serie de características diseñadas para mejorar el control de un sistema operativo sobre el software de la 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. [22]
Niveles de privilegio
En el modo protegido, hay cuatro niveles de privilegios o anillos , numerados del 0 al 3, siendo el anillo 0 el más privilegiado y el 3 el menos. El uso de anillos permite que el software del sistema restrinja el acceso de las tareas a los datos, las puertas de llamada o la ejecución de instrucciones privilegiadas. [23] En la mayoría de los entornos, el sistema operativo y algunos controladores de dispositivos se ejecutan en el anillo 0 y las aplicaciones se ejecutan en el anillo 3. [23]
Compatibilidad de aplicaciones en modo real
Según el Manual de referencia del programador Intel 80286 , [24]
el 80286 sigue siendo compatible con la mayoría de los programas de aplicación 8086 y 80186. La mayoría de los programas de aplicación del 8086 se pueden volver a compilar o volver a montar y ejecutar en el 80286 en modo protegido.
En su mayor parte, la compatibilidad binaria con el código en modo real, la capacidad de acceder a hasta 16 MB de memoria física y 1 GB de memoria virtual , fueron los cambios más evidentes para los programadores de aplicaciones. [25] Esto no estuvo exento de limitaciones. Si una aplicación utilizara o dependiera de cualquiera de las técnicas siguientes, no se ejecutaría: [26]
- 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 Intel ha reservado las interrupciones del BIOS [27]
En realidad, casi todos los programas de aplicación de DOS violaron estas reglas. [28] Debido a estas limitaciones, el modo 8086 virtual se introdujo 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 muchos Windows 2.x ( Windows 2.0 y Windows 2.1 x ) aplicaciones en modo protegido, que se ejecutaron en modo real en Windows 2.x. [29]
Modo 8086 virtual
Con el lanzamiento del 386, el modo protegido ofrece lo que los manuales de Intel llaman modo 8086 virtual . El modo Virtual 8086 está diseñado para permitir que el código escrito previamente para el 8086 se ejecute sin modificaciones y al mismo tiempo que otras tareas, sin comprometer la seguridad o la estabilidad del sistema. [30]
El modo Virtual 8086, sin embargo, no es completamente compatible con todos los programas. Los programas que requieran manipulación de segmentos, instrucciones privilegiadas, acceso directo al hardware o que usen código auto modificable generarán una excepción que debe ser atendida por el sistema operativo. [31] Además, las aplicaciones que se ejecutan en modo 8086 virtual generan una trampa con el uso de instrucciones que involucran entrada / salida (E / S), lo que puede afectar negativamente al rendimiento. [32]
Debido a estas limitaciones, algunos programas diseñados originalmente para ejecutarse en el 8086 no se pueden ejecutar en el modo 8086 virtual. Como resultado, el software del sistema se ve obligado a comprometer la seguridad del sistema o la compatibilidad con versiones anteriores cuando se trata de software heredado . Un ejemplo de este tipo de compromiso se puede ver con el lanzamiento de Windows NT , que eliminó la compatibilidad con versiones anteriores para las aplicaciones de DOS "con mal comportamiento". [33]
Direccionamiento de segmentos
Modo real
En el modo real, cada dirección lógica apunta directamente a la ubicación de la memoria física, cada dirección lógica consta de dos partes de 16 bits: La parte del 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 20 -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 physical_address : = segment_part × 16 + offset
(si la línea de dirección A20 está habilitada), respectivamente (parte_segmento × 16 + desplazamiento) mod 2 20 (si A20 está desactivado) [ aclaración necesaria ] Cada segmento tiene un tamaño de 2 16 bytes.
Modo protegido
En modo protegido, el segmento segmento se reemplaza por un selector de 16 bits , en el que los 13 bits superiores (bit 3 a bit 15) contienen el índice de una entrada dentro de una tabla de descriptores . El siguiente bit (bit 2) especifica si la operación se usa con GDT o LDT. Los dos bits más bajos (bit 1 y bit 0) del selector se combinan para definir el privilegio de la solicitud, donde los valores de 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 inferiores estén puestos a 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 (banderas).
286
La dirección del segmento dentro de la entrada de la tabla de descriptores tiene una longitud de 24 bits, por lo que cada byte de la memoria física se puede definir como límite del segmento. El valor límite dentro de 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 memoria física.
386
La dirección del segmento dentro de la entrada de la tabla de descriptores se expande a 32 bits, por lo que cada byte de la memoria física se puede definir como límite del segmento. El valor límite dentro de la entrada de la tabla de descriptores se amplía a 20 bits y se completa con una bandera 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 1, 2, ..., 2 20 bytes.
- Si el bit G es un límite, tiene una granularidad de 2 12 bytes, es decir, el tamaño del segmento puede ser 1 × 2 12 , 2 × 2 12 , ..., 2 20 × 2 12 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 de la paginación.
El procesador 386 también usa valores de 32 bits para el desplazamiento de la dirección.
Para mantener la compatibilidad con el modo protegido 286, se agregó un nuevo indicador predeterminado (D-bit, para abreviar). 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á en (1), se interpretarán como comandos de 32 bits.
Estructura de la entrada del descriptor de segmento
80286 Descriptor de segmento | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
80386 Descriptor de segmento | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Dónde:
- A es el bit de acceso ;
- R es el bit legible ;
- C (Bit 42) depende de X : [34]
- si X = 1, entonces C es el bit de conformidad y determina qué niveles de privilegios pueden saltar de lejos a este segmento (sin cambiar el nivel de privilegios):
- si C = 0, 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 un nivel más bajo 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 hasta ;
- si C = 1, el segmento crece hacia abajo .
- si X = 1, entonces C es el bit de conformidad y determina qué niveles de privilegios pueden saltar de lejos a este segmento (sin cambiar el nivel de privilegios):
- X es el bit ejecutable : [34]
- 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 se debe poner a cero para los segmentos del sistema; [34]
- DPL es el nivel de privilegio de descriptor ;
- P es el bit Presente ;
- D es el tamaño del 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 8086 virtual, el 386 también agregó paginación al modo protegido. [35] A través de la paginación, el software del sistema puede restringir y controlar el acceso de una tarea a las páginas, que son secciones de la memoria. En muchos sistemas operativos, la paginación se utiliza para crear un espacio de direcciones virtual independiente para cada tarea, evitando que una tarea manipule la memoria de otra. La paginación también permite que las páginas se muevan del almacenamiento principal a un almacenamiento secundario más grande y más lento , como una unidad de disco duro . [36] Esto permite utilizar más memoria de la que está físicamente disponible en el almacenamiento primario. [36]
La arquitectura x86 permite el control de páginas a través de 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 1.024 entradas de directorio de páginas (PDE), aunque las mejoras posteriores a la arquitectura x86 han agregado la capacidad de usar tamaños de página más grandes. 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 1.024 entradas de tablas de páginas (PTE). Cada PTE contenía un puntero a la dirección física de la página real y solo se usa cuando se usan las páginas de cuatro kilobytes. En un momento dado, solo un directorio de páginas puede estar en uso activo. [37]
Multitarea
Mediante el uso de anillos, puertas de llamada privilegiadas y el segmento de estado de tareas (TSS), introducido con el 286, la multitarea preventiva se hizo posible en la arquitectura x86. El TSS permite que los registros de propósito general, los campos de selección de segmento y las pilas se modifiquen sin afectar los de otra tarea. El TSS también permite que el nivel de privilegios de una tarea y los permisos del puerto de E / S sean independientes de los de otra tarea.
En muchos sistemas operativos, no se utilizan todas las funciones del TSS. [38] Esto se debe comúnmente a problemas de portabilidad o debido a problemas de rendimiento creados con los conmutadores de tareas de hardware. [38] Como resultado, muchos sistemas operativos utilizan tanto hardware como software para crear un sistema multitarea. [39]
Sistemas operativos
Los sistemas operativos como OS / 2 1.x intentan cambiar el procesador entre los modos protegido y real. Esto es lento e inseguro, porque un programa en modo real puede bloquear fácilmente una computadora. OS / 2 1.x define reglas de programación restrictivas que permiten que una API familiar o un programa vinculado se ejecute en modo real o protegido. Algunos de los primeros sistemas operativos Unix, OS / 2 1.xy Windows usaban este modo.
Windows 3.0 pudo ejecutar programas en modo real en modo protegido de 16 bits; al cambiar al modo protegido, decidió preservar el modelo de nivel de privilegio único que se utilizó en el modo real, por lo que las aplicaciones de Windows y las DLL pueden conectar interrupciones y acceder directamente al hardware. Eso duró hasta la serie Windows 9x . Si un programa de Windows 1.xo 2.x está escrito correctamente y evita la aritmética de segmentos, se ejecutará de la misma manera en los modos real y protegido. Los programas de Windows generalmente evitan la aritmética de segmentos porque Windows implementa un esquema de memoria virtual de software, moviendo el código del programa y los datos en la memoria cuando los programas no se están ejecutando, por lo que manipular direcciones absolutas es peligroso; los programas solo deben mantener identificadores en los bloques de memoria cuando no se ejecutan. Iniciar un programa antiguo mientras Windows 3.0 se está ejecutando en modo protegido desencadena un cuadro de diálogo de advertencia, que sugiere ejecutar Windows en modo real u obtener una versión actualizada de la aplicación. La actualización de programas con buen comportamiento mediante la utilidad MARK con el parámetro MEMORY evita este cuadro de diálogo. No es posible tener algunos programas de GUI ejecutándose en modo protegido de 16 bits y otros programas de GUI ejecutándose en modo real. En Windows 3.1 , el modo real ya no era compatible y no se podía acceder a él.
En los sistemas operativos modernos de 32 bits, el modo 8086 virtual todavía se usa para ejecutar aplicaciones, por ejemplo, programas extensores de DOS compatibles con DPMI (a través de máquinas DOS virtuales ) o aplicaciones de Windows 3.x (a través del subsistema Windows en Windows ) y ciertas clases de controladores de dispositivo. (por ejemplo, para cambiar la resolución de pantalla usando la funcionalidad BIOS) en OS / 2 2.0 (y posterior OS / 2) y Windows NT de 32 bits , todo bajo el control de un kernel de 32 bits. Sin embargo, los sistemas operativos de 64 bits (que se ejecutan en modo largo ) ya no usan esto, ya que el modo 8086 virtual se ha eliminado del modo largo.
Ver también
- Modo largo
- Lenguaje ensamblador
- Intel
- Ring (seguridad informática)
- lenguaje ensamblador x86
Referencias
- ^ "Método de control de acceso a la memoria y sistema para realizar el mismo" . Patente de Estados Unidos 5483646 . 23 de mayo de 1995. Archivado desde el original (Patente) el 26 de septiembre de 2007 . Consultado el 14 de julio de 2007 .
5. El sistema de control de acceso a la 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 protegida.
- ^ a b Manual del desarrollador de software de 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).
- ^ a b root (14 de julio de 2007). "Guía: ¿Qué significa el modo protegido?" (Guía) . Software Delorie . Consultado 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.
- ^ a b Manual del desarrollador de software de arquitecturas Intel 64 e IA-32 Volumen 1: Arquitectura básica . Intel . Mayo de 2019. Sección 3.1 Modos de funcionamiento.
- ^ Collins, Robert (2007). "Conceptos básicos del modo protegido" (PDF) . ftp.utcluj.ro. Archivado desde el original (PDF) el 7 de julio de 2011 . Consultado el 31 de julio de 2009 .
- ^ Manual del desarrollador de software de 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).
- ^ a b "Informe de ciudadanía global de Intel 2003" . Archivado desde el original (línea de tiempo) 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 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.
- ^ a b c "A + - Hardware" (Tutorial / Guía) . Tutoriales de desarrollo y características de microprocesadores de PC . BrainBell.com . Consultado el 24 de julio de 2007 .
- ^ Risley, David (23 de marzo de 2001). "Un historial de la CPU" . PCMechanic. Archivado desde el original (artículo) el 29 de agosto de 2008 . Consultado 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.
- ^ a b c d e Kaplan, Yariv (1997). "Introducción al modo protegido" . Internals.com. Archivado desde el original (artículo) el 22 de junio de 2007 . Consultado el 24 de julio de 2007 .
- ^ "Comunicado de prensa de Microsoft XENIX 286" (PDF) (Comunicado de prensa). Microsoft.
- ^ "Preguntas frecuentes sobre información general para el sistema operativo coherente" . 23 de enero de 1993.
- ^ "Ficha de información MINIX" . Archivado desde el original el 7 de enero de 2014.
- ^ Mueller, Scott (24 de marzo de 2006). "P2 (286) Procesadores de segunda generación" . Actualización y reparación de PC, 17ª edición (libro) (17 ed.). What. ISBN 0-7897-3404-4. Consultado el 11 de julio de 2017 .
- ^ a b 80386 Manual de referencia del programador (PDF) . Santa Clara, CA: Intel. 1986. Sección 2.1 Organización y segmentación de la memoria.
- ^ Manual del desarrollador de software de arquitecturas Intel 64 e IA-32 Volumen 1: Arquitectura básica . Intel . Mayo de 2019. Sección 3.1 Modos de funcionamiento.
- ^ Hyde, Randall (noviembre de 2004). "12.10. Operación en modo protegido y controladores de dispositivo" . Escribe un gran código . O'Reilly. ISBN 1-59327-003-8.
- ^ Charles Petzold , Intel's 32-bit Wonder: The 80386 Microprocessor, PC Magazine , 25 de noviembre de 1986, págs. 150-152
- ^ Tom Yager (6 de noviembre de 2004). "Envío de software para hacer el trabajo del hardware" . InfoWorld . Consultado el 24 de noviembre de 2014 .
- ^ Shvets, Gennadiy (3 de junio de 2007). "Familia de procesadores Intel 80386" (artículo) . Consultado 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 externas de 24 bits.
- ^ Manual de referencia del programador Intel 80386 1986 (PDF) . Santa Clara, CA: Intel. 1986. Capítulo 7, Multitarea.
- ^ a b Manual del desarrollador de software de 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.
- ^ Manual de referencia del programador 80286 y 80287 (PDF) . Santa Clara, CA: Intel. 1987. Sección 1.2 Modos de funcionamiento.
- ^ Manual de referencia del programador 80286 y 80287 (PDF) . Santa Clara, California: Intel. 1987. Sección 1.3.1 Gestión de la memoria.
- ^ Manual de referencia del programador 80286 y 80287 (PDF) . Santa Clara, California: Intel. 1987. Apéndice C 8086/8088 Consideraciones de compatibilidad.
- ^ "Método y sistema de control de acceso a la memoria para realizar la misma" (Patente) . Patente de Estados Unidos 5483646 . 6 de mayo de 1998 . Consultado el 25 de julio de 2007 .
Esto ha sido imposible hasta la fecha y ha obligado a los equipos de desarrollo de BIOS a agregar soporte en el BIOS para llamadas a funciones de 32 bits desde aplicaciones de 32 bits.
- ^ Robinson, Tim (26 de agosto de 2002). "Modo 8086 virtual" . berliOS. Archivado desde el original (Guía) el 3 de octubre de 2002 . Consultado 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 8086 virtual" . berliOS. Archivado desde el original (Guía) el 3 de octubre de 2002 . Consultado el 25 de julio de 2007 .
- ^ Manual del desarrollador de software de 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.
- ^ Manual del desarrollador de software de 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 sensibles.
- ^ Robinson, Tim (26 de agosto de 2002). "Modo 8086 virtual" . berliOS. Archivado desde el original (Guía) el 3 de octubre de 2002 . Consultado 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 ingrese al modo kernel, al igual que la E / S en los puertos que están enmascarados en el TSS.
- ^ Dabak, Prasad; Millind Borate (octubre de 1999). Windows NT sin documentar (libro). Mentes hambrientas. ISBN 0-7645-4569-8.
- ^ a b c "Tabla de descriptores globales - OSDev Wiki" .
- ^ "Descripción general de ProtectedMode [deinmeister.de]" (sitio web) . Consultado el 29 de julio de 2007 .
- ^ a b "¿Qué es PAE X86?" (Artículo) . Microsoft TechNet. 28 de mayo de 2003 . Consultado el 29 de julio de 2007 .
El proceso de paginación permite que el sistema operativo supere los límites reales de 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 x86 incrustada avanzada: paginación" (Guía) . Embedded.com . Consultado el 29 de julio de 2007 .
Solo puede haber un directorio de página activo a la vez, indicado por el registro CR3.
- ^ a b zwanderer (2 de mayo de 2004). "noticias: Multitarea para x86 explicada # 1" . NewOrer . Nuevo orden. Archivado desde el original (artículo) el 12 de febrero de 2007 . Consultado el 29 de julio de 2007 .
La razón por la que el cambio de tareas de software es tan popular es que puede ser más rápido que el cambio de tareas de hardware. Intel nunca desarrolló realmente la conmutación de tareas de hardware, lo implementaron, vieron que funcionaba y simplemente lo dejaron allí. Los avances en la multitarea con software han hecho que esta forma de cambio de tareas sea más rápida (algunos dicen que hasta 3 veces más rápido) que el método de hardware. Otra razón es que la forma de Intel de cambiar tareas no es portátil en absoluto.
- ^ zwanderer (2 de mayo de 2004). "noticias: Multitarea para x86 explicada # 1" . NewOrer . Nuevo orden. Archivado desde el original (artículo) el 12 de febrero de 2007 . Consultado el 29 de julio de 2007 .
... ambos confían en la capacidad de los procesadores Intel para cambiar de tarea, confían en ella de diferentes maneras.
enlaces externos
- Conceptos básicos del modo protegido
- Introducción al modo protegido
- Descripción general de las operaciones en modo protegido de la arquitectura Intel
- Tutorial de TurboIRC.COM para ingresar al modo protegido desde DOS
- Tutorial y descripción general del modo protegido
- Tutorial del modo protegido de Code Project
- Akernelloader cambia del modo real al modo protegido