Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera...

46
Segmentacion e Interrupciones en IA-32 Ing. Marcelo Doallo Abril 2013 Ing. Marcelo Doallo Segmentacion e Interrupciones en IA-32

Transcript of Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera...

Page 1: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Segmentacion e Interrupciones en IA-32

Ing. Marcelo Doallo

Abril 2013

Ing. Marcelo Doallo Segmentacion e Interrupciones en IA-32

Page 2: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Acceso a memoria en Modo Progetigo (IA-32)

El acceso a memoria es por segmentacion, de manera similara como lo hacen en modo real.

La diferencia esta en la definicion del segmento:

Direccion a partir de la cual comienza el segmento. Lallamamos Direccion Base.Tamano del segmento. Intel lo denomina Lımite.Permisos de acceso al segmento, ejemplo: Lectura,Escritura, si es de Codigo, de Datos o del Sistema; ydemas caracterısticas que ahora seran rigurosamentechequeadas. Los denominaremos Atributos.

Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e

Page 3: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Descriptores de Segmento en Modo Protegido

La informacion necesaria para describir un segmento sealmacena fuera del procesador en la memoria RAM,

La estructura que define un segmento se denominadescriptor.

Estos descriptores se agrupan en tablas.

Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e

Page 4: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Estructura de un descriptor

Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e

Page 5: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Atributos de un segmento en Modo Protegido

L: En IA-32e si esta en 1 indica que el codigo es de 64 bits; siesta en 0, le indica al procesador que trabaje en modocompatibilidad con IA-32. Si L=1, entonces D/B debe estar en0. Fuera del modo IA-32e o en segmentos que no sean decodigo, este bit debe estar en 0.

AVL: Bit disponible para el desarrollador del Sistema Operativo.

D/B: Default, para segmentos de codigo, define si el segmentoopera con 16 o 32 bits. Big, para segmentos de pila, define siopera con ESP o SP.

DPL: Nivel de privilegio del segmento.

G: Granularidad, multiplicador por 4K.

P: Presente, si esta en 1 el segmento esta en memoria.

S: Indica si el segmento es el Sistema (S=0 del sistema).

Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e

Page 6: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

De registro de segmento a selector

En modo real los registros de segmento contenıan toda lainformacion necesaria para definir el segmento, la base. Ellımite esta dado (64KB) y no tiene atributo.

En Modo Protegido los registros de segmento siguenconteniendo informacion necesaria para acceder al segmento,pero en forma indirecta apunta a un descriptor en una tabla dedescriptores.

Es por eso que en modo protegido a los registros como porejemplo CS o DS, se los denomina selectores de segmento.

Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e

Page 7: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Tabla de descriptores

En el sistema hay dos tipos de tablas: GDT y LDT.

La GDT es unica para todo el sistema.

La direccion base de GDT esta almacenada en el registroGDTR.

El GDTR tiene dos partes: Direccion Lineal Base (inicio de laGDT) y el lımite de la GDT (Multiplo de 8 menos uno).

El primer descriptor de la GDT debe estar en cero, es eldescriptor nulo.

En el sistema puede haber mas de una LDT, pero solo unaactiva.

Las LDT estan descriptas en la GDT.

La direccion base de la LDT esta almacenada en el registroLDTR.

El LDTR es un ındice a la GDT, como un selector mas.Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e

Page 8: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Selectores de segmento

Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e

Page 9: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

De direccion logica a lineal en Modo Progetigo

Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e

Page 10: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Trabajando con GDT

Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e

Page 11: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Trabajando con LDT

Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e

Page 12: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Registros ocultos

Para evitar el acceso a la GDT o LDT cada vez que necesita undescriptor de segmento, el procesador mantiene un registrocache invisible por cada registro cuyo contenido sea unselector.

Esos registros no son accesibles ni siquiera al programador delSistema Operativo.

Solo se ejecuta el procedimiento citado en transparenciasanteriores cada vez que se altera el valor de algun registroselector de segmento.

Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e

Page 13: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Direccion lineal

La Direccion Lineal es la salida de la Unidad de Segmentacion.Un espacio contiguo y consecutivo de direcciones de memoria.

Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e

Page 14: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Descriptores del sistema

Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e

Page 15: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Descriptores de Codigo y Datos

Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e

Page 16: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Modelo Flat

Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e

Page 17: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Modelo Flat Progetigo

Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e

Page 18: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Modelo Multisegmento

Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e

Page 19: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Acceso a memoria en IA-32e

En IA32e no utiliza segmentacion.

CS, DS, SS, ES, asumen segmento FLAT, base 0. FS y GS noasumen base 0.

No se chequea el lımite de segmento.

La proteccion se obtiene por paginacion, en lugar desegmentacion.

Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e

Page 20: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Interrupciones en IA-32

Ing. Marcelo Doallo

Abril 2013

