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).