2010-05-28 11 views
6

Me gustaría preguntar si existía un programa, que estaba destinado a viajar (por ejemplo, siguiendo algunas fuerzas físicas) en todo el planeta, posiblemente ocupando y liberando recursos/nodos computacionales. Literalmente eso significa que algún sistema basado en agentes simplemente está cambiando regularmente su ubicación y (inevitablemente hasta cierto punto) la configuración.Software de viaje. ¿Es eso un concepto?

Un ejemplo sería: supongamos que tiene sensores externos y computadoras gratuitas, nodos, en todo el espacio; ¿Tendría sentido replicar a los agentes para seguir los inicializadores desde los sensores, pero de manera tan restrictiva que el cálculo solo se localiza en el lugar donde se desarrolla el negocio físico?

Quiero hacer hincapié en que esta pregunta es solo para la diversión 'teórica', porque no veo ningún beneficio práctico de las restricciones mencionadas, aparte de la optimización de la eliminación del agente 'obsoleto' (¿desplazado?). Pero tal vez podría ser de algún interés. ¡Gracias!

EDITAR: Es obvio que un virus es un ejemplo apropiado, aunque la eliminación de tales agentes rara vez es motivo de preocupación para los desarrolladores. Más precisamente, estoy interesado en el software 'de viaje', es decir, cuando el recuento (o al menos el pedido) de los agentes es constante, y es solo el sistema el que viaja.

+7

¿Te refieres a un virus de computadora que se autoreplica y propaga? – FrustratedWithFormsDesigner

+0

Huh, no quise decir eso, pero +1 por proporcionar el ejemplo relacionado más obvio :) – Bubba88

+1

No tengo idea de lo que significa tu pregunta, pero para un sistema operativo distribuido tan extraño que lleva el nombre de una película de Ed Wood, mira: http://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs – HostileFork

Respuesta

1

Creo que lo que estás buscando se llama Mobile Agents.

BTW: No creo que un virus califique. Una de las características definitorias de un virus es que no puede viajar solo, pero depende de un usuario humano para propagarlo. Sin embargo, Worms calificarían.

+0

¡Agentes móviles, por supuesto! Eso es lo que traté de describir. +1 y gracias por la respuesta correcta. – Bubba88

2

Todo lo que podría hacerse bien con un programa en movimiento parece que podría ser mejor si se lo distribuyera ampliamente.

+0

Estoy de acuerdo, que mi sugerencia podría ser realmente ineficientemente implementada. Pero me interesaba si había algo parecido en la historia. Es un buen consejo. Por cierto, los nodos maestros son una solución prácticamente valiosa. – Bubba88

+0

Es un sistema ampliamente distribuido realmente mejor que, p. agentes móviles? – Bubba88

5

La comunidad de investigación en informática oblicua hace mucho trabajo en ese tipo de problemas.

Por ejemplo, si está trabajando en un documento, lo muestra con una modalidad de interacción particular basada en los dispositivos que le rodean. Si te estás comunicando, lo mismo. Podría argumentar que muchas aplicaciones de computación basadas en la ubicación hacen algo similar. El departamento de defensa estaba patrocinando algunas investigaciones sobre asistentes automáticos sensibles al contexto, etc.

Si asumimos una "nube" distribuida que abarca todo el mundo, entonces la ubicación donde realmente se realiza la computación será desconocida y transparente para usted. Todo lo que importa es el contexto. Teniendo en cuenta que los dispositivos habilitados para GPS se están volviendo omnipresentes y que el procesamiento de video es cada vez más económico (mi cámara de $ 50 puede detectar caras), la calidad del contexto ciertamente aumenta. En ese sentido, muchos programas ya manifiestan la visión que describes.

0

Sí, si tiene una red de entrega de procesamiento en todo el mundo y algún tipo de migración de scripts, puede iniciar sesión y hacer que la secuencia de comandos se migre a un nodo cercano, basado en algún tipo de geolocalización.

1

Nunca he trabajado con él, pero el lenguaje de programación Obliq parece estar orientado a este tipo de cálculos. Desde el Obliq paper (página 12) se hace referencia en esta página web:

Obliq aborda una forma muy dinámica de programación distribuida, donde los objetos puede redirigir su comportamiento en la red , y donde los cálculos pueden moverse entre sitios de red.

0

¿Quizás el maestro de un Botnet está cerca de lo que está buscando? Obviamente muy similar a la respuesta de "virus" anterior: la diferencia es que mientras los virus usualmente 'se replican, propagan, hacen un inconveniente preprogramado', una botnet es más que un 'control de su máquina para un futuro, usualmente nefasto, pero propósito dinámico"Creo que los anfitriones (tu" agente ") también pueden cambiar más fácilmente con una botnet.

1

Esto, tal vez indirectamente, es uno de los principios detrás de Jini. En este caso, podría decirse que se trata de descargar controladores. Pero como está basado en Java, el concepto de código portátil que se mueve de un dispositivo a otro es una de las filosofías centrales del sistema.

Ahora, para ese fin, este código no se "mueve" per se, sino que se copia. No "deja" el servidor.

Pero se puede ver, específicamente con Java, que conseguir los fundamentos de comenzar con una JVM de vacío y una especie de concha, sería bastante sencillo para obtener el código para "mover" de una JVM a otro.

Puede ver el proceso de esta manera.

1) El sistema A tiene ejecución de aplicaciones, con clases estatales y locales. 2) El sistema B tiene el "shell de transferencia" ejecutándose en el sistema. 3) A quiere mover la aplicación a B 4) A hace una pausa en la aplicación y serializa su estado, podría ser tan simple como usar la serialización de objetos Java. Este objeto serializado tiene un método de "reinicio". 5) B configura un ClassLoader que hace referencia a las clases del Sistema A. Este cargador de clases copiará las clases a petición de A a B, y luego puede almacenarlas localmente. 6) A envía el estado de la aplicación serializada a B, quien lo deserializa. 7) el ClassLoader en B comienza a extraer archivos de clase de A, ya que la aplicación está deserializada 8) Una vez que el objeto se deserializa, B invoca el método de "reinicio" y la aplicación continúa ejecutándose. 9) Un "se olvida" de la aplicación, y B sigue ejecutándose separado de A.

Obviamente, esto es ingenuo y plagado de posibles problemas.

Pero puede ver cómo, particularmente con una máquina virtual, cómo algo así puede funcionar.

Las arquitecturas de VM modernas están trabajando en este proceso, y de hecho este proceso, de realizar instantáneas ejecutando máquinas virtuales, mover las imágenes a otras máquinas y ponerlas en marcha. Los conceptos básicos de las VM hacen que esto sea "fácil".

El ejemplo de Java es simplemente algo con lo que puede jugar sin tener que convertirse en un ingeniero de virtualización.

+0

Gracias, pero creo que la plataforma como Jini está diseñada para admitir tales cosas de forma más directa, pero el servicio/contenedor Jini se ejecutará en todas esas máquinas. Pero dado que es bastante "general", creo que se ajusta a mi descripción :) – Bubba88

Cuestiones relacionadas