changeset 15:c3eb838fb504

*** empty log message ***
author fuchita
date Sat, 16 Feb 2008 11:39:51 +0900
parents 9a65c4336120
children 9bbcbcd1c3ec
files paper/comparing.tex paper/conclusion.tex paper/evaluation.tex paper/master_paper.aux paper/master_paper.lof paper/master_paper.log paper/master_paper.lot paper/master_paper.tex paper/master_paper.toc
diffstat 9 files changed, 80 insertions(+), 116 deletions(-) [+]
line wrap: on
line diff
--- a/paper/comparing.tex	Fri Feb 15 22:24:51 2008 +0900
+++ b/paper/comparing.tex	Sat Feb 16 11:39:51 2008 +0900
@@ -1,101 +1,48 @@
 \chapter{比較}
 
-ここでは他の分散フレームワーク等と Federated Linda の比較を行う。
-
-\section{JXTA}
-
-JXTA\cite{jxta}はSun Microsystems社が提供する分散フレームワーク技術で、
-P2P型アプリケーションを容易に開発できる環境を提供することを目指している。
-提供する主な機能はノードの発見とグループの自己組織化である。
-
-JXTA はノードの配置しか解決してくれず、分散アプリケーションをどう書くか、
-という指標は示していない。Federated Linda は ``Local Access'',
-``Protocol Engine'', ``Link Configuration''という分散プログラムの要素に
-基づいてプログラミングモデルを示している。
-
-また、JXTAのアーキテクチャは複雑であり、プログラミングをするまでの手続き
-が理解しずらい。Federated Linda は ``in'', ``read'', ``out''などの単純な
-コマンドによるタプルの出し入れという理解しやすいモデルを提供している。
-
-\section{CORBA}
+ここではSun Microsystems社の提案する高レベルの分散アーキテクチャである、
+Jini と Federated Linda の比較を行う。
 
-CORBA(Common Object Request Broaker Architecture)\cite{orb}は、ネットワー
-ク上の分散環境でオブジェクト間通信をサポートするためのミドルウェア基盤技
-術である。言語非依存だが、IDL(Interface Definition Language)言語と呼ばれ
-るオブジェクトのインターフェースを記述する言語とのマッピングが行われてい
-る言語のみ。CORBAはOMG(Object Management Group)によって標準化が行われて
-いる。
+\section{Jini}
+Jiniとは、ハードウェア/ソフトウェアに関わらず様々な資源をネットワークに接続し、
+お互いにその機能を提供し合う為の、Javaをベースとした技術である。
+Jiniは比較的小さな実行単位が、多数集まって仕事をするのに適した、
+柔軟で、動的な、信頼性の高い分散アーキテクチャの提供をうたい、
+その集合をfederation(連合体)と呼んでいる。
+Jiniのアイデアの基本にあるのは、ネットワーク上の「連合」を、
+単なるノードの接続とデータの交換として捉えるのではなく、
+それぞれのノードが、固有の「サービス」の担い手としてネットワークに存在し、
+相互に「サービス」を交換し合うという考えである。
 
-CORBA のプログラミングモデルの特徴は、ネットワークを意識しないオブジェク
-ト呼び出しができる点にある。呼び出すオブジェクトがローカルにある場合はそ
-れを呼び出し、リモートにある場合は通信を行い、オブジェクトを呼び出す。こ
-のときプログラムはオブジェクトが何処にあるかを意識する必要がない(位置透過
-性)。このようなプログラミングモデルは逐次プログラミングモデルの延長上にあ
-り、分散プログラムを記述するモデルとしては適していない。また、通信が起こ
-るタイミングが把握しづらく、デバッグも難しくなる。また、どうのように分散
-プログラミングを作るのか、という点は示していない。
-
-Federated Linda のプログラミングモデルは、タプルのリレー転送というより分
-散プログラムを意識したモデルとなっている。また、通信は一つの関数で行うの
-で、通信の行われるタイミングが把握しやすい。また、タプルスペースへのタプ
-ルの出し入れという単純な処理で通信を行うので、理解もしやすい。また、分散
-プログラムの3つの要素を挙げ、それぞれにプログラミングモデルを提供してい
-る。
-
-\section{OverlayWeaver}
+Jiniにおける「サービス」を、ネットワーク上の何処からでも利用する事ができるモデルを
+実現する為に、ネットワーク上で自由に移動可能な「オブジェクト」、すなわち分散オブジェクト
+技術が用いられる。
+Jiniがこの分散オブジェクトと「サービス」を結びつける機能をLookupとよび、Jini上での様々な
+サービスの「連合」は、実際にはこのLookupサービスの仲立ちによって各々のサービスを提供する。
 
