Resumen TD3 1ra Parte

Embed Size (px)

Citation preview

Resumen TD3 1ra Parte Arquitectura IA-32Modo Real:Entorno de ejecucin en 16 bits. Cualquier procesador IA-32 arranca en este modo de operacin. Existen dos formas de organizar la memoria de un computador En pginas o Las pginas tienen tamao fijo. Ej: 4 Kbytes o Son contiguas (no se solapan ni son disjuntas) o Ventajas: Administracin simple de la memoria (tamao fijo) o Desventajas: - Si requiero memoria para una variable de 1 byte el sistema me asigna una pgina de 4 K completa - Si se requiere reubicar cdigo el algoritmo, en principio, es complejo. En segmentos o Los segmentos son de tamao variable o No necesariamente son contiguos (se pueden solapar o estar disjuntos) o Se cuenta con un registro de desplazamiento que haciendo referencia al principio del segmento (direccin base del segmento) permite desplazarse a lo largo del mismo o Un Contador de Programa a travs de un segmento de cdigo. o Un Stack Pointer a travs de un Segmento de pila o Ventajas: - Manteniendo fijo el valor del segmento el movimiento a travs del mismo se realiza solo con el registro de desplazamiento. - Reubicacin en memoria simple de cdigo, pilas y bloques de datos. - Si se necesitan pocos bytes para una variable pido al sistema un segmento de por ejemplo 16 bits. Se desperdicia mucho menos memoria o Desventajas: - Es engorroso administrar memoria con bloques de tamao variable.

Direccionamiento de la Familia iAPx86 en segmentosReglas de Seleccin de Segmentos:

Modo Protegido (IMPORTANTE)- Modo de trabajo no default, pero natural para este tipo de procesadores. - Se setea por software desde Modo Real. - Implementa una alta capacidad de direccionamiento de memoria 4 Gbytes hasta el procesador Pentium y Pentium MMX 64 Gbytes en los procesadores Pentium Pro en adelante - Posee un atributo llamado Virtual 8086 que permite ejecutar un programa desarrollado para un procesador 8086/8088 como una tarea en modo protegido. Modo Mantenimiento del Sistema (SMM) Modo de trabajo para realizar operaciones especiales como Manejo de energa o seguridad.

Se ingresa por medio de: - Seal de hardware Pin SMI# o Mediante un mensaje SMI recibido desde el APIC (Advanced Programmable Interrupt Controller) Cuando ingresa a este estado el procesador salva el contexto de la tarea en ejecucin y pasa a ejecutar un software especfico para este modo. Cuando termina la ejecucin del cdigo SMM, retorna retomando la tarea interrumpida en el punto exacto en que la abandon.

Entorno bsico de ejecucin IA-32

Modos de Direccionamiento:

Implcito: clc Inmediato: La instruccin contiene al propio objeto. mov eax,0x20 Registro: sub eax,edx Desplazamiento: add [2C00h],ecx Directo: El operando se encuentra contenido en un registro. inc edx Indirecto o Base: inc [edx]

o o o o o

Base + desplazamiento: mov eax,[ebp+12] Indexado: and [esi],0xFE Indexado + desplazamiento: and [esi*4 + tabla],0xFE ; (el 4 es la escala) Base + Indexado: mov [ebx, edi*2],70h ; Base + Indexado + desplazamiento: mov [ebx + edi*2 + 0x000B8000],70h;

Representacin de nmeros en punto flotante - Un bit de signo, - Un valor fraccionario denominado mantisa o significando, - Cuenta con una parte entera de 1 bit (J-bit), y el resto de la parte fraccionaria. Sin embrago por lo general el Jbit no se representa sino que por el contrario, es un valor implcito en la mantisa. - Y un valor de exponente al cual se debe elevar la base numrica de representacin para obtener el valor real.

Set de Instrucciones Los grupos de instrucciones mas relevantes para el alcance de nuestro curso son: o General purpose o x87 FPU o x87 FPU and SIMD state management o Intel MMX technology o SSE extensions o SSE2 extensions o SSE3 extensions Llamadas a subrutinas Se realizan mediante la instruccin CALL Cuando finaliza la subrutina se ejecuta RET para volver al flujo de programa desde el que se realiz la llamada va CALL. El stack es un espacio lineal de direcciones. Las operaciones son con words o dwords dependiendo del tipo de segmento definido (16 o 32 bits) El stack debe estar alineado a word o dword segn el tipo de segmento. Stack en llamadas a subrutina: Llamadas Near y Far:

Entorno Bsico de ejecucin en 32 bits

Modo ProtegidoVisin de la arquitectura para el programador de Sistemas Operativos

