ay microprocesadores s-1 2008 p4 tss y cr

6
Ayudantía Microprocesadores 1er Semestre 2008 Profesor: David Velasco L. Ayudante: Juan Díaz G. Unidad: Modo Protegido Modulo Nº 4: Registros de control y Conmutación de Tareas. Registros de Control El 386 tiene 4 registros de 32 bits cada uno, llamados CR0 – CR3, los cuales todos, excepto CR1 (por uso reservado) son accesibles al programador de sistemas: pueden ser leídos y escritos mediante instrucciones del tipo MOV desde los registros de uso general (AX, BX, CX, DX). La característica de estos registros es que determinan el modo de operación del procesador y las características de la tarea en ejecución. Veamos las descripciones de estos registros: 1.- CR0: Doble Palabra de estado de la maquina. Este registro es el de mayor importancia desde el punto de vista del programador: posee funciones vitales del funcionamiento del procesador. Solo 11 bits de este tienen funciones: los 16 bits de menos peso (de los 32 bits) forman la “palabra de estado de la maquina MSW”. PG: Paginación: si PG = 1, esta habilitada la Unidad de Paginación, traduciendo las direcciones lineales a físicas. Cuando PG = 0, todas las direcciones lineales son tratadas como direcciones físicas (Importante!). CD: caché desactivada: si CD = 0, se activa la caché interna, desactivándose si es que CD = 1. Mientras el bit este en 1, el CPU puede aun acceder a la memoria caché pero esta no se actualizara hasta que sea reactivada (CD = 0). NW: Escritura Obligada: si NW = 0, se pone en marcha la escritura obligada y los ciclos de invalidación de la caché. AM: Mascara de Alineamiento: si AM = 1 y AC (en EFLAGS) = 1, se permite comprobar si la dirección de los operandos es múltiplo de 8. 4 y 2; es decir, si la palabra esta alineada. El PL del segmento debe ser 3.

Upload: patastar-maverick-supertramp

Post on 21-Oct-2015

10 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Ay Microprocesadores S-1 2008 P4 TSS y CR

Ayudantía Microprocesadores 1er Semestre 2008

Profesor: David Velasco L. Ayudante: Juan Díaz G.

Unidad: Modo Protegido Modulo Nº 4: Registros de control y Conmutación de Tareas.

Registros de Control El 386 tiene 4 registros de 32 bits cada uno, llamados CR0 – CR3, los cuales todos, excepto CR1 (por uso reservado) son accesibles al programador de sistemas: pueden ser leídos y escritos mediante instrucciones del tipo MOV desde los registros de uso general (AX, BX, CX, DX). La característica de estos registros es que determinan el modo de operación del procesador y las características de la tarea en ejecución. Veamos las descripciones de estos registros: 1.- CR0: Doble Palabra de estado de la maquina. Este registro es el de mayor importancia desde el punto de vista del programador: posee funciones vitales del funcionamiento del procesador. Solo 11 bits de este tienen funciones: los 16 bits de menos peso (de los 32 bits) forman la “palabra de estado de la maquina MSW”.

PG: Paginación: si PG = 1, esta habilitada la Unidad de Paginación, traduciendo las direcciones lineales a físicas. Cuando PG = 0, todas las direcciones lineales son tratadas como direcciones físicas (Importante!). CD: caché desactivada: si CD = 0, se activa la caché interna, desactivándose si es que CD = 1. Mientras el bit este en 1, el CPU puede aun acceder a la memoria caché pero esta no se actualizara hasta que sea reactivada (CD = 0). NW: Escritura Obligada: si NW = 0, se pone en marcha la escritura obligada y los ciclos de invalidación de la caché. AM: Mascara de Alineamiento: si AM = 1 y AC (en EFLAGS) = 1, se permite comprobar si la dirección de los operandos es múltiplo de 8. 4 y 2; es decir, si la palabra esta alineada. El PL del segmento debe ser 3.

Page 2: Ay Microprocesadores S-1 2008 P4 TSS y CR

WP: Protección de Escritura: Si WP = 1, las paginas de usuario quedan protegidas contra escritura, tanto en nivel Usuario como Supervisor. NE: Error de Coprocesador: Sirve para tomar acciones a seguir en caso de que el coprocesador matemático FPU falle. TS: Tarea conmutada: la Cpu pone este bit a 1 cuando se produce una conmutación de tarea. PR: Habilitación del modo Protegido: Cuando PE = 1, el 386 pasa a operar en modo Protegido, mientas si PE = 0, lo hace en modo Real. ET: Tarea de Coprocesador: Se utiliza para determinar si el coprocesador es un 287 o 387. EM: Emulación: Si EM = 1, se emula por software al coprocesador; se fuerza a todas las instrucciones en coma flotante a ser ejecutadas por emulación software. MP: Monitor de Coprocesador: Se usa para controlar la función de la instrucción WAIT, que sincroniza el procesador con el coprocesador. CR2: Dirección lineal de fallo de página. Si la paginación esta activa, la dirección lineal se introduce en la Unidad de Paginación para traducirla en dirección física. Este proceso es lento debido a que se requieren tres accesos a memoria principal. Si la dirección buscada se encuentra en la TLB (caché para acelerar la búsqueda) la traducción es muy rápida, pero en caso de que se produzca un fallo de pagina, la dirección lineal se almacena en el registro de control CR2.

