En el direccionamiento de memoria para arquitecturas de computadora Intel x86 , los descriptores de segmento son 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 (8 bytes de longitud en 80286 y posteriores) contiene los siguientes campos: [2]
- Una dirección base de segmento
- El límite de segmento que especifica el tamaño del segmento.
- Byte de derechos de acceso que contiene la información del mecanismo de protección
- Bits de control
Estructura
El descriptor de segmento x86 y x86-64 tiene la siguiente forma: [3]
31 | - | 24 | 23 | 22 | 21 | 20 | 19 | - | dieciséis | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | - | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dirección base [31:24] | GRAMO | D / B | L | AVL | Límite de segmento [19:16] | PAG | DPL | 1 | Tipo | C / E | R / W | A | Dirección base [23:16] | |||||||
Dirección base [15: 0] | Límite de segmento [15: 0] |
Donde representan los campos:
- Dirección base
- Dirección de memoria inicial de 32 bits del segmento
- Límite de segmento
- 20 bits de longitud del segmento. (Más específicamente, la dirección de los últimos datos accesibles, por lo que la longitud es una más que el valor almacenado aquí). La forma exacta en que esto debe interpretarse depende de otros bits del descriptor de segmento.
- G = granularidad
- Si está despejado, el límite está en unidades de bytes, con un máximo de 2 20 bytes. Si se establece, el límite está en unidades de páginas de 4096 bytes, para un máximo de 2 32 bytes.
- D = tamaño de operando predeterminado
- Si está claro, se trata de un segmento de código de 16 bits; si se establece, es un segmento de 32 bits.
- B = grande
- Si se establece, el tamaño de desplazamiento máximo para un segmento de datos aumenta a 0xffffffff de 32 bits. De lo contrario, es el máximo de 16 bits 0x0000ffff. Esencialmente el mismo significado que "D".
- L = largo
- Si se establece, este es un segmento de 64 bits (y D debe ser cero), y el código de este segmento utiliza la codificación de instrucciones de 64 bits. "L" no se puede configurar al mismo tiempo que "D", también conocido como "B".
- AVL = Disponible
- Para uso de software, no utilizado por hardware
- 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
- Tipo
- Si se establece, es un descriptor de segmento de código. Si está claro, este es un descriptor de segmento de datos / pila, que tiene "D" reemplazado por "B", "C" reemplazado por "E" y "R" reemplazado por "W". Este es, de hecho, un caso especial del campo de tipo de 2 bits, donde el bit 12 anterior borrado como "0" se refiere a descriptores de sistema más internos, para LDT, LSS y puertas.
- C = conforme
- El código de este segmento se puede llamar desde niveles menos privilegiados.
- E = Expandir hacia abajo
- Si está despejado, el segmento se expande desde la dirección base hasta la base + límite. Si se establece, se expande desde el desplazamiento máximo hasta el límite, un comportamiento que se suele utilizar para las pilas.
- R = legible
- Si está limpio, el segmento puede ejecutarse pero no leerse.
- W = escribible
- Si está claro, el segmento de datos se puede leer pero no escribir.
- A = Accedido
- Este bit es puesto a 1 por hardware cuando se accede al segmento y borrado por software.
Ver también
Referencias
- ^ Bovet, DP y Cesati, M. (2000). Comprensión del kernel de Linux (primera edición) . O'Reilly & Associates, Inc.
- ^ Tabak, Daniel (1995). Microprocesadores avanzados . Editores Mcgraw Hill. pag. 149 . ISBN 9780070628434.
- ^ Manual del programador de la arquitectura AMD64 Volumen 2: Programación del sistema (PDF) (Informe técnico). 2013. p. 80. Archivado desde el original (PDF) el 18 de febrero de 2018.
- Tabak, Daniel. Microprocesadores avanzados . McGraw Hill y Co.
- Hall, Douglas. Microprocesadores e Interfaces . Publicaciones de McGraw Hill.
Otras lecturas
- Robert R. Collins (agosto de 1998). "La caché del descriptor de segmento" . Diario del Dr. Dobb .