Ing. Marcelo Doallo Interrupciones en IA-32

Page 21: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Interrupciones

En cualquiera de los modos de trabajo del procesador lasinterrupciones se identifican mediante un numero de un bytellamado tipo.

Tiene 256 tipos diferentes de interrupcion.

El sistema de interrupciones fundado por el 8086, se mantuvoinvariable en sus sucesores.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 22: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Interrupciones y Excepciones

Origen de las interrupciones:

Externa, por el hardware en interrupciones que ingresanpor el pin INTR del procesador.Externa, pin NMI son de tipo 2.Interna la instruccion INT ¡type¿, para el caso de lasinterrupciones por software, por ejemplo INT 80h.Interna, producto de la deteccion de algun error, ejemplodivision por cero. Se las denomina Excepciones.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 23: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Clasificacion de las excepciones

Fault: Excepcion que puede corregirse permitiendo alprograma retomar la ejecucion de esa instruccion sin perdercontinuidad. El procesador guarda en la pila la direccion de lainstruccion que produjo la falla.

Traps: Excepcion producida inmediatamente a continuacion dela ejecucion de una instruccion. Algunas permiten alprocesador retomar la ejecucion sin perder continuidad. Otrasno. El procesador guarda en la pila la direccion de lainstruccion a ejecutarse luego de la instruccion trapeada.

Aborts: Excepcion que no siempre puede determinar lainstruccion que la causo, ni permite recuperar la ejecucion dela tarea que la causo. Reporta errores severos de hardware oinconsistencias en tablas del sistema.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 24: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Excepciones

Ing. Marcelo Doallo Interrupciones en IA-32

Page 25: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Interrupciones en IA-32

La Interrupt Descriptor Table (IDT) almacena descriptores,similares a los vistos en la GDT o LDT.

Esta tabla tiene unicamente 256 entradas, coincidiendo con lacantidad de tipos de interrupciones diferentes que maneja elmicroprocesador.

No se puede definir en la IDT un descriptor de segmento dedatos ni de codigo.

En la IDT se colocan ciertos descriptores del sistema (Bit S=0en el descriptor).

Ing. Marcelo Doallo Interrupciones en IA-32

Page 26: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Descriptores en la IDT

Interrupt Gate: Limpia Interrupt Flag (IF=0), no puede serinterrumpido nuevamente, pero sı por una excepcion o unainterrupcion no enmascarable.

Trap Gate: No afecta Interrupt Flag.

Task Gate: Cambia de tarea.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 27: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Descriptores en la IDT (2)

Ing. Marcelo Doallo Interrupciones en IA-32

Page 28: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Registro IDTR

Ing. Marcelo Doallo Interrupciones en IA-32

Page 29: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Procedimiento de Interrupcion

Ing. Marcelo Doallo Interrupciones en IA-32

Page 30: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Manejo de la Pila: Sin cambio de nivel de privilegio

SP o ESP apunta al ultimo dato almacenado, estos seran de16 o 32 bits dependiendo del tipo de segmento de codigo enoperacion.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 31: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Codigo de error

EXT: External Event (bit 0): Se setea para indicar que laexcepcion ha sido causada por un evento externo alprocesador.

IDT: Descriptor Location (bit 1): Cuando esta seteado indicaque el campo Segment Selector Index se refiere a undescriptor de puerta en la IDT: Cuando esta en cero indica quedicho campo se refiere a un descriptor en la GDT o en la LDTde la tarea actual.

TI: GDT/LDT (bit 2): Tiene significado cuando el bit anterioresta en cero. Indica a que tabla de descriptores corresponde elselector del campo Indice. 0 GDT , 1 LDT (identico significadoque en el selector de segmento).

Ing. Marcelo Doallo Interrupciones en IA-32

Page 32: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

8259: Controlador Programable de Interrupciones

El procesador solo dispone de dos lıneas de interrupcion.

La forma que tiene la familia IA-32 de disponer de mas lıneasde interrupcion es por medio de un controlador programable deinterrupciones.

El controlador recibe la interrupcion, la transmite al CPU por lalınea INTR y le informa cual de todas sus lıneas de interrupcion(IRQ’s) fue por medio de bus de datos.

Las lıneas de interrupcion (IRQ’s) son fısicas.

Los tipos de interrupcion (INT’s) son logicas.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 33: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

8259: Controlador Programable de Interrupciones

Ing. Marcelo Doallo Interrupciones en IA-32

Page 34: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

El PIC 8259 en la PC

Ing. Marcelo Doallo Interrupciones en IA-32

Page 35: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Asignacion y Tipo de las IRQ’s

Ing. Marcelo Doallo Interrupciones en IA-32

Page 36: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

El PIC 8259 en la PC

El 8259 presenta al procesador una interfaz de programacion atraves de dos direcciones de E/S.