Para poner al procesador en Modo Protegido todo lo que se requiere es setear el bit PE, (bit 0 del registro CR0). NO es todo lo que hay hacer. Setear PE es solo el principio.

Acceso a la memoria en MP Para acceder a la memoria, los programas seguirn trabajando con segmentos, del mismo modo en que lo hacen en Modo Real. La diferencia est en la informacin que se necesita en un entorno protegido para definir un segmento: Direccin a partir de la cual comienza el segmento. La llamamos Direccin Base. Tamao del segmento. Intel lo denomina Lmite. Permisos de acceso al segmento: Read Only, Cdigo/Datos, y dems caractersticas que ahora sern rigurosamente chequeadas. Los denominaremos Atributos.

Descriptores de Segmento

En Modo protegido, la informacin necesaria para definir (describir) un segmento se almacena fuera del procesador en la memoria RAM. Los descriptores se agrupan en tablas.

En modo real los registros de segmento contenan toda la informacin necesaria para definir el segmento. En Modo Protegido los registros de segmento siguen conteniendo informacin necesaria para acceder al segmento, pero esa informacin se utiliza ahora para ubicar en la memoria del sistema, al descriptor del segmento a acceder. Por tal motivo al contenido de un registro de segmento, en Modo Protegido se lo denomina Selector. Esta denominacin se extiende al Modo Real ya que siempre un registro de segmento selecciona con su contenido a un segmento determinado en memoria.

Tablas de descriptores: GDT y LDT

Translacin de direccin lgica a lineal (Selector con TI=0)

Translacin de direccin lgica a lineal (Selector con TI=1)

Registros hidden. Memorizando los descriptores Para evitar un acceso a la GDT o LDT cada vez que necesita un descriptor de segmento, el procesador mantiene un registro cach invisible por cada registro cuyo contenido sea un selector. Esos registros no son accesibles ni siquiera al programador del S.O. Direccin lineal: recibe ese nombre por ser la salida de la Unidad de Segmentacin un espacio contiguo y consecutivo de direcciones de memoria.

Descriptores de Segmento

Campo Tipo para S=0 (Descriptor de Sistema).

Modelos de Memoria

Manejo de Memoria: Tabla GDT Una GDT por cada procesador presente en el sistema. Se almacenan en un array denominado cpu_gdt_table

Paginacin de Memoria La segmentacin posee claras ventajas para proveer un entorno flexible en la programacin de aplicaciones. Para Administracin de la memoria por parte del sistema operativo, la variabilidad del tamao de los segmentos introduce complejidad en el diseo de un sistema de memoria virtual. Los sistemas operativos como UNIX desde su concepcin trabajaron la memoria en bloques de tamao uniforme. La Paginacin cumple con ese requisito.

Estructura de la MMU

El espacio Lineal se divide entones en 1.000.000 de pginas de 4 Kbytes c/u, o en 1000 pginas de 4 Mbytes, o en una combinacin de ambos tamaos. Se necesita un descriptor para cada pgina que especifique: o Direccin Base de la pgina: Se necesitan 20 bits (comienzan en mltiplos de 4K ya que no se solapa, de modo que los 12 bits menos significativos sern 0), o 10 bits en el caso de pginas de 4 Mbytes. o Atributos. Del mismo modo que los segmentos o No se requiere lmite ya que su tamao es fijo. Tomando el caso de pginas de 4 Kbtes, a 4 bytes por cada descriptor y un milln de descriptores de pgina, se necesita una tabla de descriptores de pgina de 4 Mbytes.

Para solucionar esto: Tabla de Pginas de Memoria

Paginacin de Memoria en dos niveles

Entrada de Directorio de Pgina (4Kbyte)

Entrada de Tabla de Pgina

Registros de control asociados

Direccionamiento fsico de 36 bits con PAE Desde el procesador Pentium Pro, se advirti que para los servidores de alta performance los 4 Gbytes de memoria fsica resultaran insuficientes. Se implementa PAE (Phisical Address Extension) Se habilita con el bit 5 del CR4. El procesador habilita 4 lneas de Address adicionales para direccionar 64 Gbytes de memoria fsica. El procesador soporta dos tamaos de pgina: 4 Kbytes y 2 Mbytes.

Paginacin de Memoria con PAE activa

Paginacin de Memoria con PSE-36 Alternativa para direccionar memoria fsica con 36 bits. Permite manipular 64 Gbytes de memoria fsica. Si est disponible CPUID devuelve bit 17 de EDX seteado PAE en CR4 DEBE estar deshabilitado!!

Entrada de Directorio de Pgina (4Mbyte)

Segmentacin y Paginacin de Memoria

