Breve introducción a la arquitectura de 32 bits intel.

40
Breve introducción a Breve introducción a la arquitectura de 32 la arquitectura de 32 bits intel bits intel

Transcript of Breve introducción a la arquitectura de 32 bits intel.

Page 1: Breve introducción a la arquitectura de 32 bits intel.

Breve introducción a la Breve introducción a la arquitectura de 32 bits arquitectura de 32 bits

intelintel

Page 2: Breve introducción a la arquitectura de 32 bits intel.

Modos de OperaciónModos de Operación

Modo Protegido (Protected)Modo Protegido (Protected) Todas las características del procesador son aprovechadas.Todas las características del procesador son aprovechadas.

Modo Virtual x86Modo Virtual x86 Modo real dentro de un contexto protegido y multitareaModo real dentro de un contexto protegido y multitarea

Modo Real (Real-address)Modo Real (Real-address) Modo 8086 con extensiones. Modo 8086 con extensiones. (El arranque del procesador siempre se inicia en este modo)(El arranque del procesador siempre se inicia en este modo)

Modo Gestion de sistema (management system)Modo Gestion de sistema (management system) Permite implementar funciones específicas dependientes de Permite implementar funciones específicas dependientes de

la plataforma (gestión de la alimentación, seguridad)la plataforma (gestión de la alimentación, seguridad) Se entra a este modo con la interrupción SMI#Se entra a este modo con la interrupción SMI#

Page 3: Breve introducción a la arquitectura de 32 bits intel.

Entorno básico de ejecuciónEntorno básico de ejecución

Espacio de direcciones lineal 4GB (2Espacio de direcciones lineal 4GB (23232)) Espacio de direcciones físico 64GB (2Espacio de direcciones físico 64GB (23636)) Puertos I/OPuertos I/O 8 registros de propósito general8 registros de propósito general 6 registros de segmento6 registros de segmento EFLAGS, EIPEFLAGS, EIP X87 FPU unidad de punto flotanteX87 FPU unidad de punto flotante MMX ejecución de instrucciones SIMD MMX ejecución de instrucciones SIMD

enterasenteras XMM ejecución de insturcciones SIMD p.flotXMM ejecución de insturcciones SIMD p.flot

Page 4: Breve introducción a la arquitectura de 32 bits intel.

Recursos del sistema para la Recursos del sistema para la gestión de la ejecucióngestión de la ejecución

Registros de control: CR*[0..4]Registros de control: CR*[0..4] Determinan el modo operativo del procesador y las Determinan el modo operativo del procesador y las

características de la tarea actualcaracterísticas de la tarea actual Registros de control de acceso a memoriaRegistros de control de acceso a memoria

GDTR, IDTR, LDTRGDTR, IDTR, LDTR Registros de depuraciónRegistros de depuración

Permiten monitorizar operaciones de depuración de Permiten monitorizar operaciones de depuración de procesosprocesos

Registros para asignar características a regiones Registros para asignar características a regiones de memoriade memoria MTRR’s (memory type range regs)MTRR’s (memory type range regs)

Etc.Etc.

Page 5: Breve introducción a la arquitectura de 32 bits intel.

Organización de la memoriaOrganización de la memoria

Modelo Plano de memoria (+ paginado Modelo Plano de memoria (+ paginado opcional)opcional) Un simple espacio de direcciones contiguas (0..2Un simple espacio de direcciones contiguas (0..23232--

1). Contiene datos, código y stack. Dirección lineal.1). Contiene datos, código y stack. Dirección lineal. Modelo Segmentado de memoria ( + paginado Modelo Segmentado de memoria ( + paginado

opcional)opcional) El espacio de direcciones es dividido en secciones El espacio de direcciones es dividido en secciones

llamadas segmentos. Dirección lógica llamadas segmentos. Dirección lógica (Segmento+Offset). Un Selector de Segmento (Segmento+Offset). Un Selector de Segmento identica el segmento al que se quiere acceder.identica el segmento al que se quiere acceder.

Es posible manejar 16383 segmentos de hasta 2Es posible manejar 16383 segmentos de hasta 23232 bytes cada unobytes cada uno

