segmentacion e interrupciones en ia-32 · el acceso a memoria es por segmentacion, de manera...
TRANSCRIPT
Segmentacion e Interrupciones en IA-32
Ing. Marcelo Doallo
Abril 2013
Ing. Marcelo Doallo Segmentacion e Interrupciones en IA-32
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
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
Estructura de un descriptor
Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e
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
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
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
Selectores de segmento
Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e
De direccion logica a lineal en Modo Progetigo
Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e
Trabajando con GDT
Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e
Trabajando con LDT
Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e
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
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
Descriptores del sistema
Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e
Descriptores de Codigo y Datos
Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e
Modelo Flat
Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e
Modelo Flat Progetigo
Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e
Modelo Multisegmento
Ing. Marcelo Doallo Segmentacion en IA-32 e IA-32e
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
Interrupciones en IA-32
Ing. Marcelo Doallo
Abril 2013
Ing. Marcelo Doallo Interrupciones en IA-32
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
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
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
Excepciones
Ing. Marcelo Doallo Interrupciones en IA-32
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
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
Descriptores en la IDT (2)
Ing. Marcelo Doallo Interrupciones en IA-32
Registro IDTR
Ing. Marcelo Doallo Interrupciones en IA-32
Procedimiento de Interrupcion
Ing. Marcelo Doallo Interrupciones en IA-32
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
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
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
8259: Controlador Programable de Interrupciones
Ing. Marcelo Doallo Interrupciones en IA-32
El PIC 8259 en la PC
Ing. Marcelo Doallo Interrupciones en IA-32
Asignacion y Tipo de las IRQ’s
Ing. Marcelo Doallo Interrupciones en IA-32
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
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
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
Programacion del PIC 8259
Ing. Marcelo Doallo Interrupciones en IA-32
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
Programacion del PIC 8259 (3)
; Al final de manejador de interrupcion
mov al, 20hout 20h, aliret
Ing. Marcelo Doallo Interrupciones en IA-32
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
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
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
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
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