Primera Guía Sistemas Operativos

Profesor: Raimundo Vega. Ayudante: Víctor Velásquez 29 de abril de 2012

Cuestionario
1. Listar y definir brevemente los cuatro elementos principales de un computador. Resp: Un computador se compone de una memoria principal, que almacena datos e instrucciones; una Unidad Aritmético Lógica (ALU) capaz de operar en datos binarios; una Unidad de Control, que interpreta instrucciones en memoria y las ejecuta; y los Dispositivos de entrada y salida (I/O)) operados por la Unidad de Control. 2. Defina las dos categorías principales de los registros del procesador. Resp: Registros visibles al usuario: Permiten al programador assembler minimizar las referencias a memoria principal, optimizando el uso de registros. Para lenguajes de alto nivel, un compilador “optimizador” intentará hacer elecciones inteligentes de cuales variables asignar a los registros y cuales a locaciones de memoria principal. Algunos lenguajes de alto nivel, como C, permiten al programador sugerir que variables deben guardar en los registros. Registros de Control y Estado: Usados por el procesador para controlar las operaciones del mismo y por rutinas del sistema operativo con privilegios para controlar la ejecución de programas. 3. En términos generales, ¿cuáles son las cuatro acciones distintas que una instrucción de máquina puede especificar? Resp: Operaciones Procesador-Memoria: Los datos pueden ser transferidos desde el procesador a la memoria y viceversa. Procesador-I/O: Los datos pueden ser transferidos desde o hacia un periférico al transferir entre el procesador y el módulo I/O. Procesamiento de Datos: El procesador puede ejecutar algunas operaciones aritméticas o lógicas sobre los datos. Control: Una instrucción puede especificar que la secuencia de ejecución sea alterada. 4. ¿Qué es una interrupción? Resp: Una interrupción es un mecanismo por el cuál otros módulos (I/O, memoria) pueden interrumpir la secuencia normal de un proceso. 1

5. ¿Cómo se trabajan las interrupciones múltiples? Resp: Una forma de trabajar con interrupciones múltiples es deshabilitar otras interrupciones mientras una está siendo procesada. Otra forma es definir prioridades para las interrupciones y permitir a interrupciones de más alta prioridad interrumpir interrupciones de menor prioridad. 6. ¿Qué características distinguen a los distintos elementos de una jerarquía de memoria? Resp: Costo, capacidad y acceso. 7. ¿Qué es la memoria caché? Resp: La memoria caché es una memoria que es más pequeña y más rápida que la memoria principal y que es interpuesta entre entre el procesador y la memoria principal. La caché actúa como un buffer para locaciones de memoria recientemente usadas. 8. ¿Cuál es la diferencia entre un multiprocesador y un sistema multicomputadora? Resp: un multiprocesador es una máquina formada por un conjunto de procesadores que comparten el acceso a una memoria común, cada procesador ejecuta su propio programa, debiendo todos ellos compartir la memoria principal común. Una multicomputadora es una máquina compuesta por varios nodos, estando cada nodo formado por un procesador, su memoria principal y, en su caso, elementos de E/S. Al contrario de los multiprocesadores, en las multicomputadoras, los programas de dos procesadores no pueden compartir datos en memoria principal. 9. ¿Cuál es la distinción entre localidad espacial y localidad temporal? Resp: La localidad espacial se refiere a la tendencia de ejecución para involve un número de locaciones de memoria que están La localidad temporal se refiere a la tendencia de un procesador para acceder a locaciones de memoria que han sido utilizadas recientemente. 10. En general, ¿Cuáles son las estrategias para explotar (sacar provecho de) la localidad espacial y la localidad temporal? Resp: La localidad espacial es explotada usando bloques de caché más largos e incorporando mecanismos de pre-captura (capturar items de uso anticipado) entro de la lógica de control de caché. La localidad temporal es explotada manteniendo instrucciones recientemente usadas y valores de datos en memoria caché y además, explotando una jerarquía de caché.

Problemas
1. Considera un microprocesador de 32-bit hipotético, teniendo instrucciones de 32-bit compuestas de dos campos. El primer byte contiene el opcode y el resto una operación inmediata o una dirección de operación. a) ¿Cuál es la capacidad máxima de memoria direccionable (en bytes)? Resp: 224 = 16 MBytes b) Analice el impacto en la velocidad del sistema si el bus del microprocesador tuviese: 1) Un bus de dirección local de 32-bit y un bus de datos locales de 16-bit, o Resp: Si el bus de dirección local es de 32 bits, la dirección completa puede ser transferida de una sola vez, y decodificada, hacia la memoria. Sin embargo, como el bus de datos 2

