|
| Home / Teaching / Telecommunication Engineering / Computer Architecture Laboratory / Laboratory 6 | |
|
|
|
|
|
|
| Laboratorio de Arquitectura de Ordenadores | |||||||
|
|
||||||
|
Con esta práctica se pretende que los alumnos alcancen
los siguientes objetivos:
|
|||
|
En este ejercicio debe realizar un programa en código C llamado
"process.c" en el que obligatoriamente sólo podrá usar para
su realización una combinación de los siguientes elementos:
Cualquier otro elemento no nombrado en la lista anterior no está permitido para la resolución del ejercicio. El programa a realizar debe cumplir obligatoriamente con los siguientes requerimientos: 1) Al ejecutar el programa el árbol de procesos generado durante la ejecución debe ser el siguiente:
Este árbol de procesos implica los siguientes aspectos:
2) Al ejecutar el programa la tabla de variables que nos indica la evolución de las variables a lo largo de la ejecución del programa para cada proceso, debe ser la siguiente:
Esta tabla de variables tiene las siguientes implicaciones:
3) Un proceso cuando reciba cualquier número de señales con nº 15 en ningún caso morirá. En su lugar ejecutará una rutina que mostrará el número de veces que ha recibido la señal 15 hasta el momento. El mensaje que sacará por pantalla tal rutina será (supuesto recibe una señal el proceso 102): "El proceso nº 102 acaba de recibir una señal y el número de señales recibidas es de 1" 4) Los mensajes que deben aparecer por pantalla mientras se ejecuta el código debe ser el siguiente (en este orden exactamente) (de nuevo el número de proceso debe sustituirse en la ejecución real por el número asignado por el sistema operativo): "El proceso hijo número 101 ha sido creado desde el proceso padre 100" "El proceso hijo número 102 ha sido creado desde el proceso padre 100" "El proceso hijo número 103 ha sido creado desde el proceso padre 101" "El proceso nº 100 acaba de recibir una señal y el número de señales recibidas es de 1" "El proceso nº 101 acaba de recibir una señal y el número de señales recibidas es de 1" "El proceso hijo número 104 ha sido creado desde el proceso padre 100" "El proceso hijo número 105 ha sido creado desde el proceso padre 102" "El proceso hijo número 106 ha sido creado desde el proceso padre 102" "El proceso hijo número 107 ha sido creado desde el proceso padre 105" "El proceso nº 102 acaba de recibir una señal y el número de señales recibidas es de 1" "El proceso nº 105 acaba de recibir una señal y el número de señales recibidas es de 1" 5) Se deberá mostrar por pantalla el valor de cada variable, esto incluye, su valor inicial en cada proceso así como cualquier cambio que ocurra de dicha variable en dicho proceso. Estos mensajes se podrán intercalar en cualquier lugar de entre los mensajes del punto anterior y tendrán el siguiente formato: "El proceso nº 102 tiene el valor para c de 101" 6) El estado final para los procesos debe ser el siguiente: 100: Terminado y liberado memoria 101: Terminado y liberado memoria 102: En ejecución y huérfano 103: En ejecución y huérfano 104: Terminado y liberado memoria 105: En ejecución 106: En ejecución 107: En ejecución |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Para la realización del ejercicio se sugiere seguir los siguientes pasos: i) Primero resuelva el ejercicio planteado escribiendo el código suponiendo que el planificador de linux cumplirá los siguientes criterios:
ii) Ejecutaremos el código realizado en el punto anterior. Verá que el resultado no es el esperado puesto que el planificador real no se comporta en la forma en que hemos realizado los supuestos. iii) Añada a su solución diferentes sleep de forma que modifiquemos el comportamiento del planificador planteado en el punto i) para acercarlo a los requerimientos del ejercicio. Podemos suponer que el tiemo de ejecución de un commando del programa es mucho menor que 1 segundo. iv) Volveremos a ejecutar el programa y comprobaremos que el resultado es acorde con la especificación del ejercicio. (Para ver el estado final de los procesos puede ayudar ejecutar ps) v) Finalmente realizaremos el ejercicio inverso al realizado, es decir a partir del código de nuestro programa realizaremos el diagrama de procesos, la tabla de variables, mensajes de salida, estado final de los procesos y comprobaremos que el resultado es el mismo que el mostrado en la especificación. |
|||
|
| Página de entrega de práctica de Procesos y Señales |
|
|