Modelo Real-address de memoriaModelo Real-address de memoria

Page 6: Breve introducción a la arquitectura de 32 bits intel.
Page 7: Breve introducción a la arquitectura de 32 bits intel.

Registros de propósito Registros de propósito generalgeneral

Page 8: Breve introducción a la arquitectura de 32 bits intel.

Registros de proposito Registros de proposito generalgeneral

EAX- Acumulador para operandos y EAX- Acumulador para operandos y resultadosresultados

EBX-Puntero a datos en segmento DSEBX-Puntero a datos en segmento DS ECX-Contador para strings y buclesECX-Contador para strings y bucles EDX-Puntero para operaciones I/OEDX-Puntero para operaciones I/O ESI-Puntero para datos en DS y fuente en ESI-Puntero para datos en DS y fuente en

operaciones de cadenaoperaciones de cadena EDI-Puntero para datos en ES y destino en EDI-Puntero para datos en ES y destino en

operaciones de cadenaoperaciones de cadena ESP-Puntero de pilaESP-Puntero de pila EBP-Puntero para datos en la pilaEBP-Puntero para datos en la pila

Page 9: Breve introducción a la arquitectura de 32 bits intel.
Page 10: Breve introducción a la arquitectura de 32 bits intel.

Registros de segmentoRegistros de segmento

Más propiamente contienen Más propiamente contienen selectores de segmento.selectores de segmento. El selector apunta a una estructura en El selector apunta a una estructura en

memoria que se denomina Descriptor de memoria que se denomina Descriptor de SegmentoSegmento

El descriptor de segmento contiene entre El descriptor de segmento contiene entre otras cosas la dirección lineal del segmento.otras cosas la dirección lineal del segmento.

Page 11: Breve introducción a la arquitectura de 32 bits intel.

Registros selectores de Registros selectores de segmentosegmento

Page 12: Breve introducción a la arquitectura de 32 bits intel.

Registro de FlagsRegistro de Flags

Page 13: Breve introducción a la arquitectura de 32 bits intel.

Algunos flagsAlgunos flags

IOPLIOPL Indica el nivel de privilegio que debe tener Indica el nivel de privilegio que debe tener

una tarea para poder ejecutar instrucciones una tarea para poder ejecutar instrucciones de entrada salidade entrada salida

VM VM Se activa para entrar en modo virtual x86Se activa para entrar en modo virtual x86

Page 14: Breve introducción a la arquitectura de 32 bits intel.

Modos de direccionamientoModos de direccionamiento

Page 15: Breve introducción a la arquitectura de 32 bits intel.

Modo Protegido.Modo Protegido.Niveles de protecciónNiveles de protección

Se basan en niveles de privilegio: Se basan en niveles de privilegio: 0..3. 0 mayor privilegio, 3 menor privilegio0..3. 0 mayor privilegio, 3 menor privilegio

Los mecanismos operan: Los mecanismos operan: A nivel de segmentoA nivel de segmento A nivel de páginaA nivel de página

Cada referencia a memoria es chequeada para Cada referencia a memoria es chequeada para verificar que satisface una serie de requerimientos.verificar que satisface una serie de requerimientos.

Comprobación de límitesComprobación de límites Comprobación de tipo de datosComprobación de tipo de datos Chequeo de niveles de privilegioChequeo de niveles de privilegio Restriccion de dominios accesiblesRestriccion de dominios accesibles Restricción de puntos de entrada a procedimientosRestricción de puntos de entrada a procedimientos Restricción del conjunto de instrucciones ejecutable según Restricción del conjunto de instrucciones ejecutable según

nivel de privilegionivel de privilegio

Page 16: Breve introducción a la arquitectura de 32 bits intel.

Niveles de privilegioNiveles de privilegio

Page 17: Breve introducción a la arquitectura de 32 bits intel.

Chequeo de privilegiosChequeo de privilegios

CPL: Current Privilege Level Nivel de privilegio de la tarea que se ejecuta en un determinado momento.

