Discussion:
Migración de procesos...
(demasiado antiguo para responder)
Aupiketal
2004-06-03 12:26:53 UTC
Permalink
Hola a ***@s....

estoy intentando programar una aplicación de cálculo númerico que funcione
bajo openmosix. Mi problema es que a la hora de hacer nuevos procesos (fork)
para la calcular las soluciones de las ecuaciones, me ejecuta un nuevo
proceso que alberga toda la info de la aplicacion, en mi caso mas de un
centenar de megas,... me gustaría saber si existe alguna forma de poder
crear un nuevo proceso (sin usar threads, ya que openmosix no lo soporta
correctamente) que sea a partir de una funcion y unos parametros.

gracias---
Fco. Javier Espejo
2004-06-03 17:27:09 UTC
Permalink
No se puede, porque fork() está optimizado para que no se duplique el
espacio de memoria hasta el momento de que un porceso escriba en alguna
variable, cosa que en tu caso veo difícil evitar.

Pero, ¿has pensado usar exec(), con varios procesos independientes, que te
vayan trasmitiendo resultados por pipes o sockets?

--------------------------------
¿Sistemas Operativos? ¡Visitala!
http://www.arrakis.es/~jespejo
***@ESTOarrakis.es
--------------------------------
deabru
2004-06-06 02:46:11 UTC
Permalink
Post by Aupiketal
estoy intentando programar una aplicación de cálculo númerico que funcione
bajo openmosix. Mi problema es que a la hora de hacer nuevos procesos
(fork) para la calcular las soluciones de las ecuaciones, me ejecuta un
nuevo proceso que alberga toda la info de la aplicacion, en mi caso mas de
un centenar de megas,... me gustaría saber si existe alguna forma de poder
crear un nuevo proceso (sin usar threads, ya que openmosix no lo soporta
correctamente) que sea a partir de una funcion y unos parametros.
por lo que comentas yo creo que te interesaría mirar mejor algo como PVM /
MPI hace la migración de procesos de forma totalmente automática, y tienes
opciones de hacela balanceada

no es demasiado difícil de usar, si te interesa:

http://www.dccia.ua.es/dccia/inf/asignaturas/CP/

saludos
- --
deabru... bai deabrunaiz (ekiozuTEarrobadeabruELpuntoGcom fuera mayusculas!)
No a las patentes de software http://proinnova.hispalinux.es/
Public Key Server pgp.escomposlinux.org -- Get "0xEDF14C8E"
Miguel
2004-06-07 20:43:58 UTC
Permalink
Hola compañero,
ten en cuenta que cuando realizas un fork() haces también una copia de
la memoria que utiliza el proceso padre (una copia y no una
referencia!!!). Si te sigue interesando utilizar fork() lo mejor es que
uses memoria compartida... te ahorras mucha memoria.(man shr
Pero aun así piensate en utilizar PVM / MPI mejor que cualquier otra cosa.
José Luis Pérez Diez
2004-06-08 09:03:24 UTC
Permalink
Post by Miguel
ten en cuenta que cuando realizas un fork() haces también una copia de
la memoria que utiliza el proceso padre (una copia y no una
referencia!!!)
Si te refieres al fork() en linux solo usa una refencia (aunque puedes
forzar la copia) y cuando se cambia algo en un bloque se crea una copia
que es la que se modifica y la referencia cambia a la copia.

Usando Open Moxis, si no recuerdo mal, la copia tambien se produce
cuando el proceso (padre o hijo) migra a otra maquina.

--
Los programadores esta ocupados intendtado mejorar los programas a
prueba de idiotas. Mientras tanto el universo intenta mejorar los
idiotas. El universo va ganando

Loading...