SuperParcial Diciembre 2021

SuperParcial Diciembre 2021

de Carolina Smith Porochin -
Número de respuestas: 2

Buenas tardes.

No me queda claro como se divide el codigo de este ejercicio en (P1H1, P1H2), (P2H1, P2H2), P3, P4.

fork()

pid = fork()

if (pid == 0) then

   ejecuta 15

    bloquea 5

    ejecuta 5

else create_thread (proc1)


proc 1

  ejecuta 5

  bloquea 5

   ejecuta 5

end


Gracias por la explicacion

Saludos.

En respuesta a Carolina Smith Porochin

Re: SuperParcial Diciembre 2021

de Ana Virginia Gonzalez Carabajal -
Hola!
Yo lo entiendo de la siguiente manera:
P1H1: es el primer proceso (programa pincipal)
P1H2: es el hilo que se crea con operación create_thread
P2H1: es el primer proceso hijo creado del primer fork
P2H2: es el hilo que se crea con create_thread
P3: vendría a ser el proceso hijo de P1 del segundo fork
P4: vendría a ser el proceso hijo de P2 del segundo fork

Mejor si un profesor lo puede confirmar.
Saludos!
En respuesta a Ana Virginia Gonzalez Carabajal

Re: SuperParcial Diciembre 2021

de Federico Rivero -
Es correcto!

Lo importante es saber que la operación pid = fork() devuelve pid = 0 a los procesos hijos y pid != 0 a los padres (les devuelve el pid del hijo). Eso permite deducir que la operación create_thread() la van a ejecutar el proceso original y el proceso que se crea en el primer fork (esto coincide con lo que dice Ana, P1H1 y P2H1 son el hilo original del proceso original del que se crea con el primer fork, respectivamente).

Entendiendo eso, creo que el resto es bastante más simple de entender.

Saludos!
Federico