Professional Documents
Culture Documents
Introducción
0
Espacio Lineal y Espacio Físico
Espacio Lineal de Direcciones
Disco
estado
1 byte control
1 byte
Controlador del
disco Mecanismo
físico del Disco
0
Entorno de Ejecución
• Espacio de Direcciones de Memoria
• Espacio de Direcciones de Entrada/Salida
• Registros
• Estructuras de Datos
Registros
Permiten almacenar datos, referenciar la memoria o
referenciar estructuras de datos del procesador
• Registros de Propósito General
• Registros de Segmento
• Registro EFLAGS
• Registro EIP
• Registros de Control
Registros
Permiten almacenar datos, referenciar la memoria o
referenciar estructuras de datos del procesador
• Registros de Propósito General
• Registros de Segmento
• Registro EFLAGS
• Registro EIP
• Registros de Control
Registros de Propósito General
Se usan para almacenar datos y/o referencias a la
memoria.
En procesadores de 32 bits existen ocho (8) registros
de propósito general, cada uno de los cuales tiene
un tamaño de 32 bits. Estos registros son: EAX,
EBX, ECX, EDX, ESI, EDI, ESP y EBP.
Para procesadores de 64 bits, los registros se
denominan RAX, RBX, RCX, RDX, RSI, RDI, RSP y
RBP
Registros de Propósito General
Registros de Propósito General
Registros y Memoria – Little Endian
Registros
Permiten almacenar datos, referenciar la memoria o
referenciar estructuras de datos del procesador
• Registros de Propósito General
• Registros de Segmento
• Registro EFLAGS
• Registro EIP
• Registros de Control
Registros de Segmento
Permiten almacenar apuntadores al espacio de direcciones lineal.
Los procesadores IA-32 poseen seis (6) registros de segmento.
Estos son:
CS (código)
DS (datos)
ES (datos)
FS (datos)
GS (datos)
SS (pila)
Los registros de segmento almacenan la parte del “Selector” de una
dirección lógica en IA-32
Traducción de Dirección Lógica a Lineal
(Modo Real)
Traducción de Dirección Lógica a Lineal
(Modo Protegido)
Registros
Permiten almacenar datos, referenciar la memoria o
referenciar estructuras de datos del procesador
• Registros de Propósito General
• Registros de Segmento
• Registro EFLAGS
• Registro EIP
• Registros de Control
Registro EFLAGS
Contiene una serie de banderas (Flags) que tienen
diversos usos. Algunas reflejan el estado del
procesador y otras controlan su ejecución.
Existen instrucciones específicas para modificar el
valor de EFLAGS (ej: sti, cli).
Para procesadores de 64 bits, este registro se
denomina RFLAGS
Registro EFLAGS
Registros
Permiten almacenar datos, referenciar la memoria o
referenciar estructuras de datos del procesador
• Registros de Propósito General
• Registros de Segmento
• Registro EFLAGS
• Registro EIP
• Registros de Control
Registro EIP
El procesador siempre ejecuta la instrucción que se
encuentra en la dirección lineal obtenida a partir de la
dirección lógica CS: EIP (en modo protegido) o CS: IP
(en modo real)
Ciclo Fetch – Decode – Execute:
• El procesador lee la instrucción apuntada por CS:EIP
• Incrementa EIP
• Decodifica la instrucción y los operandos
• Ejecuta la instrucción
• El proceso se repite…
Registro EIP
Registros
Permiten almacenar datos, referenciar la memoria o
referenciar estructuras de datos del procesador
• Registros de Propósito General
• Registros de Segmento
• Registro EFLAGS
• Registro EIP
• Registros de Control
Registros de Control
El procesador posee cinco (5) registros de control
CR0 a CR4. Estos registros junto con EFLAGS
controlan la ejecución del procesador. En
procesadores de 64 bits, el procesador cuenta
además con el registro CR8.
Registro CR0
Registro CR1
Rutina de Manejo de
Tabla de Descriptores de Interrupción
Interrupción
Selector : offset
Selector : offset
IDT
Estructuras de Datos en Modo Protegido
Controlan la ejecución del procesador en Modo
Protegido
• GDT: Tabla Global de Descriptores de Segmento
• LDT: Tabla Local de Descriptores de Segmento
• IDT: Tabla de Descriptores de Interrupción
• TSS: Segmento de Estado de Tarea
• PTD: Directorio de Tablas de Página
Estructuras de Datos en Modo Protegido
Para operar en Modo Protegido no es necesario configurar
todas las estructuras de datos
• Como mínimo se requiere configurar y cargar la GDT para entrar
en Modo Protegido
• Si se planea usar interrupciones (e.g. usar dispositivos de E/S o el
timer), se debe configurar y cargar la IDT
• Si se planea implementar multi-tarea, se debe configurar y cargar
un TSS
• Si se planea usar paginación para administrar la memoria, se debe
configurar y cargar un Directorio de Tablas de Página
• Cada tarea puede tener opcionalmente su propia Tabla Local de
Descriptores (LDT) o puede usar la GDT.
GDT: Tabla Global de Descriptores
• Controla la gestión de la memoria en Modo Protegido
• Consiste en una secuencia (arreglo) de “Descriptores” de
Segmento, cada uno describe un segmento de memoria
• Se debe configurar como mínimo un descriptor de segmento
para el código del kernel, y un descriptor de segmento para
los datos del kernel
• El procesador referencia la GDT con un registro especial,
llamado GDTR.
• Toda dirección en código es lógica
• Un registro de segmento almacena el selector
• Un registro de propósito general almacena el desplazamiento
Funcionamiento General de la GDT
Dirección Lógica
15 0 31 0
Selector Offset
31 0
Rutina de
Tabla de Descriptores
Manejo de la
de Interrupción (IDT)
Interrupción N Segmento
Offset
Descriptor de
Segmento
Base
Descriptor de
Interrupción N
Base de la GDT
Descriptor de Límite de la GDT
GDTR
Interrupción 0
Manuales de Intel
http://www.intel.com/products/processor/manuals/
Intel® 64 and IA-32 Architectures Software Developer's Manual
System Programming Guide