旅游软件。这是一个概念吗?

发布于 2024-09-03 12:42:49 字数 388 浏览 5 评论 0原文

我想问是否存在一个程序,其目的是在地球上旅行(例如跟随一些物理力量),可能占用和释放计算资源/节点。从字面上看,这意味着某些基于代理的系统只是定期更改其位置和(在某种程度上不可避免)配置。

一个例子是:假设你有外部传感器,以及空间中的免费计算机(节点);自我复制代理遵循来自传感器的初始化程序是否有意义,但以如此严格的方式进行,计算仅局限于物理业务正在进行的地方。

我想强调的是,这个问题只是为了“理论上”的乐趣,因为除了“过时”(被取代?)代理处置的优化之外,我看不到所提到的限制有任何实际好处。但也许这可能会引起一些兴趣。谢谢你!

编辑:很明显,病毒是合适的例子,尽管开发人员很少关心删除此类代理。更准确地说,我对“旅行”软件感兴趣 - 也就是说,当代理的数量(或至少顺序)是恒定的,并且只是整个系统在旅行时。

I would like to ask if there existed a program, which were intended to travel (for example following some physical forces) across the planet, possibly occupying and freeing computational resources/nodes. Literally that means that some agent-based system is just regularly changing it's location and (inevitably to some extent) configuration.

An example would be: suppose you have external sensors, and free computers - nodes - across the space; would it make sense to self-replicate agents to follow the initializers from sensors, but in such restrictive manner that the computation is only localized at where the physical business is going on.

I want to stress that this question is just for 'theoretical' fun, cause I cannot see any practical benefits of the restrictions mentioned, apart from the optimization of 'outdated' (outplaced?) agent disposal. But maybe it could be of some interest. Thank you!

EDIT: It's obvious that a virus is fitting example, although the deletion of such agents is rarely of concern of the developers. More precisely, I'm interested in 'travelling' software - that is, when the count (or at least order) of the agents is kind of constant, and it's just the whole system who travels.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

不即不离 2024-09-10 12:42:49

无处不在的计算研究界在此类问题上做了大量工作。

例如,如果您正在处理文档,您会根据您周围的设备以特定的交互方式显示该文档。如果你在交流,同样的事情。您可能会说许多基于位置的计算应用程序都执行类似的操作。国防部正在赞助一些有关上下文敏感的自动化助理等的研究。

如果我们假设一个遍布全球的分布式“云”,那么计算实际发生的位置对您来说将是未知且透明的。重要的是上下文。考虑到支持 GPS 的设备正在变得无处不在,并且视频处理变得越来越便宜(我的 50 美元相机可以识别面孔),那么环境的质量肯定会提高。从这个意义上说,许多计划已经体现了您所描述的愿景。

The research community in obiquituous computing does a lot of work on those sort of problems.

For example, if you are working on a document you get it displayed with a particular interaction modality based on the devices around you. If you are communicating, same thing. You could argue that many location-based computing applications do something similar. The department of defense was sponsoring some research on context-sensitive automated assistants, etc.

If we assume a globe-spanning distributed "cloud", then the location of where computing actually takes place will be unknown and transparent for you. All that matters is the context. Considering that GPS-enabled devices are becoming ubiquitous and that video processing is becoming cheaper (my $50 camera can spot faces), then the quality of the context is certainly increasing. In that sense, many programs already manifest the vision you're describing.

花开雨落又逢春i 2024-09-10 12:42:49

任何可以通过移动程序很好地完成的事情似乎都可以通过广泛分布的程序做得更好。

Anything that could be done well by a moving program seems like it might be done better by a widely distributed one.

寂寞清仓 2024-09-10 12:42:49

我相信您正在寻找的东西称为“移动代理”。

顺便说一句:我不相信病毒有资格。病毒的定义特征之一是它不能自行传播,而是依赖人类用户来传播。不过,蠕虫符合条件。

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

BTW: I don't believe a virus qualifies. One of the defining characteristics of a virus is that it cannot travel on its own but depends on a human user to spread it. Worms would qualify, though.

墨落画卷 2024-09-10 12:42:49

我自己从未使用过它,但是编程语言 Obliq 似乎适合这种计算。从
本网页引用的 Obliq 论文(第 12 页):

Obliq 解决了一种非常动态的形式
分布式编程,其中对象
可以重定向他们的行为
网络,以及计算可以
在网络站点之间漫游。

I have never worked with it myself, but the programming language Obliq seems to be geared to such kind of computations. From the
Obliq paper (page 12) referenced on this web page:

