Sunteți pe pagina 1din 99

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 best-
fit.
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 800 Kbytes/s


Unidad de cinta magnética 200 Kbytes/s
Line impresora 6.6 Kbytes/s
Lector de tarjetas 1.2 Kbytes/s
VDT 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?

S-ar putea să vă placă și