DPL: Descriptor Privilege Level Indica habitualmente el mínimo nivel de privilegio que debe tener una tarea para acceder a un segmento.

RPL: Request Privilege Level Indica el nivel de privilegio del selector con el cual se accede a un segmento. Puede sobreescribir a CPL según el caso.

Page 18: Breve introducción a la arquitectura de 32 bits intel.

Chequeo de privilegio para Chequeo de privilegio para acceso a segmento de datosacceso a segmento de datos

-El menor privilegio entre CPL y RPL es el que domina

-Procesos o descriptores con mayor privilegio acceden a segmentos con menor requerimiento de privilegios

Page 19: Breve introducción a la arquitectura de 32 bits intel.

Chequeo de privilegios para Chequeo de privilegios para accesos segmentos de códigoaccesos segmentos de código

Page 20: Breve introducción a la arquitectura de 32 bits intel.

Conforming-NonConformingConforming-NonConforming

Conforming- non conforming es una Conforming- non conforming es una característica de los segmentos de códigocaracterística de los segmentos de código

Relacionada con la capacidad de ese segmento para Relacionada con la capacidad de ese segmento para ser invocado desde otros niveles.ser invocado desde otros niveles.

El acceso a un segmento nonconforming El acceso a un segmento nonconforming solo (?) es permitido a un código con su solo (?) es permitido a un código con su mismo nivel de privilegio (CPL==DPL)mismo nivel de privilegio (CPL==DPL)

El acceso a un segmento conforming está El acceso a un segmento conforming está permitido a todo proceso con menor o igual permitido a todo proceso con menor o igual nivel de privilegionivel de privilegio

En ningún caso implica un cambio del nivel En ningún caso implica un cambio del nivel de privilegio del proceso invocante.de privilegio del proceso invocante.

Page 21: Breve introducción a la arquitectura de 32 bits intel.

PuertasPuertas

Las puertas facilitan la transferencia del Las puertas facilitan la transferencia del control de ejecución entre niveles de control de ejecución entre niveles de privilegio.privilegio. La capacidad de un proceso con determinado La capacidad de un proceso con determinado

nivel de privilegio de invocar a una tarea nivel de privilegio de invocar a una tarea ejecutándose en un nivel más (¿o menos?) ejecutándose en un nivel más (¿o menos?) privilegiado.privilegiado.

Se invocan mediante un call o jump, pero Se invocan mediante un call o jump, pero en lugar de aportar un selector de en lugar de aportar un selector de segmento aportan un descriptor de puerta.segmento aportan un descriptor de puerta.

Page 22: Breve introducción a la arquitectura de 32 bits intel.

Descriptor de PuertaDescriptor de Puerta

1. Especifica el segmento de código a ser accedido

2. Define un punto de entrada a un procedimiento

3. Especifica el nivel de privilegio que requiere el proceso invocante

4. Define el número de parámetros requerido

Page 23: Breve introducción a la arquitectura de 32 bits intel.
Page 24: Breve introducción a la arquitectura de 32 bits intel.
Page 25: Breve introducción a la arquitectura de 32 bits intel.

Selectores, Descriptores y Selectores, Descriptores y Tablas de descriptores.Tablas de descriptores.

Un selector, que se carga en un Un selector, que se carga en un registro de segmento, es un apuntador registro de segmento, es un apuntador a una Tabla de Descriptoresa una Tabla de Descriptores

Una Tabla de Descriptores es una lista Una Tabla de Descriptores es una lista de posibles descriptores de segmento de posibles descriptores de segmento que puede utilizar la tarea que se que puede utilizar la tarea que se ejecuta actualmente.ejecuta actualmente.

El Descriptor es una estructura de El Descriptor es una estructura de datos que describe un segmentodatos que describe un segmento

Page 26: Breve introducción a la arquitectura de 32 bits intel.
Page 27: Breve introducción a la arquitectura de 32 bits intel.

SelectorSelector

Page 28: Breve introducción a la arquitectura de 32 bits intel.

Selector.Selector.