Obliq addresses a very dynamic form of
distributed programming, where objects
can redirect their behavior over the
network, and where computations can
roam between network sites.

呢古 2024-09-10 12:42:49

这或许是间接的 Jini 背后的原则之一。在这种情况下,可以说,这是下载驱动程序的问题。但由于它是基于 Java 的,因此可移植代码在设备之间移动的概念是该系统的核心理念之一。

现在,为此,这段代码本身并不“移动”,而是被复制。它不会“离开”服务器。

但是您可以看到,特别是对于 Java,从空 JVM 和某种 shell 开始,掌握基础知识,将代码从一个 JVM“移动”到另一个 JVM 将非常简单。

你可以看到这样的过程。

1) 系统 A 正在运行应用程序,其中包含状态类和本地类。
2) 系统B有“transfer shell”在系统上执行。
3)A想要将应用程序移至B
4) A 暂停应用程序并序列化其状态,可以像仅使用普通 Java 对象序列化一样简单。这个序列化对象有一个“重新启动”方法。
5)B建立一个类加载器来引用系统A上的类。该类加载器将根据请求将类从A复制到B,然后将它们存储在本地。
6) A 将序列化的应用程序状态发送给 B,B 对其进行反序列化。
7) 当应用程序被反序列化时,B 上的 ClassLoader 开始从 A 拉取类文件
8) 一旦对象被反序列化,B 就会调用“restart”方法,应用程序将继续运行。
9) A“忘记”了应用程序,B 继续与 A 分离地运行。

显然这是幼稚的,并且充满了潜在的问题。

但是您可以看到,特别是在虚拟机中,这样的东西是如何工作的。

现代虚拟机架构正在研究这个过程,事实上这个过程是对正在运行的虚拟机进行快照、将映像移动到其他机器并启动它们。虚拟机的基础知识使这变得“简单”。

Java 示例只是您可以使用的东西,而无需成为虚拟化工程师。

This, perhaps indirectly, is one of the tenets behind Jini. In this case, arguably, it's a matter of downloading drivers. But since it's Java based, the concept of portable code moving from device to device is one of the core philosophies of the system.

Now, to that end, this code does not "move" per se, but rather it gets copied. It doesn't "leave" the server.

But you can see, specifically with Java, that getting the basics up of starting with an empty JVM and some kind of shell, it would be pretty straightforward to get code to "move" from one JVM to another.

You can see the process like this.

1) System A has application running, with state, and local classes.
2) System B has the "transfer shell" executing on the system.
3) A wants to move the application over to B
4) A pauses the application and serializes its state, could be as simple as the just using stock Java object serialization. This serialized object has a "restart" method.
5) B sets up a ClassLoader that refers to the classes on System A. This class loader will copy classes on request from A to B, then it can store them locally.
6) A sends the serialized application state over to B, who de-serializes it.
7) the ClassLoader on B starts pulling class files over from A, as the application is deserialized
8) Once the object is deserialized, B invokes the "restart" method, and the application continues running.
9) A "forgets" about the application, and B continues running detached from A.

Obviously this is naive, and fraught with potential issues.

But you can see how, particularly with a virtual machine, how something like this can work.

Modern VM architectures are working on this process, and in fact this process, of snapshotting running VMs, moving the images to other machines, and starting them up. The basics of VMs make this "easy".

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

情话已封尘 2024-09-10 12:42:49

是的,如果您拥有遍布全球的处理交付网络和某种脚本迁移,您可以登录并根据某种地理位置将脚本迁移到您附近的节点。

Yes, if you have a processing delivery network across the globe and some sort of script migration, you could sign in and have the script migrate to a node near you, based on some sort of geolocation.

花期渐远 2024-09-10 12:42:49

也许僵尸网络的主人就在您正在寻找的地方?显然与上面的“病毒”答案非常相似:区别在于,虽然病毒通常“复制、传播、做预先编程的不方便的事情”,但僵尸网络更多的是“在未来控制您的机器,通常是邪恶的,但动态的目的。我认为主机(您的“代理”)也可以更轻松地通过僵尸网络进行更改。

Maybe the master of a Botnet is close what you are looking for? Obviously very similar to the "virus" answer above: the difference being that while viruses usually 'replicate, spread, do a preprogrammed inconvenient thing,' a botnet is more of a 'take control of your machine for a future, usually nefarious, but dynamic purpose.' I think the hosts (your "agent") can more easily change with a botnet too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文