Departamento de Informática Grado en Ingeniería

Anuncio
Departamento de Informática
Grado en Ingeniería Informática
Diseño de Sistemas Operativos
Ejercicios de planificación y procesos
NIA: ………………………………………………… GRUPO: …………………………………………………………
Nombre y apellidos: …………………………………………………………………………………………………..
Ejercicio 1
Clasifique los siguientes algoritmos:
•
•
•
•
FIFO
Planificación por prioridad,
Primero más corto,
Round-Robin
Según las siguientes características:
•
•
•
Tipo de política (apropiativa o no apropiativa)
Tipo de entorno
Ventajas e inconvenientes
Ejercicio 2
Cuando se crea un nuevo thread, éste tiene acceso a:
A.- Una copia del segmento de datos del proceso.
B.- No tiene acceso al segmento de datos del proceso.
C.- El segmento de datos del proceso.
D.- El segmento de datos del proceso pero marcándolo previamente como copy-on-write.
Ejercicio 3
¿Siempre se produce un cambio de contexto cuando se produce un cambio de proceso?
Razone su respuesta.
Departamento de Informática
Grado en Ingeniería Informática
Diseño de Sistemas Operativos
Ejercicios de planificación y procesos
NIA: ………………………………………………… GRUPO: …………………………………………………………
Nombre y apellidos: …………………………………………………………………………………………………..
Ejercicio 4
¿Qué cambio de contexto tardará menos?
A.- El producido entre dos threads del mismo proceso implementados en el espacio de usuario.
B.- El producido entre dos threads de procesos distintos implementados en el espacio de
usuario.
C.- El producido por dos threads del mismo proceso implementados en el núcleo.
D.- El producido por dos threads de distintos procesos implementados en el núcleo.
Ejercicio 5
Señale cuál de los siguientes atributos es compartido entre todos los hilos (procesos ligeros) de
un mismo proceso.
A.- Una pila de ejecución.
B.- Un estado de ejecución (ejecutando, listo, etc.).
C.- Un contexto de ejecución donde salvar cuando no se esté en ejecución.
D.- Un código ejecutable.
Ejercicio 6
¿Cuál de los siguientes elementos no forma parte de la imagen del proceso?
A.- Contador de programa.
B.- Tabla de páginas del proceso.
C.- El puntero de posición de un archivo.
D.- Puntero de pila.
Ejercicio 7
Analice cuál sería el comportamiento de la llamada al sistema exec en un sistema operativo
con threads respondiendo a las siguientes cuestiones:
a) Explique qué ocurriría cuando un thread realiza esta llamada.
b) Detalle qué modificaciones habría que hacer en la implementación convencional del exec
(correspondiente a un sistema sin threads) para adaptarlo a un sistema con threads.
Departamento de Informática
Grado en Ingeniería Informática
Diseño de Sistemas Operativos
Ejercicios de planificación y procesos
NIA: ………………………………………………… GRUPO: …………………………………………………………
Nombre y apellidos: …………………………………………………………………………………………………..
Ejercicio 8
Analice cuál sería el comportamiento de la llamada al sistema fork en un sistema operativo con
threads respondiendo a las siguientes cuestiones:
a) Explique qué ocurriría cuando un thread realiza esta llamada.
b) Detalle qué modificaciones habría que hacer en la implementación convencional del fork
(correspondiente a un sistema sin threads) para adaptarlo a un sistema con threads.
Ejercicio 9
¿Puede producirse un cambio de contexto en un sistema con un planificador basado en el
algoritmo primero el trabajo más corto además de cuando se bloquea o se termina el proceso?
Razone su respuesta.
Ejercicio 10
¿Qué algoritmo de planificación será más conveniente para optimizar el rendimiento de la CPU
en un sistema que sólo tiene procesos en los cuales no hay entrada/salida?
Ejercicio 11
¿Cuál de las siguientes transiciones entre los estados de un proceso no se puede producir en
un sistema con un algoritmo de planificación no expulsivo?
A.- Bloqueado a listo.
B.- Ejecutando a listo.
C- Ejecutando a bloqueado.
D.- Listo a ejecutando.
Departamento de Informática
Grado en Ingeniería Informática
Diseño de Sistemas Operativos
Ejercicios de planificación y procesos
NIA: ………………………………………………… GRUPO: …………………………………………………………
Nombre y apellidos: …………………………………………………………………………………………………..
Ejercicio 12
Considérese un sistema operativo que usa un algoritmo de planificación de procesos roundrobin con una rodaja de 100 ms. Supóngase que se quiere compararlo con un algoritmo de planificación expulsiva por prioridades en el que cada proceso de usuario tenga una prioridad
estática fijada en su creación. Dado el siguiente fragmento de programa, se pide analizar su
comportamiento usando el planificador original y, a continuación, hacerlo con el nuevo
modelo de planificación planteado. Para cada modelo de planificación, se deberá especificar la
secuencia de ejecución de ambos procesos (se tendrán en cuenta sólo estos procesos) hasta
que, o bien un proceso llame a la función P2 o bien el otro llame a P4.
NOTA: La escritura en una tubería no bloquea al escritor a no ser que la tubería esté llena (situación que no se
da en el ejemplo). Además, en este análisis se supondrá que a ninguno de los dos procesos se les termina el
cuanto de ejecución.
…
f = open ("/dev/tty", :Q_RDONLY); pipe(p);
/* crea un hijo (en el caso del planificador modificado de menor
prioridad que el padre, en este caso la llamada sería:
fork(LOWERPRIORITY)) */
if (fork()==0){
P1()
/* procesamiento de
20 ms.
*/
write
(p[1],
buf,
t);
P2();
…
} else {
/*
lectura del
terminal
*/
read
(f, buf, t);
/*
estará disponible
en 5 ms
*/
P3();
/*
procesamiento de
2 ms
*/
read
(p[0] ,
buf,
t);
P4();
…
}
Departamento de Informática
Grado en Ingeniería Informática
Diseño de Sistemas Operativos
Ejercicios de planificación y procesos
NIA: ………………………………………………… GRUPO: …………………………………………………………
Nombre y apellidos: …………………………………………………………………………………………………..
Ejercicio 13
Se desea implementar un planificador basado en prioridades. Los procesos pueden tener 2
tipos distintos de prioridades:
•
•
Prioridad Alta.
Prioridad Baja.
Cada prioridad tiene su propia planificación:
• La política de planificación de los procesos de prioridad alta será FIFO.
• La política de planificación de los procesos de prioridad baja será Round-Robin,
empleando en este caso una rodaja de tiempo de 100 milisegundos.
Los procesos en la cola de prioridad alta se ejecutan en orden estricto de llegada (FIFO). Un
proceso de prioridad alta se ejecuta hasta que:
a) Finaliza el proceso completamente.
b) Se duerme.
c) Se bloquea.
Un proceso de prioridad baja abandona el estado de ejecución cuando:
a)
b)
c)
d)
Finaliza su rodaja de tiempo.
Finaliza el proceso completamente.
Se duerme.
Se bloquea.
Se pide diseñar e indicar que funciones y estructuras de datos son necesarias para
implementar el planificador.
Departamento de Informática
Grado en Ingeniería Informática
Diseño de Sistemas Operativos
Ejercicios de planificación y procesos
NIA: ………………………………………………… GRUPO: …………………………………………………………
Nombre y apellidos: …………………………………………………………………………………………………..
Ejercicio 14
Se desea implementar un planificador round-robin que usa prioridades basado en una única
cola de procesos listos. Para manejar esta cola únicamente se dispone las siguientes funciones:
•
•
BCP * devolverPrimeroListo(): Devuelve el primer elemento de la lista de listos.
insertarFinalListo(BCP *): Inserta el elemento al final de la cola de procesos listos.
El planificador debe impedir la inanición de los procesos en el acceso a la CPU. Los procesos no
pueden cambiar de nivel de prioridad.
Un proceso que se encuentre ejecutando en la CPU no puede ser expulsado hasta que:
a)
b)
c)
d)
Finaliza su rodaja de tiempo.
Finaliza el proceso completamente.
Se duerme.
Se bloquea.
Se pide diseñar e indicar que funciones y estructuras de datos son necesarias para
implementar el planificador.
Departamento de Informática
Grado en Ingeniería Informática
Diseño de Sistemas Operativos
Ejercicios de planificación y procesos
NIA: ………………………………………………… GRUPO: …………………………………………………………
Nombre y apellidos: …………………………………………………………………………………………………..
Ejercicio 15
Se dispone de un sistema hardware que incluye un dispositivo de reloj, el cual genera una
interrupción con cada tick del reloj.
Un sistema operativo multiproceso tiene prevista (a falta de la implementación) la llamada al
sistema:
struct Fecha * ObtenerFecha ();
Que debe devolver la fecha y hora actuales. Para ellos, se dispone además del código de la
función:
struct Fecha *Convertir_Ticks_en_Fechas(int ticks);
Dicha función permite obtener la fecha y hora actuales a partir del número de ticks que han
transcurrido.
Se pide:
a) Implementar en pseudocódigo la funcionalidad necesaria del kernel del SSOO para
gestionar el reloj y ofrecer a los usuarios la funcionalidad de obtener la fecha y hora
actuales cuando lo soliciten. Poner especial interés en indicar cuales son las
estructuras de datos requeridas o modificadas, la interfaz de las funciones
implementadas y los eventos utilizados.
b) Modificar la solución anterior para implementar, además, la llamada al sistema:
Dormir( int segundos);
Que permite dormir un proceso el tiempo en segundos determinado.
a) ¿Qué problemas de concurrencia presenta la solución propuesta? ¿Como se pueden
solucionar?
Departamento de Informática
Grado en Ingeniería Informática
Diseño de Sistemas Operativos
Ejercicios de planificación y procesos
NIA: ………………………………………………… GRUPO: …………………………………………………………
Nombre y apellidos: …………………………………………………………………………………………………..
Ejercicio 16
Se dispone de un computador con los siguientes dispositivos hardware:
•
•
•
Un disco de almacenamiento secundario que recibe peticiones mediante los registros
de E/S y que lanza una interrupción al finalizar cada petición.
Un teclado que envía una interrupción cada vez que se pulsa una tecla y devuelve cual
es en los registros de E/S.
Un reloj que genera una interrupción por cada tic de reloj.
El sistema operativo multiproceso diseñado para esta maquina contempla, al menos, los
siguientes eventos:
•
•
•
•
•
Interrupción del reloj
Interrupción del disco
Interrupción del teclado
Llamada al sistema para leer el teclado.
Llamada al sistema para realizar peticiones al disco.
Se pide:
a) Explicar la diferencia entre planificación cooperativa (sin expulsión) y expulsivo
(preemtive).
b) Diseñar un planificador de procesos para este sistema, indicando las estructuras
necesarias, las funciones requeridas (interfaz y pseudocódigo) y los eventos
involucrados, en los siguientes casos:
a. El sistema utiliza una planificación FIFO
b. El sistema usa una planificación FIFO e implementa la llamada al sistema para
dormir un proceso un número de segundos.
c. El sistema utiliza un planificador Round Robin.
Departamento de Informática
Grado en Ingeniería Informática
Diseño de Sistemas Operativos
Ejercicios de planificación y procesos
NIA: ………………………………………………… GRUPO: …………………………………………………………
Nombre y apellidos: …………………………………………………………………………………………………..
Ejercicio 17
Se dispone de un computador multiprocesador con 4 CPUs. La interrupción de reloj se produce
100 veces por segundo. Se pide:
a) Diseñar un planificador de procesos incluyendo las estructuras de datos necesarias, los
estados del proceso que se requieren y la descripción del algoritmo de cambio de
contexto. Este planificador debe permitir lo siguiente:
a. Poder ejecutar un proceso en cada CPU simultáneamente.
b. No debe haber CPUs inactivas mientras haya procesos listos para ejecutar.
c. Un proceso deben ejecutar siempre en la misma CPU salvo que otra CPU se
encuentre inactiva.
d. Los procesos deben seguir una política round robin con una rodaja de 100 ms.
b) Dado la siguiente lista de procesos a ejecutar.
Proceso
P1
P2
P3
P4
P5
P6
P7
Tiempo de ejecución
100 ms
400 ms
400 ms
400 ms
300 ms
300 ms
300 ms
Instante de inicio
0 ms
0 ms
0 ms
0 ms
100 ms
100 ms
100 ms
Representar la traza de ejecución de dichos procesos que realizará el algoritmo de
planificación diseñado en el apartado anterior. Utilice una tabla como la siguiente
para representar dicha traza.
Tiempo
CPU 1
CPU 2
CPU 3
CPU 4
0 ms
(*) : Proceso X, CPU Inactiva
…. ms
(*)
… ms
Departamento de Informática
Grado en Ingeniería Informática
Diseño de Sistemas Operativos
Ejercicios de planificación y procesos
NIA: ………………………………………………… GRUPO: …………………………………………………………
Nombre y apellidos: …………………………………………………………………………………………………..
Ejercicio 18
Se quiere implementar un servicio del SSOO multiproceso que funcione como un buzón de
mensajes. Sus características deben ser las siguientes:
•
•
•
•
•
•
•
Cada buzón tendrá un identificador que lo represente.
El buzón debe almacenar un número ilimitado de mensajes.
Cualquier proceso puede guardar mensajes en el buzón.
Cualquier proceso puede recoger mensajes del buzón.
Los mensajes almacenados serán repartidos entre los procesos que esperan recogerlos
en estricto orden de llegada (el primer mensaje que llego se entregará al primer
proceso que solicito un mensaje).
Si un proceso solicita un mensaje y no hay ninguno pendiente, entonces el proceso
deberá esperar hasta que algún otro proceso envié un mensaje al buzón.
Un proceso que envié un mensaje al buzón terminará dicha operación aunque no haya
procesos esperando por dicho mensaje.
Se pide:
a) Diseñar las estructuras de datos necesarias para implementar los buzones de mensajes
especificados anteriormente. Indicar que estructuras del SSOO son necesarias para
dicha labor y (si es necesario) que modificaciones requieren.
b) Implementar en pseudocódigo las siguientes funciones:
• enviarMensaje (buzón, mensaje): Envía un mensaje al buzón para que sea
entregado al 1º proceso que lo solicite.
• recogerMensaje (buzón, mensaje): Recoge el primer mensaje que haya en el
buzón. Si no hay mensajes, el proceso esperará hasta que otro proceso envié
un mensaje.
Departamento de Informática
Grado en Ingeniería Informática
Diseño de Sistemas Operativos
Ejercicios de planificación y procesos
NIA: ………………………………………………… GRUPO: …………………………………………………………
Nombre y apellidos: …………………………………………………………………………………………………..
Ejercicio 19
Considérese que se distinguen las siguientes operaciones internas del sistema operativo:
•
•
•
•
•
•
•
•
Reservar y liberar una entrada de la tabla de procesos.
•
Compartir y duplicar una región.
Eliminar una región de memoria.
•
Rellenar/actualizar el BCP (se debe explicar en qué consiste la actualización).
Insertar y eliminar un proceso de una cola de procesos.
Cambiar de contexto.
Planificar.
Leer e interpretar un ejecutable.
Crear pila (se debe especificar cuál es su contenido inicial).
Crear una región de memoria (privada o compartida, asociada a un ejecutable o sin
soporte).
Se pide especificar, basándose en las anteriores operaciones, cómo se llevan a cabo las
siguientes llamadas:
a) FORK.
b) EXEC
c) EXIT y WAIT (tenga en cuenta la sincronización asociada a la terminación de procesos
en UNIX).
Descargar