CR3: Base del Directorio de las Tablas de Paginas. Los 20 bits de mas peso de este registro contienen el valor de la base del Directorio de Paginas de la tarea en curso, el cual esta dentro de la Unidad de Paginación y se utiliza para convertir direcciones lineales a direcciones físicas. De los 12 bits restantes, se usan significativamente dos es ellos: PCD: Pagina Cacheable: Si PCD = 1, la pagina que esta siendo utilizada en ese momento puede meterse en la caché. PWT: Pagina de Escritura Obligada: Si PWT = 1, significa que es una pagina de escritura obligada.

Page 3: Ay Microprocesadores S-1 2008 P4 TSS y CR

Para el Pentium hay un nuevo registro de control, el CR4, el cual describe las extensiones de la arquitectura que este procesador soporta.

CONMUTACION DE TAREAS

La multitarea se define como la capacidad de un microprocesador para realizar muchas tareas simultáneamente, ejecutándolas de manera secuencial. Varias son las razones para apoyar el empleo de esta técnica:

• Permitir que varias aplicaciones trabajen simultáneamente.

• Compartir recursos físicos entre barios usuarios.

• Compartir recursos lógicos, es decir, la información.

• Acelerar los cálculos de una tarea trabajando en paralelo.

• Mejorar la modularidad de una aplicación dividiéndola en distintas tareas.

Una tarea es una unidad de trabajo que un CPU puede conmutar, ejecutar o suspender. Una conmutación de tarea consiste en abandonar el procesamiento de la tarea en curso (vieja) para reanudar otra tarea (nueva). Para reanudar una tarea en cualquier momento se dispone del CONTEXTO, que es el estado completo almacenado del procesador cuando abandone dicha tarea. El contexto se compone fundamentalmente de:

• La mayor parte de los registros de la CPU

• La LDT especifica de la tarea

• El registro que apunta al Directorio de Paginas

• Los punteros de pila para los diversos niveles de privilegio

• Parámetros del SO, etc. Cada tarea tiene guardado el contexto de la CPU que le corresponde en un segmento que se denomina SEGMENTO DEL ESTADO DE LA TAREA (TSS).

Page 4: Ay Microprocesadores S-1 2008 P4 TSS y CR

Segmento de Estado de la Tarea, TSS. Es un segmento de estado donde se guardan los principales registros de la CPU y parámetros del Sistema Operativos necesarios para que se pueda reanudar una tarea.

La TSS consta de tres partes:

• Registros de la CPU (104 bytes)

• Parámetros del SO (tamaño variable)

• Mapa de bits de permiso de E/S (64 Kbits)

Page 5: Ay Microprocesadores S-1 2008 P4 TSS y CR

Los campos del segmento TSS se dividen en dos categorías:

• Dinámicos: Se actualizan cuando una tarea es suspendida en una conmutación. Dentro de esta categoría caen los estados anteriores de los registros de propósito general, de selectores de segmento, de EFLAGS, de campo EIP y TR previo antes de la conmutación de la tarea.

• Estáticos: No se modifican. Se activan cuando se crea una tarea, como el registro LDTR, CR3, punteros de pila de nivel de privilegio, flag T y parámetros del SO.

La conmutación de tarea se llevara a cabo de una manera más eficiente si las páginas que contienen estas también están presentes en la memoria antes de que la conmutación comience.

Registro de Tarea, TR y Descriptor Global de TSS

La CPU hace referencia al TSS por medio del registro TR, de 16 bits, el cual actúa igual que un selector (hasta tiene caché oculta), pero con las siguientes características.

• El TR apunta de forma indirecta al DESCRIPTOR DEL TSS QUE SE ENCUENTRA EN LA GDT. El TSS es uno de los llamados “segmentos de sistema”.

• El descriptor del TSS no puede ubicarse en la LDT ni en la IDT, solo en la GDT.

• Si se intenta acceder al descriptor del TSS con un selector de segmento como el TI puesto a 1 (LDT), se crea una excepción general de protección (#GP)

• Dentro del descriptor, el flag BUSY (B) en el campo TIPO indica si la tarea esta ocupada o no. El campo TIPO, perteneciente a los atributos, tiene el código 010B1: el bit B indica que la tarea está libre (B=0) u ocupada (B=1).

Page 6: Ay Microprocesadores S-1 2008 P4 TSS y CR

IMPORTANTE: Cualquier programa o proceso cuyo DPL (nivel de privilegio, acordarse de los atributos) sea menor o igual que el DPL del descriptor del TSS puede realizar una conmutación de tarea a través de una instrucción CALL o JMP. En sistemas multitarea, el DPL de algunos descriptores TSS puede ponerse a 3 para permitir la condición de tarea a nivel de privilegio de la aplicación (o sea, cualquier aplicación puede saltar al segmento TSS, acuérdense que entre mayor el DPL, menor nivel de privilegio). Las instrucciones privilegiadas LTR (cargar el registro TR) y STR (almacenamiento de TR) cargan y leen la parte visible del registro de tarea y se usan generalmente al arrancar el procesador

• La instrucción LTR carga un selector de segmento en el registro de tarea que apunta a un descriptor TSS en la GDT, y luego se carga el caché del registro TR con la información del descriptor TSS (igual que como funcionan los demás registros de segmento, ven?)

• La instrucción STR guarda la parte visible del registro de tarea en un registro de propósito general o en memoria. Se puede ejecutar desde cualquier privilegio para identificar la tarea que esta corriendo actualmente, pero normalmente solo es usada por el SO.