Pr 3, ej 3

Pr 3, ej 3

de Alexis Alfonso -
Número de respuestas: 1

Se pide mencionar cuales de los componentes Data, Heap, Stack, Registros del CPU son compartidos entre threads de un mismo proceso y entre un proceso y sus hijos.

Para el primer caso, creo que tengo claro que entre hilos únicamente se comparte la data.

Pero para los procesos hijos, ¿Se considera que son procesos completamente diferentes y por lo tanto se realiza un cambio de contexto "total"?

Es decir, que el sistema reserva para cada uno sus propios componentes y no comparten nada con el proceso padre, ¿es así?


Gracias

En respuesta a Alexis Alfonso

Re: Pr 3, ej 3

de Santiago Iturriaga -

Hola Alexis:

Los hilos comparten todo el espacio de memoria salvo los registros de la CPU y el stack. Los registros y el stack son lo mínimo que deben mantener privado para asegurar ejecuciones independientes (acordate de Arqui). El segmento de datos y el heap son compartidos. En el segmento de datos se almacenan las variables globales estáticas y en el heap toda la memoria dinámica que se haya pedido usando punteros y new/malloc/etc. Todo esto seguro que es compartido entre hilos.

Entre procesos diferentes no se comparte nada. La función fork() produce una copia idéntica pero totalmente independiente del proceso padre. La única forma de compartir entre procesos es usando mecanísmos explícitos para la comunicación entre procesos (IPC), p.ej. memoria compartida (hay que programarlo!).

Espero haber aclarado.

Saludos,
Santiago.