Interrupciones en Modo Protegido- En cualquiera de los modos de trabajo del procesador, las interrupciones se identifican mediante un nmero de un byte llamado tipo. Acompaa al cdigo de operacin en la instruccin INT type, para el caso de las interrupciones por software, por ejemplo INT 21h Es provisto por el hardware en interrupciones que ingresan por el pin INTR del procesador. Est asociado al pin NMI (tipo 2) Est asociado a una instruccin (INTO, por ejemplo, genera una interrupcin de tipo 4). - Tiene 256 tipos diferentes de interrupcin. - En modo protegido existe una tabla llamada IDT (Interrupt Descriptor Table), que a diferencia del Modo Real, no almacena vectores de interrupcin, sino que como su nombre lo indica almacena Descriptores.

- Esta tabla tiene nicamente 256 entradas, ya que esa es la cantidad de tipos de interrupciones diferentes que maneja el microprocesador. Tipos de descriptores en la IDT:

Procedimiento de Interrupcin

Manejo de la Pila sin cambio de nivel de privilegio

Manejo de la Pila con cambio de nivel de privilegio

Mecanismos de ProteccinCuando el procesador pasa a Modo Protegido se pone en funcionamiento la Unidad de Proteccin. Chequeo del Lmite

Se apoya en algunos atributos: - Bit G: Determina si el valor de lmite se mide en Bytes o en pginas de 4Kbytes. En el primer caso el rango es 0 a FFFFFh, en el segundo es de FFFh a FFFFFFFFh. - Bit D/B: Determina si el segmento es de 16 o 32 bits - Bit ED: Expand Down. Indica el sentido de crecimiento del segmento. Importante en el manejo de pilas El valor del campo Lmite es el tamao del segmento menos 1, ya que su rango de valores posibles va desde 00000 a FFFFFh Segmentos con ED = 0: Segmentos con ED = 1:

Chequeo del Tipo Se toma en cuenta el bit S (System bit) de los atributos del descriptor, y en funcin de su valor, se comprueba el campo de cuatro bits subsiguiente.

Comprobaciones en la carga de un selector: No se permite cargar CS con selectores que en la GDT correspondan a descriptores de segmentos (S = 1) que no sean de cdigo

No se permite cargar un selector de cdigo cuyo descriptor no tenga permiso de lectura en ningn otro registro de segmento (SS, DS, ES, FS, o GS) En SS solo se pueden cargar selectores que correspondan a segmentos con permiso de escritura. LDTR solo puede ser cargado con un selector de LDT (Bit S=0 y tipo = 0010b) TR solo puede ser cargado con selector de TSS (bit S=0 y tipos = 0001b, 0011b, 1001b, 1011b, para TSS de 16 bits, disponible y ocupado, y TSS de 32 bits disponible y ocupado respectivamente)

