Está en la página 1de 3

1. En la figura 2-2 se muestran los estados de tres procesos.

En teoría, con tres


estados podría haber seis transiciones, dos fuera de cada estado. Sin embargo, sólo
se muestran cuatro transiciones. ¿Existe alguna circunstancia en la que una o ambas
de las transiciones faltantes pudiera ocurrir?
*No ya que si llegará a bloquearse el sistema se detendrían los demás procesos.

2. Suponga que debe diseñar una arquitectura de computadora avanzada que


hiciera conmutación de procesos en el hardware, en vez de tener interrupciones.
¿Qué información necesitaría la CPU? Describa cómo podría trabajar la
conmutación de procesos por hardware.
*Para obtener una precisión completa, debemos recalcar que el modelo probabilístico que
acabamos de describir es sólo una aproximación. Supone en forma implícita que los n
procesos son independientes, lo cual significa que es bastante aceptable para un sistema
con cinco procesos en memoria.

3. En todas las computadoras actuales, al menos una parte de los manejadores de


interrupciones se escriben en lenguaje ensamblador. ¿Por qué?

4. Cuando una interrupción o una llamada al sistema transfiere el control al sistema


operativo, por lo general se utiliza un área de la pila del kernel separada de la pila
del proceso interrumpido. ¿Por qué?
*Porque la pila del proceso se desactiva y la del kernel va arreglando el problema.

5. Varios trabajos se pueden ejecutar en paralelo y terminar con más rapidez que si
se hubieran ejecutado en secuencia. Suponga que dos trabajos, cada uno de los
cuales necesita 10 minutos de tiempo de la CPU, inician al mismo tiempo. ¿Cuánto
tiempo tardará el último en completarse, si se ejecutan en forma secuencial?
¿Cuánto tiempo si se ejecutan en paralelo? Suponga que hay 50% de espera de E/S.
*El último tardará aproximadamente 12 minutos ya que el cpu inició al mismo tiempo.

6. En el texto se estableció que el modelo de la figura 2-11(a) no era adecuado para


un servidor de archivos que utiliza una memoria caché. ¿Por qué no? ¿Podría cada
proceso tener su propia caché?
*Por que Cuando se ejecuta un proceso con multihilamiento en un sistema con una CPU,
los hilos toman turnos para ejecutarse.

7. Si un proceso con multihilamiento utiliza la operación fork, ocurre un problema


si el hijo obtiene copias de todos los hilos del padre. Suponga que uno de los hilos
originales estaba esperando la entrada del teclado. Ahora hay dos hilos esperando
la entrada del teclado, uno en cada proceso. ¿Acaso ocurre este problema en
procesos con un solo hilo?
*No, ya que si el proceso es con un sólo hilo no habría interferencia ni conflicto.
8. En la figura 2-8 se muestra un servidor Web con multihilamiento. Si la única
forma de leer un archivo es la llamada al sistema read normal con bloqueo, ¿cree
usted que se están usando hilos a nivel usuario o hilos a nivel kernel para el servidor
Web? ¿Por qué?
*Utiliza hilos nivel cliente ya que va y busca en los datos del disco en procesos.

9. En el texto describimos un servidor Web con multihilamiento, mostrando por qué


es mejor que un servidor con un solo hilo y que un servidor de máquina de estados
finitos. ¿Hay alguna circunstancia en la cual un servidor con un solo hilo podría ser
mejor? Dé un ejemplo.
*Sería mejor porque no habría choque en proceso. Ejemplo si esta buscando un archivo
y tiene un servidor de 1 sólo hilo la búsqueda sería más rápida.

10. En la figura 2-12, el conjunto de registros se lista por hilos, en vez de por
procesos. ¿Por qué? Después de todo, la máquina sólo tiene un conjunto de registros.
*Porque un hilo puede estar en uno de varios estados: en ejecución, bloqueado, listo o
terminado. Por eso presenta el listado por hilos.

11. ¿Por qué un hilo otorgaría de manera voluntaria la CPU al llamar a


thread_yield? Después de todo, como no hay una interrupción periódica de reloj, tal
vez nunca obtenga la CPU de vuelta.
* es importante que los hilos sean amables y entreguen de manera voluntaria la CPU de
vez en cuando, para dar a otros hilos la oportunidad de ejecutarse.

12. ¿Puede darse alguna vez el apropiamiento de un hilo mediante una interrupción
de reloj? De ser así, ¿bajo qué circunstancias? Si no es así, ¿por qué no?
*Si, por que en una de las interrupciones se puede apropiarse un proceso ya que esta libre.

13. En este problema debe comparar la lectura de un archivo, utilizando un servidor


de archivos con un solo hilo y un servidor multihilado. Se requieren 15 mseg para
obtener una petición, despacharla y realizar el resto del procesamiento necesario,
suponiendo que los datos necesarios están en la caché del bloque. Si se necesita una
operación de disco, como es el caso una tercera parte del tiempo, se requieren 75
mseg adicionales, durante los cuales el hilo duerme. ¿Cuántas peticiones por
segundo puede manejar el servidor, si es de un solo hilo? ¿Si es multihilado?

14. ¿Cuál es la mayor ventaja de implementar hilos en espacio de usuario? ¿Cuál es


la mayor desventaja?
*Que permite que cada hilo tenga su propio algoritmo, también se escalan mejor, ya que
los hilos del kernel requieren sin duda algo de espacio en la tabla y en la pila del kernel,
lo cual puede ser un problema si hay una gran cantidad de hilos.

15. En la figura 2-15, las creaciones de hilos y los mensajes impresos por los mismos
se intercalan al azar. ¿Hay alguna forma de forzar el orden para que sea
estrictamente: hilo 1 creado, hilo 1 imprime mensaje, hilo 1 termina, hilo 2 creado,
hilo 2 imprime mensaje, hilo 2 termina, y así en lo sucesivo?
De ser así, ¿cómo se puede hacer? Si no es así, ¿por qué no?
16. En el análisis de las variables globales en hilos, utilizamos un procedimiento
llamado crear_global para asignar espacio para un apuntador a la variable, en vez
de la misma variable. ¿Es esto esencial o podrían trabajar los procedimientos con
los valores en sí mismos de igual forma?

17. Considere un sistema en el cual los hilos se implementan por completo en espacio
de usuario, en donde el sistema en tiempo de ejecución obtiene una interrupción de
reloj una vez por segundo. Suponga
que ocurre una interrupción de reloj mientras un hilo se ejecuta en el sistema en
tiempo de ejecución. ¿Qué problema podría ocurrir? ¿Puede usted sugerir una
forma de resolverlo?
*Se perdería el proceso o presentaría un error en el proceso al volver el reloj.

18. Suponga que un sistema operativo no tiene algo parecido a la llamada al sistema
select para ver por adelantado si es seguro leer de un archivo, canal o dispositivo,
pero que sí permite establecer relojes de alarma que interrumpen las llamadas
bloqueadas al sistema. ¿Es posible implementar un paquete de hilos en espacio de
usuario bajo estas condiciones? Explique.
*Pienso que si se puede ya que se puede configurar un hilo para que inicie las busquedas.

19. ¿Puede el problema de inversión de prioridades que vimos en la sección 2.3.4


ocurrir con hilos a nivel usuario? ¿Por qué si o por qué no?
*No por que se perderían algunos de los procesos iniciados.

20. En la sección 2.3.4 se describió una situación con un proceso de alta prioridad H
y un proceso de baja prioridadL, que ocasionaba que H iterara en forma indefinida.
¿Ocurre el mismo problema si se utiliza la planificación por turno circular en vez
de la planificación por prioridad? Explique.