Español
Electrónica industrial

descriptor de segmento

Inglés: segment descriptor

Una parte de la unidad de segmentación, utilizada para traducir una dirección lógica a una dirección lineal.

descriptor de segmento: registro de traducción de memoria en procesadores x86

Un descriptor de segmento es una estructura de datos de 64 bits contenida en una tabla de segmentos que describe la ubicación, el tamaño y los permisos de acceso de un segmento de memoria. El procesador lo utiliza para convertir una dirección lógica (selector de segmento más desplazamiento) en una dirección lineal que apunta a la memoria física real. Esta traducción ocurre en microsegundos durante cada acceso a la memoria en modo protegido en arquitecturas x86 y x86-64.

Cada descriptor contiene la dirección base del segmento (32 bits en procesadores 386 y posteriores), el límite del segmento (que define el tamaño o el límite superior del segmento) y bits de control que especifican el tipo de segmento (código, datos o sistema), el nivel de privilegio y los permisos de lectura/escritura. El descriptor también incluye un bit de presencia que indica si el segmento está cargado actualmente en la memoria y un bit de granularidad que determina si el límite se mide en bytes o en páginas de 4 kilobytes.

Dónde residen los descriptores y cómo funcionan

Los descriptores de segmento se almacenan en la Tabla de Descriptores Global (GDT), la Tabla de Descriptores Local (LDT) o la Tabla de Descriptores de Interrupción (IDT), según su alcance y propósito. Cuando el software carga un selector de segmento en un registro de segmento (CS para código, DS para datos, etc.), el procesador busca automáticamente el descriptor correspondiente en la tabla adecuada y lo almacena en caché en un registro oculto. Las operaciones de memoria posteriores utilizan este descriptor en caché para la traducción de direcciones hasta que cambia el registro de segmento.

El campo de nivel de privilegio en el descriptor (2 bits, lo que permite 4 niveles del 0 al 3) impone la protección de la memoria al evitar que el código de menor privilegio acceda a segmentos de mayor privilegio. Un descriptor con nivel de privilegio 0 es accesible solo para el código del kernel; uno marcado con nivel 3 es accesible para las aplicaciones de usuario. Si el código intenta acceder a un segmento para el que no tiene permiso, el procesador genera una falla de protección general.

Los problemas comunes surgen cuando los descriptores están mal configurados: una dirección base o un límite incorrectos harán que el acceso a la memoria lea o escriba en la ubicación incorrecta, a menudo corrompiendo otros datos o código; un bit de presencia faltante activará una excepción. La depuración de problemas de descriptores requiere leer la GDT y la LDT directamente utilizando herramientas del kernel, ya que los valores en caché dentro de los registros de segmento no son directamente visibles para el software.

Fuentes

Entrada IG725512/12/2009

Más de Electrónica industrial

Ver todo

Reciba la palabra del día

Un término industrial cada día, con el oficio al que pertenece y por qué vale la pena conocerlo. Sin publicidad.