Modo protegido

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 21 de mayo de 2017; las comprobaciones requieren 14 ediciones .

Modo protegido (modo de direccionamiento virtual protegido): el modo de funcionamiento de los procesadores compatibles con x86 . Ya estaba parcialmente implementado en el procesador 80286 , pero la forma de trabajar con la memoria era significativamente diferente allí, ya que los procesadores aún eran de 16 bits y no se implementó la paginación de memoria . La primera implementación de 32 bits del modo protegido es el procesador Intel 80386 . Utilizado en procesadores compatibles de otros fabricantes. Este modo se utiliza en los sistemas operativos multitarea modernos, Windows , Linux , macOS .

Digital Equipment (DEC) utilizó un modo similar para computadoras de 32 bits: VAX-11 .

Características del procesador 80286

En el procesador 80286 , además del modo real , también se implementó un modo protegido. En modo protegido, el procesador puede direccionar hasta 16 MB de memoria física y 1 GB de memoria virtual (16384 segmentos de 64 KB cada uno) cambiando el mecanismo de direccionamiento. El cambio del modo real al modo protegido se realiza en software y es relativamente simple; sin embargo, para volver a cambiar, se requiere un reinicio de hardware del procesador. El registro de palabra de estado de la máquina (MSW) se utiliza para realizar un seguimiento del modo de funcionamiento actual del procesador. Los programas en modo real no pueden ejecutarse en modo protegido sin modificaciones, al igual que los programas BIOS de las máquinas .

La esencia del modo protegido es la siguiente: el programador y los programas que desarrolla utilizan un espacio de direcciones lógicas, cuyo tamaño puede ser de 1 gigabyte. La unidad de gestión de memoria (MMU) convierte automáticamente la dirección lógica en una dirección física . En este caso, el contenido del registro de segmento no está directamente relacionado con la dirección física, sino que es el número de segmento en la tabla correspondiente. Gracias al modo protegido, solo la parte del programa que se necesita en ese momento se puede almacenar en la memoria y el resto se puede almacenar en una memoria externa (por ejemplo, en un disco duro). Si se accede a una parte del programa que no está actualmente en la memoria, el sistema operativo puede pausar el programa, cargar la sección de código necesaria desde la memoria externa y reanudar la ejecución del programa. En consecuencia, los programas que son más grandes que la cantidad de memoria disponible se vuelven válidos y el usuario siente que está trabajando con más memoria de la que realmente tiene.

La dirección física se forma de la siguiente manera. Los registros de segmento almacenan un selector que contiene el índice del descriptor en la tabla de descriptores (13 bits), 1 bit que determina a qué tabla de descriptores se accederá (local o global) y 2 bits del nivel de privilegio solicitado. A continuación, se accede a la tabla de descriptores correspondiente y al descriptor correspondiente, que contiene la dirección del segmento inicial de 24 bits , el tamaño del segmento y los derechos de acceso, después de lo cual se calcula la dirección física requerida sumando la dirección del segmento con el desplazamiento de la dirección de 16 bits. Registrarse.

Características del procesador 80386 - 80486

Con la llegada de los procesadores 80386 de 32 bits de Intel, los procesadores pueden funcionar en tres modos: procesador 8086 real , protegido y virtual.

En modo protegido, se utilizan todas las capacidades de un procesador de 32 bits: se proporciona acceso directo a 4 GB de espacio de direcciones físicas y multitarea con ejecución paralela de varios programas ( procesos ). Estrictamente hablando, el sistema operativo multitarea organiza el modo multitarea, sin embargo, el microprocesador proporciona el mecanismo confiable necesario para que este modo proteja las tareas entre sí mediante un sistema de privilegios de cuatro niveles . También en este modo, la memoria de paginación está disponible, lo que aumenta el nivel de protección de las tareas entre sí y la eficiencia de su ejecución.

