6

計算リソース/ノードを占有したり解放したりして、惑星全体を移動することを目的としたプログラムが存在するかどうかを尋ねたいと思います (たとえば、いくつかの物理的な力をたどる)。文字通り、一部のエージェントベースのシステムは、その場所と (必然的にある程度) 構成を定期的に変更していることを意味します。

たとえば、外部センサーがあり、空間全体に自由なコンピューター (ノード) があるとします。センサーからイニシャライザを追跡するためにエージェントを自己複製することは理にかなっていますが、物理的なビジネスが行われている場所でのみ計算がローカライズされるような制限的な方法で行われます。

この質問は単に「理論的な」楽しみのためのものであることを強調したいと思います。なぜなら、「時代遅れの」(置き去りにされた?) エージェントの処分の最適化を除けば、言及された制限の実際的な利点は見当たらないからです。でも、もしかしたら興味を惹かれるかもしれません。ありがとうございました!

編集: ウイルスが適切な例であることは明らかですが、そのようなエージェントの削除が開発者の関心事になることはめったにありません。より正確には、「旅行」ソフトウェアに興味があります。つまり、エージェントの数 (または少なくとも順序) が一定であり、移動するのはシステム全体です。

4

7 に答える 7

5

オブビキタス コンピューティングの研究コミュニティは、この種の問題について多くの作業を行っています。

たとえば、ドキュメントで作業している場合、周囲のデバイスに基づいた特定のインタラクション モダリティでドキュメントが表示されます。通信している場合も同じです。多くのロケーションベースのコンピューティング アプリケーションが同様のことを行っていると主張することができます。国防総省は、状況依存の自動アシスタントなどに関する研究を後援していました。

地球規模の分散型「クラウド」を想定すると、コンピューティングが実際に行われる場所は不明であり、透過的です。重要なのはコンテキストだけです。GPS 対応のデバイスが普及しつつあり、ビデオ処理が安価になっていることを考えると (私の 50 ドルのカメラは顔を検出できます)、コンテキストの品質は確実に向上しています。その意味で、多くのプログラムは、あなたが説明しているビジョンをすでに実現しています。

于 2010-05-28T20:32:10.167 に答える
2

動いているプログラムでうまくできることは、広く配布されているプログラムでうまくできるように思えます。

于 2010-05-28T20:24:11.140 に答える
1

自分で使ったことはありませんが、プログラミング言語Obliqはそのような種類の計算に適しているようです。この Web ページで参照されている Obliq の論文(12 ページ) から:

Obliq は、オブジェクトがネットワーク上で動作をリダイレクトでき、計算がネットワーク サイト間をローミングできる、分散プログラミングの非常に動的な形式に対応します。

于 2010-05-28T20:59:01.823 に答える
1

あなたが探しているのはMobile Agentsと呼ばれるものだと思います。

ところで:私はウイルスが資格があるとは思わない. ウイルスの決定的な特徴の 1 つは、それ自体では移動できず、人間のユーザーに依存して拡散することです。ただし、ワームは資格があります。

于 2010-05-28T23:20:23.710 に答える
1

これはおそらく間接的に、Jini の背後にある信条の 1 つです。この場合、ほぼ間違いなく、ドライバーのダウンロードの問題です。しかし、Java ベースであるため、デバイスからデバイスへ移植可能なコードを移動するという概念は、システムの中核となる哲学の 1 つです。

そのために、このコード自体は「移動」するのではなく、コピーされます。サーバーを「離れる」ことはありません。

しかし、特に Java の場合は、空の JVM とある種のシェルから開始するという基本を理解すれば、ある JVM から別の JVM にコードを "移動" するのは非常に簡単です。

このようなプロセスを見ることができます。

1) システム A には、アプリケーションが実行されており、状態とローカル クラスがあります。2) システム B には、システム上で実行される「転送シェル」があります。3) A はアプリケーションを B に移動したい 4) A はアプリケーションを一時停止し、その状態をシリアライズします。これは、ストック Java オブジェクトのシリアライゼーションを使用するのと同じくらい簡単です。このシリアライズされたオブジェクトには「restart」メソッドがあります。5) B は、システム A 上のクラスを参照する ClassLoader をセットアップします。このクラス ローダーは、要求に応じて A から B にクラスをコピーし、それらをローカルに格納できます。6) A はシリアル化されたアプリケーションの状態を B に送信し、B はそれを逆シリアル化します。7) アプリケーションが逆シリアル化されると、B の ClassLoader が A からクラス ファイルのプルを開始します。9) 「忘れる」

明らかにこれはナイーブであり、潜在的な問題をはらんでいます。

しかし、特に仮想マシンでは、このようなことがどのように機能するかを見ることができます。

最新の VM アーキテクチャは、このプロセスに取り組んでおり、実際には、実行中の VM のスナップショットを作成し、イメージを他のマシンに移動し、それらを起動するこのプロセスに取り組んでいます。VM の基本は、これを「簡単」にします。

Java の例は、仮想化エンジニアにならなくても遊べるものです。

于 2010-05-28T23:42:47.480 に答える
0

たぶん、ボットネットのマスターはあなたが探しているものに近いですか?明らかに、上記の「ウイルス」の答えと非常によく似ています。違いは、ウイルスは通常「複製、拡散、事前にプログラムされた不便なことを行う」のに対し、ボットネットは「将来のためにマシンを制御する」ということです。動的な目的。」ホスト(「エージェント」)もボットネットを使用すると簡単に変更できると思います。

于 2010-05-28T22:01:32.230 に答える
0

はい、世界中に処理配信ネットワークがあり、なんらかのスクリプト移行がある場合は、サインインして、何らかの地理位置情報に基づいてスクリプトを近くのノードに移行させることができます。

于 2010-05-28T20:49:24.947 に答える