La primer PC tenıa un solo PIC en las direcciones de port20h y 21h.La PC AT 286, incluyo un segundo PIC, ya que la PCoriginal ya habıa agotado la asignacion de IRQ’s, yseguıan apareciendo nuevos dispositivos: Placas de red,placas de sonido, etc.Este PIC es accesible en las direcciones de port A0h yA1h.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 37: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Palabras de Comando de Inicializacion del 8259

Son una secuencia de entre dos y cuatro bytes que se envıa alprocesador al 8259A antes de comenzar la operacion normal,a fin de configurarlo.

La secuencia de Inicializacion en el PIC 8259 es una operacionatomica, es decir, que no puede dividirse.

El 8259 detecta la secuencia de inicializacion cuando recibe enla direccion de port par (A0 = 0), una palabra con el bit D4=1.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 38: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Palabras de Comando de Operacion del 8259

Una vez inicializado el 8259A, la palabras de comando ledefinen al 8259 diversas operaciones a realizar.

Luego de la inicializacion, se pueden enviar palabras decomando en cualquier momento.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 39: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Programacion del PIC 8259

Ing. Marcelo Doallo Interrupciones en IA-32

Page 40: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Programacion del PIC 8259 (2)

; Enmascarar interrupciones del PIC 1

mov al, 11111101bout 21h, al

; Enmascarar interrupciones del PIC 2

mov al, 11111111bout 0A1h, al

Ing. Marcelo Doallo Interrupciones en IA-32

Page 41: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Programacion del PIC 8259 (3)

; Al final de manejador de interrupcion

mov al, 20hout 20h, aliret

Ing. Marcelo Doallo Interrupciones en IA-32

Page 42: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Hardware de Soporte: 8253 / 8254

Timer 0: Direccion 40h. Base de tiempos del sistema. A laentrada CLK0 se conecta un cristal de 1,193,180 MHz. Seprograma para generar por OUT0 un pulso cada 55 mseg. Estepin se conecta a la lınea IRQ0 del PIC 8259: ası se genera unainterrupcion a dicho intervalo.

Timer 1: Direccion 41h. Se programa del mismo modo queTimer 0 pero se lo utiliza para activar el sistema de refresco dememoria DRAM. Para ello, OUT1 va conectado a la entradaDREQ0 del 8237. A partir del modelo AT 286 se utilizara unhardware dedicado al refresco de memoria.

Timer 2: Direccion 42h. Se programa para generar a su salidauna senal cuadrada de 50 % de duty cycle y OUT2 se conectaal parlante del sistema.

Registro de comando y status. Direccion 43h.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 43: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Hardware de Soporte: 8255

Port A: Direccion 60h. La logica de control de teclado al recibirlos codigos de las teclas los almacena en este port.

Port B: Direccion 61h. Sus lıneas trabajan como salidas decontrol individuales.

Envıo de la salida del Timer al parlante de la PC.Envıo de un pulso a la lınea IRQ1 del PIC 8259 cada vezque se recibe un codigo de tecla desde el teclado.

Port C: Direccion 62h. Cuatro de estas lıneas se utilizan comoinformacion de configuracion del sistema. El sistema deconfiguracion en los modelos originales PC y PC-XT erasumamente rudimentario (trabajaba con dip switches).

Ing. Marcelo Doallo Interrupciones en IA-32

Page 44: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Pasaje a modo protegido desde modo real

CLIArmar GDT, el primer descriptor debe ser nulo.Armar IDT y LDT (opcional)Palabras de Comando de Operacion de los 8259’s(opcional)Habilitar el bit PEJmp farSTI (opcional)

Ing. Marcelo Doallo Pasaje a modo protegido desde modo real

Page 45: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Demostracion practica

/practicas/ej1$

Esta bien “Copiar – Pegar”, solo si es codigo que ustedeshicieron. Copiar sin entender lo que copian es perder el tiempo.

Comando de consola debug de bochs: info gdt, info idt, r,sreg, creg, vb 0x8:0x21.

Desafıo 1: Pasar ej0 a modo protegido.

Desafıo 2: Implementarlo con interrupciones.

Ing. Marcelo Doallo Pasaje a modo protegido desde modo real

Page 46: Segmentacion e Interrupciones en IA-32 · El acceso a memoria es por segmentacion, de manera similar ... Permisos de acceso al segmento, ejemplo: Lectura, Escritura, si es de Codigo,

Referencias

Intel R© 64 and IA32 Architectures Software Developer’s ManualVolume 3A: System Programming Guide, Capıtulos 2, 3 y 5.

Organizacion y Arquitectura de Computadores. 5ta. Ed. WilliamStallins, Capıtulos 4, y 7.

Ing. Marcelo Doallo Pasaje a modo protegido desde modo real