Desarrollar software
$10-30 USD
货到付款
Se deberá desarrollar una aplicación multiproceso. La aplicación constará de un programa
servidor que creará 5 procesos hijo. Estos procesos compartirán una zona de memoria
compartida en la que almacenarán sus PID en orden de creación (una forma cómoda de
hacer esto es que lo haga el proceso padre del resto, es decir, el proceso inicial). Los PID
se utilizarán para el envío de la señal SIGUSR1 entre los procesos con el objetivo de que
los procesos se intercambien el "turno de activación". Sólo uno de los procesos podrá
tener el turno en cada momento. Inicialmente el turno pertenecerá al primer hijo y,
posteriormente, lo pasará a otro proceso hijo. El proceso que reciba el turno deberá
esperar un tiempo aleatorio entre 1 y 10 segundos antes de pasarlo a otro proceso hijo. El
siguiente proceso se elegirá de forma aleatoria. El envío de la señal se protegerá con un
semáforo. Este proceso se repetirá un máximo de 100 veces (el contador también puede
almacenarse en memoria compartida).
Además se creará otro programa que enviará un número entre 1 y 5 (los procesos hijos)
al otro programa. Si se acierta con el hijo que tiene el turno se mostrará “acierto” por
pantalla y nada en caso contrario. Para que no se realice el envío en medio de un cambio
de turno se sincronizará el envío con el semáforo que protege el envío de señales en el
otro proceso. El envío del número y la correspondiente respuesta se realizarán por
cualquiera de los métodos vistos a lo largo de la asignatura.
También será necesario crear una versión multihilo del primer programa. En este caso, el
programa deberá crear hilos de ejecución en lugar de procesos. Este programa también
deberá recibir los números del segundo programa y responder de la misma forma.
项目ID: #7510845