Con el procesador i386, Intel reconoció la necesidad de una mejor compatibilidad con el modo real porque el software no estaba completamente listo para ejecutarse en modo protegido en el momento de su lanzamiento. Por lo tanto, por ejemplo, en i386, es posible cambiar del modo protegido al modo real (durante el desarrollo de 80286 se consideró que esto no sería necesario, por lo tanto, en computadoras con un procesador 80286, volver al modo real es llevado a cabo por circuitos - a través de un reinicio del procesador).

Cuando se enciende el microprocesador, el modo de dirección real se establece automáticamente en él. La transición al modo protegido se lleva a cabo mediante programación mediante la ejecución de la secuencia de comandos adecuada. Los programas destinados al modo protegido deben escribirse de una manera especial. Esto significa que el modo real y el protegido son incompatibles.

Paginación de memoria

Toda la memoria física se divide en páginas de un tamaño fijo ( 4K bytes , 2MB o 4MB, x86_64 también 1GB). Cada página, independientemente de su tamaño, se alinea en un límite de 4K bytes .

La idea principal se reduce a la formación de tablas de descripción de memoria que determinan el estado de sus segmentos/páginas individuales, etc. Si hay escasez de memoria, el sistema operativo puede descargar parte de los datos de la RAM al disco e ingresar un indicación de la ausencia de este dato en memoria en la tabla de descripción. Al intentar acceder a los datos faltantes, el procesador generará una excepción #PF (una especie de interrupción) y dará el control al sistema operativo, que devolverá los datos a la memoria y luego devolverá el control al programa. Así, para los programas, el proceso de intercambio de datos de los discos pasa desapercibido.

Direccionamiento lineal

El direccionamiento de memoria lineal  es un esquema de direccionamiento de memoria de computadora en modo protegido (comenzando con Intel 80386 y otros procesadores x86 compatibles). Utilizado por la mayoría de los sistemas operativos multitarea modernos.

Gracias al mecanismo de direccionamiento lineal, puede crear cualquier número (limitado solo por el tamaño de la RAM ) de espacios de direcciones virtuales independientes . Además, cada página del espacio de direcciones lineales se puede ubicar en cualquier dirección física o incluso se puede paginar en el disco.

Cuando se utiliza el direccionamiento lineal, la dirección lógica de 32 bits se divide en tres partes:

Al usar páginas de 4 M Bytes , falta la segunda parte. El desplazamiento en la página estará determinado por los bits 21-0 (22 bits).

Para habilitar el direccionamiento lineal, debe, mientras está en modo protegido, configurar el bit PG en el registro CR0 . Primero debe crear en la memoria un directorio de páginas ( Directorio de páginas en inglés  , PD) y una tabla de páginas ( Tabla de páginas en inglés , PT), y luego cargar la dirección física del directorio de páginas en el registro CR3 .  

Catálogo y tablas de páginas

Ambas estructuras son tablas de entradas de directorio y tablas de páginas ( English  Page Directory Entry , PDE y English  Page Table Entry , PTE) páginas de memoria de 4 Kbytes .

Ambos elementos tienen 4 bytes (32 bits ) de largo y tienen una estructura similar:

Los campos amarillos (dirección de la tabla de páginas, dirección de la página) contienen los 20 bits superiores de la tabla de páginas y la dirección de la página, respectivamente (los 12 bits inferiores de la dirección física siempre son cero, no se olvide de la alineación).

Los tres bits Avl son los bits dados al sistema. Cualquier cosa se puede escribir en ellos.

Descripción de las banderas:

Véase también

Notas

  1. Más específicamente, la dirección completa (32 bits) se escribe en CR2 . P.ej. si el programa accedió a la dirección 00001543h (es decir, la segunda página (No. 1) con páginas de 4 KB cada una), entonces este número se escribirá en CR2
  2. The Unabridged Pentium 4: IA32 Processor Genealogy ISBN 0-321-24656-X "Función PAT (tabla de atributos de página)" página 797
  3. kernel.org/doc/ols/2008/ols2008v2-pages-135-144.pdf
  4. Puede eliminar cualquier página del caché TLB con el comando privilegiado INVLPG

Literatura

Enlaces