Para confeccionar una dirección Para confeccionar una dirección lineal hace falta acceder al descriptor lineal hace falta acceder al descriptor de segmento y obtener los datos de de segmento y obtener los datos de chequeo, dirección base y límite.chequeo, dirección base y límite.

La parte oculta del registro de La parte oculta del registro de segmento se cargan tras el primer segmento se cargan tras el primer acceso y quedan almacenadas para acceso y quedan almacenadas para los sucesivoslos sucesivos

Page 29: Breve introducción a la arquitectura de 32 bits intel.

Descriptor de segmentoDescriptor de segmento

Page 30: Breve introducción a la arquitectura de 32 bits intel.

Tablas de descriptoresTablas de descriptoresLa Tabla Local (LDT) es propia del proceso actual, mientras que la Tabla Global es compartida por todos los procesos del sistema.

Page 31: Breve introducción a la arquitectura de 32 bits intel.

Vector de interrupciones o IDT Vector de interrupciones o IDT (Tabla de descriptores de (Tabla de descriptores de

interrupción)interrupción)

Las rutinas de atención a las interrupciones se ejecutan en niveles altos de protección, por lo que se requieren puertas en vez de simples descriptores de segmento.

Page 32: Breve introducción a la arquitectura de 32 bits intel.
Page 33: Breve introducción a la arquitectura de 32 bits intel.

Vector de Vector de interrupcioneinterrupcione

ss

Page 34: Breve introducción a la arquitectura de 32 bits intel.

Gestion de Tareas. TSSGestion de Tareas. TSS

El procesador proporciona mecanismos para gestionar las tareas: lanzar su ejecución, suspenderla conservando el estado, conmutar a otra tarea. Para ello mantiene una estructura de datos conveniente, TSS

Page 35: Breve introducción a la arquitectura de 32 bits intel.

Descriptor de la tareaDescriptor de la tarea

Los datos que permiten conservar el estado de una Los datos que permiten conservar el estado de una tarea son:tarea son: El espacio de ejecución actual de la tarea definido por sus El espacio de ejecución actual de la tarea definido por sus

registros de segmentoregistros de segmento El estado de los registros de propósito general, los flags y El estado de los registros de propósito general, los flags y

el puntero de instrucción.el puntero de instrucción. El estado de registros de control como CR3 (paginado) y TREl estado de registros de control como CR3 (paginado) y TR El estado del registro apuntador a la tabla de descriptores El estado del registro apuntador a la tabla de descriptores

locales LDTRlocales LDTR El mapa de I/O accesible.El mapa de I/O accesible. El estado de los puntero a los stacks en cada nivel de El estado de los puntero a los stacks en cada nivel de

privilegioprivilegio Un apuntador a la tarea previamente ejecutadaUn apuntador a la tarea previamente ejecutada

Page 36: Breve introducción a la arquitectura de 32 bits intel.
Page 37: Breve introducción a la arquitectura de 32 bits intel.

El descriptor de todas las tareas que se están ejecutando actualmente en el sistema está almacenado en la tabla de descriptores Global.

Page 38: Breve introducción a la arquitectura de 32 bits intel.

Acceso a I/OAcceso a I/O

Las instrucciones de in/out no son Las instrucciones de in/out no son privilegiadas, sin embargo el acceso al privilegiadas, sin embargo el acceso al espacio de entrada salida está regulado.espacio de entrada salida está regulado. Flag IOPLFlag IOPL

Establece el nivel de privilegio mínimo para Establece el nivel de privilegio mínimo para ejecutar instrucciones I/Oejecutar instrucciones I/O

Mapa de permisos I/O en el TSSMapa de permisos I/O en el TSS Salvaría la prohibición de IOPL solo para aquellas Salvaría la prohibición de IOPL solo para aquellas

direcciones permitidasdirecciones permitidas

Page 39: Breve introducción a la arquitectura de 32 bits intel.

Mapa de permisos I/OMapa de permisos I/O

Page 40: Breve introducción a la arquitectura de 32 bits intel.

finfin

BibliografíaBibliografía IA-32 Developers ManualIA-32 Developers Manual Arquitectura IA-32Arquitectura IA-32