stringtranslate.com

Descriptor de segmento

En el direccionamiento de memoria para arquitecturas de computadoras Intel x86 , los descriptores de segmento son una parte de la unidad de segmentación, que se utiliza para traducir una dirección lógica a una dirección lineal. Los descriptores de segmento describen el segmento de memoria al que se hace referencia en la dirección lógica. [1] El descriptor de segmento (de 8 bytes de longitud en 80286 y posteriores) contiene los siguientes campos: [2]

  1. Una dirección base de segmento
  2. El límite del segmento que especifica el tamaño del segmento.
  3. Byte de derechos de acceso que contiene la información del mecanismo de protección
  4. Bits de control

Estructura

El descriptor de segmento x86 y x86-64 tiene el siguiente formato: [3]

Dónde se encuentran los campos:

Dirección base
Dirección de memoria inicial del segmento. Su longitud es de 32 bits y se crea a partir de los bits 16 a 31 de la parte inferior y los bits 0 a 7 de la parte superior, seguidos de los bits 24 a 31.
Límite de segmento
Su longitud es de 20 bits y se crea a partir de los bits de la parte inferior 0 a 15 y los bits de la parte superior 16 a 19. Define la dirección del último dato accesible. La longitud es uno más que el valor almacenado aquí. La interpretación exacta de esto depende del bit de granularidad del descriptor de segmento.
G=Granularidad
Si está claro, el límite se expresa en unidades de bytes, con un máximo de 2 20 bytes. Si se establece, el límite se expresa en unidades de páginas de 4096 bytes, con un máximo de 2 32 bytes.
D/B
D = Tamaño de operando predeterminado: si está claro, se trata de un segmento de código de 16 bits; si está configurado, se trata de un segmento de 32 bits.
B = Grande: si se configura, el tamaño máximo de desplazamiento para un segmento de datos se incrementa a 32 bits 0xffffffff. De lo contrario, es el máximo de 16 bits 0x0000ffff. Básicamente, tiene el mismo significado que "D".
L=Largo
Si se configura, este es un segmento de 64 bits (y D debe ser cero) y el código en este segmento utiliza la codificación de instrucciones de 64 bits. "L" no se puede configurar al mismo tiempo que "D", es decir, "B". (Bit 21 en la imagen)
AVL=Disponible
Para uso de software, no para uso de hardware (Bit 20 en la imagen con la etiqueta A)
P=Presente
Si está claro, se genera una excepción de "segmento no presente" en cualquier referencia a este segmento.
DPL=Nivel de privilegio del descriptor
Nivel de privilegio (anillo) necesario para acceder a este descriptor
S=Segmento del sistema
Si está claro, se trata de un segmento del sistema; si es 1, se trata de un segmento de código/datos.
Tipo
Si el bit 11 está activado, se trata de un descriptor de segmento de código. Si está desactivado, se trata de un descriptor de segmento de datos/pila, en el que "D" se reemplaza por "B", "C" se reemplaza por "E" y "R" se reemplaza por "W". De hecho, se trata de un caso especial del campo de tipo de 2 bits, en el que el bit 12 anterior desactivado como "0" se refiere a más descriptores de sistema internos, para LDT, LSS y puertas.
C=Conforme
El código de este segmento puede llamarse desde niveles menos privilegiados.
E=Expandir hacia abajo
Si está claro, el segmento se expande desde la dirección base hasta la base + límite. Si está configurado, se expande desde el desplazamiento máximo hasta el límite, un comportamiento que se usa generalmente para pilas.
R=Legible
Si está claro, el segmento se puede ejecutar, pero no leer.
W=Escribible
Si está claro, el segmento de datos se puede leer, pero no escribir.
A=Accedido
Este bit se establece en 1 por hardware cuando se accede al segmento y se borra por software.

Véase también

Referencias

  1. ^ Bovet, DP y Cesati, M. (2000). Entendiendo el núcleo de Linux (Primera edición) . O'Reilly & Associates, Inc.
  2. ^ Tabak, Daniel (1995). Microprocesadores avanzados . Mcgraw Hill Publishers. pág. 149. ISBN 9780070628434.
  3. ^ Manual del programador de la arquitectura AMD64, volumen 2: Programación del sistema (PDF) (Informe técnico). 2013. pág. 80. Archivado desde el original (PDF) el 18 de febrero de 2018.

Lectura adicional

Enlaces externos