-Overlay Weaver\cite{overlayweaver} は産業技術総合研究所の首藤一幸氏が開
-発を行っているオーバーレイネットワーク構築ツールキットであり、2006年 1月
-17日にVersion 0.1がリリースされた。アプリケーション開発とオーバーレイの
-アルゴリズム設計をサポートしている。Java で開発されており、DHTやマルチキャ
-ストといった高レベルサービスに対する共通API や、ルーティングアルゴリズム
-としてDHTやIterative/Recursive ルーティングを提供している。また、開発し
-たアルゴリズムを試験、評価、比較するためのエミュレータも提供している。
+Jiniが分散オブジェクト、すなわちネットワーク上でオブジェクトを共有する空間を構築する為
+の仕組みは、JavaSpaceという技術によって提供される。
+JavaSpaceはネットワーク上に共通領域として存在し、オブジェクトを登録する「エントリー」
+という単位での入れ物として機能する。JavaSpaceのエントリーに対するアクセスは、
+write(書き込み)、read(読み出し)、take(取り出し)、という操作によって得られる。
+このような仕組みはLindaシステムのタプルスペースに非常によく似ている。
 
-Overlay Weaver はオーバーレイネットワークを構築するアルゴリズムやその上に
-実装するルーティングアルゴリズムの開発支援やそれらを試験・評価するための
-エミュレータを提供しており、ネットワークを意識したプログラムを作るのに適
-している。ルーティング処理とアルゴリズムを分離するので、使用するアルゴリ
-ズムを切り替えることが可能である。しかし、Javaでしか開発できない点とプロ
-グラミングモデルが明かではなく、ツールとしてしか使用できない。
-
-Federated Linda はタプルスペースとタプルスペースへアクセスするAPIを提供し、
-かつ分散プログラムを記述するプログラミングモデルを示した。さらに
-``Protocol Engine'', ``Local Access'', ``Link Configuration''などの要素に
-分け、よりポータビリティ性を向上させることが期待できる。また、C, Perl,
-Python, Ruby など複数言語による開発も可能である。また、クライアントプログ
-ラムは Protocol Engine に実装された分散アルゴリズムへの接続・切断が容易で
-ある。しかし、開発ツールとしては不十分な点があるのは否めない。
-
-\section{MPI}
-
-MPIはMessage Passing Interfaceの略であり、並列プログラミングの規格である。
-並列プログラミングライブラリのインタフェースが決められている.
+対して、Federated Lindaはソフトウェアにおける資源の、ネットワーク上での相互の接続を
+提供する。ベースとなる技術はC言語,Java言語であり、Jiniにおけるサービスを実現させるのは、
+Federated Lindaに接続されるクライアントプログラムの機能によって実現される。
 
-MPIでのプログラミングではバリア同期が必須になり、同期時の他ノードの``待
-ち''が入る。Federated Linda の通信は全て非同期に行われ、プログラミングス
-タイルはポーリング型になる。よって、プロセスが``待ち''に入るということは
-ない。
-
-\section{非同期型Linda}
-
-本研究室で開発した非同期型 Linda はクライアント/サーバ型であり、通信はサー
-バへ集中する。Federated Linda は複数のタプルスペースを持っており、通信が
-一箇所に集中するのは Protocol Engine が内包する分散アルゴリズムがそうなっ
-ている場合である。しかし、クライアント側から Protocol Engine への接続・
-切断が行えるので、分散アルゴリズムを切替えることで、通信の集中の回避は容
-易に行えるといえる。
+Jiniの持つ様な分散オブジェクト技術は、現在のデータ単位での通信を行うFederated Lindaでは
+実現されていないが、今回Java言語によるFederated Lindaの実装を得た事により、そのような
+機能追加を行う事は実現可能である。Java言語により実現が可能である理由は、Javaではオブジェクト
+単位でのネットワークを介した移動を実現する、シリアライズ機能やRMIという仕組みが存在することや、
+複数のThread(プロセス)が同一のオブジェクトに同期を取ってアクセスする
+メカニズムが備わっているということからである。
 
-\section{Internet}
-
-インターネットではWWWやメール、P2Pなどのようなアプリケーションにより、そ
-の本来のメカニズムが見えにくくなっている。インターネットは本来、コンピュー
-タ等を相互に接続し、その複数のネットワークを一つ一つ経由してネットワーク
-パケットが転送されていくメカニズムである。
+Jiniに対してFederated Lindaが優れていると考えられる点は、Jiniでは分散オブジェクト実現の
+為に、エントリーに対して強い型宣言が強制されるが、Federated Lindaでは自由なデータ形式での
+通信単位を許可している事。Jiniがそのサービスを立ち上げるのに必要な要素として、
+RMI Activation Daemon, ,Jiniサービスプロバイダ, Jini Lookupサービス, Lookupサービスブラウザ,
+ webサーバー, クライアントプログラムといった、多くの要素を要求するのに対して、Federated Linda
+はLindaサーバー, Protocol Engine, クライアントプログラムの3要素で済むという点などが挙げられる。
 
