Travel software. Is this a concept?

I would like to ask if there is a program that was supposed to travel (for example, after some physical forces) around the planet, possibly occupying and freeing computing resources / nodes. Literally, this means that some agent-system simply regularly changes its location and (inevitably to some extent) configuration.

An example is: suppose that you have external sensors and free computers — nodes — throughout the space; it would be advisable to self-replicate the agents in order to monitor the initializers from the sensors, but so restrictively that the calculation is only localized where the physical case occurs.

I want to emphasize that this question is intended only for “theoretical” pleasure, because I do not see any practical benefit from the mentioned restrictions, except for optimizing the utilization of an agent “outdated” (outplaced?). But maybe that could be interesting. Thanks!

EDIT: Obviously, the virus is suitable as an example, although the removal of such agents is rarely of concern to developers. More precisely, I am interested in "traveling" software, that is, when the number (or at least the order) of agents is constant, and this is just the whole system that travels.

+6
distributed-system
source share
7 answers

I believe that what you are looking for is called Mobile Agents.

By the way: I do not think that the virus qualifies. One of the defining characteristics of a virus is that it cannot travel by itself, but depends on the user-user to spread it. Worms might qualify, however.

+1
source share

The research community at obiquituous computing does a lot of work on such issues.

For example, if you are working on a document, you get it with a certain ability to interact based on devices around you. If you communicate, the same thing. You could argue that many location-based computing applications do something similar. The defense department sponsored some research on context-sensitive automatic assistants, etc.

If we assume that the distributed “cloud” covers global space, then the location of where the calculation actually takes place will be unknown and transparent to you. All that matters is context. Given that GPS-enabled devices are becoming ubiquitous and that video processing is getting cheaper (my $ 50 camera can see faces), then the quality of the context will certainly increase. In this sense, many programs already demonstrate the vision you are describing.

+5
source share

Everything that can be done with a moving program seems to be better done with the help of the widespread one.

+2
source share

I never worked with him myself, but the Obliq programming language seems to be designed for this kind of computation. From the Obliq Document (page 12) that is linked to from this web page:

Obliq refers to a very dynamic form of distributed programming, where objects can redirect their behavior to networks, and where computing can move between network sites.

+1
source share

This, perhaps indirectly, is one of the principles behind Gini. In this case, perhaps this is a matter of downloading drivers. But since it is based on Java, the concept of portable code moving from device to device is one of the basic concepts of the system.

Now, for this purpose, this code does not "move" as such, but rather is copied. It does not "leave" the server.

But you can see, in particular, with Java, that, based on starting with an empty JVM and some kind of shell, it would be quite simple to make the code "move" from one JVM to another.

You can see the process as follows.

1) System A runs an application with state and local classes. 2) System B has a "transmitting shell" running in the system. 3) A wants to move the application to B 4) Pausing the application and serializing its state can be as simple as using serialization of Java objects. This serialized object has a "reload" method. 5) B installs a ClassLoader, which refers to classes in System A. This class loader will copy the classes on request from A to B, then it can store them locally. 6) A sends the state of the serialized application to B, which de-serializes it. 7) ClassLoader on B starts pulling class files from A because the application is deserialized. 8) When the object is deserialized, B calls the "restart" method and the application continues to work. 9) "Forgets" about the application, and B continues to work separately from A.

Obviously, this is naive and fraught with potential problems.

But you can see how, in particular, with a virtual machine, something like this might work.

Modern VM architectures are working on this process, and in fact this process, instantly starting virtual machines, moving images to other machines and starting them. The basics of virtual machines make this easy.

A Java example is just something you can play with without having to become a virtualization engineer.

+1
source share

Yes, if you have a process delivery network around the world and some kind of script migration, you can log in and run a script with a node near you based on some kind of geolocation.

0
source share

Perhaps the Botnet wizard is close to what you are looking for? Obviously, it’s very similar to the “virus” answer above: the difference is that although viruses usually "replicate, spread, do a pre-programmed uncomfortable thing," a botnet is more likely to "take control of your machine for the future, which is usually vile, but dynamic goals. " I think that hosts (your "agent") can easily change with a botnet.

0
source share

All Articles