モバイルエージェントの基礎技術①遠隔プログラミング

モバイルエージェントの基礎技術①遠隔プログラミング
モバイルエージェントの基礎技術
①遠隔プログラミング












モバイルエージェントの基礎技術
分散プログラミングと、遠隔プログラミング
遠隔プログラミングと、移動プログラムの粒度
コード移動
コード移動の事例
コード移動と実行制御
プロセス移動
プロセス移動の目的
オブジェクト移動
オブジェクト移動の特性
エージェント移動
プログラム移動の比較
モバイルエージェントの基礎技術①遠隔プログラミング
モバイルエージェントの基礎技術



分散システムとして
 プロセス/オブジェクト移動
 遠隔手続き呼び出し
プログラミング言語として
 オブジェクト指向
 仮想機械
人工知能として
 マルチエージェント
モバイルエージェントの基礎技術①遠隔プログラミング
分散プログラミングと、遠隔プログラミング

分散プログラミング → プログラム間相互作用=コンピュータ間通信
プログラム
A
プログラム
B
コンピュータA

コンピュータB
遠隔プログラミング → プログラム間相互作用=コンピュータ内通信
プログラム移動
コンピュータA
プログラム
A
プログラム
B
コンピュータB
移動するプログラムとはプロセス、オブジェクト、コード、エージェント?
モバイルエージェントの基礎技術①遠隔プログラミング
遠隔プログラミングと、移動プログラムの粒度
移動プログラムの粒度により分類:

コード移動
 プログラムコードだけが移動

オブジェクト移動
 オブジェクトの状態(とコード)が移動

エージェント移動
 エージェントプログラムの状態(とコード)が移動

プロセス移動
 プロセスの仮想記憶空間(スタック、データ、コード)が移動
モバイルエージェントの基礎技術①遠隔プログラミング
コード移動


プログラムコードを他のコンピュータに移動し、
移動先で初期状態から実行を開始
コード移動
プログラム
コード
コンピュータA
(ftpサーバ、
httpサーバ)
プログラム
コード
初期状態
コンピュータB
モバイルエージェントの基礎技術①遠隔プログラミング
コード移動の事例
コード移動の例:

ページ記述言語
 例:PostScript

データベース
 例:SQL(問い合わせ)の遠隔実行

Webスクリプティング
 例:
HTML、Dynamic HTML、XML

JavaScript、 VB Script、Scriplets

Java Applets、Shockwave、Flash
モバイルエージェントの基礎技術①遠隔プログラミング
コード移動と実行制御



移動先では初期状態から実行を開始
○状態保存処理が不要 → 処理が高速
×計算途中状態は移動しない → 移動先では初期状
態から実行

program(){
int a = 1; A
// この時点でコード移動が発生
B;
B
}
a->1
A
移動
go()
A
コンピュータ1
a->1
コンピュータ2
モバイルエージェントの基礎技術①遠隔プログラミング
プロセス移動

プロセス単位のコンピュータ間移動(Process
Migration、移送)
プロセスの状態も移動
プロセス
移動
コード領域
ヒープ領域
スタック領域
リンクテーブル
コンピュータA
コンピュータB
オペレーティングシステムにより実現
仮想記憶空間全体(記憶ページ)の移動
プレページングとオンデマンドページング
モバイルエージェントの基礎技術①遠隔プログラミング
プロセス移動の目的








各コンピュータの計算負荷を平均化
各プロセスの応答時間を平均化
特定プロセスの応答時間を最適化
計算資源の有効利用
耐故障性・信頼性の向上
セキュリティの向上
多くのプロセス移動システムでは、
移動先・タイミングはシステムにより管理(×プロセス)
例:DEMOS/MP, LOCUS, V-System, Sprite
モバイルエージェントの基礎技術①遠隔プログラミング
オブジェクト移動

分散プログラミング:プログラム間相互作用=コンピュータ間
通信
プロセスA
オブジェクト
A
コンピュータ
間通信
オブジェクト
B
オブジェクト
C
コンピュータA
コンピュータB
プロセスB
プロセスA
オブジェクト
A
コンピュータA
プロセスB
移動
オブジェクト
B
オブジェクト
C
コンピュータB
モバイルエージェントの基礎技術①遠隔プログラミング
オブジェクト移動の特性




プロセス全体の移動はコストが大きい
オブジェクト指向プログラミング/OSの登場
→ プロセスを構成する特定オブジェクトのみ移動
 例:Emerald (Black 1987) (Jul 1988), Apertos (Yokote
1992),他
問題点:プログラムの部分移動 → リンク情報の補完が困難
プロセス
オブジェクト
A
移動
オブジェクト
C
オブジェクト
B
モバイルエージェントの基礎技術①遠隔プログラミング
エージェント移動

エージェントは複数のオブジェクトから実現
エージェントは一つのプロセスとして実行

移動対象となるプログラムの粒度により分類:

オブジェクト移動
 オブジェクトの状態(とコード)が移動
エージェント移動
中間
 エージェントプログラムの状態(とコード)が移動
プロセス移動
 プロセスの仮想記憶空間(スタック、データ、コード)が移動



モバイルエージェントの基礎技術①遠隔プログラミング
プログラム移動の比較

プロセス移動




オブジェクト移動





負荷分散や耐故障性などが目的
→ 移動先の計算環境が既知かつ予測可能
→ 移動プロセス/オブジェクトの処理内容は既知であること多い
受動的オブジェクトが移動対象
→ オブジェクトとして実装されたデータの受け渡しを実現
移動対象のプログラムは完備でないことがある
→ 移動後も参照関係を維持しなければならない
エージェント移動




移動対象は完備かつ能動的プログラム
移動エージェントの用途・処理内容は多様
移動先の計算環境は多様かつ予測不可能
通信方式が多様、また常時接続も仮定できない