Comprobaciones durante la ejecucin de instrucciones que acceden a segmentos cuyo selector ya est cargado: No se puede escribir un segmento de cdigo No se puede escribir un segmento de datos con W=0 No se puede leer un segmento de cdigo si R=0 Comprobaciones durante la ejecucin de instrucciones cuyo operando es un selector de segmento: Las instrucciones CALL far y JMP far solo pueden acceder a descriptores de segmentos de cdigo (conforming o no conforming), a puertas de llamada, puertas de tarea o Descriptores de TSS. LLDT debe tener como operando un descriptor de LDT LTR debe tener como operando un descriptor de TSS LAR debe tener como operando fuente un descriptor de segmento de cdigo, datos, TSS, LDT, puerta de tarea o puerta de llamada. LSL debe tener como operando fuente un descriptor de segmento de cdigo, datos, TSS, o LDT. Las entradas de la IDT deben ser puertas de interrupcin, de excepcin, o de tarea. De otro modo cualquier acceso a dicha tabla con, por ejemplo, la instruccin INT causar una excepcin de proteccin general. Chequeo del Tipo Comprobaciones miscelneas Cuando se ejecuta un CALL far o JMP far, se determina el tratamiento de la instruccin chequeando el campo tipo en el descriptor apuntado por el selector que est como operando en la instruccin. o Si el tipo de descriptor corresponde a un segmento de cdigo, o una puerta de llamada, se ejecuta una llamada o un salto al segmento de cdigo indicado. o Si el tipo del descriptor corresponde a un TSS o a una puerta de tarea, se ejecuta una conmutacin de tarea. El procesador automticamente controlar que el descriptor de segmento apuntado por la puerta de tarea corresponda a un descriptor de TSS Si en un call far el tipo de descriptor corresponde a una puerta de llamada o a una puerta de excepcin (trap) o de interrupcin que tengan como destino un handler de interrupcin o de excepcin, se controla que el descriptor de segmento definido en el descriptor de la puerta corresponda a un segmento de cdigo. Cuando se retorna de una tarea anidada (mediante una instruccin IRET), el procesador controla que el campo previous task link en el TSS actual, apunte a un TSS. Selectores de Segmento Nulo Cualquier intento de cargar un selector de segmento Nulo en los registros de segmento CS or SS genera una excepcin de proteccin general (# GP). Se puede cargar un selector de segmento nulo en los registros DS, ES, FS, or GS. Sin embargo, al intentar acceder al segmento por medio del registro cargado con el selector de segmento nulo generar una excepcin #GP. Cargar un registro de segmento de datos con un selector de segmento nulo puede resultar un mtodo til para detectar accesos a registros de segmento no utilizados o para prevenir accesos no deseados a segmentos de datos. Niveles de Privilegio: Anillos de Proteccin

Los accesos entre segmentos estn regidos por reglas que contemplan los niveles de privilegio. Los niveles de privilegio se chequean cuando se carga el selector en el registro de segmento. Se definen tres tipos de nivel de privilegio o Current Privilege Level (CPL): Nivel de privilegio que tiene el cdigo que est intentando acceder ya sea a un descriptor de segmento, una puerta de llamada o de tarea, etc. El procesador lo mantiene en el cache hidden del selector, ya que lo ley directo de la tabla de descriptores. o Descriptor Privilege Level (DPL): Nivel de privilegio del segmento a ser accedido: Puerta de llamada, de tarea, TSS, o Descriptor de segmento de cdigo o datos. o Requested Privilege Level (RPL): Es el valor que se escribe en los bits 0 y 1 de los selectores. Es derogable, ya que puede sobreescribirse por programa. El procesador lo compara con el CPL y si es numricamente menor, lo reemplaza por el CPL al momento de chequear el acceso. Si el RPL es mayor (numrico) que el CPL, el procesador usar el RPL. En suma, el procesador usa lo que se define como Effective Priviledge Level EPL=MAX(CPL,RPL)

Significado del campo DPL del descriptor: Segmento de Datos / Puerta de Llamada / TSS: Indica el mximo valor numrico (mnimo nivel de privilegio) que debe tener el cdigo de una tarea para acceder a este segmento. Ej.: DPL=01 implica que se puede acceder solamente desde segmentos de cdigo con CPL=00 o CPL=01 Segmento de Cdigo No Conforming (sin utilizar puerta de llamada): Es el nivel de privilegio que debe tener el cdigo de una tarea para accederlo. Ej.: DPL=00 implica que solo los programas que ejecuten en segmentos con CPL=00. Segmento de cdigo Conforming, o segmento de cdigo no Conforming accedido a travs de una puerta de llamada: Indica el mnimo valor numrico (mximo nivel de privilegio) que debe tener el cdigo que llam a la puerta de llamada para poder acceder al cdigo apuntado por sta. Ej.: DPL=10, indica que los programas de anillo 0 y 1 no pueden acceder a este segmento. Reglas de Proteccin entre segmentos: Acceso a un segmento conforming:

Puertas de Llamada. Acceso a Segmento de cdigo No conforming: Son un mecanismo especial para transferir el control desde un segmento de cdigo a otro de mayor nivel de privilegio, cuando se encuentra habilitado el Sistema de Proteccin del procesador. Se basan en un descriptor de sistema (bit S=0), que debe residir en la GDT o en la LDT (nunca en la IDT) Se acceden efectuando un CALL o un JMP a una direccin far (direccin lgica), en la que el selector corresponde a un descriptor de Puerta de Llamada, y el offset es ignorado por el procesador. Descriptor de Puerta de Llamada:

Puerta de Llamada: Acceso al cdigo privilegiado

Manejo de la Pila con cambio de nivel de privilegio:

Puertas de Llamada: Resumen

Escenario del Caballo de Troya:

Existen instrucciones que, una vez en modo protegido, solo pueden ejecutarse en nivel de privilegio 0. Estas son: INVD - Invalidar Cach sin Write Back LLDT - Cargar registro LDTR WBINVD - Invalidar Cach con Write Back LTR - Cargar registro TR INVLPG - Invalidar entrada de la TLB LIDT - Cargar Registro IDTR HLT - Parar el procesador..... =) MOV - si destino es un Registro de Control RDMSR - Leer Model Specific Register MOV - si destino es un Registro de Debug WRMSR - Escribir Model Specific Register LMSW - Escribir en el Machine Status Word (parte RDPMC - Leer Contador de Monitoreo de baja de CR0) CLTS - Clear Flag Task-Switched en CR0 Performance RDTSC - Leer Time Stamp Counter LGDT - Cargar registro GDTR El Registro EFLAGS contiene el campo IOPL (bits 12 y 13) que determina el nivel de privilegio que debe tener la tarea en curso para acceder a la E/S. Por lo tanto, pueden ejecutarse IN, OUT, INS, y OUTS, desde esta tarea solo si CPL = IOPL Proteccin a nivel de Pginas Se combina con la Proteccin a nivel de segmentos, aportando granularidad al sistema de proteccin dentro de un mismo segmento. Al igual que en los segmentos los chequeos se realizan dentro de la ventana de decodificacin y ejecucin de la instruccin. De acuerdo al sistema de proteccin de pginas (reflejado en la estructura del descriptor de pgina) hay dos niveles: Usuario (bit U/S=0) y Supervisor (U/S=1), y el tipo de pgina puede ser de Lectura o Lectura/Escritura. Cualquier violacin al sistema de proteccin de pginas genera una Excepcin 0Eh definida por Intel como Page Fault (#PF), y rebautizada bajo el misterioso y tristemente familiar nombre de Error grave 0Eh en algunas implementaciones.

Los CPLs 0, 1, y 2 del sistema de proteccin de segmentos mapean en el nivel Supervisor del esquema de pginas. El CPL3, se corresponde con el nivel Usuario. En el modo supervisor se accede por default a todas las pginas y en modo usuario solo a las que tienen en su descriptor el bit U/S = 1 A partir del 80486, el bit 16 del registro CR0, se utiliza bajo el nombre WP (Write Protect). o Cuando el procesador esta en Modo Supervisor, por default, accede a cualquier pgina con permiso de lectura escritura. (Se ignora la proteccin de escritura) o Si es 1 impide al procesador escribir una pgina Read Only de nivel usuario desde cdigo que ejecuta en una pgina en Modo Supervisor . El procesador chequea la proteccin en el PD, y en cada PT.

Combinacin de Proteccin a nivel de Pginas y Segmentos El procesador evaluar siempre en primer lugar la proteccin de segmentos, ya que la Unidad de Paginacin puede o no estar habilitada. Si genera una excepcin pro segmentacin no se genera la #PF. La proteccin a nivel de pgina no pisa a la proteccin a nivel de segmento. Paginar un segmento de cdigo fijando permisos de escritura en las pginas, no permitir escribir, ya que lo impedir el mecanismo de proteccin de segmentos. En el caso de un segmento de datos con permiso de escritura, la paginacin permite definir diferentes permisos para cada pgina con lo cual podremos dividirlo en reas de lectura solamente y otras de lectura/escritura.

System Calls API: Formato de una llamada para obtener un servicio del kernel System Call: requerimiento explcito cursado al kernel para resolver un servicio. La inversa no es necesariamente cierta. Algunas API resuelven directamente en Modo Usuario si pasar a Modo kernel para resolver el pedido (math.lib por ejemplo).

System Calls de manejo de scheduler: nice( ) Cambia la prioridad esttica de un proceso convencional getpriority( ) Obtiene el mximo valor de prioridad esttica para un grupo o proceso convencional setpriority( ) Ajusta la prioridad esttica para un grupo o proceso convencional sched_getscheduler( ) Obtiene la poltica de scheduling de un proceso sched_setscheduler( ) Establece la poltica de scheduling y prioridad real time para un proceso sched_getparam( ) Obtiene la prioridad real time de un proceso sched_setparam( ) Establece la prioridad real time de un proceso sched_yield( ) Libera al procesador voluntariamente sin bloquearlo sched_get_ priority_min( ) Obtiene el mnimo valor de prioridad real-time para una poltica dada sched_get_ priority_max( ) Obtiene el mximo valor de prioridad real-time para una poltica dada sched_rr_get_interval( ) Obtiene el valor del time quantum para la poltica Round Robin sched_setaffinity( ) Establece la mscara de afinidad con CPU affinity de un proceso sched_getaffinity( ) Obtiene la mscara de afinidad con CPU affinity de un proceso System Calls de temporizacin time () Retorna la cantidad de segundos transcurridos desde la medianoche de comienzo del 1ero. de Enero de 1970 (UTC) gettimeofday () Retorna un puntero a una estructura de tipo timeval, que contiene la cantidad de segundos transcurridos desde la medianoche de comienzo del 1ero. de Enero de 1970 (UTC), y el nmero de micro segundos transcurridos del ltimo segundo. ctime () Convierte el tiempo numrico de calendario obtenido por time () a una cadena de la forma ASCII "Wed Jun 30 21:49:08 1993\n

alarm () Genera una seal SIGALARM transcurrido el tiempo en segundos que se le pasa como parmetro.

Manejo de TareasConmutacin entre tareas

Manejo de Tareas Tarea: es una unidad de trabajo que un procesador puede despachar, ejecutar, y detener a voluntad, bajo la forma de: o La instancia de un programa (o, expresado en trminos del Sistema Operativo, proceso). o Un handler de interrupcin. o Un servicio del kernel (Ncleo del Sistema Operativo). Espacio de ejecucin: Es el conjunto de segmentos de cdigo, datos, y pila que componen la tarea. En un sistema operativo que utilice los mecanismos de proteccin del procesador se requiere un segmento de pila por cada nivel de privilegio. Contexto de ejecucin: Es el conjunto de valores de los registros internos del procesador en cada momento. Para poder suspender la ejecucin de una tarea y poder reasumirla posteriormente, es necesario almacenar este contexto en el momento de la suspensin. Espacio de Contexto de ejecucin: Se compone de un segmento de memoria en el que el kernel del S.O. almacenar el contexto completo de ejecucin del procesador. Se lo denomina Task State Segment (TSS) Concepto de Mquina Virtual El Sistema Operativo pondr a disposicin de cada tarea una Mquina Virtual. Se entiende por tal al subconjunto del universo de recursos del sistema que sern asignados a cada tarea: o CPU (% o rodaja de tiempo de ejecucin) o Memoria (un conjunto de segmentos / pginas del total, de memoria instalada en el sistema) o Acceso a dispositivos de E/S (a travs de mdulos de software escritos por el fabricante llamados device drivers) No se incluyen en la mquina virtual los recursos hardware dependientes, ni algunas instrucciones que en un entorno de ejecucin Multitasking son para uso exclusivo del cdigo del Sistema Operativo. En cada momento la tarea activa posee entonces a su disposicin una Mquina Virtual, que salvo los recursos para los que la tarea no debe tener acceso, es una imagen de la Mquina Base.

Estructuras asociadas al manejo de Tareas:

TSS: Mapa de Permisos de E/S:

Por default en Modo Protegido, una tarea que ejecuta con CPL=11 no puede ejecutar instrucciones de acceso a E/S (IN, OUT, INS, OUTS). El procesador utiliza el par de bits IOPL del registro EFLAGS, para modificar este comportamiento default, de manera selectiva para cada tarea. Para una determinada tarea con CPL=11, si desde el S.O. se pone el campo IOPL de Eflags en 11, se habilita el acceso a las direcciones de E/S cuyos bit correspondientes estn seteados en el Bit Map de permisos de E/S. As se habilita el acceso a determinados ports para determinadas tareas. En este caso el TSS mide mas de 104 bytes (su lmite ser mayor que 67h)

A partir del Pentium se incluye el Registro CR4, cuyo bit VME (Virtual 8086 Mode Extensions). Si VME = 0 en Modo Virtual 8086 el procesador responde a las interrupciones y excepciones como un 386 o un 486. Cuando VME = 1, salta el mecanismo y redirige las instrucciones a los handlers del entorno de ejecucin del programa 8086, de acuerdo con el valor de estos bits

Redireccin de Interrupciones:

Descriptor de TSS

El Bit B (Busy) sirve para evitar recursividad en el anidamiento de tareas. Nos referiremos a l cuando analicemos el anidamiento de tareas. El Lmite debe ser mayor o igual a 67h (mnimo tamao del segmento es 68h, o 10310. De otro modo se genera una excepcin tipo 0Ah o TSS invlido Acceso al TSS con el Task Register:

Descriptor de Puerta de tarea:

Despacho de Tareas: El procesador puede despachar una tarea de las siguientes formas posibles: o Por medio de una instruccin CALL o Por medio de una instruccin JMP o Mediante una llamada implcita del procesador al handler de una interrupcin manejado por una tarea. o Mediante una llamada implcita del procesador al handler de una excepcin manejado por una tarea. o Mediante la ejecucin de la instruccin IRET en una tarea cuando el flag NT (bit 14 del registro EFLAGS) es 1 para la tarea actual. En cualquier caso se requiere poder identificar a la tarea. Se necesita un selector en la GDT que apunte a una puerta de tarea o a un Task State Segment (TSS). Este selector debe estar en la correspondiente posicin dentro de la instruccin CALL o JMP. Tareas Encadenadas:

Cuando se conmuta a una tarea mediante un CALL, una interrupcin, o una excepcin, el procesador copia el TR de la tarea actual en el campo Previous Task Link del TSS de la nueva tarea, y luego de completar el cambio de contexto, setea el bit NT del registro EFLAGS (bit 14). De este modo si la nueva tarea ejecuta en algn punto la instruccin IRET y el bit NT es 1, el procesador conmuta a la tarea anterior ya que tiene el selector de TSS de la tarea previa almacenado en el campo Previous Task Link del TSS de la tarea en ejecucin. En cambio si la conmutacin de tarea se efecte con un JMP no se afecta el flag NT ni se completa el campo Previous Task Link. Prevencin de recursividad de tareas El Bit Busy: El procesador utiliza el Bit Busy de un descriptor de TSS para prevenir la reentrancia en una tarea (esto ocasionara la prdida de los datos del contexto de ejecucin). Cuando se avanza en anidamiento de tareas mediante un CALL o una interrupcin, este bit debe permanecer seteado, en el descriptor de TSS de la tarea previa. El procesador generar una Excepcin de Proteccin General (0Dh) si se intenta despachar mediante un CALL o una Interrupcin una tarea en cuyo TSS est seteado el bit Busy. Esto no ocurre si la la tarea en cuestin se despacha con un IRET ya que es de esperar en esta condicin que el bit Busy est seteado. Cuando la tarea ejecuta IRET o bien mediante un JMP despacha una nueva tarea, el procesador asume que la tarea actual finalizar y se debe limpiar el bit Busy en su descriptor de TSS

Diseo de un schedulerConstruccin de un Scheduler Base de tiempos: timer tick (IRQ0) Existen dos alternativas o Colocar en la IDT una puerta de interrupcin para IRQ0 o Colocar en la IDT una puerta de tarea para IRQ0

IRQ0 por puerta de Interrupcin -Organizacin de la memoria (2 tareas)

Conmutacin:

Importante!!! Cuando de la tarea 2 se va a volver a la tarea 1 el EIP cuando se abandon la tarea 1 qued con el valor correspondiente a la siguiente instruccin del cambio de tarea, que se ejecut en el handler de IRQ0 (jump far [next_task]). Por lo tanto luego de la instruccin de salto de tarea se debe colocar la instruccin iret. IRQ0 por puerta de Interrupcin -Puerta de Tarea. Organizacin de la memoria (2 tareas)

Importante!!! Cuando de la tarea 2 se va a volver a la tarea 1 el EIP cuando se abandon la tarea sched qued con el valor correspondiente a la siguiente instruccin del cambio de tarea, que se ejecut en el handler de IRQ0. (jump far [next_task]). Por lo tanto cuando vuelva a la tarea scheduler para saltar a la tarea 1 el EIP va a estar apuntando luego de la instruccin de salto de tarea por lo que se debe colocar la instruccin de salto al punto de entrada del scheduler.

Procesadores de 32 bits Tecnologas, Organizacin y Micro Arquitectura Arquitectura o Recursos accesibles para el programador Registros Set de instrucciones Estructuras de memoria (descriptores de segmento y de pgina p. ej.) o Estos recursos se mantienen y evolucionan a lo largo de los diferentes modelos de procesadores de esa arquitectura Micro Arquitectura o Implementacin en el silicio de la arquitectura. o Es lo que hay detrs del set de registros y del modelo de programacin o Puede ser muy simple o sumamente robusta y poderosa. CISC (Complex Instruction Set Computer) o Instrucciones que realizan tareas complejas RISC (Reduced Instruction Set Computer) o Instrucciones que realizan operaciones sencillas

Ciclo de instrucciones: Etapas

Pipeline de instrucciones:

Efecto de un branch en un Pipeline de seis etapas

Para tratar de minimizar este impacto se implementan unidades de prediccin de saltos.

Criterios: Asumir que nunca se salta Asumir que siempre se salta Predecir por OpCOde de las instrucciones previas. Branch Target Buffer Utilizar una memoria ultrarrpida con una tabla de historia de saltos. Arquitectura Superescalar Arquitectura de procesamiento en la que se puede iniciar varias instrucciones en forma simultnea y ejecutarse en forma independiente El pipeline permite que varias instrucciones estn ejecutndose en un mismo momento, pero siempre que se encuentren cada una en diferentes etapas del pipeline Un procesador superescalar extiende este paralelismo permitiendo que en una etapa del pipeline se puedan ejecutar varias instrucciones en forma independiente en un mismo ciclo de clock Existen dos modelos para lograr este efecto o Super pipeline o Superescalar -Arquitectura superescalar de dos vas. (Dos Pipelines de instrucciones)

-Limitaciones al modelo superescalar Dos o mas instrucciones compiten por acceso en el mismo momento al mismo recurso: o Registro. o Direccin de Memoria o Unidad funcional del procesador Las instrucciones de transferencia de flujo (denominadas branch, y que son generalmente saltos, o call), hacen que todas las que vienen a continuacin sean descartadas de las etapas del pipeline en el que se ejecuta la instruccin de transferencia de flujo. Instrucciones con interdependencia de resultados. Una instruccin en la que uno de los operandos es el resultado de otra que se est ejecutando al mismo tiempo, debe ser detenida hasta que se obtenga el resultado mencionado. -Arquitectura super pipeline de dos vas. Cada etapa del pipeline se subdivide en su etapas de modo de procesar cada etapa varias instrucciones por cada ciclo de clock

-Comparaciones

-Efecto de dependencias

Memoria Cache RAM o o o o o dinmica (DRAM) Consumo mnimo. Capacidad de almacenamiento comparativamente alta. Costo por bit bajo. Tiempo de acceso alto (lento), debido al circuito de regeneracin de carga. Si construimos el banco de memoria utilizando RAM dinmica, no aprovechamos la velocidad del procesador. RAM esttica (SRAM) o Alto consumo relativo. o Capacidad de almacenamiento comparativamente baja. o Costo por bit alto. o Tiempo de acceso bajo (es mas rpida). o Si construimos el banco de memoria utilizando RAM esttica, el costo y el consumo de la computadora son altos.

La solucin: Memoria cache o Se trata de un banco de SRAM de muy alta velocidad, que contiene una copia de los datos e instrucciones que estn en memoria principal o El arte consiste en que esta copia est disponible justo cuando el procesador la necesita permitindole acceder a esos tems sin recurrir a wait states. o Combinada con una gran cantidad de memoria DRAM, para almacenar el resto de cdigos y datos, resuelve el problema mediante una solucin de compromiso tpica. o Requiere de hardware adicional que asegure que este pequeo banco de memoria cache contenga los datos e instrucciones mas frecuentemente utilizados por el procesador. El tamao del banco de memoria cache debe ser: o Suficientemente grande para que el procesador resuelva la mayor cantidad posible de bsquedas de cdigo y datos en esta memoria asegurando una alta performance o Suficientemente pequea para no afectar el consumo ni el costo del sistema. o Se dice que se logra un hit cuando se accede a un tem (dato o cdigo) y ste se encuentra en la memoria cache. o En caso contrario, se dice que el resultado del acceso es un miss. o Se espera un hit rate lo mas alto posible

El controlador cache trabaja mediante dos principios que surgen de analizar el comportamiento de los algoritmos de software que se emplean habitualmente. o Principio de vecindad temporal: Si un tem es referenciado, la probabilidad de ser referenciado en el futuro inmediato es alta. o Principio de vecindad espacial: Si un tem es referenciado, es altamente probable que sean referenciados sus tems vecinos. Estructura de memoria cache o Lnea: Elemento mnimo de palabra de datos dentro del cache. Corresponde a un mltiplo del tamao de la palabra de datos de memoria. o Razn: Cuando se direcciona un tem en memoria generalmente se requerir de los tem que lo rodean (Principio de vecindad espacial)

Organizacin del cach: Mapeo Directo

Organizacin del cach: Asociativo de dos vas

Algoritmos de reemplazo del contenido de la memoria cache o LRU: Least Recently Used. Se corresponde con el principio de vecindad temporal. o LFU: Last Frecuently Used o Random o FIFO Coherencia de un cache o Una variable que est en el cach tambin est alojada en alguna direccin de la DRAM. o Ambos valores deben ser iguales o Cuando el procesador la modifica hay varios modos de actuar Write through: el procesador escribe en la DRAM y el controlador cache refresca el cache con el dato actualizado Write through buffered: el procesador actualiza la SRAM cache, y el controlador cache luego actualiza la copia en memoria DRAM mientras el procesador contina ejecutando instrucciones y usando datos de la memoria cache Copy back: Se marcan las lneas de la memoria cache cuando el procesador escribe en ellas. Luego en el momento de eliminar esa lnea del cach el controlador cache deber actualizar la copia de DRAM.

o

Si el procesador realiza un miss mientras el controlador cache est accediendo a la DRAM para actualizar el valor, deber esperar hasta que controlador cache termine la actualizacin para recibir desde este la habilitacin de las lneas de control para acceder a la DRAM.

Multilevel cache o Tamao Cache L2 > Tamao Cache L1 o Velocidad Cache L1 > Velocidad Cache L2 Coherencia de cache (Protocolo MESI) o M - Modified: Lnea presente solamente en ste cache que vari respecto de su valor en memoria del sistema (dirty). Requiere write back hacia la memoria del sistema antes que otro procesador lea desde all el dato (que ya no es vlido). o E Exclusive: Lnea presente solo en esta cache, que coincide con la copia en memoria principal (clean). o S Shared: Lnea del cache presente y puede estar almacenada en los caches de otros procesadores. o I Invalid: Lnea de cache no es vlida. o Aplica a cache L1 de datos y L2/L3 o Para cache L1 de cdigo solo Shared e Invalid

Micro-Arquitectura P6 Micro Arquitectura Three core engines

o o

o o o

o o

r1