es de solo 16 bits, requerirá dos ciclos para alcanzar una instrucción de 32 bits o un operando de 32 bits. 2) Un bus de dirección local de 16-bit y un bus de datos locales de 16-bit. Resp: Los 16 bits colocados en el bus de direcciones no pueden acceder a la memoria completa. Así, es necesario un control de interfaz de memoria más complejo para captar ambas partes de la dirección (dado que el microprocesador terminará en dos pasos). Para una dirección de 32 bits, uno puede asumir que la primera mitad se decodificará para acceder a una “fila” en memoria, mientras que la segunda mitad es enviada para acceder luego a una “columna” en memoria. En adición a esta operación de dos pasos, el microprocesador necesitará dos ciclos para capturar la instrucción/operando de 32 bits. c) ¿Cuántos bits son necesarios para el contador de programa y el registro de instrucciones? Resp: El contador de programa debe tener al menos 24 bits. Típicamente, un microprocesador de 32 bits tendrá un bus de direcciones externo de 32 bits y un contador de programa de 32 bits. Si el registro de instrucciones contendrá la instrucción por completo, necesariamente deberá tener 32 bits de largo; si sólo va a contener el op-code entonces solo necesitará 8 bits de largo. 2. En, virtualmente, todos los sistemas que incluyen módulos DMA, el acceso DMA a la memoria principal tiene una prioridad mas alta que el acceso del procesador a la memoria principal. ¿Por qué? Resp: Si un procesador es detenido mientras lee o escribe en memoria, normalmente no debería ocurrir daño, a excepción de una pequeña pérdida de tiempo. Sin embargo, puede haber una transferencia DMA desde/hacia un dispositivo que está enviando/recibiendo datos en un flujo (ej: disco o cinta), y no puede ser detenida. Así, si el módulo DMA es detenido (se le deniega el acceso continuo a memoria principal), se perderán datos. 3. Un computador consiste en una CPU y un dispositivo I/O D conectado a memoria principal M vía un bus compartido con un ancho de bus de datos de una palabra. La CPU puede ejecutar un máximo de 106 instrucciones por segundo. Una instrucción promedio requiere cinco ciclos de procesador, tres de los cuales usan el bus de memoria. Una operación de lectura/escritura en memoria usa un ciclo de procesador. Suponga que la CPU está continuamente ejecutando programas “background ” que requieren el 95 % de su razón de ejecución de instrucciones, pero no cualquier instrucción I/O. Asuma que un ciclo de procesador es igual a un ciclo de bus. Ahora suponga que bloques muy largos de datos serán transmitidos entre M y D. a) Si se usa I/O programada y cada transferencia de una palabra requiere que la CPU ejecute dos instrucciones, estime la razón máxima de transferencia de datos I/O, en palabras por segundo, posible a través de D. Resp: El procesador puede dedicar solo 5 % de su tiempo a I/O. Así, la máxima razón de ejecución de instrucciones I/O es 106 × 0,05 = 50000 instrucciones por segundo. La taza de transferencia I/O es, entonces, 25000 palabras/segundo. b) Estime la misma razón si se utiliza transferencia DMA. Resp: El numero de ciclos de máquina disponibles para control DMA son: 106 (0,05 × 5 + 0,95 × 2) = 2,15 × 1o6 3

Si asumimos que el módulo DMA puede usar todos estos ciclos, entonces, la razón máxima de transferencia I/O es ésta. c) Considere el siguiente código: begin for i := 1 to 20 step 1 do for j := 1 to 10 step 1 do a[i] := a[i] ∗ j od od end 1) De un ejemplo de localidad espacial en el código. Resp: Una referencia a la primera instrucción es inmediatamente seguida por una referencia a la segunda. 2) De un ejemplo de localidad temporal en el código. Resp: Los 10 accesos a [i] dentro del loop for interno, que ocurren dentro de un intervalo pequeño de tiempo. 4. Considere un sistema de memoria con los siguientes parámetros: T c = 100ns Cc = 0,01cents/bit T m = 1, 200ms Cm = 0,001cents/bit a) ¿Cuál es el costo de 1 MByte de memoria principal? Cost = Cm × 8 × 106 = 8 × 106 cents = $80 b) ¿Cuál es el costo de 1 MByte de memoria principal usando tecnología de memoria caché? Cost = Cc × 8 × 106 = 8 × 104 cents = $800 c) Si el tiempo de acceso efectivo es 10 % mayor que el tiempo de acceso a la caché, ¿cuál es la tasa de aciertos (Hit Ratio H? 1,1 × T1 = T1 (1 − H)T2 0,1 × 100 = (1 − H)(1200) H = 1190/1200 5. Un computador tiene una caché, memoria principal, y un disco usado para memoria virtual. Si una palabra referenciada esté en la caché, se requieren 20ns para acceder a ella. Si está en memoria principal pero no en la caché, 60ns son necesitados para cargarla en la caché (ésto incluye el tiempo de revisión de la caché), y entonces la referencia es iniciada nuevamente. Si la palabra no esté en memoria principal, se requieren 12ms para obtenerla del disco, seguidos por los 60ns 4

para copiarla en la caché, y luego la referencia de iniciada nuevamente. El Hit Ratio es 0,9 y en la memoria principal es de 0,6. ¿Cuál es el tiempo promedio, en ns, requerido para acceder a la palabra referenciada en este sistema? Resp: Estos son los tres casos a considerar: Localización de la palabra referenciada En caché No en caché, pero en memoria principal Ni en caché ni en memoria principal Así, el tiempo promedio podría ser: Avg = 0,9 × 20 + 0,06 × 80 + 0,04 × 12000080 = 480026ns 6. Suponga que se usará un stack por el procesador para manejar llamadas de procedimiento y retornos. ¿Puede ser sustituido el contador de programa por el tope del stack? Resp: Sí, sólo si el stack será utilizado para almacenar la dirección de retorno. Si el stack es también usado para pasar parámetros, entonces el esquema solo va a funcionar si es la unidad de control la que remueve parámetros, en vez de instrucciones de máquina. En el último caso, el procesador necesitaría ambos, un parámetro y el PC en el tope del stack al mismo tiempo. Probabilidad 0,9 0,1 × 0,6 = 0,06 0,1 × 0,4 = 0,04 Tiempo total para el acceso en ns 20 60 + 20 = 80 12ms + 60 + 20 = 12000080

5