Superparcial diciembre 2020, teorico

Superparcial diciembre 2020, teorico

de Martina Revello Abate -
Número de respuestas: 5

Hola, quería saber cual es la respuesta a esta pregunta:

"Considere los siguientes componentes de un proceso: data, heap, stack, variables en registros del CPU. Cuáles de estos componentes son compartidos entre: i. Un proceso y sus hijos. ii. Los threads de un mismo proceso"

Gracias

En respuesta a Martina Revello Abate

Re: Superparcial diciembre 2020, teorico

de Leonardo Alberro Zimmermann -
Hola,
como los clasificarías?. i) refiere a distintos procesos, tiene sentido por ejemplo el stack? ii) refiere a hilos del mismo proceso, eso está en la slide 34 de https://eva.fing.edu.uy/pluginfile.php/330938/mod_resource/content/0/clase5.pdf

Cualquier cosa si seguís con dudas de alguna parte especificá y le damos otra vuelta

Saludos!
En respuesta a Leonardo Alberro Zimmermann

Re: Superparcial diciembre 2020, teorico

de Bruno Agustin Garcia Baldassari -
Hola, tengo la misma duda que la compañera, creo que tambien aplica a este ejercicio.


Mi respuesta sería que imprime 5. Entiendo que al ser dos procesos distintos, lo que haga el hijo no tiene efecto sobre el padre. Ahora si el print lo estuviera en el hijo (al final), el valor sería 20.

Lo que me lleva a... con compartir se refieren a que cualquier cambio que se haga tiene efecto en ambos o puede ser que se compratan las variables al momento de fork() y luego actuan como dos distintas.

En respuesta a Bruno Agustin Garcia Baldassari

Re: Superparcial diciembre 2020, teorico

de Leonardo Alberro Zimmermann -
Hola, perdón pero no entiendo tu planteo. Intento responder algo y cualquier cosa me aclarás.

Hablando en alto nivel, un efecto de que compartan la variable, es que si uno la cambia el otro lo ve reflejado.
Antes del fork hay un solo proceso, ahí no tiene sentido la pregunta. Para ver que pasa luego hay que ir a la definición del fork, ver que crea y que hace con la memoria del proceso que lo crea.

Saludos
En respuesta a Leonardo Alberro Zimmermann

Re: Superparcial diciembre 2020, teorico

de Bruno Agustin Garcia Baldassari -

Bien, entonces lo que se pide en la pregunta es lo que me comentas en alto nivel.

Precisamente, no encuentro una definición de fork que hable sobre esto en las diapositivas del curso. Pero buscando en google encontré esto. (https://man7.org/linux/man-pages/man2/fork.2.html)

The child process and the parent process run in separate memory
       spaces.  At the time of fork() both memory spaces have the same
       content.  Memory writes, file mappings (mmap(2)), and unmappings
       (munmap(2)) performed by one of the processes do not affect the
       other.
A esto me refería con "en el momento de hacer fork", entiendo que el padre le comparte sus datos al hijo (copia, deberia haber dicho). Desde ese punto en adelante, cualquier cambio no se va a ver reflejado en el otro proceso.

Concluyendo entonces, y para evacuar todas las dudas te. Padre e hijo no comparten ninguna de las siguientes, data, heap, stack ni variables en registros del CPU. Y en el otro ejercicio que compartí, lo que se imprime es 5.