-Federated Linda は タプルスペース同士を Protocol Engine で接続し、タプル
-を転送していくモデルであり、インターネットの本来のメカニズムに近い。つま
-り、Federated Linda を用いることにより、インターネットの分散アルゴリズム
-を記述する事ができる。
-
-
+%表\ref{comp}にJiniとFederated Lindaの比較を示す。
--- a/paper/conclusion.tex	Fri Feb 15 22:24:51 2008 +0900
+++ b/paper/conclusion.tex	Sat Feb 16 11:39:51 2008 +0900
@@ -12,11 +12,14 @@
 機能拡張の為に既存の実装(C言語)からJava言語による新しい実装へ移行し、そのことによる
 利点として、Java言語のオブジェクト指向やリファクタリングといった利点を示した。
 
-最後には、分散開発環境において必要となるデバッグインターフェースの提案を行い、
+5章では、分散開発環境において必要となるデバッグインターフェースの提案を行い、
 新しい実装を用いた機能拡張として、通信状態のFederated Lindaに対して通信を止める事無く、
 その通信のスケーラビリティや、通信の確かさを確認できるデバッグインターフェースを実装し、
 その効果を評価した。
 
+最後には、Sun Microsystems社の提案する高レベルの分散アーキテクチャであるJiniと
+Federated Lindaの比較について述べた。
+
 \section{今後の課題}
 今後の課題として、Federated Lindaを用いての新しいアプリケーションの実装と評価や、
 分散デバッグ機能に、リングトポロジでの分散スナップショット機能を実装することが挙げられる。
--- a/paper/evaluation.tex	Fri Feb 15 22:24:51 2008 +0900
+++ b/paper/evaluation.tex	Sat Feb 16 11:39:51 2008 +0900
@@ -704,7 +704,7 @@
  状況が存在する分散プログラムの開発では、大量のprintf情報が全ノード分出力されるため、
  printfデバッグは実用的とは言えない。
 
- 今回、通信状態のデバッグインターフェースとそのログを視覚的に表示し、ステップ実行により通信の
+ 今回、通信状態のデバッグインターフェースと、そのログを視覚的に表示し、ステップ実行により通信の
  確かさを確認できるモニターツールを開発したことにより、これまで困難であった通信状態のデバッグ
  を可能とした。
 
--- a/paper/master_paper.aux	Fri Feb 15 22:24:51 2008 +0900
+++ b/paper/master_paper.aux	Sat Feb 16 11:39:51 2008 +0900
@@ -192,12 +192,16 @@
 \newlabel{bugfig}{{5.14}{70}}
 \@writefile{toc}{\contentsline {subsubsection}{デバッグにおけるモニターツールの有用性}{70}}
 \@writefile{toc}{\contentsline {section}{\numberline {5.5}考察}{71}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {第6章}結論}{72}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {第6章}比較}{72}}
 \@writefile{lof}{\addvspace {10\p@ }}
 \@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {section}{\numberline {6.1}まとめ}{72}}
-\@writefile{toc}{\contentsline {section}{\numberline {6.2}今後の課題}{72}}
-\@writefile{toc}{\contentsline {chapter}{謝辞}{73}}
+\@writefile{toc}{\contentsline {section}{\numberline {6.1}Jini}{72}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {第7章}結論}{74}}
+\@writefile{lof}{\addvspace {10\p@ }}
+\@writefile{lot}{\addvspace {10\p@ }}
+\@writefile{toc}{\contentsline {section}{\numberline {7.1}まとめ}{74}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.2}今後の課題}{74}}
+\@writefile{toc}{\contentsline {chapter}{謝辞}{75}}
 \bibcite{linda}{1}
 \bibcite{globalid}{2}
 \bibcite{dinamicrouting}{3}
@@ -211,5 +215,5 @@
 \bibcite{overlayweaver}{11}
 \bibcite{tomcat}{12}
 \bibcite{grizzly}{13}
-\@writefile{toc}{\contentsline {chapter}{参考文献}{74}}
-\@writefile{toc}{\contentsline {chapter}{発表文献}{75}}
+\@writefile{toc}{\contentsline {chapter}{参考文献}{76}}
+\@writefile{toc}{\contentsline {chapter}{発表文献}{77}}
--- a/paper/master_paper.lof	Fri Feb 15 22:24:51 2008 +0900
+++ b/paper/master_paper.lof	Sat Feb 16 11:39:51 2008 +0900
@@ -42,3 +42,4 @@
 \contentsline {figure}{\numberline {5.13}{\ignorespaces ステップ実行したシーケンスでの転送タプルを表示}}{69}
 \contentsline {figure}{\numberline {5.14}{\ignorespaces 格子状メッシュトポロジにおけるLink Configurationのバグ}}{70}
 \addvspace {10\p@ }
