UNIDAD 1 1.1. Supongamos que el procesador hipotético de la figura 1.3 también tiene dos instrucciones de E/S: 0011 = Cargar CA desde E / S 0111 = Almacene CA en E / S En estos casos, la dirección de 12 bits identifica un dispositivo externo particular. Muestre la ejecución del programa (usando el formato de la Figura 1.4) para el siguiente programa: 1. Cargue AC desde el dispositivo 5. 2. Agregue el contenido de la ubicación de memoria 940. 3. Almacene AC en el dispositivo 6. Suponga que el siguiente valor recuperado del dispositivo 5 es 3 y que la ubicación 940 contiene un valor de 2. 1.2. La ejecución del programa de la Figura 1.4 se describe en el texto usando seis pasos. Expanda esta descripción para mostrar el uso de MAR y MBR. 1.3. Considere un hipotético microprocesador de 32 bits con instrucciones de 32 bits compuesto por dos campos. El primer byte contiene el código de operación y el resto un operando inmediato o una dirección de operando. a. ¿Cuál es la capacidad máxima de memoria directamente direccionable (en bytes)? b. Discuta el impacto en la velocidad del sistema si el microprocesador tiene 1. un bus de direcciones local de 32 bits y un bus de datos local de 16 bits, o 2. un bus de direcciones local de 16 bits y un bus de datos local de 16 bits. c. ¿Cuántos bits se necesitan para el contador del programa y el registro de instrucciones? 1.4. Considere la posibilidad de un microprocesador hipotético que genere una dirección de 16 bits (por ejemplo, suponga que el contador del programa y los registros de direcciones tienen 16 bits de ancho) y que tenga un bus de datos de 16 bits. a. ¿Cuál es el espacio de direcciones de memoria máximo al que el procesador puede acceder directamente si está conectado a una "memoria de 16 bits"? b. ¿Cuál es el espacio de direcciones de memoria máximo al que el procesador puede acceder directamente si está conectado a una "memoria de 8 bits"? c. ¿Qué características arquitectónicas permitirán que este microprocesador acceda a un "espacio de E/S" separado? d. Si una entrada y una instrucción de salida pueden especificar un número de puerto de E/S de 8 bits, ¿cuántos puertos de E/S de 8 bits puede soportar el microprocesador? ¿Cuántos puertos de E / S de 16 bits? Explique. 1.5 Considere un microprocesador de 32 bits, con un bus de datos externo de 16 bits, controlado por un reloj de entrada de 8 MHz. Supongamos que este microprocesador tiene un ciclo de bus cuya duración mínima es igual a cuatro ciclos de reloj de entrada. ¿Cuál es la velocidad máxima de transferencia de datos en el bus que este microprocesador puede soportar en bytes/s? Para aumentar su rendimiento, ¿sería mejor hacer su bus de datos externo 32 bits o duplicar la frecuencia de reloj externa suministrada al microprocesador? Indique cualquier otra suposición que haga y explique. Sugerencia: determine el número de bytes que se pueden transferir por ciclo de bus. 1.6 Considere un sistema de computadora que contenga un módulo de E/S que controle un teclado/impresora simple de Teletipo. Los siguientes registros están contenidos en la CPU y conectados directamente al bus del sistema: INPR: registro de entrada, 8 bits OUTR: Registro de salida, 8 bits FGI: Bandera de entrada, 1 bit FGO: Indicador de salida, 1 bit IEN: habilitación de interrupción, 1 bit a) El teletipo es capaz de codificar un símbolo alfanumérico en una palabra de 8 bits y decodificar una palabra de 8 bits en un símbolo alfanumérico. En un sistema informático, un teletipo simple de teclado y impresora puede controlarse con el módulo IfO. La CPU contiene cuatro registros que están conectados directamente al bus del sistema. La entrada del teletipo se almacena en el registro de entrada INTR. El INTR solo aceptará datos del teletipo cuando el indicador de entrada EGI sea CERO. Cuando llegan los datos, se almacenan en EUR, el indicador de entrada EGI se establece en UNO. La CPU comprueba periódicamente el indicador de entrada EGI. Si la bandera de entrada EGI está configurada en UNO, la CPU transfiere el contenido de INTR al acumulador (AC) y establece EGI en CERO. Cuando la CPU tiene que enviar los datos al teletipo, verifica el indicador de posición EGO. Si el indicador de salida EGO es CERO, la CPU debe esperar. Si el indicador de salida EGO es UNO, la CPU transfiere el contenido del acumulador (AC) al registro de salida OUTR y establece EGO a CERO. El teletipo establece EGI en 1 después de que se imprime la palabra. b) La CPU es mucho más rápida que el teletipo y debe verificar EGI y EGO repetidamente. Si se usan interrupciones, el teletipo puede emitir una interrupción a la CPU cuando esté listo para aceptar o enviar datos. El registro de habilitación de interrupción (IEN) puede ser configurado por la CPU bajo el control del programador 1.7 En prácticamente todos los sistemas que incluyen módulos DMA, el acceso DMA a la memoria principal tiene mayor prioridad que el acceso del procesador a la memoria principal. ¿Por qué? 1.8 Un módulo DMA está transfiriendo caracteres a la memoria principal desde un dispositivo externo que transmite a 9600 bits por segundo (bps). El procesador puede obtener instrucciones a razón de 1 millón de instrucciones por segundo. ¿En cuánto se ralentizará el procesador debido a la actividad de DMA? 1.9 Una computadora consta de una CPU y un dispositivo de E/S D conectado a la memoria principal M a través de 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 o escritura de memoria utiliza un ciclo de procesador. Supongamos que la CPU ejecuta continuamente programas de "fondo" que requieren el 95% de la velocidad de ejecución de la instrucción, pero no las instrucciones de E / S. Supongamos que un ciclo de procesador equivale a un ciclo de bus. Ahora supongamos que se transfieren bloques de datos muy grandes entre M y D. a. Si se utiliza la E / S programada y cada transferencia de E / S de una palabra requiere que la CPU ejecute dos instrucciones, calcule la velocidad máxima de transferencia de datos de E / S, en palabras por segundo, mediante D. b. Estime la misma tasa si se utiliza la transferencia de DMA. Maximo de Instrucciones =106 instruc/seg #instrucciones de E/S = 106 * 0.05 =50000 instuc/seg a) Vmax=(#instricciones deE/S)/2 106*0.05/2=25000 instrucc/seg b) Vmax=#instrucc*[(%E/S*#cliclos)+ [(%background*#cliclos)]] 106*[(0.05*5)+(0.95*2)]=2.5*106 instrucc/seg 1.10 Considere el siguiente código: for (i = 0; i <20; i ++) for (j = 0; j <10; j ++) a [i] = a [i] * j a. Da un ejemplo de la localidad espacial en el código. b. Da un ejemplo de la localidad temporal en el código. 1.12 Considere un sistema de memoria con los siguientes parámetros: Tc = 100 ns Cc = 0.01 cents/ bit Tm = 1,200 ns Cm = 0.001 cents/ bit a. ¿Cuál es el costo de 1 MByte de memoria principal? b. ¿Cuánto cuesta 1 MByte de memoria principal con la tecnología de memoria caché? c. Si el tiempo de acceso efectivo es un 10% mayor que el tiempo de acceso a la memoria caché, ¿cuál es la proporción de aciertos H? 1.13 Una computadora tiene un caché, memoria principal y un disco utilizado para la memoria virtual. Si una palabra referenciada está en la caché, se requieren 20 ns para acceder a ella. Si está en la memoria principal pero no en la memoria caché, se necesitan 60 ns para cargarla en la memoria caché (esto incluye el tiempo para verificar originalmente la memoria caché), y luego la referencia se inicia de nuevo. Si la palabra no está en la memoria principal, se requieren 12 ms para recuperar la palabra del disco, seguido de 60 ns para copiarla en la memoria caché, y luego la referencia se inicia de nuevo. La proporción de aciertos de caché es 0.9 y la proporción de aciertos de memoria principal es 0.6. ¿Cuál es el tiempo promedio en ns requerido para acceder a una palabra de referencia en este sistema? 1.14 Suponga que el procesador va a utilizar una pila para gestionar llamadas y devoluciones de procedimientos. ¿Se puede eliminar el contador del programa usando la parte superior de la pila como contador del programa? UNIDAD 2 2.1. Supongamos que tenemos una computadora multiprogramada en la que cada trabajo tiene características idénticas. En un período de cálculo, T, para un trabajo, la mitad del tiempo se usa en E/S y la otra mitad en la actividad del procesador. Cada trabajo se ejecuta por un total de N períodos. Supongamos que se utiliza una simple planificación por turnos y que las operaciones de E/S pueden superponerse con la operación del procesador. Defina las siguientes cantidades: Tiempo de respuesta = tiempo real para completar un trabajo Rendimiento(Throughput) = número promedio de trabajos completados por período de tiempo T Utilización del procesador = porcentaje de tiempo que el procesador está activo (sin esperar) Calcule estas cantidades para uno, dos y cuatro trabajos simultáneos, suponiendo que el período T se distribuye en cada una de las siguientes formas: a. I / O primera mitad, procesador segunda mitad b. Primer y cuarto cuartos de E / S, segundo y tercer cuarto del procesador 2.2. Un programa vinculado a E/S es aquel que, si se ejecuta solo, pasaría más tiempo esperando E/S que utilizando el procesador. Un programa vinculado al procesador es lo opuesto. Supongamos que un algoritmo de programación a corto plazo favorece aquellos programas que han utilizado poco tiempo de procesador en el pasado reciente. Explica por qué este algoritmo favorece los programas vinculados a E/S y, sin embargo, no niega permanentemente el tiempo del procesador a los programas vinculados al procesador. 2.3. Contraste las políticas de programación que podría utilizar al tratar de optimizar un sistema de tiempo compartido con aquellos que usaría para optimizar un sistema de lote multiprogramado. 2.4. ¿Cuál es el propósito de las llamadas al sistema y cómo se relacionan las llamadas al sistema con el sistema operativo y al concepto de operación de modo dual (modo kernel y modo de usuario)? 2.5. En el sistema operativo mainframe de IBM, OS/390, uno de los principales módulos en el núcleo es el Administrador de recursos del sistema. Este módulo es responsable de la asignación de recursos entre los espacios de direcciones (procesos). El SRM le otorga a OS / 390 un grado de sofisticación único entre los sistemas operativos. Ningún otro sistema operativo de mainframe, y ciertamente ningún otro tipo de sistema operativo, puede igualar las funciones realizadas por SRM. El concepto de recurso incluye procesador, memoria real y canales de E / S. SRM acumula estadísticas relacionadas con la utilización del procesador, canal y varias estructuras de datos clave. Su propósito es proporcionar un rendimiento óptimo basado en el monitoreo y el análisis del rendimiento. La instalación establece varios objetivos de rendimiento, y estos sirven como guía para el SRM, que modifica dinámicamente las características de instalación y rendimiento del trabajo en función de la utilización del sistema. A su vez, el SRM proporciona informes que permiten al operador capacitado refinar la configuración y la configuración de los parámetros para mejorar el servicio al usuario. Este problema se refiere a un ejemplo de actividad de SRM. La memoria real se divide en bloques de igual tamaño llamados cuadros, de los cuales puede haber muchos miles. Cada cuadro puede contener un bloque de memoria virtual denominado página. SRM recibe el control aproximadamente 20 veces por segundo e inspecciona cada cuadro de página. Si la página no ha sido referenciada o modificada, un contador se incrementa en 1. Con el tiempo, SRM promedia estos números para determinar el número promedio de segundos que un marco de página en el sistema permanece intacto. ¿Cuál podría ser el propósito de esto y qué acción podría tomar SRM? 2.6. Un multiprocesador con ocho procesadores tiene 20 unidades de cinta conectadas. Hay una gran cantidad de trabajos enviados al sistema que requieren un máximo de cuatro unidades de cinta para completar la ejecución. Suponga que cada trabajo comienza a ejecutarse con solo tres unidades de cinta durante un período prolongado antes de requerir la cuarta unidad de cinta durante un breve período hacia el final de su operación. También asuma un suministro interminable de tales trabajos. a. Supongamos que el programador del sistema operativo no iniciará un trabajo a menos que haya cuatro unidades de cinta disponibles. Cuando se inicia un trabajo, se asignan cuatro unidades inmediatamente y no se liberan hasta que finaliza el trabajo. ¿Cuál es la cantidad máxima de trabajos que pueden estar en progreso a la vez? ¿Cuál es la cantidad máxima y mínima de unidades de cinta que pueden quedar inactivas como resultado de esta política? b. Sugerir una política alternativa para mejorar el uso de la unidad de cinta y, al mismo tiempo, evitar el punto muerto del sistema. ¿Cuál es la cantidad máxima de trabajos que pueden estar en progreso a la vez? ¿Cuáles son los límites en el número de unidades de cinta al ralentí? UNIDAD 3 3.1 La siguiente tabla de transición de estados es un modelo simplificado de gestión de procesos, con las etiquetas que representan las transiciones entre los estados de LISTO, EJECUTADO, BLOQUEADO y NO RESIDENTE. Da un ejemplo de un evento que puede causar cada una de las transiciones anteriores. Dibuja un diagrama si eso ayuda. 1. LISTO para EJECUTAR ocurre solo si a un proceso se le asigna la CPU. Este es el trabajo del programador o despachador 2. EJECUTARSE PARA LISTO puede ser causado por una expiración cuántica de tiempo (el proceso en ejecución ha alcanzado el tiempo máximo permitido para la ejecución ininterrumpida). 3. CORRER a BLOQUEADO puede ocurrir si hay una solicitud de los sistemas operativos proceso, o E / S u otra solicitud de kernel. 4. BLOQUEADO a LISTO ocurre si el evento esperado completa el evento que estaba esperando (tal vez finalización de E / S). 5. LISTO para NO RESIDENTE ocurre si la memoria está comprometida en exceso, y un proceso se intercambia temporalmente de la memoria. 6. BLOQUEADO a NO RESIDENTE: ocurre si la memoria está comprometida en exceso, y un proceso se intercambia temporalmente de la memoria igual que está listo para no residente. 3.2 Suponga que en el tiempo 5 no se utilizan recursos del sistema, excepto el procesador y la memoria. Ahora considere los siguientes eventos: En el momento 5: P1 ejecuta un comando para leer desde la unidad de disco 3. En el momento 15: el intervalo de tiempo de P5 expira. En el momento 18: P7 ejecuta un comando para escribir en la unidad de disco 3. En el momento 20: P3 ejecuta un comando para leer desde la unidad de disco 2. En el momento 24: P5 ejecuta un comando para escribir en la unidad de disco 3. En el momento 28: P5 se intercambia. En el momento 33: se produce una interrupción desde la unidad de disco 2: la lectura de P3 está completa. Para cada momento 22, 37 y 47, identifique en qué estado se encuentra cada proceso. Si un proceso está bloqueado, identifique aún más el caso en el que está bloqueado. Solucion En el momento 5: P1 está bloqueado porque quiere leer del dispositivo de E / S, es decir, del disco En el momento 15: P5 pasa al estado listo En el momento 18: P7 pasa al estado bloqueado debido a escritura desde el disco Unidad 3. En el momento 20: P3 pasa al estado bloqueado, debido a la lectura de la unidad de disco 2 En el momento 24: P5 pasa al estado bloqueado debido a escritura desde el disco Unidad 3 En el momento 28: P5 pasa al estado suspendido (al espacio de intercambio en el disco duro). En el momento 33: P3 llega al estado listo. En el momento 36: P1 llega al estado preparado. En el momento 38: P8 va a salir o al estado finalizado. En el momento 44: P5 pasa al estado listo del estado suspendido anterior. En el momento 48: P7 llega al estado preparado. (Después de su estado bloqueado que ocurrió en el momento 18) proceso Hasta tiempo Hasta tiempo Hasta tiempo P1 Bloqueado Ray asume que Listo puede estar en listo P3 bloqueado Listo Listo P5 Listo Suspendido Listo P7 Bloqueado Bloqueado Bloqueado P8 ¿Listo o en ¿Listo o en Salir o terminar funcionamiento? funcionamiento? estado 3.4 Para el modelo de proceso de siete estados de la figura 3.9b, dibuje un diagrama de cola similar al de la figura 3.8b. 3.5 Considere el diagrama de transición de estado de la Figura 3.9b. Supongamos que es hora de que el sistema operativo envíe un proceso y que hay procesos tanto en el estado Listo como en el estado Listo / Suspendido, y que al menos un proceso en el estado Listo / Suspendido tiene una prioridad de planificación más alta que cualquiera de los procesos en el estado Listo. Dos políticas extremas son las siguientes: (1) Despachar siempre desde un proceso en el estado Listo, para minimizar el intercambio, y (2) dar siempre preferencia al proceso de mayor prioridad, aunque eso pueda significar un intercambio cuando no sea necesario el intercambio. Sugerir una política intermedia que intente equilibrar las preocupaciones de prioridad y rendimiento. 3.6 La Tabla 3.13 muestra los estados del proceso para el sistema operativo VAX / VMS. a. ¿Puede proporcionar una justificación para la existencia de tantos estados de espera distintos? b. ¿Por qué los siguientes estados no tienen versiones residentes y reemplazadas: espera de error de página, espera de página colisionada, espera de evento común, espera de página gratuita y espera de recurso? c. Dibuja el diagrama de transición de estado e indica la acción o ocurrencia que causa cada transición. 3.7 El sistema operativo VAX / VMS hace uso de cuatro modos de acceso de procesador para facilitar la protección y el intercambio de recursos del sistema entre los procesos. El modo de acceso determina a. Varios sistemas operativos tienen dos modos, kernel y usuario. ¿Cuáles son las ventajas y desventajas de proporcionar cuatro modos en lugar de dos? b. ¿Puedes defender incluso más de cuatro modos? 3.9 La Figura 3.8b sugiere que un proceso solo puede estar en una cola de eventos a la vez. a. ¿Es posible que desee permitir que un proceso espere en más de un evento al mismo tiempo? Proporcione un ejemplo. b. En ese caso, ¿cómo modificaría la estructura de puesta en cola de la figura para admitir esta nueva característica? 3.10 En una serie de computadoras antiguas, una interrupción causó que los valores de registro se almacenaran en ubicaciones fijas asociadas con la señal de interrupción dada. ¿Bajo qué circunstancias es esta una técnica práctica? Explica por qué es inconveniente en general. 3.11 En la Sección 3.4, se indicó que UNIX no es adecuado para aplicaciones en tiempo real porque un proceso que se ejecuta en modo núcleo no puede ser reemplazado. Elaborar. 3.12 Ha ejecutado el siguiente programa C: principal () {int pid; pid = fork (); printf ("% d \ n", pid); } ¿Cuáles son los resultados posibles, suponiendo el fork tuvo éxito? UNIDAD 4 4.1. Se señaló que dos ventajas del uso de múltiples hilos dentro de un proceso son: (1) menos trabajo involucra crear un nuevo hilo dentro de un proceso existente que crear un nuevo proceso, y (2) comunicación entre hilos dentro del mismo proceso se simplifica ¿Es también el caso que un cambio de modo entre dos hilos dentro del mismo proceso implica menos trabajo que un cambio de modo entre dos hilos en procesos diferentes? 4.2. En la discusión de los ULT versus los KLT, se señaló que una desventaja de los ULT es que cuando un ULT ejecuta una llamada al sistema, no solo se bloquea ese hilo, sino que también se bloquean todos los hilos dentro del proceso. ¿Por qué es así? 4.3. OS/2 es un sistema operativo obsoleto para PC de IBM. En OS/2, lo que comúnmente se incorpora en el concepto de proceso en otros sistemas operativos se divide en tres tipos distintos de entidades: sesión, procesos e hilos. Una sesión es una colección de uno o más procesos asociados con una interfaz de usuario (teclado, pantalla y mouse). La sesión representa una aplicación de usuario interactiva, como un programa de procesamiento de texto o una hoja de cálculo. Este concepto permite al usuario de la computadora personal abrir más de una aplicación, dando a cada una o más ventanas en la pantalla. El sistema operativo debe realizar un seguimiento de qué ventana, y por lo tanto qué sesión, está activa, de modo que la entrada del teclado y el mouse se dirijan a la sesión adecuada. En cualquier momento, una sesión está en modo de primer plano, con otras sesiones en modo de fondo. Toda la entrada del teclado y el mouse se dirige a uno de los procesos de la sesión de primer plano, según lo dicten las a. ¿Qué beneficios se pierden con este enfoque? b. Si continúa con esta modificación, ¿dónde asigna recursos (memoria, archivos, etc.): en el proceso o nivel de subprocesos? 4.4. Considere un entorno en el que haya un mapeo uno a uno entre subprocesos de nivel de usuario y subprocesos de núcleo que permita que uno o más subprocesos dentro de un proceso emitan llamadas al sistema de bloqueo mientras otros subprocesos continúan ejecutándose. Explique por qué este modelo puede hacer que los programas multiproceso se ejecuten más rápido que sus contrapartes de un único subproceso en una computadora uniprocesador. 4.5. Si un proceso se cierra y todavía hay hilos de ese proceso en ejecución, ¿continuarán ejecutándose? 4.6. El sistema operativo de mainframe OS / 390 está estructurado en torno a los conceptos de espacio de direcciones y tareas. En términos generales, un espacio de dirección único corresponde a una sola aplicación y corresponde más o menos a un proceso en otros sistemas operativos. Dentro de un espacio de direcciones, se pueden generar varias tareas y ejecutarlas al mismo tiempo; esto corresponde aproximadamente al concepto de multihilo. Dos estructuras de datos son clave para gestionar esta estructura de tareas. Un bloque de control de espacio de direcciones (ASCB) contiene información sobre un espacio de direcciones necesario para OS / 390, ya sea que ese espacio de direcciones se esté ejecutando o no. La información en el ASCB incluye el envío de la memoria prioritaria, real y virtual asignada a este espacio de direcciones, el número de tareas listas en este espacio de direcciones y si cada una se intercambia. Un bloque de control de tareas (TCB) representa un programa de usuario en ejecución. Contiene la información necesaria para administrar una tarea dentro de un espacio de direcciones, incluida la información del estado del procesador, los indicadores de los programas que forman parte de esta tarea y el estado de ejecución de la tarea. Los ASCB son estructuras globales que se mantienen en la memoria del sistema, mientras que los TCB son estructuras locales que se mantienen dentro de su espacio de direcciones. ¿Cuál es la ventaja de dividir la información de control en porciones globales y locales? 4.7. Muchas especificaciones actuales del lenguaje, como C y C ++, son inadecuadas para programas multiproceso. Esto puede tener un impacto en los compiladores y la corrección del código, como lo ilustra este problema. Considere las siguientes declaraciones y definición de funciones: int global_positives = 0; typedef struct list { struct list *next; double val; } * list; void count_positives(list l) { list p; for (p = l; p; p = p -> next) if (p -> val > 0.0) ++global_positives; } Ahora considere el caso en que el hilo A realiza count_positives (<lista que contiene solo valores negativos>); mientras que el hilo B realiza ++ global_positives; a. ¿Qué hace la función? b. El lenguaje C solo se refiere a la ejecución de un solo subproceso. ¿El uso de dos hilos paralelos crea problemas o problemas potenciales? 4.8. Pero algunos compiladores de optimización existentes (incluido gcc, que tiende a ser relativamente conservador) "optimizarán" count_positives a algo similar a void count_positives(list l) { list p; register int r; r = global_positives; for (p = l; p; p = p -> next) if (p -> val > 0.0) ++r; global_positives = r; } ¿Qué problema o posible problema ocurre con esta versión compilada del programa si los hilos A y B se ejecutan al mismo tiempo? 4.9. Considere el siguiente código usando la API POSIX Pthreads: thread2.c #include <pthread.h> #include <stdlib.h> #include <unistd.h> #include <stdio.h> int myglobal; void *thread_function(void *arg) { int i,j; for ( i=0; i<20; i++ ) { j=myglobal; j=j+1; printf(“.”); fflush(stdout); sleep(1); myglobal=j; } return NULL; } int main(void) { a. ¿Qué logra este programa? b. Aquí está el resultado del programa ejecutado: $ ./thread2 ..o.o.o.o.oo.o.o.o.o.o.o.o.oo.o.o.o.o.o.o myglobal es igual a 21 ¿Es este el resultado que esperarías? Si no, ¿qué salió mal? 4.10. La documentación de Solaris establece que un ULT puede ceder a otro hilo de la misma prioridad. ¿No es posible que haya un hilo ejecutable de mayor prioridad y que, por lo tanto, la función de rendimiento dé lugar a ceder a un hilo de igual o mayor prioridad? 4.12. Explicar el razonamiento para el estado ininterrumpible en Linux. UNIDAD 5 5.1. Al comienzo de la Sección 5.1, se afirma que la multiprogramación y el multiprocesamiento presentan los mismos problemas, con respecto a la concurrencia. Esto es cierto hasta donde llega. Sin embargo, cite dos diferencias en términos de concurrencia entre multiprogramación y multiprocesamiento. 5.3. Considere el siguiente programa: Tenga en cuenta que el planificador en un sistema uniprocesador implementaría la ejecución pseudo paralela de estos dos procesos concurrentes intercalando sus instrucciones, sin restricción en el orden del entrelazado. a. Muestre una secuencia (es decir, trace la secuencia de entrelazamientos de enunciados) de modo que se imprima la declaración "x is 10". b. Muestre una secuencia tal que se imprima la declaración "x is 8". Debe recordar que los incrementos / decrementos en el nivel de idioma de origen no se realizan atómicamente, es decir, el código de lenguaje ensamblador: LD R0, X / * carga R0 desde la ubicación de la memoria x * / INCR R0 / * incremento R0 * / STO R0, X / * almacenan el valor incrementado en X * / implementa la única instrucción de incremento de C (x = x + 1). 5.4. Considere el siguiente programa: a. Determine el límite inferior adecuado y el límite superior en el valor final de la variable compartida recuento de salida por este programa simultáneo. Supongamos que los procesos se pueden ejecutar a cualquier velocidad relativa y que un valor solo puede incrementarse después de que se haya cargado en un registro mediante una instrucción de máquina separada. b. Supongamos que se permite que un número arbitrario de estos procesos se ejecute en paralelo bajo los supuestos de la parte (a). ¿Qué efecto tendrá esta modificación en el rango de valores finales de Tally? 5.5. ¿Está ocupado esperando siempre menos eficiente (en términos de usar el tiempo del procesador) que una espera de bloqueo? Explique. 5.6. Considere el siguiente programa: Esta solución de software para el problema de exclusión mutua para dos procesos se propone en [HYMA66]. Encuentre un contraejemplo que demuestre que esta solución es incorrecta. Es interesante notar que incluso las Comunicaciones de la ACM fueron engañadas en este caso. 5.9. Considere el siguiente programa que proporciona un enfoque de software para la exclusión mutua: entero control de matriz [1: N]; entero k donde 1 ≤ k ≤ N, y cada elemento de "control" es 0, 1, o 2. Todos los elementos de "control" son inicialmente cero; el valor inicial de k es inmaterial. El programa del i-ésimo proceso (1 ≤ i ≤ N) es Esto se conoce como el algoritmo de Eisenberg-McGuire. Explica su funcionamiento y sus características principales. 5.12. Considere la siguiente definición de semáforos: Compare este conjunto de definiciones con el de la Figura 5.3. Tenga en cuenta una diferencia: con la definición anterior, un semáforo nunca puede tomar un valor negativo. ¿Hay alguna diferencia en el efecto de los dos conjuntos de definiciones cuando se usan en los programas? Es decir, ¿podría sustituir un conjunto por el otro sin alterar el significado del programa? 5.13. Considere un recurso compartible con las siguientes características: (1) Siempre que haya menos de tres procesos utilizando el recurso, los nuevos procesos pueden comenzar a usarlo de inmediato. (2) Una vez que hay tres procesos que usan el recurso, los tres deben salir antes de que cualquier proceso nuevo pueda comenzar a usarlo. Nos damos cuenta de que los contadores son necesarios para realizar un seguimiento de cuántos procesos están en espera y activos, y que estos contadores son recursos compartidos que deben protegerse con exclusión mutua. Entonces podríamos crear la siguiente solución: La solución parece hacer todo bien: todos los accesos a las variables compartidas están protegidos por exclusión mutua, los procesos no se bloquean a sí mismos mientras que en la exclusión mutua, los nuevos procesos no pueden usar el recurso si hay (o hubo) tres usuarios activos, y el último proceso para partir desbloquea hasta tres procesos de espera. a. El programa es sin embargo incorrecto. Explicar por qué. b. Supongamos que cambiamos el if en la línea 6 por un tiempo. ¿Soluciona esto algún problema en el programa? ¿Alguna dificultad queda? 5.16. Debería ser posible implementar semáforos generales utilizando semáforos binarios. Podemos usar las operaciones semWaitB y semSignalB y dos semáforos binarios, delay y mutex. Considera lo siguiente: Inicialmente, s se establece en el valor de semáforo deseado. Cada operación semWait reduce s, y cada operación semSignal incrementa s. El mutex del semáforo binario, que se inicializa en 1, asegura que existe una exclusión mutua para la actualización de s. El retraso del semáforo binario, que se inicializa a 0, se usa para bloquear procesos. Hay un defecto en el programa anterior. Demuestre la falla y proponga un cambio que la solucione. Sugerencia: supongamos que dos procesos cada llamada semWait (s) cuando s es inicialmente 0, y después de que el primero acaba de realizar semSignalB (mutex) pero no se realiza semWaitB (delay), la segunda llamada a semWait (s) continúa al mismo punto. Todo lo que necesita hacer es mover una sola línea del programa. 5.17. En 1978, Dijkstra planteó la conjetura de que no había solución para el problema de la exclusión mutua evitando la inanición, aplicable a un número desconocido pero finito de procesos, usando un número finito de semáforos débiles. En 1979, J. M. Morris refutó esta conjetura al publicar un algoritmo usando tres semáforos débiles. El comportamiento del algoritmo puede describirse de la siguiente manera: si uno o varios procesos están esperando en una operación semWait (S) y otro proceso está ejecutando semSignal (S), el valor del semáforo S no se modifica y uno de los procesos de espera está desbloqueado independientemente de semWait (S). Además de los tres semáforos, el algoritmo utiliza dos variables enteras no negativas como contadores del número de procesos en ciertas secciones del algoritmo. Por lo tanto, los semáforos A y B se inicializan a 1, mientras que el semáforo M y los contadores NA y NM se inicializan a 0. 5.18. El siguiente problema se utilizó una vez en un examen: Jurassic Park consta de un museo de dinosaurios y un parque para safaris. Hay m pasajeros yn autos para un solo pasajero. Los pasajeros pasean por el museo por un tiempo, luego se alinean para dar un paseo en un safari. Cuando hay un automóvil disponible, carga al único pasajero que puede sostener y recorre el parque por un período aleatorio. Si los n carros están todos rodeando a los pasajeros, entonces espera un pasajero que quiera viajar; si un automóvil está listo para cargar pero no hay pasajeros esperando, entonces el automóvil espera. Use semáforos para sincronizar los procesos de m pasajeros y los procesos n car. El siguiente código de esqueleto se encontró en un trozo de papel en el piso de la sala de examen. Grábelo para la corrección. Ignora la sintaxis y las declaraciones de variables faltantes. Recuerde que P y V corresponden a semWait y semSignal. UNIDAD 6 6.1. Demuestre que las cuatro condiciones de interbloqueo se aplican a la Figura 6.1a. 6.4. Se indicó que el punto muerto no puede ocurrir para la situación reflejada en la Figura 6.3. Justifica esa afirmación. 6.7. Un sistema de cola de impresión (Figura 6.17) consiste en un proceso de entrada I, un proceso de usuario P y un proceso de salida O conectado por dos almacenamientos intermedios. Los procesos intercambian datos en bloques de igual tamaño. Estos bloques se almacenan en un disco utilizando un límite flotante entre entrada y los buffers de salida, dependiendo de la velocidad de los procesos. Las primitivas de comunicación utilizadas garantizan que se cumpla la siguiente restricción de recursos: i + o ... max dónde max = número máximo de bloques en el disco i = número de bloques de entrada en el disco o = número de bloques de salida en el disco Lo siguiente se conoce sobre los procesos: 1. Mientras el entorno suministre datos, el proceso eventualmente lo ingresaré al disco (siempre que el espacio en disco esté disponible). 2. Siempre que la entrada esté disponible en el disco, el proceso P eventualmente la consumirá y generará una cantidad finita de datos en el disco para cada entrada de bloque (siempre que el espacio en disco disponible esté disponible). 3. Mientras la salida esté disponible en el disco, el proceso O eventualmente la consumirá. Demuestre que este sistema puede estancarse. 6.8. Sugiera una restricción de recursos adicional que evitará el punto muerto en el problema 6.7 pero que permita que el límite entre los almacenamientos intermedios de entrada y salida varíe de acuerdo con las necesidades actuales de los procesos. 6.10. En el sistema de multiprogramación de THE, una página puede hacer las siguientes transiciones de estado: a. Defina el efecto de estas transiciones en términos de las cantidades i, o, y p. b. ¿Puede alguno de ellos conducir a un punto muerto si se cumplen las suposiciones del problema 6.6 sobre procesos de entrada, procesos de usuario y procesos de salida? 6.11. Considere un sistema con un total de 150 unidades de memoria, asignadas a tres procesos como se muestra: Aplicar el algoritmo del banquero para determinar si sería seguro otorgar cada una de las siguientes solicitudes. a. Llega un cuarto proceso, con una memoria máxima de 60 y una necesidad inicial de 25 unidades. b. Llega un cuarto proceso, con una memoria máxima de 60 y una necesidad inicial de 35 unidades. 6.14. Supongamos que los siguientes dos procesos, foo y barra, se ejecutan simultáneamente y comparten las variables de semáforo S y R (cada una inicializada a 1) y la variable entera x (inicializada a 0). a. ¿Puede la ejecución concurrente de estos dos procesos dar como resultado que uno o ambos estén bloqueados para siempre? En caso afirmativo, proporcione una secuencia de ejecución en la que uno o ambos estén bloqueados para siempre. b. ¿Puede la ejecución simultánea de estos dos procesos provocar el aplazamiento indefinido de uno de ellos? En caso afirmativo, proporcione una secuencia de ejecución en la que se posponga indefinidamente. 6.15. Considere un sistema que consta de cuatro procesos y un solo recurso. El estado actual de las matrices de reclamación y asignación son: ¿Cuál es el número mínimo de unidades del recurso necesario para estar disponible para que este estado sea seguro? 6.17. Comenta sobre la siguiente solución al problema de los filósofos de la cena. Un filósofo hambriento primero levanta su tenedor izquierdo; si su tenedor derecho también está disponible, levanta su tenedor derecho y comienza a comer; de lo contrario, vuelve a colocar su tenedor izquierdo y repite el ciclo. 6.20. En la Tabla 6.3, algunas de las operaciones atómicas de Linux no implican dos accesos a una variable, como atomic_read (atomic_t * v). Una simple operación de lectura es obviamente atómica en cualquier arquitectura. Por lo tanto, ¿por qué esta operación se agrega al repertorio de operaciones atómicas? 6.21. Considere el siguiente fragmento de código en un sistema Linux. read_lock (& mr_rwlock); write_lock (& mr_rwlock); Donde mr_rwlock es un bloqueo lector-escritor. ¿Cuál es el efecto de este código? 6.22. Las dos variables a y b tienen valores iniciales de 1 y 2, respectivamente. El siguiente código es para un sistema Linux: ¿Qué posibles errores se evitan con el uso de barreras de memoria? UNIDAD 7 7.2. Considere un esquema de particionamiento fijo con particiones de igual tamaño de 216 bytes y un tamaño de memoria principal total de 224 bytes. Se mantiene una tabla de proceso que incluye un puntero a una partición para cada proceso residente. ¿Cuántos bits se requieren para el puntero? 7.3. Considere un esquema de particionamiento dinámico. Demuestre que, en promedio, la memoria contiene la mitad de agujeros que segmentos. 7.4. Para implementar los diversos algoritmos de ubicación discutidos para el particionamiento dinámico (Sección 7.2), se debe mantener una lista de los bloques libres de memoria. Para cada uno de los tres métodos discutidos (best-fit, first-fit, next-fit), ¿cuál es la duración promedio de la búsqueda? 7.5. Otro algoritmo de ubicación para particiones dinámicas se denomina peor ajuste. En este caso, el bloque libre de memoria más grande se usa para traer un proceso. a. Discuta los pros y los contras de este método en comparación con el first-, next-, and bestfit. b. ¿Cuál es la duración promedio de la búsqueda para worst-fit? 7.6. Este diagrama muestra un ejemplo de configuración de memoria en partición dinámica, después de que se llevaron a cabo varias operaciones de colocación y cambio. Las direcciones van de izquierda a derecha; las áreas grises indican bloques ocupados por procesos; las áreas blancas indican bloques de memoria libres. El último proceso realizado es de 2 Mbytes y está marcado con una X. Solo se cambió un proceso después de eso. a. ¿Cuál fue el tamaño máximo del proceso intercambiado? b. ¿Cuál fue el tamaño del bloque libre justo antes de que fuera particionado por X? c. A continuación, se debe cumplir una nueva solicitud de asignación de 3 Mbytes. Indique los intervalos de memoria donde se creará una partición para el nuevo proceso bajo los siguientes cuatro algoritmos de ubicación: best-fit, first-fit, next-fit, and worst-fit.. Para cada algoritmo, dibuje un segmento horizontal debajo de la tira de memoria y etiquételo con claridad. a) 1MB b)7MB c)FF=4M NF=5M WF=8M BF=3M 7.8. Considere un sistema de compañeros en el cual un bloque particular bajo la asignación actual tiene una dirección de 011011110000. a. Si el bloque es de tamaño 4, ¿cuál es la dirección binaria de su amigo? b. Si el bloque es de tamaño 16, ¿cuál es la dirección binaria de su amigo? 7.9. Deje buddyk (x) = dirección del compinche del bloque de tamaño 2k cuya dirección es x. Escribe una expresión general para buddyk (x). 7.10. La secuencia de Fibonacci se define de la siguiente manera: F0 = 0, F1 = 1, Fn + 2 = Fn + 1 + Fn, n >= 0 a. ¿Podría esta secuencia ser utilizada para establecer un sistema de amigos? b. ¿Cuál sería la ventaja de este sistema sobre el sistema de compañero binario descrito en este capítulo? 7.11. Durante el curso de la ejecución de un programa, el procesador incrementará el contenido del registro de instrucciones (contador de programa) en una palabra después de cada captación de instrucción, pero alterará el contenido de ese registro si encuentra una instrucción de ramificación o llamada que causa la ejecución para continuar en otro lugar en el programa. Ahora considere la Figura 7.8. Hay dos alternativas con respecto a las direcciones de instrucción: Mantenga una dirección relativa en el registro de instrucciones y realice la traducción dinámica de direcciones usando el registro de instrucciones como entrada. Cuando se encuentra una bifurcación o llamada exitosa, la dirección relativa generada por esa bifurcación o llamada se carga en el registro de instrucciones. Mantener una dirección absoluta en el registro de instrucciones. Cuando se encuentra una bifurcación o llamada exitosa, se emplea la traducción dinámica de direcciones, con los resultados almacenados en el registro de instrucciones. ¿Qué enfoque es preferible? 7.12. Considere un sistema de paginación simple con los siguientes parámetros: 232 bytes de memoria física; tamaño de página de 210 bytes; 216 páginas de espacio de direcciones lógicas. a. ¿Cuántos bits hay en una dirección lógica? b. ¿Cuántos bytes hay en un marco? c. ¿Cuántos bits en la dirección física especifican el marco? d. ¿Cuántas entradas hay en la tabla de páginas? e. ¿Cuántos bits hay en cada entrada de tabla de página? Supongamos que cada entrada de la tabla de páginas contiene un bit válido/inválido. 7.14. Considere un sistema de segmentación simple que tenga la siguiente tabla de segmentos: Para cada una de las siguientes direcciones lógicas, determine la dirección física o indique si ocurre una falla de segmento: a. 0, 198 b. 2, 156 c. 1, 530 d. 3, 444 e. 0, 222 UNIDAD 8 8.1. Supongamos que la tabla de páginas del proceso que se está ejecutando actualmente en el procesador tiene el siguiente aspecto. Todos los números son decimales, todo está numerado comenzando desde cero, y todas las direcciones son direcciones de bytes de memoria. El tamaño de página es 1.024 bytes. a. Describa exactamente cómo, en general, una dirección virtual generada por la CPU se traduce a una dirección física de la memoria principal. b. ¿A qué dirección física, si corresponde, correspondería cada una de las siguientes direcciones virtuales? (No intente manejar fallas de página, si hay alguna). (i) 1,052 (ii) 2,221 (iii) 5,499 8.3. a. ¿Cuánta memoria se necesita para la tabla de la página de usuario de la figura 8.3? b. Supongamos que desea implementar una tabla de páginas invertidas con hash para el mismo esquema de direccionamiento que se muestra en la Figura 8.3, usando una función hash que mapea el número de página de 20 bits en un valor hash de 6 bits. La entrada de la tabla contiene el número de página, el número de cuadro y un puntero de cadena. Si la tabla de páginas asigna espacio para hasta 3 entradas de desbordamiento por entrada hash, ¿cuánto espacio de memoria ocupa la tabla de páginas invertidas? 8.7. En el VAX, las tablas de la página del usuario están ubicadas en direcciones virtuales en el espacio del sistema. ¿Cuál es la ventaja de tener tablas de páginas de usuario en memoria virtual en lugar de memoria principal? ¿Cuál es la desventaja? 8.8. Supongamos que el enunciado del programa for (i = 1; i 6 6 = n; i + +) a [i] = b [i] + c [i]; se ejecuta en una memoria con un tamaño de página de 1,000 palabras. Deje n = 1,000. Usando una máquina que tiene una gama completa de instrucciones de registro para registrar y emplea registros de índice, escriba un programa hipotético para implementar la declaración anterior. Luego, muestre la secuencia de referencias de página durante la ejecución. 4000 (R1) ← ONE Establish index register for i 4001 (R1) ← n Establish n in R2 4002 compare R1, R2 . . . . . 8.10. Suponiendo un tamaño de página de 4 Kbytes y una entrada de tabla de página de 4 bytes, ¿cuántos niveles de tablas de página se necesitarían para asignar un espacio de direcciones de 64 bits, si la tabla de páginas de nivel superior cabe en una sola página? 8.11. Considere un sistema con mapeo de memoria hecho en una página y usando una tabla de página de un solo nivel. Supongamos que la tabla de páginas necesaria siempre está en la memoria. a. Si una referencia de memoria tarda 200 ns, ¿cuánto tiempo tarda una referencia de memoria paginada? b. Ahora agregamos una MMU que impone una sobrecarga de 20 ns en un golpe o una falla. Si suponemos que el 85% de todas las referencias de memoria golpean en el MMU TLB, ¿cuál es el Tiempo Efectivo de Acceso a la Memoria (EMAT)? c. Explica cómo la tasa de aciertos de TLB afecta al EMAT. 8.14. En la arquitectura S / 370, una clave de almacenamiento es un campo de control asociado a cada fotograma de la memoria real en páginas. Dos bits de esa clave que son relevantes para el reemplazo de la página son el bit de referencia y el bit de cambio. El bit de referencia se establece en 1 cuando se accede a cualquier dirección dentro del cuadro para lectura o escritura, y se establece en 0 cuando se carga una nueva página en el cuadro. El bit de cambio se establece en 1 cuando se realiza una operación de escritura en cualquier ubicación dentro del marco. Sugiera un enfoque para determinar qué marcos de página se usan menos recientemente, utilizando solo el bit de referencia. 8.17. Supongamos que una tarea se divide en cuatro segmentos de igual tamaño y que el sistema crea una tabla de descriptores de página de ocho entradas para cada segmento. Por lo tanto, el sistema tiene una combinación de segmentación y paginación. Supongamos también que el tamaño de la página es de 2 Kbytes. a. ¿Cuál es el tamaño máximo de cada segmento? b. ¿Cuál es el espacio máximo de direcciones lógicas para la tarea? c. Suponga que esta tarea acceden a un elemento en la ubicación física 00021ABC. ¿Cuál es el formato de la dirección lógica que la tarea genera para él? ¿Cuál es el espacio máximo de direcciones físicas para el sistema? 8.18. Considere un espacio de direcciones lógicas paginado (compuesto por 32 páginas de 2 Kbytes cada una) asignado a un espacio de memoria física de 1 Mbyte. a. ¿Cuál es el formato de la dirección lógica del procesador? b. ¿Cuál es la longitud y el ancho de la tabla de páginas (sin tener en cuenta los bits de "derechos de acceso")? c. ¿Cuál es el efecto en la tabla de la página si el espacio de la memoria física se reduce a la mitad? 8.19. El kernel de UNIX crecerá dinámicamente la pila de un proceso en la memoria virtual según sea necesario, pero nunca intentará reducirlo. Considere el caso en el que un programa llama a una subrutina C que asigna una matriz local en la pila que consume 10 K. UNIDAD 9 9.1. Considere la siguiente carga de trabajo: a. Muestre el cronograma utilizando el tiempo restante más corto, prioridad no prioritaria (un número de prioridad más pequeño implica una prioridad más alta) y turno rotativo con un quantum de 30 ms. Use el diagrama de escala de tiempo como se muestra a continuación para que el ejemplo de FCFS muestre el cronograma de cada política de planificación solicitada. b. ¿Cuál es el tiempo de espera promedio de las políticas de programación anteriores? a. Muestre el cronograma utilizando el tiempo restante más corto, prioridad no prioritaria (un número de prioridad más pequeño implica una prioridad más alta) y turno rotativo con un quantum de 30 ms. Use el diagrama de escala de tiempo como se muestra a continuación para que el ejemplo de FCFS muestre el cronograma de cada política de planificación solicitada. Tiempo restante más corto: (20 + 0 + 70 + 10) / 4 = 25 ms. Explicación: P2 no espera, pero P1 espera 20 ms, P3 espera 70 ms y P4 espera 10 ms. Prioridad no preventiva: (0 + 30 + 10 + 70) / 4 = 27.5ms Explicación: P1 no espera, P2 espera 30ms hasta que P1 termina, P4 espera solo 10ms ya que llegó a 60ms y está programado a 70ms. P3 espera 70 ms. Round-Robin: (20 + 10 + 70 + 70) / 4 = 42.5ms Explicación: P1 solo espera P2 (durante 20 ms). P2 espera solo 10 ms hasta que P1 termina el cuanto (llega a 20 ms y el cuanto es 30 ms). P3 espera 30ms para comenzar, luego 40ms para P4 para terminar. P4 espera 40 ms para comenzar y una rebanada cuántica para P3 para terminar. 9.3. Demuestre que, entre los algoritmos de planificación no preventivos, SPN proporciona el tiempo de espera promedio mínimo para un lote de trabajos que llegan al mismo tiempo. Supongamos que el planificador siempre debe ejecutar una tarea si hay una disponible. 9.6. En el ejemplo inferior de la Figura 9.5, el proceso A se ejecuta en dos unidades de tiempo antes de pasar el control al proceso B. Otro escenario plausible sería que A se ejecute en tres unidades de tiempo antes de pasar el control al proceso B. ¿Qué diferencias de política en el algoritmo de programación de retroalimentación? representaría los dos escenarios diferentes? 9.13. Un sistema interactivo que utiliza la planificación y el intercambio round-robin intenta dar una respuesta garantizada a solicitudes triviales de la siguiente manera: Después de completar un ciclo round-robin entre todos los procesos listos, el sistema determina el intervalo de tiempo para asignar a cada uno 9.14. ¿Qué tipo de proceso generalmente es favorecido por un planificador de colas de realimentación multinivel: un proceso vinculado al procesador o un proceso vinculado a E / S? Explique brevemente por qué. 9.16. Cinco trabajos por lotes, de la A a la E, llegan a un centro de cómputo esencialmente al mismo tiempo. Tienen un tiempo estimado de ejecución de 15, 9, 3, 6 y 12 minutos, respectivamente. Sus prioridades (definidas externamente) son 6, 3, 7, 9 y 4, respectivamente, con un valor inferior que corresponde a una prioridad más alta. a. round robin con un tiempo de 1 minuto b. programación de prioridad c. FCFS (ejecutado en orden 15, 9, 3, 6 y 12) d. el trabajo más corto primero UNIDAD 10 10.5. La máxima urgencia primero (MUF) es un algoritmo de programación en tiempo real para tareas periódicas. A cada tarea se le asigna una urgencia que se define como una combinación de dos prioridades fijas y una prioridad dinámica. Una de las prioridades fijas, la criticidad, tiene prioridad sobre la prioridad dinámica. Mientras tanto, la prioridad dinámica tiene prioridad sobre la otra prioridad fija, llamada prioridad del usuario. La prioridad dinámica es inversamente proporcional a la laxitud de una tarea. 10.7. Este problema demuestra que aunque la ecuación (10.2) para la programación monotónica de velocidad es una condición suficiente para una programación exitosa, no es una condición necesaria (es decir, a veces es posible una planificación exitosa incluso si la ecuación (10.2) no se cumple). a. Considere un conjunto de tareas con las siguientes tareas periódicas independientes: Tarea P1: C1 = 20; T1 = 100 Tarea P2: C2 = 30; T2 = 145 ¿Pueden estas tareas ser programadas exitosamente usando la programación monotónica? b. Ahora agregue la siguiente tarea al conjunto: Tarea P3: C3 = 68; T3 = 150 ¿Está satisfecha la ecuación (10.2)? c. Supongamos que la primera instancia de las tres tareas anteriores llega a tiempo. Suponga que la primera fecha límite para cada tarea es la siguiente: D1 = 100; D2 = 145; D3 = 150 Usando la programación monotónica de tarifas, ¿se cumplirán los tres plazos? ¿Qué pasa con los plazos para futuras repeticiones de cada tarea? UNIDAD 11 11.1. Considere un programa que accede a un único dispositivo de E/S y compare las E/S sin búfer con el uso de un búfer. Demuestre que el uso del buffer puede reducir el tiempo de ejecución en un factor máximo de dos como máximo. 11.7. Calcule cuánto espacio en disco (en sectores, pistas y superficies) se requerirá para almacenar 300,000 registros lógicos de 120 bytes si el disco es un sector fijo con 512 bytes / sector, con 96 sectores / pista, 110 pistas por superficie y 8 superficies utilizables. Ignore cualquier registro de encabezado de archivo y rastrear índices, y suponga que los registros no pueden abarcar dos sectores. 11.8. Considere el sistema de disco descrito en el problema 11.7, y suponga que el disco gira a 360 rpm. Un procesador lee un sector del disco usando I/O con interrupción, con una interrupción por byte. Si se requieren 2,5 μs para procesar cada interrupción, ¿qué porcentaje de tiempo el procesador gastará en el manejo de E/S (sin tener en cuenta el tiempo de búsqueda)? 11.9. Repita el problema anterior usando DMA, y suponga una interrupción por sector. 11.10. Una computadora de 32 bits tiene dos canales de selector y un canal multiplexor. Cada canal selector admite dos discos magnéticos y dos unidades de cinta magnética. El canal multiplexor tiene dos impresoras de línea, dos lectores de tarjeta y diez terminales VDT conectados. Supongamos las siguientes tasas de transferencia: Unidad de disco Unidad de cinta magnética Line impresora Lector de tarjetas VDT 800 Kbytes/s 200 Kbytes/s 6.6 Kbytes/s 1.2 Kbytes/s 1 Kbyte/s Estime la tasa máxima de transferencia de E/S agregadas en este sistema. 11.12. Considere una matriz RAID de 4 unidades y 200 GB por unidad. ¿Cuál es la capacidad de almacenamiento de datos disponible para cada uno de los niveles de RAID, 0, 1, 3, 4, 5 y 6? UNIDAD 12 12.1. Definir: B = tamaño de bloque R = tamaño de registro P = tamaño del puntero de bloque F = factor de bloqueo; número esperado de registros dentro de un bloque Da una fórmula para F para los tres métodos de bloqueo representados en la figura 12.8. 12.2. Un esquema para evitar el problema de la preasignación versus el desperdicio o la falta de contigüidad es asignar porciones de tamaño creciente a medida que crece el archivo. Por ejemplo, comience con un tamaño de porción de un bloque y el doble del tamaño de la porción para cada asignación. Considere un archivo de n registros con un factor de bloqueo de F, y suponga que se utiliza un índice simple de un nivel como tabla de asignación de archivos. a. Proporcione un límite superior al número de entradas en la tabla de asignación de archivos en función de F y n. b. ¿Cuál es la cantidad máxima del espacio de archivos asignado que no se utiliza en cualquier momento? 12.5. Un algoritmo alternativo para la inserción en un árbol B es el siguiente: a medida que el algoritmo de inserción viaja por el árbol, cada nodo completo que se encuentra se divide inmediatamente, aunque puede darse el caso de que la división no sea necesaria. a. ¿Cuál es la ventaja de esta técnica? b. ¿Cuales son las desventajas? 12.7. Ignorando la sobrecarga para directorios y descriptores de archivos, considere un sistema de archivos en el cual los archivos se almacenan en bloques de 16K bytes. Para cada uno de los siguientes tamaños de archivo, calcule el porcentaje de espacio perdido en el archivo debido al llenado incompleto del último bloque: 41.600 bytes; 640,000 bytes; 4.064,000 bytes. 12.8. ¿Cuáles son las ventajas de usar directorios? 12.9. Los directorios se pueden implementar como "archivos especiales" a los que solo se puede acceder de forma limitada o como archivos de datos ordinarios. ¿Cuáles son las ventajas y desventajas de cada enfoque? 12.10. Algunos sistemas operativos tienen un sistema de archivos estructurado en árbol, pero limitan la profundidad del árbol a una pequeña cantidad de niveles. ¿Qué efecto tiene este límite en los usuarios? ¿Cómo simplifica esto el diseño del sistema de archivos (si es así)? 12.11. Considere un sistema de archivos jerárquico en el que el espacio libre en el disco se mantiene en una lista de espacios libres. a. Supongamos que se pierde el puntero al espacio libre. ¿Puede el sistema reconstruir la lista de espacios libres? b. Sugiera un esquema para asegurarse de que el puntero nunca se pierda como resultado de una falla de memoria única. 12.12. En UNIX System V, la longitud de un bloque es de 1 Kbyte, y cada bloque puede contener un total de 256 direcciones de bloque. Usando el esquema de inodo, ¿cuál es el tamaño máximo de un archivo? 12.13. Considere la organización de un archivo UNIX representado por el inodo (figura 12.15). Supongamos que hay 12 punteros de bloque directo, y un puntero individual, doble y triplemente indirecto en cada inodo. Además, suponga que el tamaño del bloque del sistema y el tamaño del sector del disco son ambos 8K. Si el puntero del bloque de disco es de 32 bits, con 8 bits para identificar el disco físico y 24 bits para identificar el bloque físico, entonces a. ¿Cuál es el tamaño de archivo máximo admitido por este sistema? b. ¿Cuál es la partición máxima del sistema de archivos compatible con este sistema? c. Suponiendo que no hay información que no sea que el archivo inode ya está en la memoria principal, ¿cuántos accesos al disco se requieren para acceder al byte en la posición 13,423,956?