+\addvspace {10\p@ }
--- a/paper/master_paper.log	Fri Feb 15 22:24:51 2008 +0900
+++ b/paper/master_paper.log	Sat Feb 16 11:39:51 2008 +0900
@@ -1,4 +1,4 @@
-This is pTeX, Version 3.14159-p3.1.5 (euc) (Web2C 7.4.5) (format=platex-euc 2005.5.19)  15 FEB 2008 22:54
+This is pTeX, Version 3.14159-p3.1.5 (euc) (Web2C 7.4.5) (format=platex-euc 2005.5.19)  16 FEB 2008 12:09
 **master_paper
 (./master_paper.tex
 pLaTeX2e <2005/01/04>+0 (based on LaTeX2e <2001/06/01> patch level 0)
@@ -574,19 +574,25 @@
  <fig/pdf/bug.pdf>
 File: emblem-bitmap.eps Graphic file (type eps)
  <emblem-bitmap.eps> [70])
-(./conclusion.tex
+(./comparing.tex
 File: emblem-bitmap.eps Graphic file (type eps)
  <emblem-bitmap.eps> [71]
 第 6 章(72ページ)
-) (./thanx.tex [72
+[72
 
-]) (./bibliography.tex [73
+]) (./conclusion.tex
+File: emblem-bitmap.eps Graphic file (type eps)
+ <emblem-bitmap.eps> [73]
+第 7 章(74ページ)
+) (./thanx.tex [74
 
-]) (./appendix.tex [74
+]) (./bibliography.tex [75
+
+]) (./appendix.tex [76
 
 ])
 No file master_paper.ind.
-[75
+[77
 
 ] (./master_paper.aux)
 
@@ -594,12 +600,12 @@
 
  ) 
 Here is how much of TeX's memory you used:
- 1011 strings out of 95593
- 12651 string characters out of 1192020
+ 1014 strings out of 95593
+ 12688 string characters out of 1192020
  68055 words of memory out of 1000001
  4065 multiletter control sequences out of 10000+50000
  19687 words of font info for 78 fonts, out of 500000 for 1000
  14 hyphenation exceptions out of 1000
  33i,12n,24p,300b,631s stack positions out of 1500i,500n,5000p,200000b,5000s
 
-Output written on master_paper.dvi (82 pages, 265624 bytes).
+Output written on master_paper.dvi (84 pages, 272824 bytes).
--- a/paper/master_paper.lot	Fri Feb 15 22:24:51 2008 +0900
+++ b/paper/master_paper.lot	Sat Feb 16 11:39:51 2008 +0900
@@ -8,3 +8,4 @@
 \contentsline {table}{\numberline {4.1}{\ignorespaces Java言語によるLinda API}}{45}
 \addvspace {10\p@ }
 \addvspace {10\p@ }
+\addvspace {10\p@ }
--- a/paper/master_paper.tex	Fri Feb 15 22:24:51 2008 +0900
+++ b/paper/master_paper.tex	Sat Feb 16 11:39:51 2008 +0900
@@ -65,7 +65,7 @@
 %-------------------------------------------------
 
 %他のフレームワークとの比較   <<<-------- Jiniとの比較を入れる
-%\input{comparing.tex}
+\input{comparing.tex}
 %%-----------------------------------------------------------------
 
 %考察
--- a/paper/master_paper.toc	Fri Feb 15 22:24:51 2008 +0900
+++ b/paper/master_paper.toc	Sat Feb 16 11:39:51 2008 +0900
@@ -96,9 +96,11 @@
 \contentsline {subsubsection}{バグ要因の特定}{70}
 \contentsline {subsubsection}{デバッグにおけるモニターツールの有用性}{70}
 \contentsline {section}{\numberline {5.5}考察}{71}
-\contentsline {chapter}{\numberline {第6章}結論}{72}
-\contentsline {section}{\numberline {6.1}まとめ}{72}
-\contentsline {section}{\numberline {6.2}今後の課題}{72}
-\contentsline {chapter}{謝辞}{73}
-\contentsline {chapter}{参考文献}{74}
-\contentsline {chapter}{発表文献}{75}
+\contentsline {chapter}{\numberline {第6章}比較}{72}
+\contentsline {section}{\numberline {6.1}Jini}{72}
+\contentsline {chapter}{\numberline {第7章}結論}{74}
+\contentsline {section}{\numberline {7.1}まとめ}{74}
+\contentsline {section}{\numberline {7.2}今後の課題}{74}
+\contentsline {chapter}{謝辞}{75}
+\contentsline {chapter}{参考文献}{76}
+\contentsline {chapter}{発表文献}{77}